Commit cc299faa authored by huangwenjie's avatar huangwenjie

fix:业务逻辑

parent 39e0b134
......@@ -14,25 +14,36 @@
html,
body {
-ms-touch-action: none;
background-repeat: no-repeat;
background-color: #000;
background-size: 100%;
background-position: center;
background-image: url(data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAeAAD/4QMsaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0MCA3OS4xNjA0NTEsIDIwMTcvMDUvMDYtMDE6MDg6MjEgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMEM3NDQ2NURFNDcxMUU4OEZFNkNDRDM0MTdGQjZCNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMEM3NDQ2NkRFNDcxMUU4OEZFNkNDRDM0MTdGQjZCNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwQzc0NDYzREU0NzExRTg4RkU2Q0NEMzQxN0ZCNkI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwQzc0NDY0REU0NzExRTg4RkU2Q0NEMzQxN0ZCNkI3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQAEAsLCwwLEAwMEBcPDQ8XGxQQEBQbHxcXFxcXHx4XGhoaGhceHiMlJyUjHi8vMzMvL0BAQEBAQEBAQEBAQEBAQAERDw8RExEVEhIVFBEUERQaFBYWFBomGhocGhomMCMeHh4eIzArLicnJy4rNTUwMDU1QEA/QEBAQEBAQEBAQEBA/8AAEQgGWALuAwEiAAIRAQMRAf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A4hMnTKZepJJJJSkkkklKTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkmSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLpJkklLpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSl0kkklKSSSSUpOmTpKUkkkkpSSSSSlkkkklKSSSSUpJJMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkmSSUpJJJJSkkkklKSSSSUpJJJBSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJFSkkkklKSSSSUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSl0kydJSkkkklKSSSSUukkkkpSSSSSlkkkklKSSSSUpMnTJKUkkkkpSSSSSlJJJJKUkkkkpSZOmSUpJJJJSkkkklKSSSQUpJJJFSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkklKTpkklLpJJJKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJS6SZOkpSSSSSlkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSZJSkkkklKSSSQUpJJJFSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJBSkkkkVLpJk6SlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSk6ZOkpSSSSSlkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSZJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKTpkklLpJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSk6ZOkpSSSSSlkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJJJJKWSSSSUpJJJBSkkkkVKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSRUpJJJBSkkkkVLpJk6SlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKTpkklLpJJJKWSSSSUpMnTJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSRUpJJMgpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpdJMnSUpJJJFSkkkkFKSSSSUpJJJJSkkkklKSSSRUpJJJJSk6ZOkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLpJJJKWSSSSUpMnTJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkkVKSSTIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJMnSUpJJJFSkkkkFKSSSSUpJJJJSkkkkVKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJS6SSSSlkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJFSySSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJFSkkkkFKSSSSUpJJJJSkkkkVKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLpJJJKWSSSSUpMnTJKUkkkkpSSSSSlJJJJKWSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUukkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJS6SSSSlkkkklKTJ0ySlJJJJKUkkkkpSSSSSlkk6ZJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJFSySSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJJJFSkkkkFKSSSSUpJJJJSkkkkVKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSdMnSUpJJJJSkkkklLpJJJKWSSSSUpMnTJKUkkkkpSSSSSlJJJJKUmTpklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkkVKTJ0yClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUpJJJFSkkkkFKSSSSUpJJJJSkkkkVKSSSSUpOmTpKUkkkkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJS6SSSSlkkkklKTJ0ySlJJJJKUkkkkpSSSSSlJk6ZJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkkVLJJ0kFLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdJJSkkkkVKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkklKTpk6SlJJJJKUkkkkpSSSSSlJ0ydJSkkkklKSSSSUukkkkpZJJJJSkydMkpSSSSSlJJJJKUkkkkpSZOkkpZJJJJSkkkkFKSSSRUpJJJBSkkkklKSSSSUpJJJJSkkkkVKSSSSUpMnSQUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsnSSSUpJJJFSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJFSkkkkFKSSSRUpOkkkpSSSSSlJJJJKUkkkkpSdMnSUpJJJJSkkk6SlJJJJKWSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlkkkklKSSSSUpJJJJSkkkklKSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJS6SSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdOmCdJSkkkklLJJJJKUkkkkpZJJJJSkkkklKSSSSUpJJJJSkydMkpSSSSSlJJJIKUkkkipSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJJJKUkkkgpSSSSKlJ0ydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS4TpgnSUpJJJJSySSSSlJJJJKUmTpklKSSSSUpJJJJSkkkklKSSSSUsknTJKUkkkkpSSSSClJJJIqUkkkkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkipSSSSSlJJJJKUkkkgpSSSSKlJJJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUuE6YJ0lKSSSSUskkkkpSSSSSlJk6SSlkkkklKSSSSUpJJJJSkkkklKSSSSUsknTJKUkkkkpSSSSSlJJJIKUkkkipSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSQE6JKUkngpklKSSSSUpJJJJSkkkklKSSSQUpJJJFSkkkklKSSTpKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0kklKSSSSUpJJJJSk6SSSlJJJJKUmTpklKSSSSUpJJJJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSlJpAOqikkpm8g6dwoJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSdJSydJJJSkkkklKSSSSUpJJOACYJjzSUskjua3bIiY0KAkQoqSSSSUpJJOkpSSSSSlJJJJKUnTJ0lKSSSSUpJJJJSkydJJSySSSSlJJJJKUmTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSySdJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS5JMT24TJJJKUkkkkpSdJJJSkkkklKSSSSUpOkkkpSSSSSlJJJJKUkkkkpZJOmSUpJJJJSkkkklKTJ0klLJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdJJJSkkkklKSSSSUpJJOkpSSSSSlJJJJKUkkkipSSSSClJJJJKWSTpklKSSSSUpJJJJSkydJJSySdMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0lLJ0kklKSSSSUpJJJJSkkk6SlJJJJKUkkkkpSSSSSlJJJ0VLJJJIKUkkkkpSSSSSlkk6ZJSkkkklKSSSSUpJJJJSkydJJSySdJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSdJJSydJJJSkkkklKSSSSUpJJJJSkkk6Slk6SSSlJJJJKUkkkkpSSSSKl0kkklLJJJJKUkkkgpSSSSSlJJJJKWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJ0kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKUkkkkpSSSSSlJJJJKUkkkipSdJJJSkkkklKTJ0klLJJJJKUkkkgpSLjsa95a4SI+5CSkjgohIbGTUxrQWkNgRt8VXTue58bjMCEyR3UVJJJIIWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUnSSSUpJJJJSkkkklKSSSSUpMnSSUsknTJKUkkkgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk6Slkk6SSlkk6SSlkk6SSlkk6SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0VLJ0kklKSSSSUpJJJJSkkk6SlkkkklKSSSSUpJJJJSySdJJSySSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSKlJJ0klKSSSSUpJJJJSkkkklKSTpJKUkkkkpSZOkkpZJJJJSkkkklKSSSSUpJJJJSkydJJSySdJJSySdMkpSSSSSlJJJIKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJIqUkknSUsknSSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSk6SSSlJJJJKUkkkkpdJJJJKkkkklLQlCdJJC0JQnSSUxhJSSSSxSTpQkhZJPCUJKWSSSSUpJJJJSkkkklKSSSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKUkkkkpSSSSSlJJJJKUkkkkpdJOmSSpJJJJSkkkklKSSSSUpJJJJCkkkkkqSSSSUsknSSUtCUJ0klMYSUkklMUk8JQkhZJKEklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUm2N2ntKCU+4wR2KZIpUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUsknSSUsnSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSSSSUySSSRUpMnSQUsknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKWhKE6SSmKSklCSmKSeEklLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk8JJWSTwlCSlkk8J4SUsknhKElKSSSRUpJJJJSkkkklKSSSQUsknSSUsknSSUskkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKVCaE6SSlkk6UJKWSShJJCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkk8JKWSTp0krQlCdJJSydJJFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSQUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUtCaFJJJTFJPCUJKWSSSSQpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSSSSUpJJPCSlkk8J0lLQlCdJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTpJKWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpNCdJJS0JQnSQUsmUkklMUlJKElMUlKE0JKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwnhJTFJShJJTFPCdJJS0JQnSSUtCdJJJSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJOkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKWSTpJKWSTpJKWSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk6SSlkk6SSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSZOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZJOkkpZOkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkplsMAqKn6mnmoJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUi10te0GfiEJGruYxobB8yiPFIrqtdXtgtHthCRrrTO1p0jlBSO6jupJJJBCkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJIGDKSk7KWvrBOh8VC1jWEAc8lFru3Al2kIVljXjiCO6capcapGkkkmrVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJQkpSSeEoSUsknSSUsknSSUslCdJJS0JQnSSUqEkkklKSSSSUpJJJFSkkkklKSSSSUpJJJJSkkkkFKSSSSUpJJJJSySSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSeEoSUsknSSUtCeEkklKhJJJJSkkkkVKSSSSUpJJJBSkkkklKSSTJKXSTJJKXSTJJKXSTJJKXlNKSSSlSkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdKEkklLJJ0oSUsknTJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSdJSySeEoSUsknSSUqEoSSSUpJJJJSkkkklKSSSlJSkkkklKSTJJKXlKUySSl5TJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkknSUsknSSUpKUkklKSSSlJSkkkklKhJJJJSySdJJSySeEoSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUsknSSUskkkkpSSSSSlJJJJKUknSSUsknShJSySeEklLJ0kklKShJJJSoSSSSUpJJJJSkkkpSUpJKUklKSTJJKXlJMkkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSlJSkkkkVKSSSSUpJJJBSoShJJJSoShJJJSoShJJJSoShJJJSoShJJJSoShJJJSoSSSSUpJJJFSkkkklKSTpklKSSSSUpJKUpQUpJJJJSkpSSSUqUkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJKEoSUpJKEoSUpJOkipZJOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhKE6SSloShOkkpaEoTpJKWhJOkkpZJOmhBSkkoShJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkpSSSUqUkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSpSSSSUl02/kKEkkipSSSSClJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSUJQkpSSSdFSyUJ0klLQlCdJJSydJJJKkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkydJJS0JQnSSQtCSdJJSySdNCSlJJQlCClJJQlCSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUklCUJKUklCdJSyUJ0kVLQknSSUpJJJJKkkkklKSSSSUpJJJJSkkyUpIXSTSlKSl0k0pSkpdJMkkpdJMkkpdJMkkpUpSkkgpUpSkkkpUpSkkkpUpSkkkpUpSkkkpUpSkkkpUpSkkkpUpSkkkpSdMkkpdJMkipdJMkkpdJNKUpKXSTSlKSl0kkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS0JQnSSQtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJS0JQnSSUtCUJ0klLQlCdJJSkkkkkqSSSSUpJJJJSkkkklKSSTSkhdJNKSSl0ySSSlSlKSSClSkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJNKUoqXSTSlKSl0kkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJNKSl0k0pSkpdJNKSSl00pJIIVKSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUlKSSSlSlKSZJS8pSmSSUvKUpkklLylKZJJS8pSmSSUvKUpkklLylKZJJS8pJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJkklLpJk6SlJJJJKUkkkkpSSSSSlJJJJKUkmSSUumSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpJKWSTpklKSSSSQpJJJJSkkkklKSSSSUpJJJJSkkk6SVkk6SSlk6SSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJQkpSSUJQipSSeEoSpSySdJKlLJQnSSpS0JQnSSpS0JQnSSUtCeEkklKhKEkklKgJQEkklKhKEkklKhKEkklKhKEkklKhKAkkkpUJQkkkpUJoTpJKWhKE6SVKWgpJ0kqUsknSSpSySeE0JUpSSUJQgpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSUJ4RUsknhJJSyUJ0klLQnhJJJSoCSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJQkkkpZJJJBSkkkklKSSSSUpJJJJSkkkklKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSShPCSlkk8JQkpZJOkkpaEoTpJKVCUJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpZJPCUJKWSTwlCSlkk8JQkpZJPCUJKWSTwlCSlkk8JQkpZJPAShJSySdJKlLJKSSVKYpQVJJJTGE8J0klLQlCdJJS0JJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ0klLJJ00hJSkkpCbckpdJNKUpKXSUZSSUySlRSSUylNKZJJS8pSmSSUvKUlMkkpeSmkpJJKVJSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKS1SSSUqSlJSSSUvJSkpkklLylKZJJTKQlIUUklMklFKUlMkk0lLckpdJKQkkpSSdJJSySdJJSySdJJSySSSSlJJJJKUkkkkpSSSSSlJJ0klLJ0kklKSSSRUpJJJJSkkkklKSSSSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkyKV0k0ppQUyTSFGUklL7kpKZJJSkkkklKSSSSUpJJJJSkkkklMmMLyQOQJTmp4BcdAESg1jQfSPip2lhaWl0FGtFU1UkkkFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSpKfcmSSUykJ1BKUkM0lGU8pKXSSSRUpJJJBSySSdJSkkkklKSSSRUpJJJBSkkkkkqSSSSUpJJJJSkkkklKSSSSUpJJJJSkkySKl0kyUpKXSUZSlBS6UppTSkplKaUySSl5TJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpcEggjkJEkmTyUySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSns0njxUElKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLyU8hRSSUzSUZhPuSUukmSlFC6SZKUlLpJpSSSukmSSUukmSlJS6SjISlJS6SaUpSUukmkppKSmSUqKSCmUhNKZJJS8pSUySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSme8x5qCSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpeUpTJJKXlKUySSl5KUlMkkpUpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSVJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkgpSSSSSFJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSKlJJJJKZMbvdt4UvReJnQDunpNYOv0jx4Izy2C1xiUlNRJOeUySlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSClJJJJIUkkkkpSSSSSVJJJIqUkkkkpSSSSSlJ3OLjJ5TJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSCFJJJJKUkkkilSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkghSSSSSVJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJ0krJJ0klLJ0kklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpMnSSUsknSSUsknTJKUkkkkhSSSSSlJJJJKUkkkkpSSSSSlJJJIIUkkkilSSSSSlJJJJKUkkkkpSSSSSlJJJJJUnSSSUpJJMkpdMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSl0kySSl0kkklLJJ0ySlJJJJIUkkkkpSSSSSlJJJIIUkkkilSSSSSlJJJJKUkkkkpSSSSSlJ0kkkqTJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMkkpdJJJJSySSSSlJJJJIUkkkkpSSSSCFJJJIpUkkkkpSSSSSlJJJJKUkknSSpJJMkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdMnSUpMnTJKUkkkkhSSSSSlJJJIIUkkkilSSSSSlJJJJKUkkkkpSdMnSSpMkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJw1x4BUhVYeGO+4o0pgkiejd/o3fcUvQv/0b/wDNKVHspGkifZ7/APRP/wA0pehf/o3f5pSo9lI0lP0rf3HfcUxY8ctI+SVFTFJOmQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS6ZOkkpZJJJJCkkkklKSSSQQpJJJFKkkkklKSSSSUpJJJJSk6ZOklZJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJPzwkpZJGZiZVn0KXnz2mFYZ0fqD/8HtHi5wThCR2iT9FNFJazPq/kH6djG/CXf3I7Pq9UP5y5zv6oDfyynjBkP6P2qtwkl0jOiYDeQ5/9Z3/kYRmdNwGcUNPx93/VSnjlZ9TEIt5VTZTc/wCgxzvgCV1rKaWfQra34ABETxyneX4Kt5RvTs5/FD/mNv5UZvRuoO5rDfi4fwJXSpJw5WHUyVbz7egZZ+k+tvzJ/giN+rz/AM68D4Nn+IW4knDl8fYn6qtyG/V+n865x+AA/vRG9Bwhy6x3xI/gFppJww4x+iEW0B0Xp45YXfFx/gUQdK6eOKR8yT+Uq2kne3D92P2Ka4wMIcUM+bQfyqYxcUcU1j4NH9yKkjwx7D7FMBTUOGNHyCkABwITpI0pSSSSKlJJJJKUkkkkpSSSSSloB5UTXWeWNPyCmkgpEcXGPNLD8Wj+5QOBhHmiv5NA/IrCSHDHsPsU03dK6e7mkfIkfkKG7omAeGub8HH+MrQSQOOB/Rj9inLd0DEP0X2D5g/wQnfV5v5l5HxbP8VspJpwYz+iq3Bd9X8gfQtYfjI/gUF/RM9vDWv+Dh/36F0iSaeWx+I+qbeUf07OZzQ/5Dd/1MoL67GfTaW/EELsUyYeUHSR+qreMSXXPxMWz6dLHeZaJVd/R+nv/wAHtPi0kJh5WXQgqt5lJb1n1foP83a5v9YB35NqrWdAyW/zdjH/ABlp/imHBkH6N+SbcpJW7Ol59fNJI/kw7/qVWex7DD2lp8CIUZjIbgjzUxSSSTVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUukkkkpZJJJJCkkkklMmMfY4MY0uc7QNGpK1KOitYA/PuFIOvpgguU2WU4jTXhj3HR97h73fDwCCZcS5xJJ5J1KswwAay1Pboh08fB6K/2VMa938ouk/es3rXTasQstokVvJBaddp8j5qeLuGTUW872/lW7kVV3Vmuxocx3IKllijKNAAHoVPFpLR6j0mzGm2qX0d/FvxWcqcoSiakKSpJJJNUpJJJJSk6ZOklZJJJJSkkkevBzLfoUvI8YgfeUQCdhakCS0q+hZr/AKe2seZk/wDRlWq/q9WP524nyaAPyypBgyH9GvPRVuGkumr6PgM5rLz4uJP9wVqvHoq/m62s/qgBSDlZdSB+KLeVrxMq3+bqe4eIaY+9Wa+i57+WBg/lOH8JXSpKQcrDqSfwVbh1/V6w/wA5cB5NBP5YVmvoOG36bnvPxAH4BaaSkGDGP0ftRbUZ0zAr4paf60u/6qVYZVXXoxjW/wBUAfkU0k8RiNgB5KUkkknKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUmc1rhDgCPA6p0kFNWzpuDb9KloPi32/9TCqW9Ax3fzVjmHzhw/gtVJMOKB3iFPP29By261ubYPD6J/HT8VTtwcyn+cpcAO4Ej7xK6xJRy5WB2Jim3jEy6+3Fx7v52tr/ADIE/eqVvQ8N+te6o+Rkf9JRS5WY2Il+CredSWrb0DIbrVY2weB9p/iqV2DmU/zlTgB3AkfeJUMsc47xKWukkkmKUkkkkpSSSSSlJJJJKXSRMfHtybW01CXOMeQ8ytj/AJte3+ke/wDqaf8AVJ8ccpaxFocJJXsvo+biguLfUrH57NY+I5VFNMSDRFKUkkkgp1AE8JwFJrHPcGtEuJgBaKGz0yjff6h+jXr8zwtRxkqFNLcekVj6XLj4lST4jqpblYvUujxN+INOXVD8rf7ltpITxxmKP2qeLSW91TpPrH18Vv6Qn3s0Ad5jzVWroOU7Wx7ax/nH8NPxVGWDIJUBfj0S5aS6CroGK3Wx7rD/AJo/v/FXKsDDq+hS2R3I3H73Snx5WZ3Iiq3l66L7f5qtz/6oJVuroufZy0Vjxcf7pXScJ1LHlY9ST+CrcWr6vDm675MH8T/crdfRsCvlhefFxP8ACAr6SkjhxjaI+uqLR10UVfzVbWf1QAiJJKQCtlKSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSG7Dxb/52prj4xr941VG7oOK/Wp7qz4fSH46/itRJMljhLeIKnnbuh5jNa9to8jB+5yo2499Ji2tzPiCAuwTEAiDqD2UMuViflJj+KbeMSXU3dMwbvpVBp8W+38iq/wDN/G9SfUfs/d0n71EeWyDaiq3CrrsteGVtL3HgAStfE6CTD8t0f8G3n5la1GNRjt2UsDB3jk/Eoqlx8tEay9R7dFWwx6KaAGVMDG+X8ULqGTZVtZWdpdJJ7qwq/Uq99TbR+aYPwKmIqqQ1a8/JYdXbx4OQ8jCw+oS6mMfK/d/NeUOEk2UBIURanJvotx7DVc0seOx/ghroHGnMrFGXo4fzd3dp8/JZZ6ZktzW4bgA9/wBF/wCaWjXd9wVSWExkBvGRAtNtxamFi+i31bB+kd9EeATYmEKotuHv/Nb4KySSZKugWhRM6pJJJ6lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkmSUukmSSUukmSSUumSSSUpJJJJSkkkklKSSSSUukmSSUukmSSUukkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJwGuaWO1a4QmSQKnKuqdTYa3duD4hQWpk0DIr0/nG/RPj5LMIIJBEEaEJqmJCJ626n07BLmfzT+7Z0cPgQoJoSpTskk6lJMnT1KSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkySl0kySSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpdJMkkpdJMnSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUoGNUHKxRcPUr0sHI/eRkgSNQgQpyNQYOhHITLTyMVmQNzfbb49j8VQ9C0Wiot954Cap00kkk9S6SZJJS6SZOkpSSaQlub4pKXSUd4Tbx4IKZpKG/yTbykpIkh7ylvckpIkh7neKbc7xSUlSQtzvFLc7xSUlSQtzvFPud4pKSJIe9yW8pKSJKG8+CW/ySUzSUd4S3N8UlMkk0jxToqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSTFwCg60DkhqFqSJKv8AaK/31Jt7Dw8JWpMkoh4PKkipSSSSSlJ0ySSl0kySSl0kydJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKT7gdSPcOCmSQUsm3Ad0OSUkVM94TbyopIKZbnJpKZJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTyUySSmW53in3nwUEklJN4Tgg90JJJSZJCBI7pw890lJEyYPCdFSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU1sux7I2/nfnKkSSZOpWq5rXCHCQexVd+Cw6sJb5chAhTSSVk4NnZw/FO3BP5z/uCFFCCu2xhAbr/ACVpiYE8oVWPXVqBLvEoqICVJJJIqUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJ0ySSl0kySSlJJJJKUklKbcElLpJtybcUlMklHcUtxSUwSSSQUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklMg8/FSDwfJDSSUlSQgSOFMP8UVMkkgQeEklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTF3gkpcmFEuKZJJSkkkklKSSSSUpJJJJTFJMnSUpJJJBSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJNub4hK1LpJSCklalJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSkHnuopIqSAg8J0JSD/FJTNJMDPCdJSkkkklKSSSSUpJJJJSkkkklKSSTJKXSTJJKXSTJJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkzj2SUsT2TJJJKUkkkkpSSSSSlJJJJKUkkkkpgkkkkpSdMkkpdJMkkpdJMnSUpJJJBSlF9jGCXGEK6/Z7W6u7nwVUkuMkyULU2H5Z/MHzKE6613Lj8tENJBS5JPJlMkkkhdSFljeHFQSSUnblPH0gHD7ij13V2aAwfAqikil0klWoyDIY8/AqyiFKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSTIqXSTJJKXTJJJKUkkkkpSSSSSlwSOFMPB50Q0klJkkMOI+CmCDwkpdMkkkpSSSSSFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKXSTJJJXSTJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKJhQTuPZMkpSSSSSlJJJJKUkkkkpSSZJJS6SZJJTFJJJJCkkkkEqSSSRUpJJJJSlG1+xhd34HxUkHKBNYI7HVAqakzqUkkk1CkkkklKSSSSUpJJJJSkkkklKV6hxdU0nnj7lRAJMDkq/W3YwN8EQpmkmSTkrpJkklLpJkklLpJkklKSSSSUpJJJJSkkkklKSSSSUpJJJBSkkkkUKSSSSUpJJJJSk4JHCZJJSQOB+KdCU2unQ8pKZJJJJJUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJIUkkkkpSdMkkldJMkkpdJMnSUpJJJJSkkkx4SUxKZJJJSkkkklKSSSSUpJJJJSkkkpSUpJMXRzom3DxCFqUkkkihSSSSSlJJJJKUkkkkpSRAIg6gpJIKaV1LqzI1b2KGtHnlAsxWu1Ydp8OyFKaqSm6i1v5sjxGqhwgpSSSSSlJJJ2se76LSUlLJAEmBqUdmK8/TO0eHJVhlTK/ojXx7o0pHRRs9zvpdh4IySSKVJJJIqUkkkkpSSSSClJJJJKUkkkkpSSSSKFJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJJUkkkkhm13YqSEptd2KSmSSSSSVJJJJIUkkkkpSSSSSlJJJJKUkkkklSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSFJJJJKUmdwnTO4SUxSSSSUpJJJJSkkkklKSSSSUpVLsgyWs0jlytOktMcxos06aFAqUSSZJk+aSZJNU6SSSSelSSSSSFJJJJKUkkkkpSSSSSlJJJJKUmIB5Ep0klMTVWfzR9yb0av3QppIKYhjBw0D5KSSSKlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSSFJJJJKUkkkkpSSSSSlJJJJKUkkkkpm106HlSQkRpkJKXSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkqSSSSUpJJJJSkkkklKSSSSUpMeE6SSmCSSSSFJJJJKUkkkkpSSSSSlIF+MH+5uju/gUdJJTnOrez6TSFBaiba3wCFKWSSSRUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSSpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkkKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkgYMpJJKSjVJQYeymkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkklSSSSSmJ5TKThoopIUkkkkpSSSSSlJJJJKUkkkkpSSSSSmKSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSI0yENOwwfikpIkkkkpSSSSSlJJJJKUkkm3N8UlLpKO9qW9qSWSSaR4p0kKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpRIhSSOqSmCSREJJKUkkkkpSSSSSlJJJJKUkkkkpikkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpI0yE6gw6wppKUkkmJgSkpRIHKg6yBJMDxKDfkBmg1d4eCqPe55lxlAlTaflVjiXFDOW7s0D46qukgq032q3y+5L7Vb5fcgpIKbAyz+c0fJFZlVnvtPmqSSNqdVrwf71JZbLX1n2nTw7K7RkNsEcHuEQVJ0kkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKIlQIhTSSUwSTlvgmSUpJJJJSkkkklKSSSSUxSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUoGDKKhIjTICSl0LIs9Nk/d8UVVs4H02kcA6pHZTRJJMnUlJJJMUpJJJJSkkkklKSSSSUpO1xa4OHITJJKdWp4fW147hSQ6GllTWnmNfnqiJ6lJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUlEpJJKY7UtpUkklMISU0klMElNJJSJJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSlNncKCkzlJTNM5oe0tdqDynSSU5l1DqnQdWnhyGtZzWuEOEg9iqtuD3qP9k/3oEKaaSm+qxn0mkefZQTVKSSSSUpJJFZj3P4bA8TokpErOLjFxFjx7RwPFGqw2M1f7neHZWE4BSkkkkVKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSJJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk7fpBMkOQkpKkkkkpSSSSSlKDqq3fSYD8lNJJSL7NR+4E4xqB+YERJJTFrGN+i0D4BSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSJJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkhykkOUlJUkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSJJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkhyEk7fpBJSRJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUiSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpSZyoqbO5SUySSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklIkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKRGiAEMCTCKkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpEkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpkwaz4KaZogJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklIkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSk7RJTKbBAnxSUySSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUiSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklLtElEUWiB5qSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKRJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSdgkz2CYCTCKBAhJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUiSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJSY3ufkkpdrYHmpJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSkSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSdrZ+CSlNbOp4REkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklIkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJO1s/BJSmtn4InCXCSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKRJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkpNZ3KSlmtnU8IiSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpEkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkBKcNJUwAOElLNbHPKkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpEkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpSSScNJSUspBnj9ykGgJ0lKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSJJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpIAnhJJJTMMA5UkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP//Z);
background: #888888;
padding: 0;
border: 0;
margin: 0;
height: 100%;
}
/* 拍照全屏*/
#photoVideo{
object-fit:fill;
}
</style>
</head>
<body>
<div style="margin: auto;width: 100%;height: 100%;" class="egret-player" data-entry-class="Main" data-orientation="auto"
data-scale-mode="showAll" data-frame-rate="60" data-content-width="750" data-content-height="1624"
data-multi-fingered="2" data-show-fps="false" data-show-log="false" data-show-fps-style="x:0,y:0,size:12,textColor:0xffffff,bgAlpha:0.9">
<div id="egretContainer" style="margin: auto;width: 100%;height: 100%;" class="egret-player" data-entry-class="Main" data-orientation="auto"
data-scale-mode="showAll" data-frame-rate="60" data-content-width="750" data-content-height="1624" data-multi-fingered="2"
data-show-fps="false" data-show-log="false" data-show-fps-style="x:0,y:0,size:12,textColor:0xffffff,bgAlpha:0.9">
</div>
<div class="mobliecontrols">
<div id="left"></div>
<div id="right"></div>
</div>
<script src="libs/babylonjs/cannon.js"></script>
<script src="libs/babylonjs/Oimo.js"></script>
<script src="libs/babylonjs/matter.min.js"></script>
<script src="libs/babylonjs/babylon.custom.js"></script>
<script src="libs/babylonjs/babylon.gui.js"></script>
<script src="libs/babylonjs/babylonjs.loader.js"></script>
<script src="libs/babylonjs/pep.min.js"></script>
<script src="libs/modules/egret/egret.js"></script>
<script src="libs/modules/egret/egret.web.js"></script>
<script src="libs/modules/eui/eui.js"></script>
......@@ -41,6 +52,10 @@
<script src="libs/zepto.min.js"></script>
<script src="libs/security.js"></script>
<script src="libs/downloadApp.js"></script>
<!-- <script src="libs/vConsole.min.js"></script> -->
<!-- <script src="default.thm.js"></script> -->
<script>
window['development'] = true;
var gameId = 1;
......@@ -74,8 +89,29 @@
return b;
}
</script>
<script src="output.js"></script>
<script>
// window['resPath'] = 'https://yun.duiba.com.cn/db_games/activity/fishaqy/1535713239/'
/**
* {
* "renderMode":, //Engine rendering mode, "canvas" or "webgl"
* "audioType": 0 //Use the audio type, 0: default, 2: web audio, 3: audio
* "antialias": //Whether the anti-aliasing is enabled in WebGL mode, true: on, false: off, defaults to false
* "calculateCanvasScaleFactor": //a function return canvas scale factor
* }
**/
egret.runEgret({
renderMode: "webgl", audioType: 0, calculateCanvasScaleFactor: function (context) {
var backingStore = context.backingStorePixelRatio ||
context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1;
return (window.devicePixelRatio || 1) / backingStore;
}
});
</script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
var BABYLON;!(function(s){var e,t,r,n,o;(t=e=s.GLTFLoaderCoordinateSystemMode||(s.GLTFLoaderCoordinateSystemMode={}))[t.AUTO=0]="AUTO",t[t.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED",(n=r=s.GLTFLoaderAnimationStartMode||(s.GLTFLoaderAnimationStartMode={}))[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL",(o=s.GLTFLoaderState||(s.GLTFLoaderState={}))[o.LOADING=0]="LOADING",o[o.READY=1]="READY",o[o.COMPLETE=2]="COMPLETE";var a=(function(){function l(){this.onParsedObservable=new s.Observable,this.coordinateSystemMode=e.AUTO,this.animationStartMode=r.FIRST,this.compileMaterials=!1,this.useClipPlane=!1,this.compileShadowGenerators=!1,this.transparencyAsCoverage=!1,this._normalizeAnimationGroupsToBeginAtZero=!0,this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable=new s.Observable,this.onTextureLoadedObservable=new s.Observable,this.onMaterialLoadedObservable=new s.Observable,this.onCameraLoadedObservable=new s.Observable,this.onCompleteObservable=new s.Observable,this.onErrorObservable=new s.Observable,this.onDisposeObservable=new s.Observable,this.onExtensionLoadedObservable=new s.Observable,this._loader=null,this.name="gltf",this.extensions={".gltf":{isBinary:!1},".glb":{isBinary:!0}},this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled}return Object.defineProperty(l.prototype,"onParsed",{set:function(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),this._onParsedObserver=this.onParsedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onMeshLoaded",{set:function(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onTextureLoaded",{set:function(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onMaterialLoaded",{set:function(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onCameraLoaded",{set:function(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onComplete",{set:function(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onError",{set:function(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onDispose",{set:function(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"onExtensionLoaded",{set:function(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)},enumerable:!0,configurable:!0}),l.prototype.whenCompleteAsync=function(){var r=this;return new Promise(function(e,t){r.onCompleteObservable.addOnce((function(){e()})),r.onErrorObservable.addOnce((function(e){t(e)}))})},Object.defineProperty(l.prototype,"loaderState",{get:function(){return this._loader?this._loader.state:null},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"loggingEnabled",{get:function(){return this._loggingEnabled},set:function(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"capturePerformanceCounters",{get:function(){return this._capturePerformanceCounters},set:function(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))},enumerable:!0,configurable:!0}),l.prototype.dispose=function(){this._loader&&(this._loader.dispose(),this._loader=null),this._clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()},l.prototype._clear=function(){this.preprocessUrlAsync=function(e){return Promise.resolve(e)},this.onMeshLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear()},l.prototype.importMeshAsync=function(t,r,n,o,a,i){var s=this;return Promise.resolve().then((function(){var e=s._parse(n);return s._loader=s._getLoader(e),s._loader.importMeshAsync(t,r,e,o,a,i)}))},l.prototype.loadAsync=function(t,r,n,o,a){var i=this;return Promise.resolve().then((function(){var e=i._parse(r);return i._loader=i._getLoader(e),i._loader.loadAsync(t,e,n,o,a)}))},l.prototype.loadAssetContainerAsync=function(r,t,n,o,a){var i=this;return Promise.resolve().then((function(){var e=i._parse(t);return i._loader=i._getLoader(e),i._loader.importMeshAsync(null,r,e,n,o,a).then((function(e){var t=new s.AssetContainer(r);return Array.prototype.push.apply(t.meshes,e.meshes),Array.prototype.push.apply(t.particleSystems,e.particleSystems),Array.prototype.push.apply(t.skeletons,e.skeletons),Array.prototype.push.apply(t.animationGroups,e.animationGroups),t.removeAllFromScene(),t}))}))},l.prototype.canDirectLoad=function(e){return-1!==e.indexOf("scene")&&-1!==e.indexOf("node")},l.prototype.createPlugin=function(){return new l},l.prototype._parse=function(e){var t;return this._startPerformanceCounter("Parse"),e instanceof ArrayBuffer?(this._log("Parsing binary"),t=this._parseBinary(e)):(this._log("Parsing JSON"),this._log("JSON length: "+e.length),t={json:JSON.parse(e),bin:null}),this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._endPerformanceCounter("Parse"),t},l.prototype._getLoader=function(e){var t=e.json.asset||{};this._log("Asset version: "+t.version),t.minVersion&&this._log("Asset minimum version: "+t.minVersion),t.generator&&this._log("Asset generator: "+t.generator);var r=l._parseVersion(t.version);if(!r)throw new Error("Invalid version: "+t.version);if(void 0!==t.minVersion){var n=l._parseVersion(t.minVersion);if(!n)throw new Error("Invalid minimum version: "+t.minVersion);if(0<l._compareVersion(n,{major:2,minor:0}))throw new Error("Incompatible minimum version: "+t.minVersion)}var o={1:l._CreateGLTFLoaderV1,2:l._CreateGLTFLoaderV2}[r.major];if(!o)throw new Error("Unsupported version: "+t.version);return o(this)},l.prototype._parseBinary=function(e){this._log("Binary length: "+e.byteLength);var t=new i(e),r=t.readUint32();if(1179937895!==r)throw new Error("Unexpected magic: "+r);var n=t.readUint32();switch(this.loggingEnabled&&this._log("Binary version: "+n),n){case 1:return this._parseV1(t);case 2:return this._parseV2(t)}throw new Error("Unsupported version: "+n)},l.prototype._parseV1=function(e){var t=e.readUint32();if(t!=e.getLength())throw new Error("Length in header does not match actual data length: "+t+" != "+e.getLength());var r,n=e.readUint32(),o=e.readUint32();switch(o){case 0:r=JSON.parse(l._decodeBufferToText(e.readUint8Array(n)));break;default:throw new Error("Unexpected content format: "+o)}var a=e.getLength()-e.getPosition();return{json:r,bin:e.readUint8Array(a)}},l.prototype._parseV2=function(e){var t=1313821514,r=5130562,n=e.readUint32();if(n!==e.getLength())throw new Error("Length in header does not match actual data length: "+n+" != "+e.getLength());var o=e.readUint32();if(e.readUint32()!==t)throw new Error("First chunk format is not JSON");for(var a=JSON.parse(l._decodeBufferToText(e.readUint8Array(o))),i=null;e.getPosition()<e.getLength();){var s=e.readUint32();switch(e.readUint32()){case t:throw new Error("Unexpected JSON chunk");case r:i=e.readUint8Array(s);break;default:e.skipBytes(s)}}return{json:a,bin:i}},l._parseVersion=function(e){if("1.0"===e||"1.0.1"===e)return{major:1,minor:0};var t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null},l._compareVersion=function(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0},l._decodeBufferToText=function(e){for(var t="",r=e.byteLength,n=0;n<r;n++)t+=String.fromCharCode(e[n]);return t},l.prototype._logOpen=function(e){this._log(e),this._logIndentLevel++},l.prototype._logClose=function(){--this._logIndentLevel},l.prototype._logEnabled=function(e){var t=l._logSpaces.substr(0,2*this._logIndentLevel);s.Tools.Log(""+t+e)},l.prototype._logDisabled=function(e){},l.prototype._startPerformanceCounterEnabled=function(e){s.Tools.StartPerformanceCounter(e)},l.prototype._startPerformanceCounterDisabled=function(e){},l.prototype._endPerformanceCounterEnabled=function(e){s.Tools.EndPerformanceCounter(e)},l.prototype._endPerformanceCounterDisabled=function(e){},l.IncrementalLoading=!0,l.HomogeneousCoordinates=!1,l._logSpaces=" ",l})();s.GLTFFileLoader=a;var i=(function(){function e(e){this._arrayBuffer=e,this._dataView=new DataView(e),this._byteOffset=0}return e.prototype.getPosition=function(){return this._byteOffset},e.prototype.getLength=function(){return this._arrayBuffer.byteLength},e.prototype.readUint32=function(){var e=this._dataView.getUint32(this._byteOffset,!0);return this._byteOffset+=4,e},e.prototype.readUint8Array=function(e){var t=new Uint8Array(this._arrayBuffer,this._byteOffset,e);return this._byteOffset+=e,t},e.prototype.skipBytes=function(e){this._byteOffset+=e},e})();s.SceneLoader&&s.SceneLoader.RegisterPlugin(new a)})(BABYLON||(BABYLON={})),(function(A){!(function(e){var v=(function(){function e(){}return e.Get=function(e,t,r){if(!t||null==r||!t[r])throw new Error(e+": Failed to find index ("+r+")");return t[r]},e.Assign=function(e){if(e)for(var t=0;t<e.length;t++)e[t].index=t},e})();e.ArrayItem=v;var t=(function(){function p(e){this._completePromises=new Array,this._disposed=!1,this._state=null,this._extensions={},this._defaultBabylonMaterialData={},this._requests=new Array,this._parent=e}return p.RegisterExtension=function(e,t){p.UnregisterExtension(e)&&A.Tools.Warn("Extension with the name '"+e+"' already exists"),p._ExtensionFactories[e]=t,p._ExtensionNames.push(e)},p.UnregisterExtension=function(e){if(!p._ExtensionFactories[e])return!1;delete p._ExtensionFactories[e];var t=p._ExtensionNames.indexOf(e);return-1!==t&&p._ExtensionNames.splice(t,1),!0},Object.defineProperty(p.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),p.prototype.dispose=function(){if(!this._disposed){this._disposed=!0;for(var e=0,t=this._requests;e<t.length;e++){t[e].abort()}for(var r in this._requests.length=0,delete this.gltf,delete this.babylonScene,this._completePromises.length=0,this._extensions){this._extensions[r].dispose&&this._extensions[r].dispose()}this._extensions={},delete this._rootBabylonMesh,delete this._progressCallback,this._parent._clear()}},p.prototype.importMeshAsync=function(a,i,s,l,u,c){var d=this;return Promise.resolve().then((function(){d.babylonScene=i,d._rootUrl=l,d._fullName=c||""+Date.now(),d._progressCallback=u,d._loadData(s);var e=null;if(a){var r={};if(d.gltf.nodes)for(var t=0,n=d.gltf.nodes;t<n.length;t++){var o=n[t];o.name&&(r[o.name]=o.index)}e=(a instanceof Array?a:[a]).map((function(e){var t=r[e];if(void 0===t)throw new Error("Failed to find node '"+e+"'");return t}))}return d._loadAsync(e,(function(){return{meshes:d._getMeshes(),particleSystems:[],skeletons:d._getSkeletons(),animationGroups:d._getAnimationGroups()}}))}))},p.prototype.loadAsync=function(e,t,r,n,o){var a=this;return Promise.resolve().then((function(){return a.babylonScene=e,a._rootUrl=r,a._fullName=o||""+Date.now(),a._progressCallback=n,a._loadData(t),a._loadAsync(null,(function(){}))}))},p.prototype._loadAsync=function(a,i){var s=this;return Promise.resolve().then((function(){s._loadExtensions(),s._checkExtensions();var e=A.GLTFLoaderState[A.GLTFLoaderState.LOADING]+" => "+A.GLTFLoaderState[A.GLTFLoaderState.READY],t=A.GLTFLoaderState[A.GLTFLoaderState.LOADING]+" => "+A.GLTFLoaderState[A.GLTFLoaderState.COMPLETE];s._parent._startPerformanceCounter(e),s._parent._startPerformanceCounter(t),s._setState(A.GLTFLoaderState.LOADING),s._extensionsOnLoading();var r=new Array;if(a)r.push(s.loadSceneAsync("#/nodes",{nodes:a,index:-1}));else{var n=v.Get("#/scene",s.gltf.scenes,s.gltf.scene||0);r.push(s.loadSceneAsync("#/scenes/"+n.index,n))}s._parent.compileMaterials&&r.push(s._compileMaterialsAsync()),s._parent.compileShadowGenerators&&r.push(s._compileShadowGeneratorsAsync());var o=Promise.all(r).then((function(){return s._setState(A.GLTFLoaderState.READY),s._extensionsOnReady(),s._startAnimations(),i()}));return o.then((function(){s._parent._endPerformanceCounter(e),A.Tools.SetImmediate((function(){s._disposed||Promise.all(s._completePromises).then((function(){s._parent._endPerformanceCounter(t),s._setState(A.GLTFLoaderState.COMPLETE),s._parent.onCompleteObservable.notifyObservers(void 0),s._parent.onCompleteObservable.clear(),s.dispose()}),(function(e){s._parent.onErrorObservable.notifyObservers(e),s._parent.onErrorObservable.clear(),s.dispose()}))}))})),o}),(function(e){throw s._disposed||(s._parent.onErrorObservable.notifyObservers(e),s._parent.onErrorObservable.clear(),s.dispose()),e}))},p.prototype._loadData=function(e){if(this.gltf=e.json,this._setupData(),e.bin){var t=this.gltf.buffers;if(t&&t[0]&&!t[0].uri){var r=t[0];(r.byteLength<e.bin.byteLength-3||r.byteLength>e.bin.byteLength)&&A.Tools.Warn("Binary buffer length ("+r.byteLength+") from JSON does not match chunk length ("+e.bin.byteLength+")"),r._data=Promise.resolve(e.bin)}else A.Tools.Warn("Unexpected BIN chunk")}},p.prototype._setupData=function(){if(v.Assign(this.gltf.accessors),v.Assign(this.gltf.animations),v.Assign(this.gltf.buffers),v.Assign(this.gltf.bufferViews),v.Assign(this.gltf.cameras),v.Assign(this.gltf.images),v.Assign(this.gltf.materials),v.Assign(this.gltf.meshes),v.Assign(this.gltf.nodes),v.Assign(this.gltf.samplers),v.Assign(this.gltf.scenes),v.Assign(this.gltf.skins),v.Assign(this.gltf.textures),this.gltf.nodes){for(var e={},t=0,r=this.gltf.nodes;t<r.length;t++){if((l=r[t]).children)for(var n=0,o=l.children;n<o.length;n++){e[o[n]]=l.index}}for(var a=this._createRootNode(),i=0,s=this.gltf.nodes;i<s.length;i++){var l,u=e[(l=s[i]).index];l.parent=void 0===u?a:this.gltf.nodes[u]}}},p.prototype._loadExtensions=function(){for(var e=0,t=p._ExtensionNames;e<t.length;e++){var r=t[e],n=p._ExtensionFactories[r](this);this._extensions[r]=n,this._parent.onExtensionLoadedObservable.notifyObservers(n)}this._parent.onExtensionLoadedObservable.clear()},p.prototype._checkExtensions=function(){if(this.gltf.extensionsRequired)for(var e=0,t=this.gltf.extensionsRequired;e<t.length;e++){var r=t[e],n=this._extensions[r];if(!n||!n.enabled)throw new Error("Require extension "+r+" is not available")}},p.prototype._setState=function(e){this._state=e,this.log(A.GLTFLoaderState[this._state])},p.prototype._createRootNode=function(){this._rootBabylonMesh=new A.Mesh("__root__",this.babylonScene);var e={_babylonMesh:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case A.GLTFLoaderCoordinateSystemMode.AUTO:this.babylonScene.useRightHandedSystem||(e.rotation=[0,1,0,0],e.scale=[1,1,-1],p._LoadTransform(e,this._rootBabylonMesh));break;case A.GLTFLoaderCoordinateSystemMode.FORCE_RIGHT_HANDED:this.babylonScene.useRightHandedSystem=!0;break;default:throw new Error("Invalid coordinate system mode ("+this._parent.coordinateSystemMode+")")}return this._parent.onMeshLoadedObservable.notifyObservers(this._rootBabylonMesh),e},p.prototype.loadSceneAsync=function(e,t){var r=this,n=this._extensionsLoadSceneAsync(e,t);if(n)return n;var o=new Array;if(this.logOpen(e+" "+(t.name||"")),t.nodes)for(var a=0,i=t.nodes;a<i.length;a++){var s=i[a],l=v.Get(e+"/nodes/"+s,this.gltf.nodes,s);o.push(this.loadNodeAsync("#/nodes/"+l.index,l,(function(e){e.parent=r._rootBabylonMesh})))}return o.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(o).then((function(){}))},p.prototype._forEachPrimitive=function(e,t){if(e._primitiveBabylonMeshes)for(var r=0,n=e._primitiveBabylonMeshes;r<n.length;r++){t(n[r])}else t(e._babylonMesh)},p.prototype._getMeshes=function(){var e=new Array;e.push(this._rootBabylonMesh);var t=this.gltf.nodes;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];if(o._babylonMesh&&e.push(o._babylonMesh),o._primitiveBabylonMeshes)for(var a=0,i=o._primitiveBabylonMeshes;a<i.length;a++){var s=i[a];e.push(s)}}return e},p.prototype._getSkeletons=function(){var e=new Array,t=this.gltf.skins;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];o._babylonSkeleton&&e.push(o._babylonSkeleton)}return e},p.prototype._getAnimationGroups=function(){var e=new Array,t=this.gltf.animations;if(t)for(var r=0,n=t;r<n.length;r++){var o=n[r];o._babylonAnimationGroup&&e.push(o._babylonAnimationGroup)}return e},p.prototype._startAnimations=function(){switch(this._parent.animationStartMode){case A.GLTFLoaderAnimationStartMode.NONE:break;case A.GLTFLoaderAnimationStartMode.FIRST:0!==(e=this._getAnimationGroups()).length&&e[0].start(!0);break;case A.GLTFLoaderAnimationStartMode.ALL:for(var e,t=0,r=e=this._getAnimationGroups();t<r.length;t++){r[t].start(!0)}break;default:return void A.Tools.Error("Invalid animation start mode ("+this._parent.animationStartMode+")")}},p.prototype.loadNodeAsync=function(r,n,e){var o=this;void 0===e&&(e=function(){});var t=this._extensionsLoadNodeAsync(r,n,e);if(t)return t;if(n._babylonMesh)throw new Error(r+": Invalid recursive node hierarchy");var a=new Array;this.logOpen(r+" "+(n.name||""));var i=new A.Mesh(n.name||"node"+n.index,this.babylonScene);if((n._babylonMesh=i).setEnabled(!1),p._LoadTransform(n,i),null!=n.mesh){var s=v.Get(r+"/mesh",this.gltf.meshes,n.mesh);a.push(this._loadMeshAsync("#/meshes/"+s.index,n,s,i))}if(null!=n.camera){var l=v.Get(r+"/camera",this.gltf.cameras,n.camera);a.push(this.loadCameraAsync("#/cameras/"+l.index,l,(function(e){e.parent=i})))}if(n.children)for(var u=function(e){var t=v.Get(r+"/children/"+e,c.gltf.nodes,e);a.push(c.loadNodeAsync("#/nodes/"+n.index,t,(function(e){null==t.skin?e.parent=i:e.parent=o._rootBabylonMesh})))},c=this,d=0,f=n.children;d<f.length;d++){u(f[d])}return e(i),this._parent.onMeshLoadedObservable.notifyObservers(i),this.logClose(),Promise.all(a).then((function(){return i.setEnabled(!0),i}))},p.prototype._loadMeshAsync=function(e,t,r,n){var o=this,a=new Array;this.logOpen(e+" "+(r.name||""));var i=r.primitives;if(!i||0===i.length)throw new Error(e+": Primitives are missing");if(v.Assign(i),1===i.length){var s=i[0];a.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+s.index,t,r,s,n))}else{t._primitiveBabylonMeshes=[];for(var l=0,u=i;l<u.length;l++){s=u[l];var c=new A.Mesh((r.name||n.name)+"_"+s.index,this.babylonScene,n);t._primitiveBabylonMeshes.push(c),a.push(this._loadMeshPrimitiveAsync(e+"/primitives/"+s.index,t,r,s,c)),this._parent.onMeshLoadedObservable.notifyObservers(n)}}if(null!=t.skin){var d=v.Get(e+"/skin",this.gltf.skins,t.skin);a.push(this._loadSkinAsync("#/skins/"+d.index,t,d))}return this.logClose(),Promise.all(a).then((function(){o._forEachPrimitive(t,(function(e){e._refreshBoundingInfo(!0)}))}))},p.prototype._loadMeshPrimitiveAsync=function(t,e,r,n,o){var a=this,i=new Array;this.logOpen(""+t),this._createMorphTargets(t,e,r,n,o),i.push(this._loadVertexDataAsync(t,n,o).then((function(e){return a._loadMorphTargetsAsync(t,n,o,e).then((function(){e.applyToMesh(o)}))})));var s=p._GetDrawMode(t,n.mode);if(null==n.material){var l=this._defaultBabylonMaterialData[s];l||(l=this._createDefaultMaterial("__gltf_default",s),this._parent.onMaterialLoadedObservable.notifyObservers(l),this._defaultBabylonMaterialData[s]=l),o.material=l}else{var u=v.Get(t+"/material",this.gltf.materials,n.material);i.push(this._loadMaterialAsync("#/materials/"+u.index,u,o,s,(function(e){o.material=e})))}return this.logClose(),Promise.all(i).then((function(){}))},p.prototype._loadVertexDataAsync=function(o,e,a){var i=this,t=this._extensionsLoadVertexDataAsync(o,e,a);if(t)return t;var s=e.attributes;if(!s)throw new Error(o+": Attributes are missing");var l=new Array,u=new A.Geometry(a.name,this.babylonScene);if(null==e.indices)a.isUnIndexed=!0;else{var r=v.Get(o+"/indices",this.gltf.accessors,e.indices);l.push(this._loadIndicesAccessorAsync("#/accessors/"+r.index,r).then((function(e){u.setIndices(e)})))}var n=function(e,t,r){if(null!=s[e]){a._delayInfo=a._delayInfo||[],-1===a._delayInfo.indexOf(t)&&a._delayInfo.push(t);var n=v.Get(o+"/attributes/"+e,i.gltf.accessors,s[e]);l.push(i._loadVertexAccessorAsync("#/accessors/"+n.index,n,t).then((function(e){u.setVerticesBuffer(e,n.count)}))),r&&r(n)}};return n("POSITION",A.VertexBuffer.PositionKind),n("NORMAL",A.VertexBuffer.NormalKind),n("TANGENT",A.VertexBuffer.TangentKind),n("TEXCOORD_0",A.VertexBuffer.UVKind),n("TEXCOORD_1",A.VertexBuffer.UV2Kind),n("JOINTS_0",A.VertexBuffer.MatricesIndicesKind),n("WEIGHTS_0",A.VertexBuffer.MatricesWeightsKind),n("COLOR_0",A.VertexBuffer.ColorKind,(function(e){"VEC4"===e.type&&(a.hasVertexAlpha=!0)})),Promise.all(l).then((function(){return u}))},p.prototype._createMorphTargets=function(e,t,r,n,o){if(n.targets){if(null==t._numMorphTargets)t._numMorphTargets=n.targets.length;else if(n.targets.length!==t._numMorphTargets)throw new Error(e+": Primitives do not have the same number of targets");o.morphTargetManager=new A.MorphTargetManager;for(var a=0;a<n.targets.length;a++){var i=t.weights?t.weights[a]:r.weights?r.weights[a]:0;o.morphTargetManager.addTarget(new A.MorphTarget("morphTarget"+a,i))}}},p.prototype._loadMorphTargetsAsync=function(e,t,r,n){if(!t.targets)return Promise.resolve();for(var o=new Array,a=r.morphTargetManager,i=0;i<a.numTargets;i++){var s=a.getTarget(i);o.push(this._loadMorphTargetVertexDataAsync(e+"/targets/"+i,n,t.targets[i],s))}return Promise.all(o).then((function(){}))},p.prototype._loadMorphTargetVertexDataAsync=function(a,i,s,t){var l=this,u=new Array,e=function(e,t,r){if(null!=s[e]){var n=i.getVertexBuffer(t);if(n){var o=v.Get(a+"/"+e,l.gltf.accessors,s[e]);u.push(l._loadFloatAccessorAsync("#/accessors/"+o.index,o).then((function(e){r(n,e)})))}}};return e("POSITION",A.VertexBuffer.PositionKind,(function(e,r){e.forEach(r.length,(function(e,t){r[t]+=e})),t.setPositions(r)})),e("NORMAL",A.VertexBuffer.NormalKind,(function(e,r){e.forEach(r.length,(function(e,t){r[t]+=e})),t.setNormals(r)})),e("TANGENT",A.VertexBuffer.TangentKind,(function(e,r){var n=0;e.forEach(r.length/3*4,(function(e,t){(t+1)%4!=0&&(r[n++]+=e)})),t.setTangents(r)})),Promise.all(u).then((function(){}))},p._LoadTransform=function(e,t){var r=A.Vector3.Zero(),n=A.Quaternion.Identity(),o=A.Vector3.One();e.matrix?A.Matrix.FromArray(e.matrix).decompose(o,n,r):(e.translation&&(r=A.Vector3.FromArray(e.translation)),e.rotation&&(n=A.Quaternion.FromArray(e.rotation)),e.scale&&(o=A.Vector3.FromArray(e.scale)));t.position=r,t.rotationQuaternion=n,t.scaling=o},p.prototype._loadSkinAsync=function(e,r,t){var n=this,o=function(t){n._forEachPrimitive(r,(function(e){e.skeleton=t})),r._babylonMesh.position=A.Vector3.Zero(),r._babylonMesh.rotationQuaternion=A.Quaternion.Identity(),r._babylonMesh.scaling=A.Vector3.One()};if(t._promise)return t._promise.then((function(){o(t._babylonSkeleton)}));var a="skeleton"+t.index,i=new A.Skeleton(t.name||a,a,this.babylonScene);return t._babylonSkeleton=i,this._loadBones(e,t),o(i),t._promise=this._loadSkinInverseBindMatricesDataAsync(e,t).then((function(e){n._updateBoneMatrices(i,e)}))},p.prototype._loadBones=function(e,t){for(var r={},n=0,o=t.joints;n<o.length;n++){var a=o[n],i=v.Get(e+"/joints/"+a,this.gltf.nodes,a);this._loadBone(i,t,r)}},p.prototype._loadBone=function(e,t,r){var n=r[e.index];if(n)return n;var o=null;e.parent&&e.parent._babylonMesh!==this._rootBabylonMesh&&(o=this._loadBone(e.parent,t,r));var a=t.joints.indexOf(e.index);return n=new A.Bone(e.name||"joint"+e.index,t._babylonSkeleton,o,this._getNodeMatrix(e),null,null,a),r[e.index]=n,e._babylonBones=e._babylonBones||[],e._babylonBones.push(n),n},p.prototype._loadSkinInverseBindMatricesDataAsync=function(e,t){if(null==t.inverseBindMatrices)return Promise.resolve(null);var r=v.Get(e+"/inverseBindMatrices",this.gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync("#/accessors/"+r.index,r)},p.prototype._updateBoneMatrices=function(e,t){for(var r=0,n=e.bones;r<n.length;r++){var o=n[r],a=A.Matrix.Identity(),i=o._index;t&&-1!==i&&(A.Matrix.FromArrayToRef(t,16*i,a),a.invertToRef(a));var s=o.getParent();s&&a.multiplyToRef(s.getInvertedAbsoluteTransform(),a),o.updateMatrix(a,!1,!1),o._updateDifferenceMatrix(void 0,!1)}},p.prototype._getNodeMatrix=function(e){return e.matrix?A.Matrix.FromArray(e.matrix):A.Matrix.Compose(e.scale?A.Vector3.FromArray(e.scale):A.Vector3.One(),e.rotation?A.Quaternion.FromArray(e.rotation):A.Quaternion.Identity(),e.translation?A.Vector3.FromArray(e.translation):A.Vector3.Zero())},p.prototype.loadCameraAsync=function(e,t,r){void 0===r&&(r=function(){});var n=this._extensionsLoadCameraAsync(e,t,r);if(n)return n;var o=new Array;this.logOpen(e+" "+(t.name||""));var a=new A.FreeCamera(t.name||"camera"+t.index,A.Vector3.Zero(),this.babylonScene,!1);switch(a.rotation=new A.Vector3(0,Math.PI,0),t.type){case"perspective":var i=t.perspective;if(!i)throw new Error(e+": Camera perspective properties are missing");a.fov=i.yfov,a.minZ=i.znear,a.maxZ=i.zfar||Number.MAX_VALUE;break;case"orthographic":if(!t.orthographic)throw new Error(e+": Camera orthographic properties are missing");a.mode=A.Camera.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break;default:throw new Error(e+": Invalid camera type ("+t.type+")")}return r(a),this._parent.onCameraLoadedObservable.notifyObservers(a),Promise.all(o).then((function(){return a}))},p.prototype._loadAnimationsAsync=function(){var e=this.gltf.animations;if(!e)return Promise.resolve();for(var t=new Array,r=0;r<e.length;r++){var n=e[r];t.push(this.loadAnimationAsync("#/animations/"+n.index,n))}return Promise.all(t).then((function(){}))},p.prototype.loadAnimationAsync=function(e,t){var r=this,n=this._extensionsLoadAnimationAsync(e,t);if(n)return n;var o=new A.AnimationGroup(t.name||"animation"+t.index,this.babylonScene);t._babylonAnimationGroup=o;var a=new Array;v.Assign(t.channels),v.Assign(t.samplers);for(var i=0,s=t.channels;i<s.length;i++){var l=s[i];a.push(this._loadAnimationChannelAsync(e+"/channels/"+l.index,e,t,l,o))}return Promise.all(a).then((function(){return o.normalize(r._parent._normalizeAnimationGroupsToBeginAtZero?0:null),o}))},p.prototype._loadAnimationChannelAsync=function(_,e,t,y,m){var b=this,g=v.Get(_+"/target/node",this.gltf.nodes,y.target.node);if("weights"===y.target.path&&!g._numMorphTargets||"weights"!==y.target.path&&!g._babylonMesh)return Promise.resolve();if(null!=g.skin&&"weights"!==y.target.path)return Promise.resolve();var r=v.Get(_+"/sampler",t.samplers,y.sampler);return this._loadAnimationSamplerAsync(e+"/samplers/"+y.sampler,r).then((function(r){var t,a;switch(y.target.path){case"translation":t="position",a=A.Animation.ANIMATIONTYPE_VECTOR3;break;case"rotation":t="rotationQuaternion",a=A.Animation.ANIMATIONTYPE_QUATERNION;break;case"scale":t="scaling",a=A.Animation.ANIMATIONTYPE_VECTOR3;break;case"weights":t="influence",a=A.Animation.ANIMATIONTYPE_FLOAT;break;default:throw new Error(_+"/target/path: Invalid value ("+y.target.path+")")}var n,e,o=0;switch(t){case"position":n=function(){var e=A.Vector3.FromArray(r.output,o);return o+=3,e};break;case"rotationQuaternion":n=function(){var e=A.Quaternion.FromArray(r.output,o);return o+=4,e};break;case"scaling":n=function(){var e=A.Vector3.FromArray(r.output,o);return o+=3,e};break;case"influence":n=function(){for(var e=new Array(g._numMorphTargets),t=0;t<g._numMorphTargets;t++)e[t]=r.output[o++];return e}}switch(r.interpolation){case"STEP":e=function(e){return{frame:r.input[e],value:n(),interpolation:A.AnimationKeyInterpolation.STEP}};break;case"LINEAR":e=function(e){return{frame:r.input[e],value:n()}};break;case"CUBICSPLINE":e=function(e){return{frame:r.input[e],inTangent:n(),value:n(),outTangent:n()}}}for(var i=new Array(r.input.length),s=0;s<r.input.length;s++)i[s]=e(s);if("influence"===t)for(var l=function(n){var e=m.name+"_channel"+m.targetedAnimations.length,o=new A.Animation(e,t,1,a);o.setKeys(i.map((function(e){return{frame:e.frame,inTangent:e.inTangent?e.inTangent[n]:void 0,value:e.value[n],outTangent:e.outTangent?e.outTangent[n]:void 0}}))),b._forEachPrimitive(g,(function(e){var t=e.morphTargetManager.getTarget(n),r=o.clone();t.animations.push(r),m.addTargetedAnimation(r,t)}))},u=0;u<g._numMorphTargets;u++)l(u);else{var c=m.name+"_channel"+m.targetedAnimations.length,d=new A.Animation(c,t,1,a);if(d.setKeys(i),g._babylonBones){for(var f=[g._babylonMesh].concat(g._babylonBones),h=0,p=f;h<p.length;h++){p[h].animations.push(d)}m.addTargetedAnimation(d,f)}else g._babylonMesh.animations.push(d),m.addTargetedAnimation(d,g._babylonMesh)}}))},p.prototype._loadAnimationSamplerAsync=function(e,t){if(t._data)return t._data;var n=t.interpolation||"LINEAR";switch(n){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(e+"/interpolation: Invalid value ("+t.interpolation+")")}var r=v.Get(e+"/input",this.gltf.accessors,t.input),o=v.Get(e+"/output",this.gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync("#/accessors/"+r.index,r),this._loadFloatAccessorAsync("#/accessors/"+o.index,o)]).then((function(e){var t=e[0],r=e[1];return{input:t,interpolation:n,output:r}})),t._data},p.prototype._loadBufferAsync=function(e,t){if(t._data)return t._data;if(!t.uri)throw new Error(e+"/uri: Value is missing");return t._data=this.loadUriAsync(e+"/uri",t.uri),t._data},p.prototype.loadBufferViewAsync=function(t,r){if(r._data)return r._data;var e=v.Get(t+"/buffer",this.gltf.buffers,r.buffer);return r._data=this._loadBufferAsync("#/buffers/"+e.index,e).then((function(e){try{return new Uint8Array(e.buffer,e.byteOffset+(r.byteOffset||0),r.byteLength)}catch(e){throw new Error(t+": "+e.message)}})),r._data},p.prototype._loadIndicesAccessorAsync=function(t,r){if("SCALAR"!==r.type)throw new Error(t+"/type: Invalid value "+r.type);if(5121!==r.componentType&&5123!==r.componentType&&5125!==r.componentType)throw new Error(t+"/componentType: Invalid value "+r.componentType);if(r._data)return r._data;var e=v.Get(t+"/bufferView",this.gltf.bufferViews,r.bufferView);return r._data=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return p._GetTypedArray(t,r.componentType,e,r.byteOffset,r.count)})),r._data},p.prototype._loadFloatAccessorAsync=function(c,d){var r=this;if(5126!==d.componentType)throw new Error("Invalid component type "+d.componentType);if(d._data)return d._data;var f=p._GetNumComponents(c,d.type),t=f*d.count;if(null==d.bufferView)d._data=Promise.resolve(new Float32Array(t));else{var e=v.Get(c+"/bufferView",this.gltf.bufferViews,d.bufferView);d._data=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return p._GetTypedArray(c,d.componentType,e,d.byteOffset,t)}))}if(d.sparse){var h=d.sparse;d._data=d._data.then((function(u){var e=v.Get(c+"/sparse/indices/bufferView",r.gltf.bufferViews,h.indices.bufferView),t=v.Get(c+"/sparse/values/bufferView",r.gltf.bufferViews,h.values.bufferView);return Promise.all([r.loadBufferViewAsync("#/bufferViews/"+e.index,e),r.loadBufferViewAsync("#/bufferViews/"+t.index,t)]).then((function(e){for(var t=e[0],r=e[1],n=p._GetTypedArray(c+"/sparse/indices",h.indices.componentType,t,h.indices.byteOffset,h.count),o=p._GetTypedArray(c+"/sparse/values",d.componentType,r,h.values.byteOffset,f*h.count),a=0,i=0;i<n.length;i++)for(var s=n[i]*f,l=0;l<f;l++)u[s++]=o[a++];return u}))}))}return d._data},p.prototype._loadVertexBufferViewAsync=function(e,t){var r=this;return e._babylonBuffer||(e._babylonBuffer=this.loadBufferViewAsync("#/bufferViews/"+e.index,e).then((function(e){return new A.Buffer(r.babylonScene.getEngine(),e,!1)}))),e._babylonBuffer},p.prototype._loadVertexAccessorAsync=function(r,n,o){var a=this;if(n._babylonVertexBuffer)return n._babylonVertexBuffer;if(n.sparse)n._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+n.index,n).then((function(e){return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1)}));else if(n.byteOffset&&n.byteOffset%A.VertexBuffer.GetTypeByteLength(n.componentType)!=0)A.Tools.Warn("Accessor byte offset is not a multiple of component type byte length"),n._babylonVertexBuffer=this._loadFloatAccessorAsync("#/accessors/"+n.index,n).then((function(e){return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1)}));else{var i=v.Get(r+"/bufferView",this.gltf.bufferViews,n.bufferView);n._babylonVertexBuffer=this._loadVertexBufferViewAsync(i,o).then((function(e){var t=p._GetNumComponents(r,n.type);return new A.VertexBuffer(a.babylonScene.getEngine(),e,o,!1,!1,i.byteStride,!1,n.byteOffset,t,n.componentType,n.normalized,!0)}))}return n._babylonVertexBuffer},p.prototype._loadMaterialMetallicRoughnessPropertiesAsync=function(e,t,r,n){if(!(n instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;return r&&(r.baseColorFactor?(n.albedoColor=A.Color3.FromArray(r.baseColorFactor),n.alpha=r.baseColorFactor[3]):n.albedoColor=A.Color3.White(),n.metallic=null==r.metallicFactor?1:r.metallicFactor,n.roughness=null==r.roughnessFactor?1:r.roughnessFactor,r.baseColorTexture&&o.push(this.loadTextureInfoAsync(e+"/baseColorTexture",r.baseColorTexture,(function(e){n.albedoTexture=e}))),r.metallicRoughnessTexture&&(o.push(this.loadTextureInfoAsync(e+"/metallicRoughnessTexture",r.metallicRoughnessTexture,(function(e){n.metallicTexture=e}))),n.useMetallnessFromMetallicTextureBlue=!0,n.useRoughnessFromMetallicTextureGreen=!0,n.useRoughnessFromMetallicTextureAlpha=!1)),Promise.all(o).then((function(){}))},p.prototype._loadMaterialAsync=function(e,t,r,n,o){void 0===o&&(o=function(){});var a=this._extensionsLoadMaterialAsync(e,t,r,n,o);if(a)return a;t._babylonData=t._babylonData||{};var i=t._babylonData[n];if(!i){this.logOpen(e+" "+(t.name||""));var s=this.createMaterial(e,t,n);i={material:s,meshes:[],promise:this.loadMaterialPropertiesAsync(e,t,s)},t._babylonData[n]=i,this._parent.onMaterialLoadedObservable.notifyObservers(s),this.logClose()}return i.meshes.push(r),r.onDisposeObservable.addOnce((function(){var e=i.meshes.indexOf(r);-1!==e&&i.meshes.splice(e,1)})),o(i.material),i.promise.then((function(){return i.material}))},p.prototype._createDefaultMaterial=function(e,t){var r=new A.PBRMaterial(e,this.babylonScene);return r.sideOrientation=this.babylonScene.useRightHandedSystem?A.Material.CounterClockWiseSideOrientation:A.Material.ClockWiseSideOrientation,r.fillMode=t,r.enableSpecularAntiAliasing=!0,r.useRadianceOverAlpha=!this._parent.transparencyAsCoverage,r.useSpecularOverAlpha=!this._parent.transparencyAsCoverage,r.transparencyMode=A.PBRMaterial.PBRMATERIAL_OPAQUE,r.metallic=1,r.roughness=1,r},p.prototype.createMaterial=function(e,t,r){var n=this._extensionsCreateMaterial(e,t,r);if(n)return n;var o=t.name||"material"+t.index;return this._createDefaultMaterial(o,r)},p.prototype.loadMaterialPropertiesAsync=function(e,t,r){var n=this._extensionsLoadMaterialPropertiesAsync(e,t,r);if(n)return n;var o=new Array;return o.push(this.loadMaterialBasePropertiesAsync(e,t,r)),t.pbrMetallicRoughness&&o.push(this._loadMaterialMetallicRoughnessPropertiesAsync(e+"/pbrMetallicRoughness",t,t.pbrMetallicRoughness,r)),this.loadMaterialAlphaProperties(e,t,r),Promise.all(o).then((function(){}))},p.prototype.loadMaterialBasePropertiesAsync=function(e,t,r){if(!(r instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");var n=new Array;return r.emissiveColor=t.emissiveFactor?A.Color3.FromArray(t.emissiveFactor):new A.Color3(0,0,0),t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),t.normalTexture&&(n.push(this.loadTextureInfoAsync(e+"/normalTexture",t.normalTexture,(function(e){r.bumpTexture=e}))),r.invertNormalMapX=!this.babylonScene.useRightHandedSystem,r.invertNormalMapY=this.babylonScene.useRightHandedSystem,null!=t.normalTexture.scale&&(r.bumpTexture.level=t.normalTexture.scale)),t.occlusionTexture&&(n.push(this.loadTextureInfoAsync(e+"/occlusionTexture",t.occlusionTexture,(function(e){r.ambientTexture=e}))),r.useAmbientInGrayScale=!0,null!=t.occlusionTexture.strength&&(r.ambientTextureStrength=t.occlusionTexture.strength)),t.emissiveTexture&&n.push(this.loadTextureInfoAsync(e+"/emissiveTexture",t.emissiveTexture,(function(e){r.emissiveTexture=e}))),Promise.all(n).then((function(){}))},p.prototype.loadMaterialAlphaProperties=function(e,t,r){if(!(r instanceof A.PBRMaterial))throw new Error(e+": Material type not supported");switch(t.alphaMode||"OPAQUE"){case"OPAQUE":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_OPAQUE;break;case"MASK":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_ALPHATEST,r.alphaCutOff=null==t.alphaCutoff?.5:t.alphaCutoff,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0);break;case"BLEND":r.transparencyMode=A.PBRMaterial.PBRMATERIAL_ALPHABLEND,r.albedoTexture&&(r.albedoTexture.hasAlpha=!0,r.useAlphaFromAlbedoTexture=!0);break;default:throw new Error(e+"/alphaMode: Invalid value ("+t.alphaMode+")")}},p.prototype.loadTextureInfoAsync=function(e,t,r){void 0===r&&(r=function(){});var n=this._extensionsLoadTextureInfoAsync(e,t,r);if(n)return n;this.logOpen(""+e);var o=v.Get(e+"/index",this.gltf.textures,t.index),a=this._loadTextureAsync("#/textures/"+t.index,o,(function(e){e.coordinatesIndex=t.texCoord||0,r(e)}));return this.logClose(),a},p.prototype._loadTextureAsync=function(r,e,t){var n=this;void 0===t&&(t=function(){});var o=new Array;this.logOpen(r+" "+(e.name||""));var a=null==e.sampler?p._DefaultSampler:v.Get(r+"/sampler",this.gltf.samplers,e.sampler),i=this._loadSampler("#/samplers/"+a.index,a),s=new A.Deferred,l=new A.Texture(null,this.babylonScene,i.noMipMaps,!1,i.samplingMode,function(){n._disposed||s.resolve()},function(e,t){n._disposed||s.reject(new Error(r+": "+(t&&t.message?t.message:e||"Failed to load texture")))});o.push(s.promise),l.name=e.name||"texture"+e.index,l.wrapU=i.wrapU,l.wrapV=i.wrapV;var u=v.Get(r+"/source",this.gltf.images,e.source);return o.push(this.loadImageAsync("#/images/"+u.index,u).then((function(e){var t="data:"+n._fullName+(u.uri||"image"+u.index);l.updateURL(t,new Blob([e],{type:u.mimeType}))}))),t(l),this._parent.onTextureLoadedObservable.notifyObservers(l),this.logClose(),Promise.all(o).then((function(){return l}))},p.prototype._loadSampler=function(e,t){return t._data||(t._data={noMipMaps:9728===t.minFilter||9729===t.minFilter,samplingMode:p._GetTextureSamplingMode(e,t),wrapU:p._GetTextureWrapMode(e+"/wrapS",t.wrapS),wrapV:p._GetTextureWrapMode(e+"/wrapT",t.wrapT)}),t._data},p.prototype.loadImageAsync=function(e,t){if(!t._data){if(this.logOpen(e+" "+(t.name||"")),t.uri)t._data=this.loadUriAsync(e+"/uri",t.uri);else{var r=v.Get(e+"/bufferView",this.gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync("#/bufferViews/"+r.index,r)}this.logClose()}return t._data},p.prototype.loadUriAsync=function(o,a){var i=this,e=this._extensionsLoadUriAsync(o,a);if(e)return e;if(!p._ValidateUri(a))throw new Error(o+": '"+a+"' is invalid");if(A.Tools.IsBase64(a)){var t=new Uint8Array(A.Tools.DecodeBase64(a));return this.log("Decoded "+a.substr(0,64)+"... ("+t.length+" bytes)"),Promise.resolve(t)}return this.log("Loading "+a),this._parent.preprocessUrlAsync(this._rootUrl+a).then((function(e){return new Promise(function(r,n){if(!i._disposed){var t=A.Tools.LoadFile(e,(function(e){if(!i._disposed){var t=new Uint8Array(e);i.log("Loaded "+a+" ("+t.length+" bytes)"),r(t)}}),(function(e){if(!i._disposed&&(t&&(t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total),i._state===A.GLTFLoaderState.LOADING))try{i._onProgress()}catch(e){n(e)}}),i.babylonScene.database,!0,(function(e,t){i._disposed||n(new A.LoadFileError(o+": Failed to load '"+a+"'"+(e?": "+e.status+" "+e.statusText:""),e))}));i._requests.push(t)}})}))},p.prototype._onProgress=function(){if(this._progressCallback){for(var e=!0,t=0,r=0,n=0,o=this._requests;n<o.length;n++){var a=o[n];if(void 0===a._lengthComputable||void 0===a._loaded||void 0===a._total)return;e=e&&a._lengthComputable,t+=a._loaded,r+=a._total}this._progressCallback(new A.SceneLoaderProgressEvent(e,t,e?r:0))}},p._GetTextureWrapMode=function(e,t){switch(t=null==t?10497:t){case 33071:return A.Texture.CLAMP_ADDRESSMODE;case 33648:return A.Texture.MIRROR_ADDRESSMODE;case 10497:return A.Texture.WRAP_ADDRESSMODE;default:return A.Tools.Warn(e+": Invalid value ("+t+")"),A.Texture.WRAP_ADDRESSMODE}},p._GetTextureSamplingMode=function(e,t){var r=null==t.magFilter?9729:t.magFilter,n=null==t.minFilter?9987:t.minFilter;if(9729===r)switch(n){case 9728:return A.Texture.LINEAR_NEAREST;case 9729:return A.Texture.LINEAR_LINEAR;case 9984:return A.Texture.LINEAR_NEAREST_MIPNEAREST;case 9985:return A.Texture.LINEAR_LINEAR_MIPNEAREST;case 9986:return A.Texture.LINEAR_NEAREST_MIPLINEAR;case 9987:return A.Texture.LINEAR_LINEAR_MIPLINEAR;default:return A.Tools.Warn(e+"/minFilter: Invalid value ("+n+")"),A.Texture.LINEAR_LINEAR_MIPLINEAR}else switch(9728!==r&&A.Tools.Warn(e+"/magFilter: Invalid value ("+r+")"),n){case 9728:return A.Texture.NEAREST_NEAREST;case 9729:return A.Texture.NEAREST_LINEAR;case 9984:return A.Texture.NEAREST_NEAREST_MIPNEAREST;case 9985:return A.Texture.NEAREST_LINEAR_MIPNEAREST;case 9986:return A.Texture.NEAREST_NEAREST_MIPLINEAR;case 9987:return A.Texture.NEAREST_LINEAR_MIPLINEAR;default:return A.Tools.Warn(e+"/minFilter: Invalid value ("+n+")"),A.Texture.NEAREST_NEAREST_MIPNEAREST}},p._GetTypedArray=function(t,e,r,n,o){var a=r.buffer;n=r.byteOffset+(n||0);try{switch(e){case 5120:return new Int8Array(a,n,o);case 5121:return new Uint8Array(a,n,o);case 5122:return new Int16Array(a,n,o);case 5123:return new Uint16Array(a,n,o);case 5125:return new Uint32Array(a,n,o);case 5126:return new Float32Array(a,n,o);default:throw new Error("Invalid component type "+e)}}catch(e){throw new Error(t+": "+e)}},p._GetNumComponents=function(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(e+": Invalid type ("+t+")")},p._ValidateUri=function(e){return A.Tools.IsBase64(e)||-1===e.indexOf("..")},p._GetDrawMode=function(e,t){switch(null==t&&(t=4),t){case 0:return A.Material.PointListDrawMode;case 1:return A.Material.LineListDrawMode;case 2:return A.Material.LineLoopDrawMode;case 3:return A.Material.LineStripDrawMode;case 4:return A.Material.TriangleFillMode;case 5:return A.Material.TriangleStripDrawMode;case 6:return A.Material.TriangleFanDrawMode}throw new Error(e+": Invalid mesh primitive mode ("+t+")")},p.prototype._compileMaterialsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile materials");var t=new Array;if(this.gltf.materials)for(var r=0,n=this.gltf.materials;r<n.length;r++){var o=n[r];if(o._babylonData)for(var a in o._babylonData)for(var i=o._babylonData[a],s=0,l=i.meshes;s<l.length;s++){var u=l[s];u.computeWorldMatrix(!0);var c=i.material;t.push(c.forceCompilationAsync(u)),this._parent.useClipPlane&&t.push(c.forceCompilationAsync(u,{clipPlane:!0}))}}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile materials")}))},p.prototype._compileShadowGeneratorsAsync=function(){var e=this;this._parent._startPerformanceCounter("Compile shadow generators");for(var t=new Array,r=0,n=this.babylonScene.lights;r<n.length;r++){var o=n[r].getShadowGenerator();o&&t.push(o.forceCompilationAsync())}return Promise.all(t).then((function(){e._parent._endPerformanceCounter("Compile shadow generators")}))},p.prototype._forEachExtensions=function(e){for(var t=0,r=p._ExtensionNames;t<r.length;t++){var n=r[t],o=this._extensions[n];o.enabled&&e(o)}},p.prototype._applyExtensions=function(e,t){for(var r=0,n=p._ExtensionNames;r<n.length;r++){var o=n[r],a=this._extensions[o];if(a.enabled){var i=e;i._activeLoaderExtensions=i._activeLoaderExtensions||{};var s=i._activeLoaderExtensions;if(!s[o]){s[o]=!0;try{var l=t(a);if(l)return l}finally{delete s[o]}}}}return null},p.prototype._extensionsOnLoading=function(){this._forEachExtensions((function(e){return e.onLoading&&e.onLoading()}))},p.prototype._extensionsOnReady=function(){this._forEachExtensions((function(e){return e.onReady&&e.onReady()}))},p.prototype._extensionsLoadSceneAsync=function(t,r){return this._applyExtensions(r,(function(e){return e.loadSceneAsync&&e.loadSceneAsync(t,r)}))},p.prototype._extensionsLoadNodeAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadNodeAsync&&e.loadNodeAsync(t,r,n)}))},p.prototype._extensionsLoadCameraAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadCameraAsync&&e.loadCameraAsync(t,r,n)}))},p.prototype._extensionsLoadVertexDataAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e._loadVertexDataAsync&&e._loadVertexDataAsync(t,r,n)}))},p.prototype._extensionsLoadMaterialAsync=function(t,r,n,o,a){return this._applyExtensions(r,(function(e){return e._loadMaterialAsync&&e._loadMaterialAsync(t,r,n,o,a)}))},p.prototype._extensionsCreateMaterial=function(t,r,n){return this._applyExtensions({},(function(e){return e.createMaterial&&e.createMaterial(t,r,n)}))},p.prototype._extensionsLoadMaterialPropertiesAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadMaterialPropertiesAsync&&e.loadMaterialPropertiesAsync(t,r,n)}))},p.prototype._extensionsLoadTextureInfoAsync=function(t,r,n){return this._applyExtensions(r,(function(e){return e.loadTextureInfoAsync&&e.loadTextureInfoAsync(t,r,n)}))},p.prototype._extensionsLoadAnimationAsync=function(t,r){return this._applyExtensions(r,(function(e){return e.loadAnimationAsync&&e.loadAnimationAsync(t,r)}))},p.prototype._extensionsLoadUriAsync=function(t,r){return this._applyExtensions({},(function(e){return e._loadUriAsync&&e._loadUriAsync(t,r)}))},p.LoadExtensionAsync=function(e,t,r,n){if(!t.extensions)return null;var o=t.extensions[r];return o?n(e+"/extensions/"+r,o):null},p.LoadExtraAsync=function(e,t,r,n){if(!t.extras)return null;var o=t.extras[r];return o?n(e+"/extras/"+r,o):null},p.prototype.logOpen=function(e){this._parent._logOpen(e)},p.prototype.logClose=function(){this._parent._logClose()},p.prototype.log=function(e){this._parent._log(e)},p.prototype.startPerformanceCounter=function(e){this._parent._startPerformanceCounter(e)},p.prototype.endPerformanceCounter=function(e){this._parent._endPerformanceCounter(e)},p._DefaultSampler={index:-1},p._ExtensionNames=new Array,p._ExtensionFactories={},p})();e.GLTFLoader=t,A.GLTFFileLoader._CreateGLTFLoaderV2=function(e){return new t(e)}})(A.GLTF2||(A.GLTF2={}))})(BABYLON||(BABYLON={})),(function(c){var d,e,t,r;d=c.GLTF2||(c.GLTF2={}),e=d.Extensions||(d.Extensions={}),t="MSFT_audio_emitter",r=(function(){function e(e){this.name=t,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,delete this._clips,delete this._emitters},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,d.ArrayItem.Assign(this._clips),d.ArrayItem.Assign(this._emitters)}},e.prototype.loadSceneAsync=function(s,l){var u=this;return d.GLTFLoader.LoadExtensionAsync(s,l,this.name,(function(e,t){var r=new Array;r.push(u._loader.loadSceneAsync(s,l));for(var n=0,o=t.emitters;n<o.length;n++){var a=o[n],i=d.ArrayItem.Get(e+"/emitters",u._emitters,a);if(null!=i.refDistance||null!=i.maxDistance||null!=i.rolloffFactor||null!=i.distanceModel||null!=i.innerAngle||null!=i.outerAngle)throw new Error(e+": Direction or Distance properties are not allowed on emitters attached to a scene");r.push(u._loadEmitterAsync(e+"/emitters/"+i.index,i))}return Promise.all(r).then((function(){}))}))},e.prototype.loadNodeAsync=function(e,t,s){var l=this;return d.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(a,n){var i=new Array;return l._loader.loadNodeAsync(a,t,(function(o){for(var e=function(e){var n=d.ArrayItem.Get(a+"/emitters",l._emitters,e);i.push(l._loadEmitterAsync(a+"/emitters/"+n.index,n).then((function(){for(var e=0,t=n._babylonSounds;e<t.length;e++){var r=t[e];r.attachToMesh(o),null==n.innerAngle&&null==n.outerAngle||(r.setLocalDirectionToMesh(c.Vector3.Forward()),r.setDirectionalCone(2*c.Tools.ToDegrees(null==n.innerAngle?Math.PI:n.innerAngle),2*c.Tools.ToDegrees(null==n.outerAngle?Math.PI:n.outerAngle),0))}})))},t=0,r=n.emitters;t<r.length;t++)e(r[t]);s(o)})).then((function(e){return Promise.all(i).then((function(){return e}))}))}))},e.prototype.loadAnimationAsync=function(s,l){var u=this;return d.GLTFLoader.LoadExtensionAsync(s,l,this.name,(function(a,i){return u._loader.loadAnimationAsync(s,l).then((function(e){var t=new Array;d.ArrayItem.Assign(i.events);for(var r=0,n=i.events;r<n.length;r++){var o=n[r];t.push(u._loadAnimationEventAsync(a+"/events/"+o.index,s,l,o,e))}return Promise.all(t).then((function(){return e}))}))}))},e.prototype._loadClipAsync=function(e,t){if(t._objectURL)return t._objectURL;var r;if(t.uri)r=this._loader.loadUriAsync(e,t.uri);else{var n=d.ArrayItem.Get(e+"/bufferView",this._loader.gltf.bufferViews,t.bufferView);r=this._loader.loadBufferViewAsync("#/bufferViews/"+n.index,n)}return t._objectURL=r.then((function(e){return URL.createObjectURL(new Blob([e],{type:t.mimeType}))})),t._objectURL},e.prototype._loadEmitterAsync=function(e,n){var o=this;if(n._babylonSounds=n._babylonSounds||[],!n._babylonData){for(var a=new Array,i=n.name||"emitter"+n.index,s={loop:!1,autoplay:!1,volume:null==n.volume?1:n.volume},t=function(r){var e="#/extensions/"+l.name+"/clips",t=d.ArrayItem.Get(e,l._clips,n.clips[r].clip);a.push(l._loadClipAsync(e+"/"+n.clips[r].clip,t).then((function(e){var t=n._babylonSounds[r]=new c.Sound(i,e,o._loader.babylonScene,null,s);t.refDistance=n.refDistance||1,t.maxDistance=n.maxDistance||256,t.rolloffFactor=n.rolloffFactor||1,t.distanceModel=n.distanceModel||"exponential",t._positionInEmitterSpace=!0})))},l=this,r=0;r<n.clips.length;r++)t(r);var u=Promise.all(a).then((function(){var e=n.clips.map((function(e){return e.weight||1})),t=new c.WeightedSound(n.loop||!1,n._babylonSounds,e);n.innerAngle&&(t.directionalConeInnerAngle=2*c.Tools.ToDegrees(n.innerAngle)),n.outerAngle&&(t.directionalConeOuterAngle=2*c.Tools.ToDegrees(n.outerAngle)),n.volume&&(t.volume=n.volume),n._babylonData.sound=t}));n._babylonData={loaded:u}}return n._babylonData.loaded},e.prototype._getEventAction=function(e,r,t,n,o){switch(t){case"play":return function(e){var t=(o||0)+(e-n);r.play(t)};case"stop":return function(e){r.stop()};case"pause":return function(e){r.pause()};default:throw new Error(e+": Unsupported action "+t)}},e.prototype._loadAnimationEventAsync=function(r,e,t,n,o){var a=this;if(0==o.targetedAnimations.length)return Promise.resolve();var i=o.targetedAnimations[0],s=n.emitter,l=d.ArrayItem.Get("#/extensions/"+this.name+"/emitters",this._emitters,s);return this._loadEmitterAsync(r,l).then((function(){var e=l._babylonData.sound;if(e){var t=new c.AnimationEvent(n.time,a._getEventAction(r,e,n.action,n.time,n.startOffset));i.animation.addEvent(t),o.onAnimationGroupEndObservable.add((function(){e.stop()})),o.onAnimationGroupPauseObservable.add((function(){e.pause()}))}}))},e})(),e.MSFT_audio_emitter=r,d.GLTFLoader.RegisterExtension(t,(function(e){return new r(e)}))})(BABYLON||(BABYLON={})),(function(l){var d,e,t,r;d=l.GLTF2||(l.GLTF2={}),e=d.Extensions||(d.Extensions={}),t="MSFT_lod",r=(function(){function e(e){this.name=t,this.enabled=!0,this.maxLODsToLoad=Number.MAX_VALUE,this.onNodeLODsLoadedObservable=new l.Observable,this.onMaterialLODsLoadedObservable=new l.Observable,this._nodeIndexLOD=null,this._nodeSignalLODs=new Array,this._nodePromiseLODs=new Array,this._materialIndexLOD=null,this._materialSignalLODs=new Array,this._materialPromiseLODs=new Array,this._loader=e}return e.prototype.dispose=function(){delete this._loader,this._nodeIndexLOD=null,this._nodeSignalLODs.length=0,this._nodePromiseLODs.length=0,this._materialIndexLOD=null,this._materialSignalLODs.length=0,this._materialPromiseLODs.length=0,this.onMaterialLODsLoadedObservable.clear(),this.onNodeLODsLoadedObservable.clear()},e.prototype.onReady=function(){for(var r=this,e=function(e){var t=Promise.all(n._nodePromiseLODs[e]).then((function(){0!==e&&r._loader.endPerformanceCounter("Node LOD "+e),r._loader.log("Loaded node LOD "+e),r.onNodeLODsLoadedObservable.notifyObservers(e),e!==r._nodePromiseLODs.length-1&&(r._loader.startPerformanceCounter("Node LOD "+(e+1)),r._nodeSignalLODs[e]&&r._nodeSignalLODs[e].resolve())}));n._loader._completePromises.push(t)},n=this,t=0;t<this._nodePromiseLODs.length;t++)e(t);var o=function(e){var t=Promise.all(a._materialPromiseLODs[e]).then((function(){0!==e&&r._loader.endPerformanceCounter("Material LOD "+e),r._loader.log("Loaded material LOD "+e),r.onMaterialLODsLoadedObservable.notifyObservers(e),e!==r._materialPromiseLODs.length-1&&(r._loader.startPerformanceCounter("Material LOD "+(e+1)),r._materialSignalLODs[e]&&r._materialSignalLODs[e].resolve())}));a._loader._completePromises.push(t)},a=this;for(t=0;t<this._materialPromiseLODs.length;t++)o(t)},e.prototype.loadNodeAsync=function(e,i,t){var s=this;return d.GLTFLoader.LoadExtensionAsync(e,i,this.name,(function(e,t){var n,o=s._getLODs(e,i,s._loader.gltf.nodes,t.ids);s._loader.logOpen(""+e);for(var r=function(r){var e=o[r];0!==r&&(s._nodeIndexLOD=r,s._nodeSignalLODs[r]=s._nodeSignalLODs[r]||new l.Deferred);var t=s._loader.loadNodeAsync("#/nodes/"+e.index,e).then((function(e){if(0!==r){var t=o[r-1];t._babylonMesh&&(t._babylonMesh.dispose(),delete t._babylonMesh,s._disposeUnusedMaterials())}return e}));0===r?n=t:s._nodeIndexLOD=null,s._nodePromiseLODs[r]=s._nodePromiseLODs[r]||[],s._nodePromiseLODs[r].push(t)},a=0;a<o.length;a++)r(a);return s._loader.logClose(),n}))},e.prototype._loadMaterialAsync=function(e,i,s,l,u){var c=this;return this._nodeIndexLOD?null:d.GLTFLoader.LoadExtensionAsync(e,i,this.name,(function(e,t){var n,o=c._getLODs(e,i,c._loader.gltf.materials,t.ids);c._loader.logOpen(""+e);for(var r=function(r){var e=o[r];0!==r&&(c._materialIndexLOD=r);var t=c._loader._loadMaterialAsync("#/materials/"+e.index,e,s,l,(function(e){0===r&&u(e)})).then((function(e){if(0!==r){u(e);var t=o[r-1]._babylonData;t[l]&&(t[l].material.dispose(),delete t[l])}return e}));0===r?n=t:c._materialIndexLOD=null,c._materialPromiseLODs[r]=c._materialPromiseLODs[r]||[],c._materialPromiseLODs[r].push(t)},a=0;a<o.length;a++)r(a);return c._loader.logClose(),n}))},e.prototype._loadUriAsync=function(e,t){var r=this;if(null!==this._materialIndexLOD){this._loader.log("deferred");var n=this._materialIndexLOD-1;return this._materialSignalLODs[n]=this._materialSignalLODs[n]||new l.Deferred,this._materialSignalLODs[n].promise.then((function(){return r._loader.loadUriAsync(e,t)}))}return null!==this._nodeIndexLOD?(this._loader.log("deferred"),n=this._nodeIndexLOD-1,this._nodeSignalLODs[n]=this._nodeSignalLODs[n]||new l.Deferred,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then((function(){return r._loader.loadUriAsync(e,t)}))):null},e.prototype._getLODs=function(e,t,r,n){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");for(var o=new Array,a=n.length-1;0<=a;a--)if(o.push(d.ArrayItem.Get(e+"/ids/"+n[a],r,n[a])),o.length===this.maxLODsToLoad)return o;return o.push(t),o},e.prototype._disposeUnusedMaterials=function(){var e=this._loader.gltf.materials;if(e)for(var t=0,r=e;t<r.length;t++){var n=r[t];if(n._babylonData)for(var o in n._babylonData){var a=n._babylonData[o];0===a.meshes.length&&(a.material.dispose(!1,!0),delete n._babylonData[o])}}},e})(),e.MSFT_lod=r,d.GLTFLoader.RegisterExtension(t,(function(e){return new r(e)}))})(BABYLON||(BABYLON={})),(function(s){var t,e,r,n;t=s.GLTF2||(s.GLTF2={}),e=t.Extensions||(t.Extensions={}),r="MSFT_minecraftMesh",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtraAsync(n,o,this.name,(function(e,t){if(t){if(!(a instanceof s.PBRMaterial))throw new Error(e+": Material type not supported");var r=i._loader.loadMaterialPropertiesAsync(n,o,a);return a.needAlphaBlending()&&(a.forceDepthWrite=!0,a.separateCullingPass=!0),a.backFaceCulling=a.forceDepthWrite,a.twoSidedLighting=!0,r}return null}))},e})(),e.MSFT_minecraftMesh=n,t.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(s){var t,e,r,n;t=s.GLTF2||(s.GLTF2={}),e=t.Extensions||(t.Extensions={}),r="MSFT_sRGBFactors",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtraAsync(n,o,this.name,(function(e,t){if(t){if(!(a instanceof s.PBRMaterial))throw new Error(e+": Material type not supported");var r=i._loader.loadMaterialPropertiesAsync(n,o,a);return a.albedoTexture||a.albedoColor.toLinearSpaceToRef(a.albedoColor),a.reflectivityTexture||a.reflectivityColor.toLinearSpaceToRef(a.reflectivityColor),r}return null}))},e})(),e.MSFT_sRGBFactors=n,t.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(u){var c,e,t,r;c=u.GLTF2||(u.GLTF2={}),e=c.Extensions||(c.Extensions={}),t="KHR_draco_mesh_compression",r=(function(){function e(e){this.name=t,this.enabled=u.DracoCompression.DecoderAvailable,this._loader=e}return e.prototype.dispose=function(){this._dracoCompression&&(this._dracoCompression.dispose(),delete this._dracoCompression),delete this._loader},e.prototype._loadVertexDataAsync=function(a,i,s){var l=this;return c.GLTFLoader.LoadExtensionAsync(a,i,this.name,(function(e,n){if(null!=i.mode){if(5!==i.mode&&4!==i.mode)throw new Error(a+": Unsupported mode "+i.mode);if(5===i.mode)throw new Error(a+": Mode "+i.mode+" is not currently supported")}var o={},t=function(e,t){var r=n.attributes[e];null!=r&&(s._delayInfo=s._delayInfo||[],-1===s._delayInfo.indexOf(t)&&s._delayInfo.push(t),o[t]=r)};t("POSITION",u.VertexBuffer.PositionKind),t("NORMAL",u.VertexBuffer.NormalKind),t("TANGENT",u.VertexBuffer.TangentKind),t("TEXCOORD_0",u.VertexBuffer.UVKind),t("TEXCOORD_1",u.VertexBuffer.UV2Kind),t("JOINTS_0",u.VertexBuffer.MatricesIndicesKind),t("WEIGHTS_0",u.VertexBuffer.MatricesWeightsKind),t("COLOR_0",u.VertexBuffer.ColorKind);var r=c.ArrayItem.Get(e,l._loader.gltf.bufferViews,n.bufferView);return r._dracoBabylonGeometry||(r._dracoBabylonGeometry=l._loader.loadBufferViewAsync("#/bufferViews/"+r.index,r).then((function(e){return l._dracoCompression||(l._dracoCompression=new u.DracoCompression),l._dracoCompression.decodeMeshAsync(e,o).then((function(e){var t=new u.Geometry(s.name,l._loader.babylonScene);return e.applyToGeometry(t),t})).catch((function(e){throw new Error(a+": "+e.message)}))}))),r._dracoBabylonGeometry}))},e})(),e.KHR_draco_mesh_compression=r,c.GLTFLoader.RegisterExtension(t,(function(e){return new r(e)}))})(BABYLON||(BABYLON={})),(function(a){var t,e,r,n;t=a.GLTF2||(a.GLTF2={}),e=t.Extensions||(t.Extensions={}),r="KHR_materials_pbrSpecularGlossiness",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(n,o,a){var i=this;return t.GLTFLoader.LoadExtensionAsync(n,o,this.name,(function(e,t){var r=new Array;return r.push(i._loader.loadMaterialBasePropertiesAsync(n,o,a)),r.push(i._loadSpecularGlossinessPropertiesAsync(e,o,t,a)),i._loader.loadMaterialAlphaProperties(n,o,a),Promise.all(r).then((function(){}))}))},e.prototype._loadSpecularGlossinessPropertiesAsync=function(e,t,r,n){if(!(n instanceof a.PBRMaterial))throw new Error(e+": Material type not supported");var o=new Array;return n.metallic=null,n.roughness=null,r.diffuseFactor?(n.albedoColor=a.Color3.FromArray(r.diffuseFactor),n.alpha=r.diffuseFactor[3]):n.albedoColor=a.Color3.White(),n.reflectivityColor=r.specularFactor?a.Color3.FromArray(r.specularFactor):a.Color3.White(),n.microSurface=null==r.glossinessFactor?1:r.glossinessFactor,r.diffuseTexture&&o.push(this._loader.loadTextureInfoAsync(e+"/diffuseTexture",r.diffuseTexture,(function(e){return n.albedoTexture=e,Promise.resolve()}))),r.specularGlossinessTexture&&(o.push(this._loader.loadTextureInfoAsync(e+"/specularGlossinessTexture",r.specularGlossinessTexture,(function(e){return n.reflectivityTexture=e,Promise.resolve()}))),n.reflectivityTexture.hasAlpha=!0,n.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(o).then((function(){}))},e})(),e.KHR_materials_pbrSpecularGlossiness=n,t.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(a){var o,e,t,r;o=a.GLTF2||(a.GLTF2={}),e=o.Extensions||(o.Extensions={}),t="KHR_materials_unlit",r=(function(){function e(e){this.name=t,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadMaterialPropertiesAsync=function(e,t,r){var n=this;return o.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(){return n._loadUnlitPropertiesAsync(e,t,r)}))},e.prototype._loadUnlitPropertiesAsync=function(e,t,r){if(!(r instanceof a.PBRMaterial))throw new Error(e+": Material type not supported");var n=new Array;r.unlit=!0;var o=t.pbrMetallicRoughness;return o&&(o.baseColorFactor?(r.albedoColor=a.Color3.FromArray(o.baseColorFactor),r.alpha=o.baseColorFactor[3]):r.albedoColor=a.Color3.White(),o.baseColorTexture&&n.push(this._loader.loadTextureInfoAsync(e+"/baseColorTexture",o.baseColorTexture,(function(e){return r.albedoTexture=e,Promise.resolve()})))),t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,t,r),Promise.all(n).then((function(){}))},e})(),e.KHR_materials_unlit=r,o.GLTFLoader.RegisterExtension(t,(function(e){return new r(e)}))})(BABYLON||(BABYLON={})),(function(c){var d;(function(e){var u,t,r="KHR_lights";(t=u||(u={})).AMBIENT="ambient",t.DIRECTIONAL="directional",t.POINT="point",t.SPOT="spot";var n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadSceneAsync=function(o,a){var i=this;return d.GLTFLoader.LoadExtensionAsync(o,a,this.name,(function(e,t){var r=i._loader.loadSceneAsync(o,a),n=d.ArrayItem.Get(e,i._lights,t.light);if(n.type!==u.AMBIENT)throw new Error(e+": Only ambient lights are allowed on a scene");return i._loader.babylonScene.ambientColor=n.color?c.Color3.FromArray(n.color):c.Color3.Black(),r}))},e.prototype.loadNodeAsync=function(e,t,s){var l=this;return d.GLTFLoader.LoadExtensionAsync(e,t,this.name,(function(a,i){return l._loader.loadNodeAsync(e,t,(function(e){var t,r=e.name,n=d.ArrayItem.Get(a,l._lights,i.light);switch(n.type){case u.AMBIENT:throw new Error(a+": Ambient lights are not allowed on a node");case u.DIRECTIONAL:t=new c.DirectionalLight(r,c.Vector3.Forward(),l._loader.babylonScene);break;case u.POINT:t=new c.PointLight(r,c.Vector3.Zero(),l._loader.babylonScene);break;case u.SPOT:var o=n.spot&&n.spot.outerConeAngle||Math.PI/4;t=new c.SpotLight(r,c.Vector3.Zero(),c.Vector3.Forward(),o,2,l._loader.babylonScene);break;default:throw new Error(a+": Invalid light type ("+n.type+")")}t.diffuse=n.color?c.Color3.FromArray(n.color):c.Color3.White(),t.intensity=null==n.intensity?1:n.intensity,t.parent=e,s(e)}))}))},e})();e.KHR_lights=n,d.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})((d=c.GLTF2||(c.GLTF2={})).Extensions||(d.Extensions={}))})(BABYLON||(BABYLON={})),(function(i){var t,e,r,n;t=i.GLTF2||(i.GLTF2={}),e=t.Extensions||(t.Extensions={}),r="KHR_texture_transform",n=(function(){function e(e){this.name=r,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader},e.prototype.loadTextureInfoAsync=function(e,n,o){var a=this;return t.GLTFLoader.LoadExtensionAsync(e,n,this.name,(function(t,r){return a._loader.loadTextureInfoAsync(e,n,(function(e){if(!(e instanceof i.Texture))throw new Error(t+": Texture type not supported");r.offset&&(e.uOffset=r.offset[0],e.vOffset=r.offset[1]),e.uRotationCenter=0,e.vRotationCenter=0,r.rotation&&(e.wAng=-r.rotation),r.scale&&(e.uScale=r.scale[0],e.vScale=r.scale[1]),null!=r.texCoord&&(e.coordinatesIndex=r.texCoord),o(e)}))}))},e})(),e.KHR_texture_transform=n,t.GLTFLoader.RegisterExtension(r,(function(e){return new n(e)}))})(BABYLON||(BABYLON={})),(function(d){var f,e,t,r;f=d.GLTF2||(d.GLTF2={}),e=f.Extensions||(f.Extensions={}),t="EXT_lights_imageBased",r=(function(){function e(e){this.name=t,this.enabled=!0,this._loader=e}return e.prototype.dispose=function(){delete this._loader,delete this._lights},e.prototype.onLoading=function(){var e=this._loader.gltf.extensions;if(e&&e[this.name]){var t=e[this.name];this._lights=t.lights}},e.prototype.loadSceneAsync=function(o,a){var i=this;return f.GLTFLoader.LoadExtensionAsync(o,a,this.name,(function(e,t){var r=new Array;r.push(i._loader.loadSceneAsync(o,a)),i._loader.logOpen(""+e);var n=f.ArrayItem.Get(e+"/light",i._lights,t.light);return r.push(i._loadLightAsync("#/extensions/"+i.name+"/lights/"+t.light,n).then((function(e){i._loader.babylonScene.environmentTexture=e}))),i._loader.logClose(),Promise.all(r).then((function(){}))}))},e.prototype._loadLightAsync=function(i,s){var a=this;if(!s._loaded){var l=new Array;this._loader.logOpen(""+i);for(var u=new Array(s.specularImages.length),e=function(o){var a=s.specularImages[o];u[o]=new Array(a.length);for(var e=function(t){var e=i+"/specularImages/"+o+"/"+t;c._loader.logOpen(""+e);var r=a[t],n=f.ArrayItem.Get(e,c._loader.gltf.images,r);l.push(c._loader.loadImageAsync("#/images/"+r,n).then((function(e){u[o][t]=e}))),c._loader.logClose()},t=0;t<a.length;t++)e(t)},c=this,t=0;t<s.specularImages.length;t++)e(t);this._loader.logClose(),s._loaded=Promise.all(l).then((function(){var e=new d.RawCubeTexture(a._loader.babylonScene,null,s.specularImageSize);if(s._babylonTexture=e,null!=s.intensity&&(e.level=s.intensity),s.rotation){var t=d.Quaternion.FromArray(s.rotation);a._loader.babylonScene.useRightHandedSystem||(t=d.Quaternion.Inverse(t)),d.Matrix.FromQuaternionToRef(t,e.getReflectionTextureMatrix())}var r=d.SphericalHarmonics.FromArray(s.irradianceCoefficients);r.scale(s.intensity),r.convertIrradianceToLambertianRadiance();var n=d.SphericalPolynomial.FromHarmonics(r),o=(u.length-1)/d.Scalar.Log2(s.specularImageSize);return e.updateRGBDAsync(u,n,o)}))}return s._loaded.then((function(){return s._babylonTexture}))},e})(),e.EXT_lights_imageBased=r,f.GLTFLoader.RegisterExtension(t,(function(e){return new r(e)}))})(BABYLON||(BABYLON={}));
\ No newline at end of file
declare module BABYLON.GUI {
interface IFocusableControl {
onFocus(): void;
onBlur(): void;
processKeyboard(evt: KeyboardEvent): void;
}
class AdvancedDynamicTexture extends DynamicTexture {
private _isDirty;
private _renderObserver;
private _resizeObserver;
private _preKeyboardObserver;
private _pointerMoveObserver;
private _pointerObserver;
private _canvasPointerOutObserver;
private _background;
_rootContainer: Container;
_lastPickedControl: Control;
_lastControlOver: Nullable<Control>;
_lastControlDown: Nullable<Control>;
_capturingControl: Nullable<Control>;
_shouldBlockPointer: boolean;
_layerToDispose: Nullable<Layer>;
_linkedControls: Control[];
private _isFullscreen;
private _fullscreenViewport;
private _idealWidth;
private _idealHeight;
private _renderAtIdealSize;
private _focusedControl;
private _blockNextFocusCheck;
private _renderScale;
renderScale: number;
background: string;
idealWidth: number;
idealHeight: number;
renderAtIdealSize: boolean;
readonly layer: Nullable<Layer>;
readonly rootContainer: Container;
focusedControl: Nullable<IFocusableControl>;
isForeground: boolean;
constructor(name: string, width: number | undefined, height: number | undefined, scene: Nullable<Scene>, generateMipMaps?: boolean, samplingMode?: number);
executeOnAllControls(func: (control: Control) => void, container?: Container): void;
markAsDirty(): void;
addControl(control: Control): AdvancedDynamicTexture;
removeControl(control: Control): AdvancedDynamicTexture;
dispose(): void;
private _onResize();
_getGlobalViewport(scene: Scene): Viewport;
private _checkUpdate(camera);
private _render();
private _doPicking(x, y, type, buttonIndex);
attach(): void;
attachToMesh(mesh: AbstractMesh, supportPointerMove?: boolean): void;
moveFocusToControl(control: IFocusableControl): void;
private _manageFocus();
private _attachToOnPointerOut(scene);
static CreateForMesh(mesh: AbstractMesh, width?: number, height?: number, supportPointerMove?: boolean): AdvancedDynamicTexture;
static CreateFullscreenUI(name: string, foreground?: boolean, scene?: Nullable<Scene>, sampling?: number): AdvancedDynamicTexture;
}
}
declare module BABYLON.GUI {
class Measure {
left: number;
top: number;
width: number;
height: number;
constructor(left: number, top: number, width: number, height: number);
copyFrom(other: Measure): void;
isEqualsTo(other: Measure): boolean;
static Empty(): Measure;
}
}
declare module BABYLON.GUI {
class Vector2WithInfo extends Vector2 {
buttonIndex: number;
constructor(source: Vector2, buttonIndex?: number);
}
class Matrix2D {
m: Float32Array;
constructor(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number);
fromValues(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number): Matrix2D;
determinant(): number;
invertToRef(result: Matrix2D): Matrix2D;
multiplyToRef(other: Matrix2D, result: Matrix2D): Matrix2D;
transformCoordinates(x: number, y: number, result: Vector2): Matrix2D;
static Identity(): Matrix2D;
static TranslationToRef(x: number, y: number, result: Matrix2D): void;
static ScalingToRef(x: number, y: number, result: Matrix2D): void;
static RotationToRef(angle: number, result: Matrix2D): void;
private static _TempPreTranslationMatrix;
private static _TempPostTranslationMatrix;
private static _TempRotationMatrix;
private static _TempScalingMatrix;
private static _TempCompose0;
private static _TempCompose1;
private static _TempCompose2;
static ComposeToRef(tx: number, ty: number, angle: number, scaleX: number, scaleY: number, parentMatrix: Nullable<Matrix2D>, result: Matrix2D): void;
}
}
declare module BABYLON.GUI {
class ValueAndUnit {
unit: number;
negativeValueAllowed: boolean;
private _value;
ignoreAdaptiveScaling: boolean;
constructor(value: number, unit?: number, negativeValueAllowed?: boolean);
readonly isPercentage: boolean;
readonly isPixel: boolean;
readonly internalValue: number;
getValueInPixel(host: AdvancedDynamicTexture, refValue: number): number;
getValue(host: AdvancedDynamicTexture): number;
toString(host: AdvancedDynamicTexture): string;
fromString(source: string | number): boolean;
private static _Regex;
private static _UNITMODE_PERCENTAGE;
private static _UNITMODE_PIXEL;
static readonly UNITMODE_PERCENTAGE: number;
static readonly UNITMODE_PIXEL: number;
}
}
declare module BABYLON.GUI {
class Control {
name: string | undefined;
private _alpha;
private _alphaSet;
private _zIndex;
_root: Nullable<Container>;
_host: AdvancedDynamicTexture;
parent: Nullable<Container>;
_currentMeasure: Measure;
private _fontFamily;
private _fontStyle;
private _fontSize;
private _font;
_width: ValueAndUnit;
_height: ValueAndUnit;
protected _fontOffset: {
ascent: number;
height: number;
descent: number;
};
private _color;
protected _horizontalAlignment: number;
protected _verticalAlignment: number;
private _isDirty;
protected _cachedParentMeasure: Measure;
private _paddingLeft;
private _paddingRight;
private _paddingTop;
private _paddingBottom;
_left: ValueAndUnit;
_top: ValueAndUnit;
private _scaleX;
private _scaleY;
private _rotation;
private _transformCenterX;
private _transformCenterY;
private _transformMatrix;
protected _invertTransformMatrix: Matrix2D;
protected _transformedPosition: Vector2;
private _isMatrixDirty;
private _cachedOffsetX;
private _cachedOffsetY;
private _isVisible;
_linkedMesh: Nullable<AbstractMesh>;
private _fontSet;
private _dummyVector2;
private _downCount;
private _enterCount;
private _doNotRender;
isHitTestVisible: boolean;
isPointerBlocker: boolean;
isFocusInvisible: boolean;
shadowOffsetX: number;
shadowOffsetY: number;
shadowBlur: number;
shadowColor: string;
protected _linkOffsetX: ValueAndUnit;
protected _linkOffsetY: ValueAndUnit;
readonly typeName: string;
/**
* An event triggered when the pointer move over the control.
* @type {BABYLON.Observable}
*/
onPointerMoveObservable: Observable<Vector2>;
/**
* An event triggered when the pointer move out of the control.
* @type {BABYLON.Observable}
*/
onPointerOutObservable: Observable<Control>;
/**
* An event triggered when the pointer taps the control
* @type {BABYLON.Observable}
*/
onPointerDownObservable: Observable<Vector2WithInfo>;
/**
* An event triggered when pointer up
* @type {BABYLON.Observable}
*/
onPointerUpObservable: Observable<Vector2WithInfo>;
/**
* An event triggered when pointer enters the control
* @type {BABYLON.Observable}
*/
onPointerEnterObservable: Observable<Control>;
/**
* An event triggered when the control is marked as dirty
* @type {BABYLON.Observable}
*/
onDirtyObservable: Observable<Control>;
/**
* An event triggered after the control is drawn
* @type {BABYLON.Observable}
*/
onAfterDrawObservable: Observable<Control>;
alpha: number;
scaleX: number;
scaleY: number;
rotation: number;
transformCenterY: number;
transformCenterX: number;
horizontalAlignment: number;
verticalAlignment: number;
width: string | number;
readonly widthInPixels: number;
height: string | number;
readonly heightInPixels: number;
fontFamily: string;
fontStyle: string;
readonly fontSizeInPixels: number;
fontSize: string | number;
color: string;
zIndex: number;
notRenderable: boolean;
isVisible: boolean;
readonly isDirty: boolean;
paddingLeft: string | number;
readonly paddingLeftInPixels: number;
paddingRight: string | number;
readonly paddingRightInPixels: number;
paddingTop: string | number;
readonly paddingTopInPixels: number;
paddingBottom: string | number;
readonly paddingBottomInPixels: number;
left: string | number;
readonly leftInPixels: number;
top: string | number;
readonly topInPixels: number;
linkOffsetX: string | number;
readonly linkOffsetXInPixels: number;
linkOffsetY: string | number;
readonly linkOffsetYInPixels: number;
readonly centerX: number;
readonly centerY: number;
constructor(name?: string | undefined);
protected _getTypeName(): string;
getLocalCoordinates(globalCoordinates: Vector2): Vector2;
getLocalCoordinatesToRef(globalCoordinates: Vector2, result: Vector2): Control;
getParentLocalCoordinates(globalCoordinates: Vector2): Vector2;
moveToVector3(position: Vector3, scene: Scene): void;
linkWithMesh(mesh: Nullable<AbstractMesh>): void;
_moveToProjectedPosition(projectedPosition: Vector3): void;
_markMatrixAsDirty(): void;
_markAsDirty(): void;
_markAllAsDirty(): void;
_link(root: Nullable<Container>, host: AdvancedDynamicTexture): void;
protected _transform(context: CanvasRenderingContext2D): void;
protected _applyStates(context: CanvasRenderingContext2D): void;
protected _processMeasures(parentMeasure: Measure, context: CanvasRenderingContext2D): boolean;
protected _clip(context: CanvasRenderingContext2D): void;
_measure(): void;
protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
protected _preMeasure(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
contains(x: number, y: number): boolean;
_processPicking(x: number, y: number, type: number, buttonIndex: number): boolean;
_onPointerMove(target: Control, coordinates: Vector2): void;
_onPointerEnter(target: Control): boolean;
_onPointerOut(target: Control): void;
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
_onPointerUp(target: Control, coordinates: Vector2, buttonIndex: number): void;
forcePointerUp(): void;
_processObservables(type: number, x: number, y: number, buttonIndex: number): boolean;
private _prepareFont();
dispose(): void;
private static _HORIZONTAL_ALIGNMENT_LEFT;
private static _HORIZONTAL_ALIGNMENT_RIGHT;
private static _HORIZONTAL_ALIGNMENT_CENTER;
private static _VERTICAL_ALIGNMENT_TOP;
private static _VERTICAL_ALIGNMENT_BOTTOM;
private static _VERTICAL_ALIGNMENT_CENTER;
static readonly HORIZONTAL_ALIGNMENT_LEFT: number;
static readonly HORIZONTAL_ALIGNMENT_RIGHT: number;
static readonly HORIZONTAL_ALIGNMENT_CENTER: number;
static readonly VERTICAL_ALIGNMENT_TOP: number;
static readonly VERTICAL_ALIGNMENT_BOTTOM: number;
static readonly VERTICAL_ALIGNMENT_CENTER: number;
private static _FontHeightSizes;
static _GetFontOffset(font: string): {
ascent: number;
height: number;
descent: number;
};
static AddHeader(control: Control, text: string, size: string | number, options: {
isHorizontal: boolean;
controlFirst: boolean;
}): StackPanel;
protected static drawEllipse(x: number, y: number, width: number, height: number, context: CanvasRenderingContext2D): void;
}
}
declare module BABYLON.GUI {
class Container extends Control {
name: string | undefined;
protected _children: Control[];
protected _measureForChildren: Measure;
protected _background: string;
background: string;
readonly children: Control[];
constructor(name?: string | undefined);
protected _getTypeName(): string;
getChildByName(name: string): Nullable<Control>;
getChildByType(name: string, type: string): Nullable<Control>;
containsControl(control: Control): boolean;
addControl(control: Control): Container;
removeControl(control: Control): Container;
_reOrderControl(control: Control): void;
_markMatrixAsDirty(): void;
_markAllAsDirty(): void;
protected _localDraw(context: CanvasRenderingContext2D): void;
_link(root: Nullable<Container>, host: AdvancedDynamicTexture): void;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_processPicking(x: number, y: number, type: number, buttonIndex: number): boolean;
protected _clipForChildren(context: CanvasRenderingContext2D): void;
protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
dispose(): void;
}
}
declare module BABYLON.GUI {
class StackPanel extends Container {
name: string | undefined;
private _isVertical;
private _manualWidth;
private _manualHeight;
private _doNotTrackManualChanges;
private _tempMeasureStore;
isVertical: boolean;
width: string | number;
height: string | number;
constructor(name?: string | undefined);
protected _getTypeName(): string;
protected _preMeasure(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
}
}
declare module BABYLON.GUI {
class Rectangle extends Container {
name: string | undefined;
private _thickness;
private _cornerRadius;
thickness: number;
cornerRadius: number;
constructor(name?: string | undefined);
protected _getTypeName(): string;
protected _localDraw(context: CanvasRenderingContext2D): void;
protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
private _drawRoundedRect(context, offset?);
protected _clipForChildren(context: CanvasRenderingContext2D): void;
}
}
declare module BABYLON.GUI {
class Ellipse extends Container {
name: string | undefined;
private _thickness;
thickness: number;
constructor(name?: string | undefined);
protected _getTypeName(): string;
protected _localDraw(context: CanvasRenderingContext2D): void;
protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
protected _clipForChildren(context: CanvasRenderingContext2D): void;
}
}
declare module BABYLON.GUI {
class Line extends Control {
name: string | undefined;
private _lineWidth;
private _x1;
private _y1;
private _x2;
private _y2;
private _dash;
private _connectedControl;
private _connectedControlDirtyObserver;
dash: Array<number>;
connectedControl: Control;
x1: string | number;
y1: string | number;
x2: string | number;
y2: string | number;
lineWidth: number;
horizontalAlignment: number;
verticalAlignment: number;
private readonly _effectiveX2;
private readonly _effectiveY2;
constructor(name?: string | undefined);
protected _getTypeName(): string;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_measure(): void;
protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_moveToProjectedPosition(projectedPosition: Vector3): void;
}
}
declare module BABYLON.GUI {
class Slider extends Control {
name: string | undefined;
private _thumbWidth;
private _minimum;
private _maximum;
private _value;
private _background;
private _borderColor;
private _barOffset;
private _isThumbCircle;
onValueChangedObservable: Observable<number>;
borderColor: string;
background: string;
barOffset: string | number;
readonly barOffsetInPixels: number;
thumbWidth: string | number;
readonly thumbWidthInPixels: number;
minimum: number;
maximum: number;
value: number;
isThumbCircle: boolean;
constructor(name?: string | undefined);
protected _getTypeName(): string;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
private _pointerIsDown;
private _updateValueFromPointer(x, y);
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
_onPointerMove(target: Control, coordinates: Vector2): void;
_onPointerUp(target: Control, coordinates: Vector2, buttonIndex: number): void;
}
}
declare module BABYLON.GUI {
class Checkbox extends Control {
name: string | undefined;
private _isChecked;
private _background;
private _checkSizeRatio;
private _thickness;
thickness: number;
onIsCheckedChangedObservable: Observable<boolean>;
checkSizeRatio: number;
background: string;
isChecked: boolean;
constructor(name?: string | undefined);
protected _getTypeName(): string;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
}
}
declare module BABYLON.GUI {
class RadioButton extends Control {
name: string | undefined;
private _isChecked;
private _background;
private _checkSizeRatio;
private _thickness;
thickness: number;
group: string;
onIsCheckedChangedObservable: Observable<boolean>;
checkSizeRatio: number;
background: string;
isChecked: boolean;
constructor(name?: string | undefined);
protected _getTypeName(): string;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
}
}
declare module BABYLON.GUI {
class TextBlock extends Control {
name: string | undefined;
private _text;
private _textWrapping;
private _textHorizontalAlignment;
private _textVerticalAlignment;
private _lines;
private _resizeToFit;
/**
* An event triggered after the text is changed
* @type {BABYLON.Observable}
*/
onTextChangedObservable: Observable<TextBlock>;
resizeToFit: boolean;
textWrapping: boolean;
text: string;
textHorizontalAlignment: number;
textVerticalAlignment: number;
constructor(name?: string | undefined, text?: string);
protected _getTypeName(): string;
private _drawText(text, textWidth, y, context);
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
protected _parseLine(line: string | undefined, context: CanvasRenderingContext2D): object;
protected _parseLineWithTextWrapping(line: string | undefined, context: CanvasRenderingContext2D): object;
protected _renderLines(context: CanvasRenderingContext2D): void;
dispose(): void;
}
}
declare var DOMImage: new (width?: number | undefined, height?: number | undefined) => HTMLImageElement;
declare module BABYLON.GUI {
class Image extends Control {
name: string | undefined;
private _domImage;
private _imageWidth;
private _imageHeight;
private _loaded;
private _stretch;
private _source;
private _autoScale;
private _sourceLeft;
private _sourceTop;
private _sourceWidth;
private _sourceHeight;
private _cellWidth;
private _cellHeight;
private _cellId;
sourceLeft: number;
sourceTop: number;
sourceWidth: number;
sourceHeight: number;
autoScale: boolean;
stretch: number;
domImage: HTMLImageElement;
private _onImageLoaded();
source: Nullable<string>;
cellWidth: number;
cellHeight: number;
cellId: number;
constructor(name?: string | undefined, url?: Nullable<string>);
protected _getTypeName(): string;
synchronizeSizeWithContent(): void;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
private static _STRETCH_NONE;
private static _STRETCH_FILL;
private static _STRETCH_UNIFORM;
private static _STRETCH_EXTEND;
static readonly STRETCH_NONE: number;
static readonly STRETCH_FILL: number;
static readonly STRETCH_UNIFORM: number;
static readonly STRETCH_EXTEND: number;
}
}
declare module BABYLON.GUI {
class Button extends Rectangle {
name: string | undefined;
pointerEnterAnimation: () => void;
pointerOutAnimation: () => void;
pointerDownAnimation: () => void;
pointerUpAnimation: () => void;
constructor(name?: string | undefined);
protected _getTypeName(): string;
_processPicking(x: number, y: number, type: number, buttonIndex: number): boolean;
_onPointerEnter(target: Control): boolean;
_onPointerOut(target: Control): void;
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
_onPointerUp(target: Control, coordinates: Vector2, buttonIndex: number): void;
static CreateImageButton(name: string, text: string, imageUrl: string): Button;
static CreateImageOnlyButton(name: string, imageUrl: string): Button;
static CreateSimpleButton(name: string, text: string): Button;
static CreateImageWithCenterTextButton(name: string, text: string, imageUrl: string): Button;
}
}
declare module BABYLON.GUI {
class ColorPicker extends Control {
name: string | undefined;
private _colorWheelCanvas;
private _value;
private _tmpColor;
private _pointerStartedOnSquare;
private _pointerStartedOnWheel;
private _squareLeft;
private _squareTop;
private _squareSize;
private _h;
private _s;
private _v;
onValueChangedObservable: Observable<Color3>;
value: Color3;
width: string | number;
height: string | number;
size: string | number;
constructor(name?: string | undefined);
protected _getTypeName(): string;
private _updateSquareProps();
private _drawGradientSquare(hueValue, left, top, width, height, context);
private _drawCircle(centerX, centerY, radius, context);
private _createColorWheelCanvas(radius, thickness);
private _RGBtoHSV(color, result);
private _HSVtoRGB(hue, saturation, value, result);
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
private _pointerIsDown;
private _updateValueFromPointer(x, y);
private _isPointOnSquare(coordinates);
private _isPointOnWheel(coordinates);
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
_onPointerMove(target: Control, coordinates: Vector2): void;
_onPointerUp(target: Control, coordinates: Vector2, buttonIndex: number): void;
}
}
declare module BABYLON.GUI {
class InputText extends Control implements IFocusableControl {
name: string | undefined;
private _text;
private _placeholderText;
private _background;
private _focusedBackground;
private _placeholderColor;
private _thickness;
private _margin;
private _autoStretchWidth;
private _maxWidth;
private _isFocused;
private _blinkTimeout;
private _blinkIsEven;
private _cursorOffset;
private _scrollLeft;
private _textWidth;
private _clickedCoordinate;
promptMessage: string;
onTextChangedObservable: Observable<InputText>;
onFocusObservable: Observable<InputText>;
onBlurObservable: Observable<InputText>;
maxWidth: string | number;
readonly maxWidthInPixels: number;
margin: string;
readonly marginInPixels: number;
autoStretchWidth: boolean;
thickness: number;
focusedBackground: string;
background: string;
placeholderColor: string;
placeholderText: string;
text: string;
width: string | number;
constructor(name?: string | undefined, text?: string);
onBlur(): void;
onFocus(): void;
protected _getTypeName(): string;
processKey(keyCode: number, key?: string): void;
processKeyboard(evt: KeyboardEvent): void;
_draw(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
_onPointerDown(target: Control, coordinates: Vector2, buttonIndex: number): boolean;
_onPointerUp(target: Control, coordinates: Vector2, buttonIndex: number): void;
dispose(): void;
}
}
declare module BABYLON.GUI {
class KeyPropertySet {
width?: string;
height?: string;
paddingLeft?: string;
paddingRight?: string;
paddingTop?: string;
paddingBottom?: string;
color?: string;
background?: string;
}
class VirtualKeyboard extends StackPanel {
onKeyPressObservable: Observable<string>;
defaultButtonWidth: string;
defaultButtonHeight: string;
defaultButtonPaddingLeft: string;
defaultButtonPaddingRight: string;
defaultButtonPaddingTop: string;
defaultButtonPaddingBottom: string;
defaultButtonColor: string;
defaultButtonBackground: string;
shiftButtonColor: string;
selectedShiftThickness: number;
shiftState: number;
protected _getTypeName(): string;
private _createKey(key, propertySet);
addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void;
applyShiftState(shiftState: number): void;
private _connectedInputText;
private _onFocusObserver;
private _onBlurObserver;
private _onKeyPressObserver;
readonly connectedInputText: Nullable<InputText>;
connect(input: InputText): void;
disconnect(): void;
static CreateDefaultLayout(): VirtualKeyboard;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* matter-js 0.14.2 by @liabru 2018-06-11
* http://brm.io/matter-js/
* License MIT
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Matter=e()}}(function(){return function(){function e(t,n,o){function i(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){return i(t[s][1][e]||e)},d,d.exports,e,t,n,o)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s<o.length;s++)i(o[s]);return i}return e}()({1:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Sleeping"),a=(e("../render/Render"),e("../core/Common")),l=e("../geometry/Bounds"),c=e("../geometry/Axes");!function(){o._inertiaScale=4,
o._nextCollidingGroupId=1,o._nextNonCollidingGroupId=-1,o._nextCategory=1,o.create=function(t){var n={id:a.nextId(),type:"body",label:"Body",parts:[],plugin:{},angle:0,vertices:i.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),position:{x:0,y:0},force:{x:0,y:0},torque:0,positionImpulse:{x:0,y:0},constraintImpulse:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,velocity:{x:0,y:0},angularVelocity:0,isSensor:!1,isStatic:!1,isSleeping:!1,motion:0,sleepThreshold:60,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,collisionFilter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,render:{visible:!0,opacity:1,sprite:{xScale:1,yScale:1,xOffset:0,yOffset:0},lineWidth:0}},o=a.extend(n,t);return e(o,t),o},o.nextGroup=function(e){return e?o._nextNonCollidingGroupId--:o._nextCollidingGroupId++},o.nextCategory=function(){return o._nextCategory=o._nextCategory<<1,o._nextCategory};var e=function(e,t){t=t||{},o.set(e,{bounds:e.bounds||l.create(e.vertices),
positionPrev:e.positionPrev||r.clone(e.position),anglePrev:e.anglePrev||e.angle,vertices:e.vertices,parts:e.parts||[e],isStatic:e.isStatic,isSleeping:e.isSleeping,parent:e.parent||e}),i.rotate(e.vertices,e.angle,e.position),c.rotate(e.axes,e.angle),l.update(e.bounds,e.vertices,e.velocity),o.set(e,{axes:t.axes||e.axes,area:t.area||e.area,mass:t.mass||e.mass,inertia:t.inertia||e.inertia});var n=e.isStatic?"#2e2b44":a.choose(["#006BA6","#0496FF","#FFBC42","#D81159","#8F2D56"]);e.render.fillStyle=e.render.fillStyle||n,e.render.strokeStyle=e.render.strokeStyle||"#000",e.render.sprite.xOffset+=-(e.bounds.min.x-e.position.x)/(e.bounds.max.x-e.bounds.min.x),e.render.sprite.yOffset+=-(e.bounds.min.y-e.position.y)/(e.bounds.max.y-e.bounds.min.y)};o.set=function(e,t,n){var i;"string"==typeof t&&(i=t,t={},t[i]=n);for(i in t)if(n=t[i],t.hasOwnProperty(i))switch(i){case"isStatic":o.setStatic(e,n);break;case"isSleeping":s.set(e,n);break;case"mass":o.setMass(e,n);break;case"density":o.setDensity(e,n)
;break;case"inertia":o.setInertia(e,n);break;case"vertices":o.setVertices(e,n);break;case"position":o.setPosition(e,n);break;case"angle":o.setAngle(e,n);break;case"velocity":o.setVelocity(e,n);break;case"angularVelocity":o.setAngularVelocity(e,n);break;case"parts":o.setParts(e,n);break;default:e[i]=n}},o.setStatic=function(e,t){for(var n=0;n<e.parts.length;n++){var o=e.parts[n];o.isStatic=t,t?(o._original={restitution:o.restitution,friction:o.friction,mass:o.mass,inertia:o.inertia,density:o.density,inverseMass:o.inverseMass,inverseInertia:o.inverseInertia},o.restitution=0,o.friction=1,o.mass=o.inertia=o.density=1/0,o.inverseMass=o.inverseInertia=0,o.positionPrev.x=o.position.x,o.positionPrev.y=o.position.y,o.anglePrev=o.angle,o.angularVelocity=0,o.speed=0,o.angularSpeed=0,o.motion=0):o._original&&(o.restitution=o._original.restitution,o.friction=o._original.friction,o.mass=o._original.mass,o.inertia=o._original.inertia,o.density=o._original.density,
o.inverseMass=o._original.inverseMass,o.inverseInertia=o._original.inverseInertia,delete o._original)}},o.setMass=function(e,t){var n=e.inertia/(e.mass/6);e.inertia=n*(t/6),e.inverseInertia=1/e.inertia,e.mass=t,e.inverseMass=1/e.mass,e.density=e.mass/e.area},o.setDensity=function(e,t){o.setMass(e,t*e.area),e.density=t},o.setInertia=function(e,t){e.inertia=t,e.inverseInertia=1/e.inertia},o.setVertices=function(e,t){t[0].body===e?e.vertices=t:e.vertices=i.create(t,e),e.axes=c.fromVertices(e.vertices),e.area=i.area(e.vertices),o.setMass(e,e.density*e.area);var n=i.centre(e.vertices);i.translate(e.vertices,n,-1),o.setInertia(e,o._inertiaScale*i.inertia(e.vertices,e.mass)),i.translate(e.vertices,e.position),l.update(e.bounds,e.vertices,e.velocity)},o.setParts=function(e,t,n){var r;for(t=t.slice(0),e.parts.length=0,e.parts.push(e),e.parent=e,r=0;r<t.length;r++){var s=t[r];s!==e&&(s.parent=e,e.parts.push(s))}if(1!==e.parts.length){if(n=void 0===n||n){var a=[]
;for(r=0;r<t.length;r++)a=a.concat(t[r].vertices);i.clockwiseSort(a);var l=i.hull(a),c=i.centre(l);o.setVertices(e,l),i.translate(e.vertices,c)}var d=o._totalProperties(e);e.area=d.area,e.parent=e,e.position.x=d.centre.x,e.position.y=d.centre.y,e.positionPrev.x=d.centre.x,e.positionPrev.y=d.centre.y,o.setMass(e,d.mass),o.setInertia(e,d.inertia),o.setPosition(e,d.centre)}},o.setPosition=function(e,t){var n=r.sub(t,e.position);e.positionPrev.x+=n.x,e.positionPrev.y+=n.y;for(var o=0;o<e.parts.length;o++){var s=e.parts[o];s.position.x+=n.x,s.position.y+=n.y,i.translate(s.vertices,n),l.update(s.bounds,s.vertices,e.velocity)}},o.setAngle=function(e,t){var n=t-e.angle;e.anglePrev+=n;for(var o=0;o<e.parts.length;o++){var s=e.parts[o];s.angle+=n,i.rotate(s.vertices,n,e.position),c.rotate(s.axes,n),l.update(s.bounds,s.vertices,e.velocity),o>0&&r.rotateAbout(s.position,n,e.position,s.position)}},o.setVelocity=function(e,t){e.positionPrev.x=e.position.x-t.x,e.positionPrev.y=e.position.y-t.y,
e.velocity.x=t.x,e.velocity.y=t.y,e.speed=r.magnitude(e.velocity)},o.setAngularVelocity=function(e,t){e.anglePrev=e.angle-t,e.angularVelocity=t,e.angularSpeed=Math.abs(e.angularVelocity)},o.translate=function(e,t){o.setPosition(e,r.add(e.position,t))},o.rotate=function(e,t,n){if(n){var i=Math.cos(t),r=Math.sin(t),s=e.position.x-n.x,a=e.position.y-n.y;o.setPosition(e,{x:n.x+(s*i-a*r),y:n.y+(s*r+a*i)}),o.setAngle(e,e.angle+t)}else o.setAngle(e,e.angle+t)},o.scale=function(e,t,n,r){var s=0,a=0;r=r||e.position;for(var d=0;d<e.parts.length;d++){var u=e.parts[d];i.scale(u.vertices,t,n,r),u.axes=c.fromVertices(u.vertices),u.area=i.area(u.vertices),o.setMass(u,e.density*u.area),i.translate(u.vertices,{x:-u.position.x,y:-u.position.y}),o.setInertia(u,o._inertiaScale*i.inertia(u.vertices,u.mass)),i.translate(u.vertices,{x:u.position.x,y:u.position.y}),d>0&&(s+=u.area,a+=u.inertia),u.position.x=r.x+(u.position.x-r.x)*t,u.position.y=r.y+(u.position.y-r.y)*n,l.update(u.bounds,u.vertices,e.velocity)
}e.parts.length>1&&(e.area=s,e.isStatic||(o.setMass(e,e.density*s),o.setInertia(e,a))),e.circleRadius&&(t===n?e.circleRadius*=t:e.circleRadius=null)},o.update=function(e,t,n,o){var s=Math.pow(t*n*e.timeScale,2),a=1-e.frictionAir*n*e.timeScale,d=e.position.x-e.positionPrev.x,u=e.position.y-e.positionPrev.y;e.velocity.x=d*a*o+e.force.x/e.mass*s,e.velocity.y=u*a*o+e.force.y/e.mass*s,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.position.x+=e.velocity.x,e.position.y+=e.velocity.y,e.angularVelocity=(e.angle-e.anglePrev)*a*o+e.torque/e.inertia*s,e.anglePrev=e.angle,e.angle+=e.angularVelocity,e.speed=r.magnitude(e.velocity),e.angularSpeed=Math.abs(e.angularVelocity);for(var p=0;p<e.parts.length;p++){var f=e.parts[p];i.translate(f.vertices,e.velocity),p>0&&(f.position.x+=e.velocity.x,f.position.y+=e.velocity.y),0!==e.angularVelocity&&(i.rotate(f.vertices,e.angularVelocity,e.position),c.rotate(f.axes,e.angularVelocity),
p>0&&r.rotateAbout(f.position,e.angularVelocity,e.position,f.position)),l.update(f.bounds,f.vertices,e.velocity)}},o.applyForce=function(e,t,n){e.force.x+=n.x,e.force.y+=n.y;var o={x:t.x-e.position.x,y:t.y-e.position.y};e.torque+=o.x*n.y-o.y*n.x},o._totalProperties=function(e){for(var t={mass:0,area:0,inertia:0,centre:{x:0,y:0}},n=1===e.parts.length?0:1;n<e.parts.length;n++){var o=e.parts[n],i=o.mass!==1/0?o.mass:1;t.mass+=i,t.area+=o.area,t.inertia+=o.inertia,t.centre=r.add(t.centre,r.mult(o.position,i))}return t.centre=r.div(t.centre,t.mass),t}}()},{"../core/Common":14,"../core/Sleeping":22,"../geometry/Axes":25,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29,"../render/Render":31}],2:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Events"),r=e("../core/Common"),s=e("../geometry/Bounds"),a=e("./Body");!function(){o.create=function(e){return r.extend({id:r.nextId(),type:"composite",parent:null,isModified:!1,bodies:[],constraints:[],composites:[],
label:"Composite",plugin:{}},e)},o.setModified=function(e,t,n,i){if(e.isModified=t,n&&e.parent&&o.setModified(e.parent,t,n,i),i)for(var r=0;r<e.composites.length;r++){var s=e.composites[r];o.setModified(s,t,n,i)}},o.add=function(e,t){var n=[].concat(t);i.trigger(e,"beforeAdd",{object:t});for(var s=0;s<n.length;s++){var a=n[s];switch(a.type){case"body":if(a.parent!==a){r.warn("Composite.add: skipped adding a compound body part (you must add its parent instead)");break}o.addBody(e,a);break;case"constraint":o.addConstraint(e,a);break;case"composite":o.addComposite(e,a);break;case"mouseConstraint":o.addConstraint(e,a.constraint)}}return i.trigger(e,"afterAdd",{object:t}),e},o.remove=function(e,t,n){var r=[].concat(t);i.trigger(e,"beforeRemove",{object:t});for(var s=0;s<r.length;s++){var a=r[s];switch(a.type){case"body":o.removeBody(e,a,n);break;case"constraint":o.removeConstraint(e,a,n);break;case"composite":o.removeComposite(e,a,n);break;case"mouseConstraint":
o.removeConstraint(e,a.constraint)}}return i.trigger(e,"afterRemove",{object:t}),e},o.addComposite=function(e,t){return e.composites.push(t),t.parent=e,o.setModified(e,!0,!0,!1),e},o.removeComposite=function(e,t,n){var i=r.indexOf(e.composites,t);if(-1!==i&&(o.removeCompositeAt(e,i),o.setModified(e,!0,!0,!1)),n)for(var s=0;s<e.composites.length;s++)o.removeComposite(e.composites[s],t,!0);return e},o.removeCompositeAt=function(e,t){return e.composites.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addBody=function(e,t){return e.bodies.push(t),o.setModified(e,!0,!0,!1),e},o.removeBody=function(e,t,n){var i=r.indexOf(e.bodies,t);if(-1!==i&&(o.removeBodyAt(e,i),o.setModified(e,!0,!0,!1)),n)for(var s=0;s<e.composites.length;s++)o.removeBody(e.composites[s],t,!0);return e},o.removeBodyAt=function(e,t){return e.bodies.splice(t,1),o.setModified(e,!0,!0,!1),e},o.addConstraint=function(e,t){return e.constraints.push(t),o.setModified(e,!0,!0,!1),e},o.removeConstraint=function(e,t,n){
var i=r.indexOf(e.constraints,t);if(-1!==i&&o.removeConstraintAt(e,i),n)for(var s=0;s<e.composites.length;s++)o.removeConstraint(e.composites[s],t,!0);return e},o.removeConstraintAt=function(e,t){return e.constraints.splice(t,1),o.setModified(e,!0,!0,!1),e},o.clear=function(e,t,n){if(n)for(var i=0;i<e.composites.length;i++)o.clear(e.composites[i],t,!0);return t?e.bodies=e.bodies.filter(function(e){return e.isStatic}):e.bodies.length=0,e.constraints.length=0,e.composites.length=0,o.setModified(e,!0,!0,!1),e},o.allBodies=function(e){for(var t=[].concat(e.bodies),n=0;n<e.composites.length;n++)t=t.concat(o.allBodies(e.composites[n]));return t},o.allConstraints=function(e){for(var t=[].concat(e.constraints),n=0;n<e.composites.length;n++)t=t.concat(o.allConstraints(e.composites[n]));return t},o.allComposites=function(e){for(var t=[].concat(e.composites),n=0;n<e.composites.length;n++)t=t.concat(o.allComposites(e.composites[n]));return t},o.get=function(e,t,n){var i,r;switch(n){case"body":
i=o.allBodies(e);break;case"constraint":i=o.allConstraints(e);break;case"composite":i=o.allComposites(e).concat(e)}return i?(r=i.filter(function(e){return e.id.toString()===t.toString()}),0===r.length?null:r[0]):null},o.move=function(e,t,n){return o.remove(e,t),o.add(n,t),e},o.rebase=function(e){for(var t=o.allBodies(e).concat(o.allConstraints(e)).concat(o.allComposites(e)),n=0;n<t.length;n++)t[n].id=r.nextId();return o.setModified(e,!0,!0,!1),e},o.translate=function(e,t,n){for(var i=n?o.allBodies(e):e.bodies,r=0;r<i.length;r++)a.translate(i[r],t);return o.setModified(e,!0,!0,!1),e},o.rotate=function(e,t,n,i){for(var r=Math.cos(t),s=Math.sin(t),l=i?o.allBodies(e):e.bodies,c=0;c<l.length;c++){var d=l[c],u=d.position.x-n.x,p=d.position.y-n.y;a.setPosition(d,{x:n.x+(u*r-p*s),y:n.y+(u*s+p*r)}),a.rotate(d,t)}return o.setModified(e,!0,!0,!1),e},o.scale=function(e,t,n,i,r){for(var s=r?o.allBodies(e):e.bodies,l=0;l<s.length;l++){var c=s[l],d=c.position.x-i.x,u=c.position.y-i.y
;a.setPosition(c,{x:i.x+d*t,y:i.y+u*n}),a.scale(c,t,n)}return o.setModified(e,!0,!0,!1),e},o.bounds=function(e){for(var t=o.allBodies(e),n=[],i=0;i<t.length;i+=1){var r=t[i];n.push(r.bounds.min,r.bounds.max)}return s.create(n)}}()},{"../core/Common":14,"../core/Events":16,"../geometry/Bounds":26,"./Body":1}],3:[function(e,t,n){var o={};t.exports=o;var i=e("./Composite"),r=(e("../constraint/Constraint"),e("../core/Common"));!function(){o.create=function(e){var t=i.create(),n={label:"World",gravity:{x:0,y:1,scale:.001},bounds:{min:{x:-1/0,y:-1/0},max:{x:1/0,y:1/0}}};return r.extend(t,n,e)}}()},{"../constraint/Constraint":12,"../core/Common":14,"./Composite":2}],4:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e){return{id:o.id(e),vertex:e,normalImpulse:0,tangentImpulse:0}},o.id=function(e){return e.body.id+"_"+e.index}}()},{}],5:[function(e,t,n){var o={};t.exports=o;var i=e("./SAT"),r=e("./Pair"),s=e("../geometry/Bounds");!function(){o.collisions=function(e,t){
for(var n=[],a=t.pairs.table,l=0;l<e.length;l++){var c=e[l][0],d=e[l][1];if((!c.isStatic&&!c.isSleeping||!d.isStatic&&!d.isSleeping)&&(o.canCollide(c.collisionFilter,d.collisionFilter)&&s.overlaps(c.bounds,d.bounds)))for(var u=c.parts.length>1?1:0;u<c.parts.length;u++)for(var p=c.parts[u],f=d.parts.length>1?1:0;f<d.parts.length;f++){var m=d.parts[f];if(p===c&&m===d||s.overlaps(p.bounds,m.bounds)){var v,y=r.id(p,m),g=a[y];v=g&&g.isActive?g.collision:null;var x=i.collides(p,m,v);x.collided&&n.push(x)}}}return n},o.canCollide=function(e,t){return e.group===t.group&&0!==e.group?e.group>0:0!=(e.mask&t.category)&&0!=(t.mask&e.category)}}()},{"../geometry/Bounds":26,"./Pair":7,"./SAT":11}],6:[function(e,t,n){var o={};t.exports=o;var i=e("./Pair"),r=e("./Detector"),s=e("../core/Common");!function(){o.create=function(e){var t={controller:o,detector:r.collisions,buckets:{},pairs:{},pairsList:[],bucketWidth:48,bucketHeight:48};return s.extend(t,e)},o.update=function(e,t,n,i){
var r,s,a,l,c,d=n.world,u=e.buckets,p=!1;for(r=0;r<t.length;r++){var f=t[r];if((!f.isSleeping||i)&&!(f.bounds.max.x<d.bounds.min.x||f.bounds.min.x>d.bounds.max.x||f.bounds.max.y<d.bounds.min.y||f.bounds.min.y>d.bounds.max.y)){var m=o._getRegion(e,f);if(!f.region||m.id!==f.region.id||i){f.region&&!i||(f.region=m);var v=o._regionUnion(m,f.region);for(s=v.startCol;s<=v.endCol;s++)for(a=v.startRow;a<=v.endRow;a++){c=o._getBucketId(s,a),l=u[c];var y=s>=m.startCol&&s<=m.endCol&&a>=m.startRow&&a<=m.endRow,g=s>=f.region.startCol&&s<=f.region.endCol&&a>=f.region.startRow&&a<=f.region.endRow;!y&&g&&g&&l&&o._bucketRemoveBody(e,l,f),(f.region===m||y&&!g||i)&&(l||(l=o._createBucket(u,c)),o._bucketAddBody(e,l,f))}f.region=m,p=!0}}}p&&(e.pairsList=o._createActivePairsList(e))},o.clear=function(e){e.buckets={},e.pairs={},e.pairsList=[]},o._regionUnion=function(e,t){var n=Math.min(e.startCol,t.startCol),i=Math.max(e.endCol,t.endCol),r=Math.min(e.startRow,t.startRow),s=Math.max(e.endRow,t.endRow)
;return o._createRegion(n,i,r,s)},o._getRegion=function(e,t){var n=t.bounds,i=Math.floor(n.min.x/e.bucketWidth),r=Math.floor(n.max.x/e.bucketWidth),s=Math.floor(n.min.y/e.bucketHeight),a=Math.floor(n.max.y/e.bucketHeight);return o._createRegion(i,r,s,a)},o._createRegion=function(e,t,n,o){return{id:e+","+t+","+n+","+o,startCol:e,endCol:t,startRow:n,endRow:o}},o._getBucketId=function(e,t){return"C"+e+"R"+t},o._createBucket=function(e,t){return e[t]=[]},o._bucketAddBody=function(e,t,n){for(var o=0;o<t.length;o++){var r=t[o];if(!(n.id===r.id||n.isStatic&&r.isStatic)){var s=i.id(n,r),a=e.pairs[s];a?a[2]+=1:e.pairs[s]=[n,r,1]}}t.push(n)},o._bucketRemoveBody=function(e,t,n){t.splice(s.indexOf(t,n),1);for(var o=0;o<t.length;o++){var r=t[o],a=i.id(n,r),l=e.pairs[a];l&&(l[2]-=1)}},o._createActivePairsList=function(e){var t,n,o=[];t=s.keys(e.pairs);for(var i=0;i<t.length;i++)n=e.pairs[t[i]],n[2]>0?o.push(n):delete e.pairs[t[i]];return o}}()},{"../core/Common":14,"./Detector":5,"./Pair":7}],
7:[function(e,t,n){var o={};t.exports=o;var i=e("./Contact");!function(){o.create=function(e,t){var n=e.bodyA,i=e.bodyB,r=e.parentA,s=e.parentB,a={id:o.id(n,i),bodyA:n,bodyB:i,contacts:{},activeContacts:[],separation:0,isActive:!0,isSensor:n.isSensor||i.isSensor,timeCreated:t,timeUpdated:t,inverseMass:r.inverseMass+s.inverseMass,friction:Math.min(r.friction,s.friction),frictionStatic:Math.max(r.frictionStatic,s.frictionStatic),restitution:Math.max(r.restitution,s.restitution),slop:Math.max(r.slop,s.slop)};return o.update(a,e,t),a},o.update=function(e,t,n){var r=e.contacts,s=t.supports,a=e.activeContacts,l=t.parentA,c=t.parentB;if(e.collision=t,e.inverseMass=l.inverseMass+c.inverseMass,e.friction=Math.min(l.friction,c.friction),e.frictionStatic=Math.max(l.frictionStatic,c.frictionStatic),e.restitution=Math.max(l.restitution,c.restitution),e.slop=Math.max(l.slop,c.slop),a.length=0,t.collided){for(var d=0;d<s.length;d++){var u=s[d],p=i.id(u),f=r[p];f?a.push(f):a.push(r[p]=i.create(u))}
e.separation=t.depth,o.setActive(e,!0,n)}else!0===e.isActive&&o.setActive(e,!1,n)},o.setActive=function(e,t,n){t?(e.isActive=!0,e.timeUpdated=n):(e.isActive=!1,e.activeContacts.length=0)},o.id=function(e,t){return e.id<t.id?"A"+e.id+"B"+t.id:"A"+t.id+"B"+e.id}}()},{"./Contact":4}],8:[function(e,t,n){var o={};t.exports=o;var i=e("./Pair"),r=e("../core/Common");!function(){o._pairMaxIdleLife=1e3,o.create=function(e){return r.extend({table:{},list:[],collisionStart:[],collisionActive:[],collisionEnd:[]},e)},o.update=function(e,t,n){var o,s,a,l,c=e.list,d=e.table,u=e.collisionStart,p=e.collisionEnd,f=e.collisionActive,m=[];for(u.length=0,p.length=0,f.length=0,l=0;l<t.length;l++)o=t[l],o.collided&&(s=i.id(o.bodyA,o.bodyB),m.push(s),a=d[s],a?(a.isActive?f.push(a):u.push(a),i.update(a,o,n)):(a=i.create(o,n),d[s]=a,u.push(a),c.push(a)));for(l=0;l<c.length;l++)a=c[l],a.isActive&&-1===r.indexOf(m,a.id)&&(i.setActive(a,!1,n),p.push(a))},o.removeOld=function(e,t){
var n,i,r,s,a=e.list,l=e.table,c=[];for(s=0;s<a.length;s++)n=a[s],i=n.collision,i.bodyA.isSleeping||i.bodyB.isSleeping?n.timeUpdated=t:t-n.timeUpdated>o._pairMaxIdleLife&&c.push(s);for(s=0;s<c.length;s++)r=c[s]-s,n=a[r],delete l[n.id],a.splice(r,1)},o.clear=function(e){return e.table={},e.list.length=0,e.collisionStart.length=0,e.collisionActive.length=0,e.collisionEnd.length=0,e}}()},{"../core/Common":14,"./Pair":7}],9:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("./SAT"),s=e("../geometry/Bounds"),a=e("../factory/Bodies"),l=e("../geometry/Vertices");!function(){o.collides=function(e,t){for(var n=[],o=0;o<t.length;o++){var i=t[o];if(s.overlaps(i.bounds,e.bounds))for(var a=1===i.parts.length?0:1;a<i.parts.length;a++){var l=i.parts[a];if(s.overlaps(l.bounds,e.bounds)){var c=r.collides(l,e);if(c.collided){n.push(c);break}}}}return n},o.ray=function(e,t,n,r){r=r||1e-100
;for(var s=i.angle(t,n),l=i.magnitude(i.sub(t,n)),c=.5*(n.x+t.x),d=.5*(n.y+t.y),u=a.rectangle(c,d,l,r,{angle:s}),p=o.collides(u,e),f=0;f<p.length;f+=1){var m=p[f];m.body=m.bodyB=m.bodyA}return p},o.region=function(e,t,n){for(var o=[],i=0;i<e.length;i++){var r=e[i],a=s.overlaps(r.bounds,t);(a&&!n||!a&&n)&&o.push(r)}return o},o.point=function(e,t){for(var n=[],o=0;o<e.length;o++){var i=e[o];if(s.contains(i.bounds,t))for(var r=1===i.parts.length?0:1;r<i.parts.length;r++){var a=i.parts[r];if(s.contains(a.bounds,t)&&l.contains(a.vertices,t)){n.push(i);break}}}return n}}()},{"../factory/Bodies":23,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29,"./SAT":11}],10:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Common"),a=e("../geometry/Bounds");!function(){o._restingThresh=4,o._restingThreshTangent=6,o._positionDampen=.9,o._positionWarming=.8,o._frictionNormalMultiplier=5,o.preSolvePosition=function(e){
var t,n,o;for(t=0;t<e.length;t++)n=e[t],n.isActive&&(o=n.activeContacts.length,n.collision.parentA.totalContacts+=o,n.collision.parentB.totalContacts+=o)},o.solvePosition=function(e,t){var n,i,s,a,l,c,d,u,p,f=r._temp[0],m=r._temp[1],v=r._temp[2],y=r._temp[3];for(n=0;n<e.length;n++)i=e[n],i.isActive&&!i.isSensor&&(s=i.collision,a=s.parentA,l=s.parentB,c=s.normal,d=r.sub(r.add(l.positionImpulse,l.position,f),r.add(a.positionImpulse,r.sub(l.position,s.penetration,m),v),y),i.separation=r.dot(c,d));for(n=0;n<e.length;n++)i=e[n],i.isActive&&!i.isSensor&&(s=i.collision,a=s.parentA,l=s.parentB,c=s.normal,p=(i.separation-i.slop)*t,(a.isStatic||l.isStatic)&&(p*=2),a.isStatic||a.isSleeping||(u=o._positionDampen/a.totalContacts,a.positionImpulse.x+=c.x*p*u,a.positionImpulse.y+=c.y*p*u),l.isStatic||l.isSleeping||(u=o._positionDampen/l.totalContacts,l.positionImpulse.x-=c.x*p*u,l.positionImpulse.y-=c.y*p*u))},o.postSolvePosition=function(e){for(var t=0;t<e.length;t++){var n=e[t]
;if(n.totalContacts=0,0!==n.positionImpulse.x||0!==n.positionImpulse.y){for(var s=0;s<n.parts.length;s++){var l=n.parts[s];i.translate(l.vertices,n.positionImpulse),a.update(l.bounds,l.vertices,n.velocity),l.position.x+=n.positionImpulse.x,l.position.y+=n.positionImpulse.y}n.positionPrev.x+=n.positionImpulse.x,n.positionPrev.y+=n.positionImpulse.y,r.dot(n.positionImpulse,n.velocity)<0?(n.positionImpulse.x=0,n.positionImpulse.y=0):(n.positionImpulse.x*=o._positionWarming,n.positionImpulse.y*=o._positionWarming)}}},o.preSolveVelocity=function(e){var t,n,o,i,s,a,l,c,d,u,p,f,m,v,y=r._temp[0],g=r._temp[1];for(t=0;t<e.length;t++)if(o=e[t],o.isActive&&!o.isSensor)for(i=o.activeContacts,s=o.collision,a=s.parentA,l=s.parentB,c=s.normal,d=s.tangent,n=0;n<i.length;n++)u=i[n],p=u.vertex,f=u.normalImpulse,m=u.tangentImpulse,0===f&&0===m||(y.x=c.x*f+d.x*m,y.y=c.y*f+d.y*m,a.isStatic||a.isSleeping||(v=r.sub(p,a.position,g),a.positionPrev.x+=y.x*a.inverseMass,a.positionPrev.y+=y.y*a.inverseMass,
a.anglePrev+=r.cross(v,y)*a.inverseInertia),l.isStatic||l.isSleeping||(v=r.sub(p,l.position,g),l.positionPrev.x-=y.x*l.inverseMass,l.positionPrev.y-=y.y*l.inverseMass,l.anglePrev-=r.cross(v,y)*l.inverseInertia))},o.solveVelocity=function(e,t){for(var n=t*t,i=r._temp[0],a=r._temp[1],l=r._temp[2],c=r._temp[3],d=r._temp[4],u=r._temp[5],p=0;p<e.length;p++){var f=e[p];if(f.isActive&&!f.isSensor){var m=f.collision,v=m.parentA,y=m.parentB,g=m.normal,x=m.tangent,h=f.activeContacts,b=1/h.length;v.velocity.x=v.position.x-v.positionPrev.x,v.velocity.y=v.position.y-v.positionPrev.y,y.velocity.x=y.position.x-y.positionPrev.x,y.velocity.y=y.position.y-y.positionPrev.y,v.angularVelocity=v.angle-v.anglePrev,y.angularVelocity=y.angle-y.anglePrev;for(var w=0;w<h.length;w++){
var S=h[w],C=S.vertex,A=r.sub(C,v.position,a),P=r.sub(C,y.position,l),B=r.add(v.velocity,r.mult(r.perp(A),v.angularVelocity),c),M=r.add(y.velocity,r.mult(r.perp(P),y.angularVelocity),d),k=r.sub(B,M,u),I=r.dot(g,k),_=r.dot(x,k),T=Math.abs(_),R=s.sign(_),V=(1+f.restitution)*I,E=s.clamp(f.separation+I,0,1)*o._frictionNormalMultiplier,L=_,F=1/0;T>f.friction*f.frictionStatic*E*n&&(F=T,L=s.clamp(f.friction*R*n,-F,F));var O=r.cross(A,g),q=r.cross(P,g),W=b/(v.inverseMass+y.inverseMass+v.inverseInertia*O*O+y.inverseInertia*q*q);if(V*=W,L*=W,I<0&&I*I>o._restingThresh*n)S.normalImpulse=0;else{var D=S.normalImpulse;S.normalImpulse=Math.min(S.normalImpulse+V,0),V=S.normalImpulse-D}if(_*_>o._restingThreshTangent*n)S.tangentImpulse=0;else{var N=S.tangentImpulse;S.tangentImpulse=s.clamp(S.tangentImpulse+L,-F,F),L=S.tangentImpulse-N}i.x=g.x*V+x.x*L,i.y=g.y*V+x.y*L,v.isStatic||v.isSleeping||(v.positionPrev.x+=i.x*v.inverseMass,v.positionPrev.y+=i.y*v.inverseMass,
v.anglePrev+=r.cross(A,i)*v.inverseInertia),y.isStatic||y.isSleeping||(y.positionPrev.x-=i.x*y.inverseMass,y.positionPrev.y-=i.y*y.inverseMass,y.anglePrev-=r.cross(P,i)*y.inverseInertia)}}}}}()},{"../core/Common":14,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],11:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector");!function(){o.collides=function(e,t,n){var s,a,l,c,d=!1;if(n){var u=e.parent,p=t.parent,f=u.speed*u.speed+u.angularSpeed*u.angularSpeed+p.speed*p.speed+p.angularSpeed*p.angularSpeed;d=n&&n.collided&&f<.2,c=n}else c={collided:!1,bodyA:e,bodyB:t};if(n&&d){var m=c.axisBody,v=m===e?t:e,y=[m.axes[n.axisNumber]];if(l=o._overlapAxes(m.vertices,v.vertices,y),c.reused=!0,l.overlap<=0)return c.collided=!1,c}else{if(s=o._overlapAxes(e.vertices,t.vertices,e.axes),s.overlap<=0)return c.collided=!1,c;if(a=o._overlapAxes(t.vertices,e.vertices,t.axes),a.overlap<=0)return c.collided=!1,c;s.overlap<a.overlap?(l=s,
c.axisBody=e):(l=a,c.axisBody=t),c.axisNumber=l.axisNumber}c.bodyA=e.id<t.id?e:t,c.bodyB=e.id<t.id?t:e,c.collided=!0,c.depth=l.overlap,c.parentA=c.bodyA.parent,c.parentB=c.bodyB.parent,e=c.bodyA,t=c.bodyB,r.dot(l.axis,r.sub(t.position,e.position))<0?c.normal={x:l.axis.x,y:l.axis.y}:c.normal={x:-l.axis.x,y:-l.axis.y},c.tangent=r.perp(c.normal),c.penetration=c.penetration||{},c.penetration.x=c.normal.x*c.depth,c.penetration.y=c.normal.y*c.depth;var g=o._findSupports(e,t,c.normal),x=[];if(i.contains(e.vertices,g[0])&&x.push(g[0]),i.contains(e.vertices,g[1])&&x.push(g[1]),x.length<2){var h=o._findSupports(t,e,r.neg(c.normal));i.contains(t.vertices,h[0])&&x.push(h[0]),x.length<2&&i.contains(t.vertices,h[1])&&x.push(h[1])}return x.length<1&&(x=[g[0]]),c.supports=x,c},o._overlapAxes=function(e,t,n){for(var i,s,a=r._temp[0],l=r._temp[1],c={overlap:Number.MAX_VALUE},d=0;d<n.length;d++){if(s=n[d],o._projectToAxis(a,e,s),o._projectToAxis(l,t,s),
(i=Math.min(a.max-l.min,l.max-a.min))<=0)return c.overlap=i,c;i<c.overlap&&(c.overlap=i,c.axis=s,c.axisNumber=d)}return c},o._projectToAxis=function(e,t,n){for(var o=r.dot(t[0],n),i=o,s=1;s<t.length;s+=1){var a=r.dot(t[s],n);a>i?i=a:a<o&&(o=a)}e.min=o,e.max=i},o._findSupports=function(e,t,n){for(var o,i,s,a,l=Number.MAX_VALUE,c=r._temp[0],d=t.vertices,u=e.position,p=0;p<d.length;p++)i=d[p],c.x=i.x-u.x,c.y=i.y-u.y,(o=-r.dot(n,c))<l&&(l=o,s=i);return i=d[s.index-1>=0?s.index-1:d.length-1],c.x=i.x-u.x,c.y=i.y-u.y,l=-r.dot(n,c),a=i,i=d[(s.index+1)%d.length],c.x=i.x-u.x,c.y=i.y-u.y,o=-r.dot(n,c),o<l&&(a=i),[s,a]}}()},{"../geometry/Vector":28,"../geometry/Vertices":29}],12:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Sleeping"),a=e("../geometry/Bounds"),l=e("../geometry/Axes"),c=e("../core/Common");!function(){o._warming=.4,o._torqueDampen=1,o._minLength=1e-6,o.create=function(e){var t=e;t.bodyA&&!t.pointA&&(t.pointA={x:0,y:0}),
t.bodyB&&!t.pointB&&(t.pointB={x:0,y:0});var n=t.bodyA?r.add(t.bodyA.position,t.pointA):t.pointA,o=t.bodyB?r.add(t.bodyB.position,t.pointB):t.pointB,i=r.magnitude(r.sub(n,o));t.length=void 0!==t.length?t.length:i,t.id=t.id||c.nextId(),t.label=t.label||"Constraint",t.type="constraint",t.stiffness=t.stiffness||(t.length>0?1:.7),t.damping=t.damping||0,t.angularStiffness=t.angularStiffness||0,t.angleA=t.bodyA?t.bodyA.angle:t.angleA,t.angleB=t.bodyB?t.bodyB.angle:t.angleB,t.plugin={};var s={visible:!0,lineWidth:2,strokeStyle:"#ffffff",type:"line",anchors:!0};return 0===t.length&&t.stiffness>.1?(s.type="pin",s.anchors=!1):t.stiffness<.9&&(s.type="spring"),t.render=c.extend(s,t.render),t},o.preSolveAll=function(e){for(var t=0;t<e.length;t+=1){var n=e[t],o=n.constraintImpulse;n.isStatic||0===o.x&&0===o.y&&0===o.angle||(n.position.x+=o.x,n.position.y+=o.y,n.angle+=o.angle)}},o.solveAll=function(e,t){for(var n=0;n<e.length;n+=1){
var i=e[n],r=!i.bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic;(r||s)&&o.solve(e[n],t)}for(n=0;n<e.length;n+=1)i=e[n],r=!i.bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic,r||s||o.solve(e[n],t)},o.solve=function(e,t){var n=e.bodyA,i=e.bodyB,s=e.pointA,a=e.pointB;if(n||i){n&&!n.isStatic&&(r.rotate(s,n.angle-e.angleA,s),e.angleA=n.angle),i&&!i.isStatic&&(r.rotate(a,i.angle-e.angleB,a),e.angleB=i.angle);var l=s,c=a;if(n&&(l=r.add(n.position,s)),i&&(c=r.add(i.position,a)),l&&c){var d=r.sub(l,c),u=r.magnitude(d);u<o._minLength&&(u=o._minLength);var p,f,m,v,y,g=(u-e.length)/u,x=e.stiffness<1?e.stiffness*t:e.stiffness,h=r.mult(d,g*x),b=(n?n.inverseMass:0)+(i?i.inverseMass:0),w=(n?n.inverseInertia:0)+(i?i.inverseInertia:0),S=b+w;if(e.damping){var C=r.create();m=r.div(d,u),y=r.sub(i&&r.sub(i.position,i.positionPrev)||C,n&&r.sub(n.position,n.positionPrev)||C),v=r.dot(m,y)}n&&!n.isStatic&&(f=n.inverseMass/b,n.constraintImpulse.x-=h.x*f,
n.constraintImpulse.y-=h.y*f,n.position.x-=h.x*f,n.position.y-=h.y*f,e.damping&&(n.positionPrev.x-=e.damping*m.x*v*f,n.positionPrev.y-=e.damping*m.y*v*f),p=r.cross(s,h)/S*o._torqueDampen*n.inverseInertia*(1-e.angularStiffness),n.constraintImpulse.angle-=p,n.angle-=p),i&&!i.isStatic&&(f=i.inverseMass/b,i.constraintImpulse.x+=h.x*f,i.constraintImpulse.y+=h.y*f,i.position.x+=h.x*f,i.position.y+=h.y*f,e.damping&&(i.positionPrev.x+=e.damping*m.x*v*f,i.positionPrev.y+=e.damping*m.y*v*f),p=r.cross(a,h)/S*o._torqueDampen*i.inverseInertia*(1-e.angularStiffness),i.constraintImpulse.angle+=p,i.angle+=p)}}},o.postSolveAll=function(e){for(var t=0;t<e.length;t++){var n=e[t],c=n.constraintImpulse;if(!(n.isStatic||0===c.x&&0===c.y&&0===c.angle)){s.set(n,!1);for(var d=0;d<n.parts.length;d++){var u=n.parts[d];i.translate(u.vertices,c),d>0&&(u.position.x+=c.x,u.position.y+=c.y),0!==c.angle&&(i.rotate(u.vertices,c.angle,n.position),l.rotate(u.axes,c.angle),
d>0&&r.rotateAbout(u.position,c.angle,n.position,u.position)),a.update(u.bounds,u.vertices,n.velocity)}c.angle*=o._warming,c.x*=o._warming,c.y*=o._warming}}}}()},{"../core/Common":14,"../core/Sleeping":22,"../geometry/Axes":25,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],13:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../core/Sleeping"),s=e("../core/Mouse"),a=e("../core/Events"),l=e("../collision/Detector"),c=e("./Constraint"),d=e("../body/Composite"),u=e("../core/Common"),p=e("../geometry/Bounds");!function(){o.create=function(e,t){var n=(e?e.mouse:null)||(t?t.mouse:null);n||(e&&e.render&&e.render.canvas?n=s.create(e.render.canvas):t&&t.element?n=s.create(t.element):(n=s.create(),u.warn("MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected")));var i=c.create({label:"Mouse Constraint",pointA:n.position,pointB:{x:0,y:0},length:.01,stiffness:.1,angularStiffness:1,
render:{strokeStyle:"#90EE90",lineWidth:3}}),r={type:"mouseConstraint",mouse:n,element:null,body:null,constraint:i,collisionFilter:{category:1,mask:4294967295,group:0}},l=u.extend(r,t);return a.on(e,"beforeUpdate",function(){var t=d.allBodies(e.world);o.update(l,t),o._triggerEvents(l)}),l},o.update=function(e,t){var n=e.mouse,o=e.constraint,s=e.body;if(0===n.button){if(o.bodyB)r.set(o.bodyB,!1),o.pointA=n.position;else for(var c=0;c<t.length;c++)if(s=t[c],p.contains(s.bounds,n.position)&&l.canCollide(s.collisionFilter,e.collisionFilter))for(var d=s.parts.length>1?1:0;d<s.parts.length;d++){var u=s.parts[d];if(i.contains(u.vertices,n.position)){o.pointA=n.position,o.bodyB=e.body=s,o.pointB={x:n.position.x-s.position.x,y:n.position.y-s.position.y},o.angleB=s.angle,r.set(s,!1),a.trigger(e,"startdrag",{mouse:n,body:s});break}}}else o.bodyB=e.body=null,o.pointB=null,s&&a.trigger(e,"enddrag",{mouse:n,body:s})},o._triggerEvents=function(e){var t=e.mouse,n=t.sourceEvents
;n.mousemove&&a.trigger(e,"mousemove",{mouse:t}),n.mousedown&&a.trigger(e,"mousedown",{mouse:t}),n.mouseup&&a.trigger(e,"mouseup",{mouse:t}),s.clearSourceEvents(t)}}()},{"../body/Composite":2,"../collision/Detector":5,"../core/Common":14,"../core/Events":16,"../core/Mouse":19,"../core/Sleeping":22,"../geometry/Bounds":26,"../geometry/Vertices":29,"./Constraint":12}],14:[function(e,t,n){(function(n){var o={};t.exports=o,function(){o._nextId=0,o._seed=0,o._nowStartTime=+new Date,o.extend=function(e,t){var n,i;"boolean"==typeof t?(n=2,i=t):(n=1,i=!0);for(var r=n;r<arguments.length;r++){var s=arguments[r];if(s)for(var a in s)i&&s[a]&&s[a].constructor===Object?e[a]&&e[a].constructor!==Object?e[a]=s[a]:(e[a]=e[a]||{},o.extend(e[a],i,s[a])):e[a]=s[a]}return e},o.clone=function(e,t){return o.extend({},t,e)},o.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t},o.values=function(e){var t=[];if(Object.keys){
for(var n=Object.keys(e),o=0;o<n.length;o++)t.push(e[n[o]]);return t}for(var i in e)t.push(e[i]);return t},o.get=function(e,t,n,o){t=t.split(".").slice(n,o);for(var i=0;i<t.length;i+=1)e=e[t[i]];return e},o.set=function(e,t,n,i,r){var s=t.split(".").slice(i,r);return o.get(e,t,0,-1)[s[s.length-1]]=n,n},o.shuffle=function(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(o.random()*(t+1)),i=e[t];e[t]=e[n],e[n]=i}return e},o.choose=function(e){return e[Math.floor(o.random()*e.length)]},o.isElement=function(e){return"undefined"!=typeof HTMLElement?e instanceof HTMLElement:!!(e&&e.nodeType&&e.nodeName)},o.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o.isFunction=function(e){return"function"==typeof e},o.isPlainObject=function(e){return"object"==typeof e&&e.constructor===Object},o.isString=function(e){return"[object String]"===toString.call(e)},o.clamp=function(e,t,n){return e<t?t:e>n?n:e},o.sign=function(e){return e<0?-1:1},o.now=function(){
if(window.performance){if(window.performance.now)return window.performance.now();if(window.performance.webkitNow)return window.performance.webkitNow()}return new Date-o._nowStartTime},o.random=function(e,n){return e=void 0!==e?e:0,n=void 0!==n?n:1,e+t()*(n-e)};var t=function(){return o._seed=(9301*o._seed+49297)%233280,o._seed/233280};o.colorToNumber=function(e){return e=e.replace("#",""),3==e.length&&(e=e.charAt(0)+e.charAt(0)+e.charAt(1)+e.charAt(1)+e.charAt(2)+e.charAt(2)),parseInt(e,16)},o.logLevel=1,o.log=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.log.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.info=function(){console&&o.logLevel>0&&o.logLevel<=2&&console.info.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warn=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.warn.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.nextId=function(){return o._nextId++},
o.indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},o.map=function(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o+=1)n.push(t(e[o]));return n},o.topologicalSort=function(e){var t=[],n=[],i=[];for(var r in e)n[r]||i[r]||o._topologicalSort(r,n,i,e,t);return t},o._topologicalSort=function(e,t,n,i,r){var s=i[e]||[];n[e]=!0;for(var a=0;a<s.length;a+=1){var l=s[a];n[l]||(t[l]||o._topologicalSort(l,t,n,i,r))}n[e]=!1,t[e]=!0,r.push(e)},o.chain=function(){for(var e=[],t=0;t<arguments.length;t+=1){var n=arguments[t];n._chained?e.push.apply(e,n._chained):e.push(n)}var o=function(){for(var t,n=new Array(arguments.length),o=0,i=arguments.length;o<i;o++)n[o]=arguments[o];for(o=0;o<e.length;o+=1){var r=e[o].apply(t,n);void 0!==r&&(t=r)}return t};return o._chained=e,o},o.chainPathBefore=function(e,t,n){return o.set(e,t,o.chain(n,o.get(e,t)))},o.chainPathAfter=function(e,t,n){return o.set(e,t,o.chain(o.get(e,t),n))},
o._requireGlobal=function(t,o){return("undefined"!=typeof window?window[t]:void 0!==n?n[t]:null)||e(o)}}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,t,n){var o={};t.exports=o;var i=e("../body/World"),r=e("./Sleeping"),s=e("../collision/Resolver"),a=e("../render/Render"),l=e("../collision/Pairs"),c=(e("./Metrics"),e("../collision/Grid")),d=e("./Events"),u=e("../body/Composite"),p=e("../constraint/Constraint"),f=e("./Common"),m=e("../body/Body");!function(){o.create=function(e,t){t=f.isElement(e)?t:e,e=f.isElement(e)?e:null,t=t||{},(e||t.render)&&f.warn("Engine.create: engine.render is deprecated (see docs)");var n={positionIterations:6,velocityIterations:4,constraintIterations:2,enableSleeping:!1,events:[],plugin:{},timing:{timestamp:0,timeScale:1},broadphase:{controller:c}},o=f.extend(n,t);if(e||o.render){var r={element:e,controller:a};o.render=f.extend(r,o.render)}
return o.render&&o.render.controller&&(o.render=o.render.controller.create(o.render)),o.render&&(o.render.engine=o),o.world=t.world||i.create(o.world),o.pairs=l.create(),o.broadphase=o.broadphase.controller.create(o.broadphase),o.metrics=o.metrics||{extended:!1},o},o.update=function(e,t,n){t=t||1e3/60,n=n||1;var i,a=e.world,c=e.timing,f=e.broadphase,m=[];c.timestamp+=t*c.timeScale;var v={timestamp:c.timestamp};d.trigger(e,"beforeUpdate",v);var y=u.allBodies(a),g=u.allConstraints(a);for(e.enableSleeping&&r.update(y,c.timeScale),o._bodiesApplyGravity(y,a.gravity),o._bodiesUpdate(y,t,c.timeScale,n,a.bounds),p.preSolveAll(y),i=0;i<e.constraintIterations;i++)p.solveAll(g,c.timeScale);p.postSolveAll(y),f.controller?(a.isModified&&f.controller.clear(f),f.controller.update(f,y,e,a.isModified),m=f.pairsList):m=y,a.isModified&&u.setModified(a,!1,!1,!0);var x=f.detector(m,e),h=e.pairs,b=c.timestamp;for(l.update(h,x,b),l.removeOld(h,b),e.enableSleeping&&r.afterCollisions(h.list,c.timeScale),
h.collisionStart.length>0&&d.trigger(e,"collisionStart",{pairs:h.collisionStart}),s.preSolvePosition(h.list),i=0;i<e.positionIterations;i++)s.solvePosition(h.list,c.timeScale);for(s.postSolvePosition(y),p.preSolveAll(y),i=0;i<e.constraintIterations;i++)p.solveAll(g,c.timeScale);for(p.postSolveAll(y),s.preSolveVelocity(h.list),i=0;i<e.velocityIterations;i++)s.solveVelocity(h.list,c.timeScale);return h.collisionActive.length>0&&d.trigger(e,"collisionActive",{pairs:h.collisionActive}),h.collisionEnd.length>0&&d.trigger(e,"collisionEnd",{pairs:h.collisionEnd}),o._bodiesClearForces(y),d.trigger(e,"afterUpdate",v),e},o.merge=function(e,t){if(f.extend(e,t),t.world){e.world=t.world,o.clear(e);for(var n=u.allBodies(e.world),i=0;i<n.length;i++){var s=n[i];r.set(s,!1),s.id=f.nextId()}}},o.clear=function(e){var t=e.world;l.clear(e.pairs);var n=e.broadphase;if(n.controller){var o=u.allBodies(t);n.controller.clear(n),n.controller.update(n,o,e,!0)}},o._bodiesClearForces=function(e){
for(var t=0;t<e.length;t++){var n=e[t];n.force.x=0,n.force.y=0,n.torque=0}},o._bodiesApplyGravity=function(e,t){var n=void 0!==t.scale?t.scale:.001;if((0!==t.x||0!==t.y)&&0!==n)for(var o=0;o<e.length;o++){var i=e[o];i.isStatic||i.isSleeping||(i.force.y+=i.mass*t.y*n,i.force.x+=i.mass*t.x*n)}},o._bodiesUpdate=function(e,t,n,o,i){for(var r=0;r<e.length;r++){var s=e[r];s.isStatic||s.isSleeping||m.update(s,t,n,o)}}}()},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Grid":6,"../collision/Pairs":8,"../collision/Resolver":10,"../constraint/Constraint":12,"../render/Render":31,"./Common":14,"./Events":16,"./Metrics":18,"./Sleeping":22}],16:[function(e,t,n){var o={};t.exports=o;var i=e("./Common");!function(){o.on=function(e,t,n){for(var o,i=t.split(" "),r=0;r<i.length;r++)o=i[r],e.events=e.events||{},e.events[o]=e.events[o]||[],e.events[o].push(n);return n},o.off=function(e,t,n){if(!t)return void(e.events={});"function"==typeof t&&(n=t,t=i.keys(e.events).join(" "))
;for(var o=t.split(" "),r=0;r<o.length;r++){var s=e.events[o[r]],a=[];if(n&&s)for(var l=0;l<s.length;l++)s[l]!==n&&a.push(s[l]);e.events[o[r]]=a}},o.trigger=function(e,t,n){var o,r,s,a;if(e.events){n||(n={}),o=t.split(" ");for(var l=0;l<o.length;l++)if(r=o[l],s=e.events[r]){a=i.clone(n,!1),a.name=r,a.source=e;for(var c=0;c<s.length;c++)s[c].apply(e,[a])}}}}()},{"./Common":14}],17:[function(e,t,n){var o={};t.exports=o;var i=e("./Plugin"),r=e("./Common");!function(){o.name="matter-js",o.version="0.14.2",o.uses=[],o.used=[],o.use=function(){i.use(o,Array.prototype.slice.call(arguments))},o.before=function(e,t){return e=e.replace(/^Matter./,""),r.chainPathBefore(o,e,t)},o.after=function(e,t){return e=e.replace(/^Matter./,""),r.chainPathAfter(o,e,t)}}()},{"./Common":14,"./Plugin":20}],18:[function(e,t,n){},{"../body/Composite":2,"./Common":14}],19:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Common");!function(){o.create=function(e){var t={}
;return e||i.log("Mouse.create: element was undefined, defaulting to document.body","warn"),t.element=e||document.body,t.absolute={x:0,y:0},t.position={x:0,y:0},t.mousedownPosition={x:0,y:0},t.mouseupPosition={x:0,y:0},t.offset={x:0,y:0},t.scale={x:1,y:1},t.wheelDelta=0,t.button=-1,t.pixelRatio=t.element.getAttribute("data-pixel-ratio")||1,t.sourceEvents={mousemove:null,mousedown:null,mouseup:null,mousewheel:null},t.mousemove=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches&&(t.button=0,e.preventDefault()),t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.sourceEvents.mousemove=e},t.mousedown=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches?(t.button=0,e.preventDefault()):t.button=e.button,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,
t.mousedownPosition.x=t.position.x,t.mousedownPosition.y=t.position.y,t.sourceEvents.mousedown=e},t.mouseup=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches&&e.preventDefault(),t.button=-1,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.mouseupPosition.x=t.position.x,t.mouseupPosition.y=t.position.y,t.sourceEvents.mouseup=e},t.mousewheel=function(e){t.wheelDelta=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),e.preventDefault()},o.setElement(t,t.element),t},o.setElement=function(e,t){e.element=t,t.addEventListener("mousemove",e.mousemove),t.addEventListener("mousedown",e.mousedown),t.addEventListener("mouseup",e.mouseup),t.addEventListener("mousewheel",e.mousewheel),t.addEventListener("DOMMouseScroll",e.mousewheel),t.addEventListener("touchmove",e.mousemove),t.addEventListener("touchstart",e.mousedown),t.addEventListener("touchend",e.mouseup)},
o.clearSourceEvents=function(e){e.sourceEvents.mousemove=null,e.sourceEvents.mousedown=null,e.sourceEvents.mouseup=null,e.sourceEvents.mousewheel=null,e.wheelDelta=0},o.setOffset=function(e,t){e.offset.x=t.x,e.offset.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o.setScale=function(e,t){e.scale.x=t.x,e.scale.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o._getRelativeMousePosition=function(e,t,n){var o,i,r=t.getBoundingClientRect(),s=document.documentElement||document.body.parentNode||document.body,a=void 0!==window.pageXOffset?window.pageXOffset:s.scrollLeft,l=void 0!==window.pageYOffset?window.pageYOffset:s.scrollTop,c=e.changedTouches;return c?(o=c[0].pageX-r.left-a,i=c[0].pageY-r.top-l):(o=e.pageX-r.left-a,i=e.pageY-r.top-l),{x:o/(t.clientWidth/(t.width||t.clientWidth)*n),y:i/(t.clientHeight/(t.height||t.clientHeight)*n)}}}()},{"../core/Common":14}],20:[function(e,t,n){
var o={};t.exports=o;var i=e("./Common");!function(){o._registry={},o.register=function(e){if(o.isPlugin(e)||i.warn("Plugin.register:",o.toString(e),"does not implement all required fields."),e.name in o._registry){var t=o._registry[e.name],n=o.versionParse(e.version).number,r=o.versionParse(t.version).number;n>r?(i.warn("Plugin.register:",o.toString(t),"was upgraded to",o.toString(e)),o._registry[e.name]=e):n<r?i.warn("Plugin.register:",o.toString(t),"can not be downgraded to",o.toString(e)):e!==t&&i.warn("Plugin.register:",o.toString(e),"is already registered to different plugin object")}else o._registry[e.name]=e;return e},o.resolve=function(e){return o._registry[o.dependencyParse(e).name]},o.toString=function(e){return"string"==typeof e?e:(e.name||"anonymous")+"@"+(e.version||e.range||"0.0.0")},o.isPlugin=function(e){return e&&e.name&&e.version&&e.install},o.isUsed=function(e,t){return e.used.indexOf(t)>-1},o.isFor=function(e,t){var n=e.for&&o.dependencyParse(e.for)
;return!e.for||t.name===n.name&&o.versionSatisfies(t.version,n.range)},o.use=function(e,t){if(e.uses=(e.uses||[]).concat(t||[]),0===e.uses.length)return void i.warn("Plugin.use:",o.toString(e),"does not specify any dependencies to install.");for(var n=o.dependencies(e),r=i.topologicalSort(n),s=[],a=0;a<r.length;a+=1)if(r[a]!==e.name){var l=o.resolve(r[a]);l?o.isUsed(e,l.name)||(o.isFor(l,e)||(i.warn("Plugin.use:",o.toString(l),"is for",l.for,"but installed on",o.toString(e)+"."),l._warned=!0),l.install?l.install(e):(i.warn("Plugin.use:",o.toString(l),"does not specify an install function."),l._warned=!0),l._warned?(s.push("🔶 "+o.toString(l)),delete l._warned):s.push("✅ "+o.toString(l)),e.used.push(l.name)):s.push("❌ "+r[a])}s.length>0&&i.info(s.join(" "))},o.dependencies=function(e,t){var n=o.dependencyParse(e),r=n.name;if(t=t||{},!(r in t)){e=o.resolve(e)||e,t[r]=i.map(e.uses||[],function(t){o.isPlugin(t)&&o.register(t);var r=o.dependencyParse(t),s=o.resolve(t)
;return s&&!o.versionSatisfies(s.version,r.range)?(i.warn("Plugin.dependencies:",o.toString(s),"does not satisfy",o.toString(r),"used by",o.toString(n)+"."),s._warned=!0,e._warned=!0):s||(i.warn("Plugin.dependencies:",o.toString(t),"used by",o.toString(n),"could not be resolved."),e._warned=!0),r.name});for(var s=0;s<t[r].length;s+=1)o.dependencies(t[r][s],t);return t}},o.dependencyParse=function(e){if(i.isString(e)){return/^[\w-]+(@(\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?))?$/.test(e)||i.warn("Plugin.dependencyParse:",e,"is not a valid dependency string."),{name:e.split("@")[0],range:e.split("@")[1]||"*"}}return{name:e.name,range:e.range||e.version}},o.versionParse=function(e){/^\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?$/.test(e)||i.warn("Plugin.versionParse:",e,"is not a valid version or range.");var t=e.split("-");e=t[0];var n=isNaN(Number(e[0])),o=n?e.substr(1):e,r=i.map(o.split("."),function(e){return Number(e)});return{isRange:n,version:o,range:e,operator:n?e[0]:"",parts:r,
prerelease:t[1],number:1e8*r[0]+1e4*r[1]+r[2]}},o.versionSatisfies=function(e,t){t=t||"*";var n=o.versionParse(t),i=n.parts,r=o.versionParse(e),s=r.parts;if(n.isRange){if("*"===n.operator||"*"===e)return!0;if("~"===n.operator)return s[0]===i[0]&&s[1]===i[1]&&s[2]>=i[2];if("^"===n.operator)return i[0]>0?s[0]===i[0]&&r.number>=n.number:i[1]>0?s[1]===i[1]&&s[2]>=i[2]:s[2]===i[2]}return e===t||"*"===e}}()},{"./Common":14}],21:[function(e,t,n){var o={};t.exports=o;var i=e("./Events"),r=e("./Engine"),s=e("./Common");!function(){var e,t;if("undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),!e){var n;e=function(e){n=setTimeout(function(){e(s.now())},1e3/60)},t=function(){clearTimeout(n)}}o.create=function(e){var t={fps:60,correction:1,deltaSampleSize:60,
counterTimestamp:0,frameCounter:0,deltaHistory:[],timePrev:null,timeScalePrev:1,frameRequestId:null,isFixed:!1,enabled:!0},n=s.extend(t,e);return n.delta=n.delta||1e3/n.fps,n.deltaMin=n.deltaMin||1e3/n.fps,n.deltaMax=n.deltaMax||1e3/(.5*n.fps),n.fps=1e3/n.delta,n},o.run=function(t,n){return void 0!==t.positionIterations&&(n=t,t=o.create()),function i(r){t.frameRequestId=e(i),r&&t.enabled&&o.tick(t,n,r)}(),t},o.tick=function(e,t,n){var o,s=t.timing,a=1,l={timestamp:s.timestamp};i.trigger(e,"beforeTick",l),i.trigger(t,"beforeTick",l),e.isFixed?o=e.delta:(o=n-e.timePrev||e.delta,e.timePrev=n,e.deltaHistory.push(o),e.deltaHistory=e.deltaHistory.slice(-e.deltaSampleSize),o=Math.min.apply(null,e.deltaHistory),o=o<e.deltaMin?e.deltaMin:o,o=o>e.deltaMax?e.deltaMax:o,a=o/e.delta,e.delta=o),0!==e.timeScalePrev&&(a*=s.timeScale/e.timeScalePrev),0===s.timeScale&&(a=0),e.timeScalePrev=s.timeScale,e.correction=a,e.frameCounter+=1,
n-e.counterTimestamp>=1e3&&(e.fps=e.frameCounter*((n-e.counterTimestamp)/1e3),e.counterTimestamp=n,e.frameCounter=0),i.trigger(e,"tick",l),i.trigger(t,"tick",l),t.world.isModified&&t.render&&t.render.controller&&t.render.controller.clear&&t.render.controller.clear(t.render),i.trigger(e,"beforeUpdate",l),r.update(t,o,a),i.trigger(e,"afterUpdate",l),t.render&&t.render.controller&&(i.trigger(e,"beforeRender",l),i.trigger(t,"beforeRender",l),t.render.controller.world(t.render),i.trigger(e,"afterRender",l),i.trigger(t,"afterRender",l)),i.trigger(e,"afterTick",l),i.trigger(t,"afterTick",l)},o.stop=function(e){t(e.frameRequestId)},o.start=function(e,t){o.run(e,t)}}()},{"./Common":14,"./Engine":15,"./Events":16}],22:[function(e,t,n){var o={};t.exports=o;var i=e("./Events");!function(){o._motionWakeThreshold=.18,o._motionSleepThreshold=.08,o._minBias=.9,o.update=function(e,t){for(var n=t*t*t,i=0;i<e.length;i++){var r=e[i],s=r.speed*r.speed+r.angularSpeed*r.angularSpeed
;if(0===r.force.x&&0===r.force.y){var a=Math.min(r.motion,s),l=Math.max(r.motion,s);r.motion=o._minBias*a+(1-o._minBias)*l,r.sleepThreshold>0&&r.motion<o._motionSleepThreshold*n?(r.sleepCounter+=1,r.sleepCounter>=r.sleepThreshold&&o.set(r,!0)):r.sleepCounter>0&&(r.sleepCounter-=1)}else o.set(r,!1)}},o.afterCollisions=function(e,t){for(var n=t*t*t,i=0;i<e.length;i++){var r=e[i];if(r.isActive){var s=r.collision,a=s.bodyA.parent,l=s.bodyB.parent;if(!(a.isSleeping&&l.isSleeping||a.isStatic||l.isStatic)&&(a.isSleeping||l.isSleeping)){var c=a.isSleeping&&!a.isStatic?a:l,d=c===a?l:a;!c.isStatic&&d.motion>o._motionWakeThreshold*n&&o.set(c,!1)}}}},o.set=function(e,t){var n=e.isSleeping;t?(e.isSleeping=!0,e.sleepCounter=e.sleepThreshold,e.positionImpulse.x=0,e.positionImpulse.y=0,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.anglePrev=e.angle,e.speed=0,e.angularSpeed=0,e.motion=0,n||i.trigger(e,"sleepStart")):(e.isSleeping=!1,e.sleepCounter=0,n&&i.trigger(e,"sleepEnd"))}}()},{
"./Events":16}],23:[function(e,t,n){var o={};t.exports=o;var i,r=e("../geometry/Vertices"),s=e("../core/Common"),a=e("../body/Body"),l=e("../geometry/Bounds"),c=e("../geometry/Vector");!function(){o.rectangle=function(e,t,n,o,i){i=i||{};var l={label:"Rectangle Body",position:{x:e,y:t},vertices:r.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};if(i.chamfer){var c=i.chamfer;l.vertices=r.chamfer(l.vertices,c.radius,c.quality,c.qualityMin,c.qualityMax),delete i.chamfer}return a.create(s.extend({},l,i))},o.trapezoid=function(e,t,n,o,i,l){l=l||{},i*=.5;var c,d=(1-2*i)*n,u=n*i,p=u+d,f=p+u;c=i<.5?"L 0 0 L "+u+" "+-o+" L "+p+" "+-o+" L "+f+" 0":"L 0 0 L "+p+" "+-o+" L "+f+" 0";var m={label:"Trapezoid Body",position:{x:e,y:t},vertices:r.fromPath(c)};if(l.chamfer){var v=l.chamfer;m.vertices=r.chamfer(m.vertices,v.radius,v.quality,v.qualityMin,v.qualityMax),delete l.chamfer}return a.create(s.extend({},m,l))},o.circle=function(e,t,n,i,r){i=i||{};var a={label:"Circle Body",circleRadius:n};r=r||25
;var l=Math.ceil(Math.max(10,Math.min(r,n)));return l%2==1&&(l+=1),o.polygon(e,t,l,n,s.extend({},a,i))},o.polygon=function(e,t,n,i,l){if(l=l||{},n<3)return o.circle(e,t,i,l);for(var c=2*Math.PI/n,d="",u=.5*c,p=0;p<n;p+=1){var f=u+p*c,m=Math.cos(f)*i,v=Math.sin(f)*i;d+="L "+m.toFixed(3)+" "+v.toFixed(3)+" "}var y={label:"Polygon Body",position:{x:e,y:t},vertices:r.fromPath(d)};if(l.chamfer){var g=l.chamfer;y.vertices=r.chamfer(y.vertices,g.radius,g.quality,g.qualityMin,g.qualityMax),delete l.chamfer}return a.create(s.extend({},y,l))},o.fromVertices=function(e,t,n,o,d,u,p){i||(i=s._requireGlobal("decomp","poly-decomp"));var f,m,v,y,g,x,h,b,w;for(o=o||{},m=[],d=void 0!==d&&d,u=void 0!==u?u:.01,p=void 0!==p?p:10,i||s.warn("Bodies.fromVertices: poly-decomp.js required. Could not decompose vertices. Fallback to convex hull."),s.isArray(n[0])||(n=[n]),b=0;b<n.length;b+=1)if(y=n[b],(v=r.isConvex(y))||!i)y=v?r.clockwiseSort(y):r.hull(y),m.push({position:{x:e,y:t},vertices:y});else{
var S=y.map(function(e){return[e.x,e.y]});i.makeCCW(S),!1!==u&&i.removeCollinearPoints(S,u);var C=i.quickDecomp(S);for(g=0;g<C.length;g++){var A=C[g],P=A.map(function(e){return{x:e[0],y:e[1]}});p>0&&r.area(P)<p||m.push({position:r.centre(P),vertices:P})}}for(g=0;g<m.length;g++)m[g]=a.create(s.extend(m[g],o));if(d){for(g=0;g<m.length;g++){var B=m[g];for(x=g+1;x<m.length;x++){var M=m[x];if(l.overlaps(B.bounds,M.bounds)){var k=B.vertices,I=M.vertices;for(h=0;h<B.vertices.length;h++)for(w=0;w<M.vertices.length;w++){var _=c.magnitudeSquared(c.sub(k[(h+1)%k.length],I[w])),T=c.magnitudeSquared(c.sub(k[h],I[(w+1)%I.length]));_<5&&T<5&&(k[h].isInternal=!0,I[w].isInternal=!0)}}}}}return m.length>1?(f=a.create(s.extend({parts:m.slice(0)},o)),a.setPosition(f,{x:e,y:t}),f):m[0]}}()},{"../body/Body":1,"../core/Common":14,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],24:[function(e,t,n){var o={};t.exports=o
;var i=e("../body/Composite"),r=e("../constraint/Constraint"),s=e("../core/Common"),a=e("../body/Body"),l=e("./Bodies");!function(){o.stack=function(e,t,n,o,r,s,l){for(var c,d=i.create({label:"Stack"}),u=e,p=t,f=0,m=0;m<o;m++){for(var v=0,y=0;y<n;y++){var g=l(u,p,y,m,c,f);if(g){var x=g.bounds.max.y-g.bounds.min.y,h=g.bounds.max.x-g.bounds.min.x;x>v&&(v=x),a.translate(g,{x:.5*h,y:.5*x}),u=g.bounds.max.x+r,i.addBody(d,g),c=g,f+=1}else u+=r}p+=v+s,u=e}return d},o.chain=function(e,t,n,o,a,l){for(var c=e.bodies,d=1;d<c.length;d++){var u=c[d-1],p=c[d],f=u.bounds.max.y-u.bounds.min.y,m=u.bounds.max.x-u.bounds.min.x,v=p.bounds.max.y-p.bounds.min.y,y=p.bounds.max.x-p.bounds.min.x,g={bodyA:u,pointA:{x:m*t,y:f*n},bodyB:p,pointB:{x:y*o,y:v*a}},x=s.extend(g,l);i.addConstraint(e,r.create(x))}return e.label+=" Chain",e},o.mesh=function(e,t,n,o,a){var l,c,d,u,p,f=e.bodies;for(l=0;l<n;l++){for(c=1;c<t;c++)d=f[c-1+l*t],u=f[c+l*t],i.addConstraint(e,r.create(s.extend({bodyA:d,bodyB:u},a)))
;if(l>0)for(c=0;c<t;c++)d=f[c+(l-1)*t],u=f[c+l*t],i.addConstraint(e,r.create(s.extend({bodyA:d,bodyB:u},a))),o&&c>0&&(p=f[c-1+(l-1)*t],i.addConstraint(e,r.create(s.extend({bodyA:p,bodyB:u},a)))),o&&c<t-1&&(p=f[c+1+(l-1)*t],i.addConstraint(e,r.create(s.extend({bodyA:p,bodyB:u},a))))}return e.label+=" Mesh",e},o.pyramid=function(e,t,n,i,r,s,l){return o.stack(e,t,n,i,r,s,function(t,o,s,c,d,u){var p=Math.min(i,Math.ceil(n/2)),f=d?d.bounds.max.x-d.bounds.min.x:0;if(!(c>p)){c=p-c;var m=c,v=n-1-c;if(!(s<m||s>v)){1===u&&a.translate(d,{x:(s+(n%2==1?1:-1))*f,y:0});return l(e+(d?s*f:0)+s*r,o,s,c,d,u)}}})},o.newtonsCradle=function(e,t,n,o,s){for(var a=i.create({label:"Newtons Cradle"}),c=0;c<n;c++){var d=l.circle(e+c*(1.9*o),t+s,o,{inertia:1/0,restitution:1,friction:0,frictionAir:1e-4,slop:1}),u=r.create({pointA:{x:e+c*(1.9*o),y:t},bodyB:d});i.addBody(a,d),i.addConstraint(a,u)}return a},o.car=function(e,t,n,o,s){var c=a.nextGroup(!0),d=.5*-n+20,u=.5*n-20,p=i.create({label:"Car"
}),f=l.rectangle(e,t,n,o,{collisionFilter:{group:c},chamfer:{radius:.5*o},density:2e-4}),m=l.circle(e+d,t+0,s,{collisionFilter:{group:c},friction:.8}),v=l.circle(e+u,t+0,s,{collisionFilter:{group:c},friction:.8}),y=r.create({bodyB:f,pointB:{x:d,y:0},bodyA:m,stiffness:1,length:0}),g=r.create({bodyB:f,pointB:{x:u,y:0},bodyA:v,stiffness:1,length:0});return i.addBody(p,f),i.addBody(p,m),i.addBody(p,v),i.addConstraint(p,y),i.addConstraint(p,g),p},o.softBody=function(e,t,n,i,r,a,c,d,u,p){u=s.extend({inertia:1/0},u),p=s.extend({stiffness:.2,render:{type:"line",anchors:!1}},p);var f=o.stack(e,t,n,i,r,a,function(e,t){return l.circle(e,t,d,u)});return o.mesh(f,n,i,c,p),f.label="Soft Body",f}}()},{"../body/Body":1,"../body/Composite":2,"../constraint/Constraint":12,"../core/Common":14,"./Bodies":23}],25:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("../core/Common");!function(){o.fromVertices=function(e){for(var t={},n=0;n<e.length;n++){
var o=(n+1)%e.length,s=i.normalise({x:e[o].y-e[n].y,y:e[n].x-e[o].x}),a=0===s.y?1/0:s.x/s.y;a=a.toFixed(3).toString(),t[a]=s}return r.values(t)},o.rotate=function(e,t){if(0!==t)for(var n=Math.cos(t),o=Math.sin(t),i=0;i<e.length;i++){var r,s=e[i];r=s.x*n-s.y*o,s.y=s.x*o+s.y*n,s.x=r}}}()},{"../core/Common":14,"../geometry/Vector":28}],26:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e){var t={min:{x:0,y:0},max:{x:0,y:0}};return e&&o.update(t,e),t},o.update=function(e,t,n){e.min.x=1/0,e.max.x=-1/0,e.min.y=1/0,e.max.y=-1/0;for(var o=0;o<t.length;o++){var i=t[o];i.x>e.max.x&&(e.max.x=i.x),i.x<e.min.x&&(e.min.x=i.x),i.y>e.max.y&&(e.max.y=i.y),i.y<e.min.y&&(e.min.y=i.y)}n&&(n.x>0?e.max.x+=n.x:e.min.x+=n.x,n.y>0?e.max.y+=n.y:e.min.y+=n.y)},o.contains=function(e,t){return t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y},o.overlaps=function(e,t){return e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y},o.translate=function(e,t){e.min.x+=t.x,
e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},o.shift=function(e,t){var n=e.max.x-e.min.x,o=e.max.y-e.min.y;e.min.x=t.x,e.max.x=t.x+n,e.min.y=t.y,e.max.y=t.y+o}}()},{}],27:[function(e,t,n){var o={};t.exports=o;var i=(e("../geometry/Bounds"),e("../core/Common"));!function(){o.pathToVertices=function(e,t){"undefined"==typeof window||"SVGPathSeg"in window||i.warn("Svg.pathToVertices: SVGPathSeg not defined, a polyfill is required.");var n,r,s,a,l,c,d,u,p,f,m,v,y=[],g=0,x=0,h=0;t=t||15;var b=function(e,t,n){var o=n%2==1&&n>1;if(!p||e!=p.x||t!=p.y){p&&o?(m=p.x,v=p.y):(m=0,v=0);var i={x:m+e,y:v+t};!o&&p||(p=i),y.push(i),x=m+e,h=v+t}},w=function(e){var t=e.pathSegTypeAsLetter.toUpperCase();if("Z"!==t){switch(t){case"M":case"L":case"T":case"C":case"S":case"Q":x=e.x,h=e.y;break;case"H":x=e.x;break;case"V":h=e.y}b(x,h,e.pathSegType)}};for(o._svgPathToAbsolute(e),s=e.getTotalLength(),c=[],n=0;n<e.pathSegList.numberOfItems;n+=1)c.push(e.pathSegList.getItem(n));for(d=c.concat();g<s;){
if(f=e.getPathSegAtLength(g),(l=c[f])!=u){for(;d.length&&d[0]!=l;)w(d.shift());u=l}switch(l.pathSegTypeAsLetter.toUpperCase()){case"C":case"T":case"S":case"Q":case"A":a=e.getPointAtLength(g),b(a.x,a.y,0)}g+=t}for(n=0,r=d.length;n<r;++n)w(d[n]);return y},o._svgPathToAbsolute=function(e){for(var t,n,o,i,r,s,a=e.pathSegList,l=0,c=0,d=a.numberOfItems,u=0;u<d;++u){var p=a.getItem(u),f=p.pathSegTypeAsLetter;if(/[MLHVCSQTA]/.test(f))"x"in p&&(l=p.x),"y"in p&&(c=p.y);else switch("x1"in p&&(o=l+p.x1),"x2"in p&&(r=l+p.x2),"y1"in p&&(i=c+p.y1),"y2"in p&&(s=c+p.y2),"x"in p&&(l+=p.x),"y"in p&&(c+=p.y),f){case"m":a.replaceItem(e.createSVGPathSegMovetoAbs(l,c),u);break;case"l":a.replaceItem(e.createSVGPathSegLinetoAbs(l,c),u);break;case"h":a.replaceItem(e.createSVGPathSegLinetoHorizontalAbs(l),u);break;case"v":a.replaceItem(e.createSVGPathSegLinetoVerticalAbs(c),u);break;case"c":a.replaceItem(e.createSVGPathSegCurvetoCubicAbs(l,c,o,i,r,s),u);break;case"s":
a.replaceItem(e.createSVGPathSegCurvetoCubicSmoothAbs(l,c,r,s),u);break;case"q":a.replaceItem(e.createSVGPathSegCurvetoQuadraticAbs(l,c,o,i),u);break;case"t":a.replaceItem(e.createSVGPathSegCurvetoQuadraticSmoothAbs(l,c),u);break;case"a":a.replaceItem(e.createSVGPathSegArcAbs(l,c,p.r1,p.r2,p.angle,p.largeArcFlag,p.sweepFlag),u);break;case"z":case"Z":l=t,c=n}"M"!=f&&"m"!=f||(t=l,n=c)}}}()},{"../core/Common":14,"../geometry/Bounds":26}],28:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e,t){return{x:e||0,y:t||0}},o.clone=function(e){return{x:e.x,y:e.y}},o.magnitude=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},o.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},o.rotate=function(e,t,n){var o=Math.cos(t),i=Math.sin(t);n||(n={});var r=e.x*o-e.y*i;return n.y=e.x*i+e.y*o,n.x=r,n},o.rotateAbout=function(e,t,n,o){var i=Math.cos(t),r=Math.sin(t);o||(o={});var s=n.x+((e.x-n.x)*i-(e.y-n.y)*r);return o.y=n.y+((e.x-n.x)*r+(e.y-n.y)*i),o.x=s,o},o.normalise=function(e){
var t=o.magnitude(e);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},o.dot=function(e,t){return e.x*t.x+e.y*t.y},o.cross=function(e,t){return e.x*t.y-e.y*t.x},o.cross3=function(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)},o.add=function(e,t,n){return n||(n={}),n.x=e.x+t.x,n.y=e.y+t.y,n},o.sub=function(e,t,n){return n||(n={}),n.x=e.x-t.x,n.y=e.y-t.y,n},o.mult=function(e,t){return{x:e.x*t,y:e.y*t}},o.div=function(e,t){return{x:e.x/t,y:e.y/t}},o.perp=function(e,t){return t=!0===t?-1:1,{x:t*-e.y,y:t*e.x}},o.neg=function(e){return{x:-e.x,y:-e.y}},o.angle=function(e,t){return Math.atan2(t.y-e.y,t.x-e.x)},o._temp=[o.create(),o.create(),o.create(),o.create(),o.create(),o.create()]}()},{}],29:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("../core/Common");!function(){o.create=function(e,t){for(var n=[],o=0;o<e.length;o++){var i=e[o],r={x:i.x,y:i.y,index:o,body:t,isInternal:!1};n.push(r)}return n},o.fromPath=function(e,t){
var n=/L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/gi,i=[];return e.replace(n,function(e,t,n){i.push({x:parseFloat(t),y:parseFloat(n)})}),o.create(i,t)},o.centre=function(e){for(var t,n,r,s=o.area(e,!0),a={x:0,y:0},l=0;l<e.length;l++)r=(l+1)%e.length,t=i.cross(e[l],e[r]),n=i.mult(i.add(e[l],e[r]),t),a=i.add(a,n);return i.div(a,6*s)},o.mean=function(e){for(var t={x:0,y:0},n=0;n<e.length;n++)t.x+=e[n].x,t.y+=e[n].y;return i.div(t,e.length)},o.area=function(e,t){for(var n=0,o=e.length-1,i=0;i<e.length;i++)n+=(e[o].x-e[i].x)*(e[o].y+e[i].y),o=i;return t?n/2:Math.abs(n)/2},o.inertia=function(e,t){for(var n,o,r=0,s=0,a=e,l=0;l<a.length;l++)o=(l+1)%a.length,n=Math.abs(i.cross(a[o],a[l])),r+=n*(i.dot(a[o],a[o])+i.dot(a[o],a[l])+i.dot(a[l],a[l])),s+=n;return t/6*(r/s)},o.translate=function(e,t,n){var o;if(n)for(o=0;o<e.length;o++)e[o].x+=t.x*n,e[o].y+=t.y*n;else for(o=0;o<e.length;o++)e[o].x+=t.x,e[o].y+=t.y;return e},o.rotate=function(e,t,n){if(0!==t){
for(var o=Math.cos(t),i=Math.sin(t),r=0;r<e.length;r++){var s=e[r],a=s.x-n.x,l=s.y-n.y;s.x=n.x+(a*o-l*i),s.y=n.y+(a*i+l*o)}return e}},o.contains=function(e,t){for(var n=0;n<e.length;n++){var o=e[n],i=e[(n+1)%e.length];if((t.x-o.x)*(i.y-o.y)+(t.y-o.y)*(o.x-i.x)>0)return!1}return!0},o.scale=function(e,t,n,r){if(1===t&&1===n)return e;r=r||o.centre(e);for(var s,a,l=0;l<e.length;l++)s=e[l],a=i.sub(s,r),e[l].x=r.x+a.x*t,e[l].y=r.y+a.y*n;return e},o.chamfer=function(e,t,n,o,s){t="number"==typeof t?[t]:t||[8],n=void 0!==n?n:-1,o=o||2,s=s||14;for(var a=[],l=0;l<e.length;l++){var c=e[l-1>=0?l-1:e.length-1],d=e[l],u=e[(l+1)%e.length],p=t[l<t.length?l:t.length-1];if(0!==p){var f=i.normalise({x:d.y-c.y,y:c.x-d.x}),m=i.normalise({x:u.y-d.y,y:d.x-u.x}),v=Math.sqrt(2*Math.pow(p,2)),y=i.mult(r.clone(f),p),g=i.normalise(i.mult(i.add(f,m),.5)),x=i.sub(d,i.mult(g,v)),h=n;-1===n&&(h=1.75*Math.pow(p,.32)),h=r.clamp(h,o,s),h%2==1&&(h+=1)
;for(var b=Math.acos(i.dot(f,m)),w=b/h,S=0;S<h;S++)a.push(i.add(i.rotate(y,w*S),x))}else a.push(d)}return a},o.clockwiseSort=function(e){var t=o.mean(e);return e.sort(function(e,n){return i.angle(t,e)-i.angle(t,n)}),e},o.isConvex=function(e){var t,n,o,i,r=0,s=e.length;if(s<3)return null;for(t=0;t<s;t++)if(n=(t+1)%s,o=(t+2)%s,i=(e[n].x-e[t].x)*(e[o].y-e[n].y),i-=(e[n].y-e[t].y)*(e[o].x-e[n].x),i<0?r|=1:i>0&&(r|=2),3===r)return!1;return 0!==r||null},o.hull=function(e){var t,n,o=[],r=[];for(e=e.slice(0),e.sort(function(e,t){var n=e.x-t.x;return 0!==n?n:e.y-t.y}),n=0;n<e.length;n+=1){for(t=e[n];r.length>=2&&i.cross3(r[r.length-2],r[r.length-1],t)<=0;)r.pop();r.push(t)}for(n=e.length-1;n>=0;n-=1){for(t=e[n];o.length>=2&&i.cross3(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return o.pop(),r.pop(),o.concat(r)}}()},{"../core/Common":14,"../geometry/Vector":28}],30:[function(e,t,n){var o=t.exports=e("../core/Matter");o.Body=e("../body/Body"),o.Composite=e("../body/Composite"),
o.World=e("../body/World"),o.Contact=e("../collision/Contact"),o.Detector=e("../collision/Detector"),o.Grid=e("../collision/Grid"),o.Pairs=e("../collision/Pairs"),o.Pair=e("../collision/Pair"),o.Query=e("../collision/Query"),o.Resolver=e("../collision/Resolver"),o.SAT=e("../collision/SAT"),o.Constraint=e("../constraint/Constraint"),o.MouseConstraint=e("../constraint/MouseConstraint"),o.Common=e("../core/Common"),o.Engine=e("../core/Engine"),o.Events=e("../core/Events"),o.Mouse=e("../core/Mouse"),o.Runner=e("../core/Runner"),o.Sleeping=e("../core/Sleeping"),o.Plugin=e("../core/Plugin"),o.Bodies=e("../factory/Bodies"),o.Composites=e("../factory/Composites"),o.Axes=e("../geometry/Axes"),o.Bounds=e("../geometry/Bounds"),o.Svg=e("../geometry/Svg"),o.Vector=e("../geometry/Vector"),o.Vertices=e("../geometry/Vertices"),o.Render=e("../render/Render"),o.RenderPixi=e("../render/RenderPixi"),o.World.add=o.Composite.add,o.World.remove=o.Composite.remove,
o.World.addComposite=o.Composite.addComposite,o.World.addBody=o.Composite.addBody,o.World.addConstraint=o.Composite.addConstraint,o.World.clear=o.Composite.clear,o.Engine.run=o.Runner.run},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Contact":4,"../collision/Detector":5,"../collision/Grid":6,"../collision/Pair":7,"../collision/Pairs":8,"../collision/Query":9,"../collision/Resolver":10,"../collision/SAT":11,"../constraint/Constraint":12,"../constraint/MouseConstraint":13,"../core/Common":14,"../core/Engine":15,"../core/Events":16,"../core/Matter":17,"../core/Metrics":18,"../core/Mouse":19,"../core/Plugin":20,"../core/Runner":21,"../core/Sleeping":22,"../factory/Bodies":23,"../factory/Composites":24,"../geometry/Axes":25,"../geometry/Bounds":26,"../geometry/Svg":27,"../geometry/Vector":28,"../geometry/Vertices":29,"../render/Render":31,"../render/RenderPixi":32}],31:[function(e,t,n){var o={};t.exports=o
;var i=e("../core/Common"),r=e("../body/Composite"),s=e("../geometry/Bounds"),a=e("../core/Events"),l=e("../collision/Grid"),c=e("../geometry/Vector"),d=e("../core/Mouse");!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(function(){e(i.now())},1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o.create=function(e){var t={controller:o,engine:null,element:null,canvas:null,mouse:null,frameRequestId:null,options:{width:800,height:600,pixelRatio:1,background:"#18181d",wireframeBackground:"#0f0f13",hasBounds:!!e.bounds,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,showBroadphase:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showSeparations:!1,showAxes:!1,showPositions:!1,showAngleIndicator:!1,showIds:!1,showShadows:!1,
showVertexNumbers:!1,showConvexHulls:!1,showInternalEdges:!1,showMousePosition:!1}},r=i.extend(t,e);return r.canvas&&(r.canvas.width=r.options.width||r.canvas.width,r.canvas.height=r.options.height||r.canvas.height),r.mouse=e.mouse,r.engine=e.engine,r.canvas=r.canvas||n(r.options.width,r.options.height),r.context=r.canvas.getContext("2d"),r.textures={},r.bounds=r.bounds||{min:{x:0,y:0},max:{x:r.canvas.width,y:r.canvas.height}},1!==r.options.pixelRatio&&o.setPixelRatio(r,r.options.pixelRatio),i.isElement(r.element)?r.element.appendChild(r.canvas):r.canvas.parentNode||i.log("Render.create: options.element was undefined, render.canvas was created but not appended","warn"),r},o.run=function(t){!function n(i){t.frameRequestId=e(n),o.world(t)}()},o.stop=function(e){t(e.frameRequestId)},o.setPixelRatio=function(e,t){var n=e.options,o=e.canvas;"auto"===t&&(t=u(o)),n.pixelRatio=t,o.setAttribute("data-pixel-ratio",t),o.width=n.width*t,o.height=n.height*t,o.style.width=n.width+"px",
o.style.height=n.height+"px",e.context.scale(t,t)},o.lookAt=function(e,t,n,o){o=void 0===o||o,t=i.isArray(t)?t:[t],n=n||{x:0,y:0};for(var r={min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}},s=0;s<t.length;s+=1){var a=t[s],l=a.bounds?a.bounds.min:a.min||a.position||a,c=a.bounds?a.bounds.max:a.max||a.position||a;l&&c&&(l.x<r.min.x&&(r.min.x=l.x),c.x>r.max.x&&(r.max.x=c.x),l.y<r.min.y&&(r.min.y=l.y),c.y>r.max.y&&(r.max.y=c.y))}var u=r.max.x-r.min.x+2*n.x,p=r.max.y-r.min.y+2*n.y,f=e.canvas.height,m=e.canvas.width,v=m/f,y=u/p,g=1,x=1;y>v?x=y/v:g=v/y,e.options.hasBounds=!0,e.bounds.min.x=r.min.x,e.bounds.max.x=r.min.x+u*g,e.bounds.min.y=r.min.y,e.bounds.max.y=r.min.y+p*x,o&&(e.bounds.min.x+=.5*u-u*g*.5,e.bounds.max.x+=.5*u-u*g*.5,e.bounds.min.y+=.5*p-p*x*.5,e.bounds.max.y+=.5*p-p*x*.5),e.bounds.min.x-=n.x,e.bounds.max.x-=n.x,e.bounds.min.y-=n.y,e.bounds.max.y-=n.y,e.mouse&&(d.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height}),
d.setOffset(e.mouse,e.bounds.min))},o.startViewTransform=function(e){var t=e.bounds.max.x-e.bounds.min.x,n=e.bounds.max.y-e.bounds.min.y,o=t/e.options.width,i=n/e.options.height;e.context.scale(1/o,1/i),e.context.translate(-e.bounds.min.x,-e.bounds.min.y)},o.endViewTransform=function(e){e.context.setTransform(e.options.pixelRatio,0,0,e.options.pixelRatio,0,0)},o.world=function(e){var t,n=e.engine,i=n.world,u=e.canvas,p=e.context,m=e.options,v=r.allBodies(i),y=r.allConstraints(i),g=m.wireframes?m.wireframeBackground:m.background,x=[],h=[],b={timestamp:n.timing.timestamp};if(a.trigger(e,"beforeRender",b),e.currentBackground!==g&&f(e,g),p.globalCompositeOperation="source-in",p.fillStyle="transparent",p.fillRect(0,0,u.width,u.height),p.globalCompositeOperation="source-over",m.hasBounds){for(t=0;t<v.length;t++){var w=v[t];s.overlaps(w.bounds,e.bounds)&&x.push(w)}for(t=0;t<y.length;t++){var S=y[t],C=S.bodyA,A=S.bodyB,P=S.pointA,B=S.pointB;C&&(P=c.add(C.position,S.pointA)),
A&&(B=c.add(A.position,S.pointB)),P&&B&&((s.contains(e.bounds,P)||s.contains(e.bounds,B))&&h.push(S))}o.startViewTransform(e),e.mouse&&(d.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height}),d.setOffset(e.mouse,e.bounds.min))}else h=y,x=v;!m.wireframes||n.enableSleeping&&m.showSleeping?o.bodies(e,x,p):(m.showConvexHulls&&o.bodyConvexHulls(e,x,p),o.bodyWireframes(e,x,p)),m.showBounds&&o.bodyBounds(e,x,p),(m.showAxes||m.showAngleIndicator)&&o.bodyAxes(e,x,p),m.showPositions&&o.bodyPositions(e,x,p),m.showVelocity&&o.bodyVelocity(e,x,p),m.showIds&&o.bodyIds(e,x,p),m.showSeparations&&o.separations(e,n.pairs.list,p),m.showCollisions&&o.collisions(e,n.pairs.list,p),m.showVertexNumbers&&o.vertexNumbers(e,x,p),m.showMousePosition&&o.mousePosition(e,e.mouse,p),o.constraints(h,p),m.showBroadphase&&n.broadphase.controller===l&&o.grid(e,n.broadphase,p),m.showDebug&&o.debug(e,p),m.hasBounds&&o.endViewTransform(e),
a.trigger(e,"afterRender",b)},o.debug=function(e,t){var n=t,o=e.engine,i=o.world,s=o.metrics,a=e.options;r.allBodies(i);if(o.timing.timestamp-(e.debugTimestamp||0)>=500){var l="";s.timing&&(l+="fps: "+Math.round(s.timing.fps)+" "),e.debugString=l,e.debugTimestamp=o.timing.timestamp}if(e.debugString){n.font="12px Arial",a.wireframes?n.fillStyle="rgba(255,255,255,0.5)":n.fillStyle="rgba(0,0,0,0.5)";for(var c=e.debugString.split("\n"),d=0;d<c.length;d++)n.fillText(c[d],50,50+18*d)}},o.constraints=function(e,t){for(var n=t,o=0;o<e.length;o++){var r=e[o];if(r.render.visible&&r.pointA&&r.pointB){var s,a,l=r.bodyA,d=r.bodyB;if(s=l?c.add(l.position,r.pointA):r.pointA,"pin"===r.render.type)n.beginPath(),n.arc(s.x,s.y,3,0,2*Math.PI),n.closePath();else{if(a=d?c.add(d.position,r.pointB):r.pointB,n.beginPath(),n.moveTo(s.x,s.y),"spring"===r.render.type)for(var u,p=c.sub(a,s),f=c.perp(c.normalise(p)),m=Math.ceil(i.clamp(r.length/5,12,20)),v=1;v<m;v+=1)u=v%2==0?1:-1,
n.lineTo(s.x+p.x*(v/m)+f.x*u*4,s.y+p.y*(v/m)+f.y*u*4);n.lineTo(a.x,a.y)}r.render.lineWidth&&(n.lineWidth=r.render.lineWidth,n.strokeStyle=r.render.strokeStyle,n.stroke()),r.render.anchors&&(n.fillStyle=r.render.strokeStyle,n.beginPath(),n.arc(s.x,s.y,3,0,2*Math.PI),n.arc(a.x,a.y,3,0,2*Math.PI),n.closePath(),n.fill())}}},o.bodyShadows=function(e,t,n){for(var o=n,i=(e.engine,0);i<t.length;i++){var r=t[i];if(r.render.visible){if(r.circleRadius)o.beginPath(),o.arc(r.position.x,r.position.y,r.circleRadius,0,2*Math.PI),o.closePath();else{o.beginPath(),o.moveTo(r.vertices[0].x,r.vertices[0].y);for(var s=1;s<r.vertices.length;s++)o.lineTo(r.vertices[s].x,r.vertices[s].y);o.closePath()}var a=r.position.x-.5*e.options.width,l=r.position.y-.2*e.options.height,c=Math.abs(a)+Math.abs(l);o.shadowColor="rgba(0,0,0,0.15)",o.shadowOffsetX=.05*a,o.shadowOffsetY=.05*l,o.shadowBlur=1+12*Math.min(1,c/1e3),o.fill(),o.shadowColor=null,o.shadowOffsetX=null,o.shadowOffsetY=null,o.shadowBlur=null}}},
o.bodies=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options),c=l.showInternalEdges||!l.wireframes;for(r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(s=o.parts.length>1?1:0;s<o.parts.length;s++)if(i=o.parts[s],i.render.visible){if(l.showSleeping&&o.isSleeping?a.globalAlpha=.5*i.render.opacity:1!==i.render.opacity&&(a.globalAlpha=i.render.opacity),i.render.sprite&&i.render.sprite.texture&&!l.wireframes){var d=i.render.sprite,u=p(e,d.texture);a.translate(i.position.x,i.position.y),a.rotate(i.angle),a.drawImage(u,u.width*-d.xOffset*d.xScale,u.height*-d.yOffset*d.yScale,u.width*d.xScale,u.height*d.yScale),a.rotate(-i.angle),a.translate(-i.position.x,-i.position.y)}else{if(i.circleRadius)a.beginPath(),a.arc(i.position.x,i.position.y,i.circleRadius,0,2*Math.PI);else{a.beginPath(),a.moveTo(i.vertices[0].x,i.vertices[0].y);for(var f=1;f<i.vertices.length;f++)!i.vertices[f-1].isInternal||c?a.lineTo(i.vertices[f].x,i.vertices[f].y):a.moveTo(i.vertices[f].x,i.vertices[f].y),
i.vertices[f].isInternal&&!c&&a.moveTo(i.vertices[(f+1)%i.vertices.length].x,i.vertices[(f+1)%i.vertices.length].y);a.lineTo(i.vertices[0].x,i.vertices[0].y),a.closePath()}l.wireframes?(a.lineWidth=1,a.strokeStyle="#bbb",a.stroke()):(a.fillStyle=i.render.fillStyle,i.render.lineWidth&&(a.lineWidth=i.render.lineWidth,a.strokeStyle=i.render.strokeStyle,a.stroke()),a.fill())}a.globalAlpha=1}},o.bodyWireframes=function(e,t,n){var o,i,r,s,a,l=n,c=e.options.showInternalEdges;for(l.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(a=o.parts.length>1?1:0;a<o.parts.length;a++){for(i=o.parts[a],l.moveTo(i.vertices[0].x,i.vertices[0].y),s=1;s<i.vertices.length;s++)!i.vertices[s-1].isInternal||c?l.lineTo(i.vertices[s].x,i.vertices[s].y):l.moveTo(i.vertices[s].x,i.vertices[s].y),i.vertices[s].isInternal&&!c&&l.moveTo(i.vertices[(s+1)%i.vertices.length].x,i.vertices[(s+1)%i.vertices.length].y);l.lineTo(i.vertices[0].x,i.vertices[0].y)}l.lineWidth=1,l.strokeStyle="#bbb",l.stroke()},
o.bodyConvexHulls=function(e,t,n){var o,i,r,s=n;for(s.beginPath(),i=0;i<t.length;i++)if(o=t[i],o.render.visible&&1!==o.parts.length){for(s.moveTo(o.vertices[0].x,o.vertices[0].y),r=1;r<o.vertices.length;r++)s.lineTo(o.vertices[r].x,o.vertices[r].y);s.lineTo(o.vertices[0].x,o.vertices[0].y)}s.lineWidth=1,s.strokeStyle="rgba(255,255,255,0.2)",s.stroke()},o.vertexNumbers=function(e,t,n){var o,i,r,s=n;for(o=0;o<t.length;o++){var a=t[o].parts;for(r=a.length>1?1:0;r<a.length;r++){var l=a[r];for(i=0;i<l.vertices.length;i++)s.fillStyle="rgba(255,255,255,0.2)",s.fillText(o+"_"+i,l.position.x+.8*(l.vertices[i].x-l.position.x),l.position.y+.8*(l.vertices[i].y-l.position.y))}}},o.mousePosition=function(e,t,n){var o=n;o.fillStyle="rgba(255,255,255,0.8)",o.fillText(t.position.x+" "+t.position.y,t.position.x+5,t.position.y-5)},o.bodyBounds=function(e,t,n){var o=n,i=(e.engine,e.options);o.beginPath();for(var r=0;r<t.length;r++){
if(t[r].render.visible)for(var s=t[r].parts,a=s.length>1?1:0;a<s.length;a++){var l=s[a];o.rect(l.bounds.min.x,l.bounds.min.y,l.bounds.max.x-l.bounds.min.x,l.bounds.max.y-l.bounds.min.y)}}i.wireframes?o.strokeStyle="rgba(255,255,255,0.08)":o.strokeStyle="rgba(0,0,0,0.1)",o.lineWidth=1,o.stroke()},o.bodyAxes=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options);for(a.beginPath(),i=0;i<t.length;i++){var c=t[i],d=c.parts;if(c.render.visible)if(l.showAxes)for(r=d.length>1?1:0;r<d.length;r++)for(o=d[r],s=0;s<o.axes.length;s++){var u=o.axes[s];a.moveTo(o.position.x,o.position.y),a.lineTo(o.position.x+20*u.x,o.position.y+20*u.y)}else for(r=d.length>1?1:0;r<d.length;r++)for(o=d[r],s=0;s<o.axes.length;s++)a.moveTo(o.position.x,o.position.y),a.lineTo((o.vertices[0].x+o.vertices[o.vertices.length-1].x)/2,(o.vertices[0].y+o.vertices[o.vertices.length-1].y)/2)}l.wireframes?(a.strokeStyle="indianred",a.lineWidth=1):(a.strokeStyle="rgba(255, 255, 255, 0.4)",a.globalCompositeOperation="overlay",
a.lineWidth=2),a.stroke(),a.globalCompositeOperation="source-over"},o.bodyPositions=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options);for(a.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(s=0;s<o.parts.length;s++)i=o.parts[s],a.arc(i.position.x,i.position.y,3,0,2*Math.PI,!1),a.closePath();for(l.wireframes?a.fillStyle="indianred":a.fillStyle="rgba(0,0,0,0.5)",a.fill(),a.beginPath(),r=0;r<t.length;r++)o=t[r],o.render.visible&&(a.arc(o.positionPrev.x,o.positionPrev.y,2,0,2*Math.PI,!1),a.closePath());a.fillStyle="rgba(255,165,0,0.8)",a.fill()},o.bodyVelocity=function(e,t,n){var o=n;o.beginPath();for(var i=0;i<t.length;i++){var r=t[i];r.render.visible&&(o.moveTo(r.position.x,r.position.y),o.lineTo(r.position.x+2*(r.position.x-r.positionPrev.x),r.position.y+2*(r.position.y-r.positionPrev.y)))}o.lineWidth=3,o.strokeStyle="cornflowerblue",o.stroke()},o.bodyIds=function(e,t,n){var o,i,r=n;for(o=0;o<t.length;o++)if(t[o].render.visible){var s=t[o].parts
;for(i=s.length>1?1:0;i<s.length;i++){var a=s[i];r.font="12px Arial",r.fillStyle="rgba(255,255,255,0.5)",r.fillText(a.id,a.position.x+10,a.position.y-10)}}},o.collisions=function(e,t,n){var o,i,r,s,a=n,l=e.options;for(a.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.isActive)for(i=o.collision,s=0;s<o.activeContacts.length;s++){var c=o.activeContacts[s],d=c.vertex;a.rect(d.x-1.5,d.y-1.5,3.5,3.5)}for(l.wireframes?a.fillStyle="rgba(255,255,255,0.7)":a.fillStyle="orange",a.fill(),a.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.isActive&&(i=o.collision,o.activeContacts.length>0)){var u=o.activeContacts[0].vertex.x,p=o.activeContacts[0].vertex.y;2===o.activeContacts.length&&(u=(o.activeContacts[0].vertex.x+o.activeContacts[1].vertex.x)/2,p=(o.activeContacts[0].vertex.y+o.activeContacts[1].vertex.y)/2),i.bodyB===i.supports[0].body||!0===i.bodyA.isStatic?a.moveTo(u-8*i.normal.x,p-8*i.normal.y):a.moveTo(u+8*i.normal.x,p+8*i.normal.y),a.lineTo(u,p)}
l.wireframes?a.strokeStyle="rgba(255,165,0,0.7)":a.strokeStyle="orange",a.lineWidth=1,a.stroke()},o.separations=function(e,t,n){var o,i,r,s,a,l=n,c=e.options;for(l.beginPath(),a=0;a<t.length;a++)if(o=t[a],o.isActive){i=o.collision,r=i.bodyA,s=i.bodyB;var d=1;s.isStatic||r.isStatic||(d=.5),s.isStatic&&(d=0),l.moveTo(s.position.x,s.position.y),l.lineTo(s.position.x-i.penetration.x*d,s.position.y-i.penetration.y*d),d=1,s.isStatic||r.isStatic||(d=.5),r.isStatic&&(d=0),l.moveTo(r.position.x,r.position.y),l.lineTo(r.position.x+i.penetration.x*d,r.position.y+i.penetration.y*d)}c.wireframes?l.strokeStyle="rgba(255,165,0,0.5)":l.strokeStyle="orange",l.stroke()},o.grid=function(e,t,n){var o=n;e.options.wireframes?o.strokeStyle="rgba(255,180,0,0.1)":o.strokeStyle="rgba(255,180,0,0.5)",o.beginPath();for(var r=i.keys(t.buckets),s=0;s<r.length;s++){var a=r[s];if(!(t.buckets[a].length<2)){var l=a.split(/C|R/)
;o.rect(.5+parseInt(l[1],10)*t.bucketWidth,.5+parseInt(l[2],10)*t.bucketHeight,t.bucketWidth,t.bucketHeight)}}o.lineWidth=1,o.stroke()},o.inspector=function(e,t){var n,o=(e.engine,e.selected),i=e.render,r=i.options;if(r.hasBounds){var s=i.bounds.max.x-i.bounds.min.x,a=i.bounds.max.y-i.bounds.min.y,l=s/i.options.width,c=a/i.options.height;t.scale(1/l,1/c),t.translate(-i.bounds.min.x,-i.bounds.min.y)}for(var d=0;d<o.length;d++){var u=o[d].data;switch(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.9)",t.setLineDash([1,2]),u.type){case"body":n=u.bounds,t.beginPath(),t.rect(Math.floor(n.min.x-3),Math.floor(n.min.y-3),Math.floor(n.max.x-n.min.x+6),Math.floor(n.max.y-n.min.y+6)),t.closePath(),t.stroke();break;case"constraint":var p=u.pointA;u.bodyA&&(p=u.pointB),t.beginPath(),t.arc(p.x,p.y,10,0,2*Math.PI),t.closePath(),t.stroke()}t.setLineDash([]),t.translate(-.5,-.5)}null!==e.selectStart&&(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.6)",
t.fillStyle="rgba(255,165,0,0.1)",n=e.selectBounds,t.beginPath(),t.rect(Math.floor(n.min.x),Math.floor(n.min.y),Math.floor(n.max.x-n.min.x),Math.floor(n.max.y-n.min.y)),t.closePath(),t.stroke(),t.fill(),t.translate(-.5,-.5)),r.hasBounds&&t.setTransform(1,0,0,1,0,0)};var n=function(e,t){var n=document.createElement("canvas");return n.width=e,n.height=t,n.oncontextmenu=function(){return!1},n.onselectstart=function(){return!1},n},u=function(e){var t=e.getContext("2d");return(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)},p=function(e,t){var n=e.textures[t];return n||(n=e.textures[t]=new Image,n.src=t,n)},f=function(e,t){var n=t;/(jpg|gif|png)$/.test(t)&&(n="url("+t+")"),e.canvas.style.background=n,e.canvas.style.backgroundSize="contain",e.currentBackground=t}}()},{"../body/Composite":2,"../collision/Grid":6,"../core/Common":14,"../core/Events":16,
"../core/Mouse":19,"../geometry/Bounds":26,"../geometry/Vector":28}],32:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Bounds"),r=e("../body/Composite"),s=e("../core/Common"),a=e("../core/Events"),l=e("../geometry/Vector");!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(function(){e(s.now())},1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o.create=function(e){s.warn("RenderPixi.create: Matter.RenderPixi is deprecated (see docs)");var t={controller:o,engine:null,element:null,frameRequestId:null,canvas:null,renderer:null,container:null,spriteContainer:null,pixiOptions:null,options:{width:800,height:600,background:"#fafafa",wireframeBackground:"#222",hasBounds:!1,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,
showBroadphase:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showAxes:!1,showPositions:!1,showAngleIndicator:!1,showIds:!1,showShadows:!1}},n=s.extend(t,e),i=!n.options.wireframes&&"transparent"===n.options.background;return n.pixiOptions=n.pixiOptions||{view:n.canvas,transparent:i,antialias:!0,backgroundColor:e.background},n.mouse=e.mouse,n.engine=e.engine,n.renderer=n.renderer||new PIXI.WebGLRenderer(n.options.width,n.options.height,n.pixiOptions),n.container=n.container||new PIXI.Container,n.spriteContainer=n.spriteContainer||new PIXI.Container,n.canvas=n.canvas||n.renderer.view,n.bounds=n.bounds||{min:{x:0,y:0},max:{x:n.options.width,y:n.options.height}},a.on(n.engine,"beforeUpdate",function(){o.clear(n)}),n.textures={},n.sprites={},n.primitives={},n.container.addChild(n.spriteContainer),s.isElement(n.element)?n.element.appendChild(n.canvas):s.warn('No "render.element" passed, "render.canvas" was not inserted into document.'),n.canvas.oncontextmenu=function(){return!1},
n.canvas.onselectstart=function(){return!1},n},o.run=function(t){!function n(i){t.frameRequestId=e(n),o.world(t)}()},o.stop=function(e){t(e.frameRequestId)},o.clear=function(e){for(var t=e.container,n=e.spriteContainer;t.children[0];)t.removeChild(t.children[0]);for(;n.children[0];)n.removeChild(n.children[0]);var o=e.sprites["bg-0"];e.textures={},e.sprites={},e.primitives={},e.sprites["bg-0"]=o,o&&t.addChildAt(o,0),e.container.addChild(e.spriteContainer),e.currentBackground=null,t.scale.set(1,1),t.position.set(0,0)},o.setBackground=function(e,t){if(e.currentBackground!==t){var n=t.indexOf&&-1!==t.indexOf("#"),o=e.sprites["bg-0"];if(n){var i=s.colorToNumber(t);e.renderer.backgroundColor=i,o&&e.container.removeChild(o)}else if(!o){var r=d(e,t);o=e.sprites["bg-0"]=new PIXI.Sprite(r),o.position.x=0,o.position.y=0,e.container.addChildAt(o,0)}e.currentBackground=t}},o.world=function(e){
var t,n=e.engine,s=n.world,a=e.renderer,c=e.container,d=e.options,u=r.allBodies(s),p=r.allConstraints(s),f=[];d.wireframes?o.setBackground(e,d.wireframeBackground):o.setBackground(e,d.background);var m=e.bounds.max.x-e.bounds.min.x,v=e.bounds.max.y-e.bounds.min.y,y=m/e.options.width,g=v/e.options.height;if(d.hasBounds){for(t=0;t<u.length;t++){var x=u[t];x.render.sprite.visible=i.overlaps(x.bounds,e.bounds)}for(t=0;t<p.length;t++){var h=p[t],b=h.bodyA,w=h.bodyB,S=h.pointA,C=h.pointB;b&&(S=l.add(b.position,h.pointA)),w&&(C=l.add(w.position,h.pointB)),S&&C&&((i.contains(e.bounds,S)||i.contains(e.bounds,C))&&f.push(h))}c.scale.set(1/y,1/g),c.position.set(-e.bounds.min.x*(1/y),-e.bounds.min.y*(1/g))}else f=p;for(t=0;t<u.length;t++)o.body(e,u[t]);for(t=0;t<f.length;t++)o.constraint(e,f[t]);a.render(c)},o.constraint=function(e,t){var n=(e.engine,t.bodyA),o=t.bodyB,i=t.pointA,r=t.pointB,a=e.container,l=t.render,c="c-"+t.id,d=e.primitives[c];if(d||(d=e.primitives[c]=new PIXI.Graphics),
!l.visible||!t.pointA||!t.pointB)return void d.clear();-1===s.indexOf(a.children,d)&&a.addChild(d),d.clear(),d.beginFill(0,0),d.lineStyle(l.lineWidth,s.colorToNumber(l.strokeStyle),1),n?d.moveTo(n.position.x+i.x,n.position.y+i.y):d.moveTo(i.x,i.y),o?d.lineTo(o.position.x+r.x,o.position.y+r.y):d.lineTo(r.x,r.y),d.endFill()},o.body=function(e,t){var o=(e.engine,t.render);if(o.visible)if(o.sprite&&o.sprite.texture){var i="b-"+t.id,r=e.sprites[i],a=e.spriteContainer;r||(r=e.sprites[i]=n(e,t)),-1===s.indexOf(a.children,r)&&a.addChild(r),r.position.x=t.position.x,r.position.y=t.position.y,r.rotation=t.angle,r.scale.x=o.sprite.xScale||1,r.scale.y=o.sprite.yScale||1}else{var l="b-"+t.id,d=e.primitives[l],u=e.container;d||(d=e.primitives[l]=c(e,t),d.initialAngle=t.angle),-1===s.indexOf(u.children,d)&&u.addChild(d),d.position.x=t.position.x,d.position.y=t.position.y,d.rotation=t.angle-d.initialAngle}};var n=function(e,t){var n=t.render,o=n.sprite.texture,i=d(e,o),r=new PIXI.Sprite(i)
;return r.anchor.x=t.render.sprite.xOffset,r.anchor.y=t.render.sprite.yOffset,r},c=function(e,t){var n,o=t.render,i=e.options,r=new PIXI.Graphics,a=s.colorToNumber(o.fillStyle),l=s.colorToNumber(o.strokeStyle),c=s.colorToNumber(o.strokeStyle),d=s.colorToNumber("#bbb"),u=s.colorToNumber("#CD5C5C");r.clear();for(var p=t.parts.length>1?1:0;p<t.parts.length;p++){n=t.parts[p],i.wireframes?(r.beginFill(0,0),r.lineStyle(1,d,1)):(r.beginFill(a,1),r.lineStyle(o.lineWidth,l,1)),r.moveTo(n.vertices[0].x-t.position.x,n.vertices[0].y-t.position.y);for(var f=1;f<n.vertices.length;f++)r.lineTo(n.vertices[f].x-t.position.x,n.vertices[f].y-t.position.y);r.lineTo(n.vertices[0].x-t.position.x,n.vertices[0].y-t.position.y),r.endFill(),(i.showAngleIndicator||i.showAxes)&&(r.beginFill(0,0),i.wireframes?r.lineStyle(1,u,1):r.lineStyle(1,c),r.moveTo(n.position.x-t.position.x,n.position.y-t.position.y),
r.lineTo((n.vertices[0].x+n.vertices[n.vertices.length-1].x)/2-t.position.x,(n.vertices[0].y+n.vertices[n.vertices.length-1].y)/2-t.position.y),r.endFill())}return r},d=function(e,t){var n=e.textures[t];return n||(n=e.textures[t]=PIXI.Texture.fromImage(t)),n}}()},{"../body/Composite":2,"../core/Common":14,"../core/Events":16,"../geometry/Bounds":26,"../geometry/Vector":28}]},{},[30])(30)});
\ No newline at end of file
/**
* matter-js 0.15.0 by @liabru 2018-04-27
* http://brm.io/matter-js/
* License MIT
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Matter=e()}}(function(){return function e(t,n,o){function i(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return i(n||e)},d,d.exports,e,t,n,o)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s<o.length;s++)i(o[s]);return i}({1:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Sleeping"),a=(e("../render/Render"),e("../core/Common")),l=e("../geometry/Bounds"),c=e("../geometry/Axes"),d=e("../geometry/Projections");!function(){
o._inertiaScale=4,o._nextCollidingGroupId=1,o._nextNonCollidingGroupId=-1,o._nextCategory=1,o.create=function(t){var n={id:a.nextId(),type:"body",label:"Body",parts:[],plugin:{},angle:0,vertices:i.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),position:{x:0,y:0},force:{x:0,y:0},torque:0,positionImpulse:{x:0,y:0},previousPositionImpulse:{x:0,y:0},constraintImpulse:{x:0,y:0,angle:0},totalContacts:0,speed:0,angularSpeed:0,velocity:{x:0,y:0},angularVelocity:0,isSensor:!1,isStatic:!1,isSleeping:!1,motion:0,sleepThreshold:60,density:.001,restitution:0,friction:.1,frictionStatic:.5,frictionAir:.01,collisionFilter:{category:1,mask:4294967295,group:0},slop:.05,timeScale:1,render:{visible:!0,opacity:1,sprite:{xScale:1,yScale:1,xOffset:0,yOffset:0},lineWidth:0},pairs:[],region:null,events:null,bounds:null,chamfer:null,circleRadius:0,positionPrev:null,anglePrev:0,parent:null,composite:null,axes:null,projections:null,area:0,mass:0,inertia:0,_original:null},o=a.extend(n,t);return e(o,t),o},
o.nextGroup=function(e){return e?o._nextNonCollidingGroupId--:o._nextCollidingGroupId++},o.nextCategory=function(){return o._nextCategory=o._nextCategory<<1,o._nextCategory};var e=function(e,t){t=t||{},o.set(e,{bounds:e.bounds||l.create(e.vertices),positionPrev:e.positionPrev||r.clone(e.position),anglePrev:e.anglePrev||e.angle,vertices:e.vertices,parts:e.parts||[e],isStatic:e.isStatic,isSleeping:e.isSleeping,parent:e.parent||e}),i.rotate(e.vertices,e.angle,e.position),c.rotate(e.axes,e.angle),l.update(e.bounds,e.vertices,e.velocity),d.verticesOntoAxes(e.projections,e.vertices,e.axes);var n={};t.axes&&(n.axes=t.axes),t.area&&(n.area=t.area),t.mass&&(n.mass=t.mass),t.inertia&&(n.inertia=t.inertia),o.set(e,n);var s=e.isStatic?"#2e2b44":a.choose(["#006BA6","#0496FF","#FFBC42","#D81159","#8F2D56"]);e.render.fillStyle=e.render.fillStyle||s,e.render.strokeStyle=e.render.strokeStyle||"#000",e.render.sprite.xOffset+=-(e.bounds.min.x-e.position.x)/(e.bounds.max.x-e.bounds.min.x),
e.render.sprite.yOffset+=-(e.bounds.min.y-e.position.y)/(e.bounds.max.y-e.bounds.min.y)};o.set=function(e,t){var n,i;for(n in t)if(t.hasOwnProperty(n))switch(i=t[n],n){case"isStatic":o.setStatic(e,i);break;case"isSleeping":s.set(e,i);break;case"mass":o.setMass(e,i);break;case"density":o.setDensity(e,i);break;case"inertia":o.setInertia(e,i);break;case"axes":o.setAxes(e,i);break;case"vertices":o.setVertices(e,i);break;case"position":o.setPosition(e,i);break;case"angle":o.setAngle(e,i);break;case"velocity":o.setVelocity(e,i);break;case"angularVelocity":o.setAngularVelocity(e,i);break;case"parts":o.setParts(e,i);break;default:e[n]=i}},o.setStatic=function(e,t){for(var n=0;n<e.parts.length;n++){var o=e.parts[n];o.isStatic=t,t?(o._original={restitution:o.restitution,friction:o.friction,mass:o.mass,inertia:o.inertia,density:o.density,inverseMass:o.inverseMass,inverseInertia:o.inverseInertia},o.restitution=0,o.friction=1,o.mass=o.inertia=o.density=1/0,o.inverseMass=o.inverseInertia=0,
o.positionPrev.x=o.position.x,o.positionPrev.y=o.position.y,o.anglePrev=o.angle,o.angularVelocity=0,o.speed=0,o.angularSpeed=0,o.motion=0):o._original&&(o.restitution=o._original.restitution,o.friction=o._original.friction,o.mass=o._original.mass,o.inertia=o._original.inertia,o.density=o._original.density,o.inverseMass=o._original.inverseMass,o.inverseInertia=o._original.inverseInertia,o._original=null)}},o.setMass=function(e,t){var n=e.inertia/(e.mass/6);e.inertia=n*(t/6),e.inverseInertia=1/e.inertia,e.mass=t,e.inverseMass=1/e.mass,e.density=e.mass/e.area},o.setDensity=function(e,t){o.setMass(e,t*e.area),e.density=t},o.setInertia=function(e,t){e.inertia=t,e.inverseInertia=1/e.inertia},o.setVertices=function(e,t){t[0].body===e?e.vertices=t:e.vertices=i.create(t,e),e.area=i.area(e.vertices),o.setMass(e,e.density*e.area);var n=i.centre(e.vertices);i.translate(e.vertices,n,-1),o.setInertia(e,o._inertiaScale*i.inertia(e.vertices,e.mass)),i.translate(e.vertices,e.position),
o.setAxes(e,c.fromVertices(e.vertices)),l.update(e.bounds,e.vertices,e.velocity),d.verticesOntoAxes(e.projections,e.vertices,e.axes)},o.setAxes=function(e,t){e.axes=t,e.projections=d.create(t.length)},o.setParts=function(e,t,n){var r;for(t=t.slice(0),e.parts.length=0,e.parts.push(e),e.parent=e,r=0;r<t.length;r++){var s=t[r];s!==e&&(s.parent=e,e.parts.push(s))}if(1!==e.parts.length){if(n=void 0===n||n){var a=[];for(r=0;r<t.length;r++)a=a.concat(t[r].vertices);i.clockwiseSort(a);var l=i.hull(a),c=i.centre(l);o.setVertices(e,l),i.translate(e.vertices,c)}var d=o._totalProperties(e);e.area=d.area,e.parent=e,e.position.x=d.centre.x,e.position.y=d.centre.y,e.positionPrev.x=d.centre.x,e.positionPrev.y=d.centre.y,o.setMass(e,d.mass),o.setInertia(e,d.inertia),o.setPosition(e,d.centre)}},o.setPosition=function(e,t){var n=r.sub(t,e.position);e.positionPrev.x+=n.x,e.positionPrev.y+=n.y;for(var o=0;o<e.parts.length;o++){var s=e.parts[o];s.position.x+=n.x,s.position.y+=n.y,i.translate(s.vertices,n),
l.update(s.bounds,s.vertices,e.velocity),d.verticesOntoAxes(s.projections,s.vertices,s.axes)}},o.setAngle=function(e,t){var n=t-e.angle;e.anglePrev+=n;for(var o=0;o<e.parts.length;o++){var s=e.parts[o];s.angle+=n,i.rotate(s.vertices,n,e.position),c.rotate(s.axes,n),l.update(s.bounds,s.vertices,e.velocity),d.verticesOntoAxes(s.projections,s.vertices,s.axes),o>0&&r.rotateAbout(s.position,n,e.position,s.position)}},o.setVelocity=function(e,t){e.positionPrev.x=e.position.x-t.x,e.positionPrev.y=e.position.y-t.y,e.velocity.x=t.x,e.velocity.y=t.y,e.speed=r.magnitude(e.velocity)},o.setAngularVelocity=function(e,t){e.anglePrev=e.angle-t,e.angularVelocity=t,e.angularSpeed=Math.abs(e.angularVelocity)},o.translate=function(e,t){o.setPosition(e,r.add(e.position,t))},o.rotate=function(e,t,n){if(n){var i=Math.cos(t),r=Math.sin(t),s=e.position.x-n.x,a=e.position.y-n.y;o.setPosition(e,{x:n.x+(s*i-a*r),y:n.y+(s*r+a*i)}),o.setAngle(e,e.angle+t)}else o.setAngle(e,e.angle+t)},o.scale=function(e,t,n,r){
var s=0,a=0;r=r||e.position;for(var u=0;u<e.parts.length;u++){var p=e.parts[u];i.scale(p.vertices,t,n,r),p.axes=c.fromVertices(p.vertices),p.area=i.area(p.vertices),o.setMass(p,e.density*p.area),i.translate(p.vertices,{x:-p.position.x,y:-p.position.y}),o.setInertia(p,o._inertiaScale*i.inertia(p.vertices,p.mass)),i.translate(p.vertices,{x:p.position.x,y:p.position.y}),u>0&&(s+=p.area,a+=p.inertia),p.position.x=r.x+(p.position.x-r.x)*t,p.position.y=r.y+(p.position.y-r.y)*n,l.update(p.bounds,p.vertices,e.velocity),d.verticesOntoAxes(p.projections,p.vertices,p.axes)}e.parts.length>1&&(e.area=s,e.isStatic||(o.setMass(e,e.density*s),o.setInertia(e,a))),e.circleRadius&&(t===n?e.circleRadius*=t:e.circleRadius=null)},o.update=function(e,t,n,o){var s=Math.pow(t*n*e.timeScale,2),a=e.position,u=e.positionPrev,p=e.velocity,f=e.force,m=1-e.frictionAir*n*e.timeScale,v=a.x-u.x,y=a.y-u.y;p.x=v*m*o+f.x/e.mass*s,p.y=y*m*o+f.y/e.mass*s,u.x=a.x,u.y=a.y,a.x+=p.x,a.y+=p.y
;var g=(e.angle-e.anglePrev)*m*o+e.torque/e.inertia*s;e.angularVelocity=g,e.anglePrev=e.angle,e.angle+=g,e.speed=r.magnitude(p),e.angularSpeed=Math.abs(g);for(var x=e.parts,h=0;h<x.length;h++){var b=x[h],w=b.vertices,S=b.position;i.translate(w,p),h>0&&(S.x+=p.x,S.y+=p.y),0!==g&&(i.rotate(w,g,a),c.rotate(b.axes,g),h>0&&r.rotateAbout(S,g,a,S)),l.update(b.bounds,w,p),d.verticesOntoAxes(b.projections,b.vertices,b.axes)}},o.applyForce=function(e,t,n){e.force.x+=n.x,e.force.y+=n.y;var o={x:t.x-e.position.x,y:t.y-e.position.y};e.torque+=o.x*n.y-o.y*n.x},o._totalProperties=function(e){for(var t={mass:0,area:0,inertia:0,centre:{x:0,y:0}},n=1===e.parts.length?0:1;n<e.parts.length;n++){var o=e.parts[n],i=o.mass!==1/0?o.mass:1;t.mass+=i,t.area+=o.area,t.inertia+=o.inertia,t.centre=r.add(t.centre,r.mult(o.position,i))}return t.centre=r.div(t.centre,t.mass),t}}()},{"../core/Common":12,"../core/Sleeping":20,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Projections":25,
"../geometry/Vector":27,"../geometry/Vertices":28,"../render/Render":30}],2:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Events"),r=e("../core/Common"),s=e("./Body"),a=e("../collision/Grid");!function(){o.create=function(e){var t=r.extend({id:r.nextId(),type:"composite",parent:null,isModified:!1,bodies:[],constraints:[],composites:[],allBodies:[],label:"Composite",plugin:{}},e);return t.allBodies=t.bodies.slice(),t},o.setModified=function(e,t,n,i){if(e.isModified=t,n&&e.parent&&o.setModified(e.parent,t,n,i),i)for(var r=0;r<e.composites.length;r++){var s=e.composites[r];o.setModified(s,t,n,i)}},o.add=function(e,t){var n=[].concat(t);i.trigger(e,"beforeAdd",{object:t});for(var s=0;s<n.length;s++){var a=n[s];switch(a.type){case"body":if(a.parent!==a){r.warn("Composite.add: skipped adding a compound body part (you must add its parent instead)");break}o.addBody(e,a);break;case"constraint":o.addConstraint(e,a);break;case"composite":o.addComposite(e,a);break;case"mouseConstraint":
o.addConstraint(e,a.constraint)}}return i.trigger(e,"afterAdd",{object:t}),e},o.remove=function(e,t,n){var r=[].concat(t);i.trigger(e,"beforeRemove",{object:t});for(var s=0;s<r.length;s++){var a=r[s];switch(a.type){case"body":o.removeBody(e,a,n);break;case"constraint":o.removeConstraint(e,a,n);break;case"composite":o.removeComposite(e,a,n);break;case"mouseConstraint":o.removeConstraint(e,a.constraint)}}return i.trigger(e,"afterRemove",{object:t}),e},o.addComposite=function(e,t){return e.composites.push(t),t.parent=e,o.setModified(e,!0,!0,!1),o.addBodies(e,t.allBodies),e},o.removeComposite=function(e,t,n){var i=r.indexOf(e.composites,t);if(-1!==i&&(e.composites.splice(i,1),o.setModified(e,!0,!0,!1),o.removeBodies(e,t.allBodies)),n)for(var s=0;s<e.composites.length;s++)o.removeComposite(e.composites[s],t,!0);return e},o.addBody=function(e,t){return e.bodies.push(t),o.setModified(e,!0,!0,!1),o.addBodies(e,[t]),e},o.removeBody=function(e,t,n){var i=r.indexOf(e.bodies,t)
;if(-1!==i&&(e.bodies.splice(i,1),o.setModified(e,!0,!0,!1),o.removeBodies(e,[t])),n)for(var s=0;s<e.composites.length;s++)o.removeBody(e.composites[s],t,!0);return e},o.addBodies=function(e,t){Array.prototype.push.apply(e.allBodies,t),e.allBodies.sort(function(e,t){return e.id-t.id}),e.grid&&a.addBodies(e.grid,t,e),e.parent&&"composite"===e.parent.type&&e.parent.addBodies(e.parent,t)},o.removeBodies=function(e,t){for(var n=e.allBodies,o=0;o<t.length;o+=1){var i=n.indexOf(t[o]);-1!==i&&n.splice(i,1)}e.grid&&a.removeBodies(e.grid,t),e.parent&&"composite"===e.parent.type&&e.parent.removeBodies(e.parent,t)},o.addConstraint=function(e,t){return e.constraints.push(t),o.setModified(e,!0,!0,!1),e},o.removeConstraint=function(e,t,n){var i=r.indexOf(e.constraints,t);if(-1!==i&&o.removeConstraintAt(e,i),n)for(var s=0;s<e.composites.length;s++)o.removeConstraint(e.composites[s],t,!0);return e},o.removeConstraintAt=function(e,t){return e.constraints.splice(t,1),o.setModified(e,!0,!0,!1),e},
o.clear=function(e,t,n){if(n)for(var i=0;i<e.composites.length;i++)o.clear(e.composites[i],t,!0);return t?e.bodies=e.bodies.filter(function(e){return e.isStatic}):e.bodies.length=0,e.constraints.length=0,e.composites.length=0,o.setModified(e,!0,!0,!1),e},o.allBodies=function(e){return e.allBodies},o.allConstraints=function(e){for(var t=[].concat(e.constraints),n=0;n<e.composites.length;n++)t=t.concat(o.allConstraints(e.composites[n]));return t},o.allComposites=function(e){for(var t=[].concat(e.composites),n=0;n<e.composites.length;n++)t=t.concat(o.allComposites(e.composites[n]));return t},o.get=function(e,t,n){var i,r;switch(n){case"body":i=o.allBodies(e);break;case"constraint":i=o.allConstraints(e);break;case"composite":i=o.allComposites(e).concat(e)}return i?(r=i.filter(function(e){return e.id.toString()===t.toString()}),0===r.length?null:r[0]):null},o.move=function(e,t,n){return o.remove(e,t),o.add(n,t),e},o.rebase=function(e){
for(var t=o.allBodies(e).concat(o.allConstraints(e)).concat(o.allComposites(e)),n=0;n<t.length;n++)t[n].id=r.nextId();return o.setModified(e,!0,!0,!1),e},o.translate=function(e,t,n){for(var i=n?o.allBodies(e):e.bodies,r=0;r<i.length;r++)s.translate(i[r],t);return o.setModified(e,!0,!0,!1),e},o.rotate=function(e,t,n,i){for(var r=Math.cos(t),a=Math.sin(t),l=i?o.allBodies(e):e.bodies,c=0;c<l.length;c++){var d=l[c],u=d.position.x-n.x,p=d.position.y-n.y;s.setPosition(d,{x:n.x+(u*r-p*a),y:n.y+(u*a+p*r)}),s.rotate(d,t)}return o.setModified(e,!0,!0,!1),e},o.scale=function(e,t,n,i,r){for(var a=r?o.allBodies(e):e.bodies,l=0;l<a.length;l++){var c=a[l],d=c.position.x-i.x,u=c.position.y-i.y;s.setPosition(c,{x:i.x+d*t,y:i.y+u*n}),s.scale(c,t,n)}return o.setModified(e,!0,!0,!1),e},o.bounds=function(e){for(var t=Matter.Composite.allBodies(e),n=[],o=0;o<t.length;o+=1){var i=t[o];n.push(i.bounds.min,i.bounds.max)}return Matter.Bounds.create(n)}}()},{"../collision/Grid":5,"../core/Common":12,
"../core/Events":14,"./Body":1}],3:[function(e,t,n){var o={};t.exports=o;var i=e("./Composite"),r=(e("../constraint/Constraint"),e("../core/Common"));!function(){o.create=function(e){var t=i.create(),n={label:"World",grid:null,gravity:{x:0,y:1,scale:.001},bounds:{min:{x:-1/0,y:-1/0},max:{x:1/0,y:1/0}}};return r.extend(t,n,e)}}()},{"../constraint/Constraint":10,"../core/Common":12,"./Composite":2}],4:[function(e,t,n){var o={};t.exports=o;var i=e("./SAT"),r=(e("./Pairs"),e("../core/Sleeping"),e("../geometry/Bounds")),s={idA:1<<30,idB:1+(1<<30)};!function(){o.collisions=function(e,t){var n,a,l,c=t.pairs,d=c.list,u=[],p=t.events,f=!!(p.collisionStart||p.collisionActive||p.collisionEnd);f&&(n=[],a=[],l=[],c.collisionStart=n,c.collisionActive=a,c.collisionEnd=l),d.push(s);for(var m=0,v=d[m++],y=0;y<e.length;y++)for(var g=e[y],x=g.parts,h=g.parts.length>1?1:0,b=g.pairs,w=0;w<b.length;w++){var S=b[w][0]
;if((!g.isStatic&&!g.isSleeping||!S.isStatic&&!S.isSleeping)&&(o.canCollide(g.collisionFilter,S.collisionFilter)&&r.overlaps(g.bounds,S.bounds)))for(var C=h;C<x.length;C++)for(var P=x[C],A=S.parts,B=A.length>1?1:0;B<A.length;B++){var M=A[B];if(P===g&&M===S||r.overlaps(P.bounds,M.bounds)){var k=i.collides(P,M);if(k&&(u.push(k),f)){for(var I=P.id,_=M.id;v.idA<I||v.idA===I&&v.idB<_;)l.push(v),v=d[m++];v.idA===I&&v.idB===_?(a.push(k),v=d[m++]):n.push(k)}}}}if(f)for(m-=1;m<d.length-1;)l.push(d[m++]);c.list=u},o.canCollide=function(e,t){return e.group===t.group&&0!==e.group?e.group>0:0!=(e.mask&t.category)&&0!=(t.mask&e.category)}}()},{"../core/Sleeping":20,"../geometry/Bounds":24,"./Pairs":6,"./SAT":9}],5:[function(e,t,n){var o={};t.exports=o;var i=(e("../geometry/Projections"),e("../core/Common"));!function(){o.create=function(e){var t={controller:o,buckets:[],bucketWidth:48,bucketHeight:48};return i.extend(t,e)},o.update=function(e,t,n){
var i,r,s,a=e.buckets,l=n.world,c=l.bounds.min.x,d=l.bounds.max.x,u=l.bounds.min.y,p=l.bounds.max.y,f=isFinite(c)||isFinite(d)||isFinite(u)||isFinite(p);for(i=0;i<t.length;i++){var m=t[i];if(!m.isSleeping){var v=m.bounds;if(!f||!(v.max.x<c||v.min.x>d||v.max.y<u||v.min.y>p)){var y=o._getRegion(e,v),g=m.region;if(m.region=y,y.startCol!==g.startCol||y.endCol!==g.endCol||y.startRow!==g.startRow||y.endRow!==g.endRow){var x=Math.min(y.startCol,g.startCol),h=Math.max(y.endCol,g.endCol),b=Math.min(y.startRow,g.startRow),w=Math.max(y.endRow,g.endRow);for(r=x;r<=h;r++){var S=r>=y.startCol&&r<=y.endCol,C=r>=g.startCol&&r<=g.endCol;for(s=b;s<=w;s++){var P=S&&s>=y.startRow&&s<=y.endRow;C&&s>=g.startRow&&s<=g.endRow?P||o._bucketRemoveBody(e,m,a[r][s]):P&&o._bucketAddBody(e,m,a,r,s)}}}}}}},o.clear=function(e,t){e.buckets=[];for(var n=0;n<t.length;n++)t.pairs.length=0},o.removeBodies=function(e,t){var n,i,r,s=e.buckets;for(n=0;n<t.length;n++){
var a=t[n],l=a.region,c=l.startCol,d=l.endCol,u=l.startRow,p=l.endRow;for(i=c;i<=d;i++)for(r=u;r<=p;r++)o._bucketRemoveBody(e,a,s[i][r]);a.region=null,a.pairs.length=0}},o.addBodies=function(e,t,n){var i,r,s,a=e.buckets,l=n.bounds.min.x,c=n.bounds.max.x,d=n.bounds.min.y,u=n.bounds.max.y,p=isFinite(l)||isFinite(c)||isFinite(d)||isFinite(u);for(i=0;i<t.length;i++){var f=t[i],m=f.bounds;if(!p||!(m.max.x<l||m.min.x>c||m.max.y<d||m.min.y>u)){var v=o._getRegion(e,m);for(f.region=v,r=v.startCol;r<=v.endCol;r++)for(s=v.startRow;s<=v.endRow;s++)o._bucketAddBody(e,f,a,r,s)}}},o._getRegion=function(e,t){return{startCol:Math.floor(t.min.x/e.bucketWidth),endCol:Math.floor(t.max.x/e.bucketWidth),startRow:Math.floor(t.min.y/e.bucketHeight),endRow:Math.floor(t.max.y/e.bucketHeight)}},o._bucketAddBody=function(e,t,n,o,i){for(var r,s=n[o]||(n[o]=[]),a=s[i]||(s[i]=[]),l=0;l<a.length;l++){var c=a[l];if(!(t.id===c.id||t.isStatic&&c.isStatic)){t.id<c.id?r=t:(r=c,c=t);for(var d=r.pairs,u=0;u<d.length;u+=1){
var p=d[u];if(p[0]===c){p[1]+=1;break}if(p[1].id>c.id){d.splice(u,0,[c,1]);break}}u===d.length&&d.push([c,1])}}a.push(t)},o._bucketRemoveBody=function(e,t,n){n.splice(i.indexOf(n,t),1);for(var o,r=0;r<n.length;r++){var s=n[r];t.id<s.id?o=t:(o=s,s=t);for(var a=o.pairs,l=0;l<a.length;l+=1){var c=a[l];if(c[0]===s){1===c[1]?a.splice(l,1):c[1]-=1;break}}}}}()},{"../core/Common":12,"../geometry/Projections":25}],6:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Common");!function(){o._pairMaxIdleLife=1e3,o.create=function(e){return i.extend({list:[],collisionStart:[],collisionActive:[],collisionEnd:[]},e)},o.clear=function(e){return e.list.length=0,e.collisionStart.length=0,e.collisionActive.length=0,e.collisionEnd.length=0,e}}()},{"../core/Common":12}],7:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("./SAT"),s=e("../geometry/Bounds"),a=e("../factory/Bodies"),l=e("../geometry/Vertices");!function(){o.collides=function(e,t){for(var n=[],o=0;o<t.length;o++){
var i=t[o];if(s.overlaps(i.bounds,e.bounds))for(var a=1===i.parts.length?0:1;a<i.parts.length;a++){var l=i.parts[a];if(s.overlaps(l.bounds,e.bounds)){var c=r.collides(l,e);if(c){n.push(c);break}}}}return n},o.ray=function(e,t,n,r){r=r||1e-100;for(var s=i.angle(t,n),l=i.magnitude(i.sub(t,n)),c=.5*(n.x+t.x),d=.5*(n.y+t.y),u=a.rectangle(c,d,l,r,{angle:s}),p=o.collides(u,e),f=0;f<p.length;f+=1){var m=p[f];m.body=m.bodyB=m.bodyA}return p},o.region=function(e,t,n){for(var o=[],i=0;i<e.length;i++){var r=e[i],a=s.overlaps(r.bounds,t);(a&&!n||!a&&n)&&o.push(r)}return o},o.point=function(e,t){for(var n=[],o=0;o<e.length;o++){var i=e[o];if(s.contains(i.bounds,t))for(var r=1===i.parts.length?0:1;r<i.parts.length;r++){var a=i.parts[r];if(s.contains(a.bounds,t)&&l.contains(a.vertices,t)){n.push(i);break}}}return n}}()},{"../factory/Bodies":21,"../geometry/Bounds":24,"../geometry/Vector":27,"../geometry/Vertices":28,"./SAT":9}],8:[function(e,t,n){var o={};t.exports=o
;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Common"),a=e("../geometry/Bounds");!function(){o._restingThresh=4,o._restingThreshTangent=6,o._positionDampen=.9,o._positionWarming=.8,o._frictionNormalMultiplier=5,o.preSolvePosition=function(e){var t,n,o;for(t=0;t<e.length;t++)n=e[t],o=n.contactCount,n.parentA.totalContacts+=o,n.parentB.totalContacts+=o},o.solvePosition=function(e,t,n){var i,r,s,a,l,c,d,u,p,f,m,v,y,g,x,h=n*o._positionDampen;for(i=0;i<t.length;i++){var b=t[i];b.previousPositionImpulse.x=b.positionImpulse.x,b.previousPositionImpulse.y=b.positionImpulse.y}for(i=0;i<e.length;i++)a=e[i],a.isSensor||(l=a.parentA,c=a.parentB,d=a.normal,f=l.previousPositionImpulse,m=c.previousPositionImpulse,p=a.penetration,y=m.x-f.x+p.x,g=m.y-f.y+p.y,r=d.x,s=d.y,u=r*y+s*g,a.separation=u,x=(u-a.slop)*h,(l.isStatic||c.isStatic)&&(x*=2),l.isStatic||l.isSleeping||(v=x/l.totalContacts,l.positionImpulse.x+=r*v,l.positionImpulse.y+=s*v),
c.isStatic||c.isSleeping||(v=x/c.totalContacts,c.positionImpulse.x-=r*v,c.positionImpulse.y-=s*v))},o.postSolvePosition=function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.totalContacts=0,0!==n.positionImpulse.x||0!==n.positionImpulse.y){for(var s=0;s<n.parts.length;s++){var l=n.parts[s];i.translate(l.vertices,n.positionImpulse),a.update(l.bounds,l.vertices,n.velocity),l.position.x+=n.positionImpulse.x,l.position.y+=n.positionImpulse.y}n.positionPrev.x+=n.positionImpulse.x,n.positionPrev.y+=n.positionImpulse.y,r.dot(n.positionImpulse,n.velocity)<0?(n.positionImpulse.x=0,n.positionImpulse.y=0):(n.positionImpulse.x*=o._positionWarming,n.positionImpulse.y*=o._positionWarming)}}},o.preSolveVelocity=function(e){var t,n,o,i,s,a,l,c,d,u,p,f,m,v=r._temp[0],y=r._temp[1];for(t=0;t<e.length;t++)if(s=e[t],!s.isSensor)for(o=s.contacts,i=s.contactCount,a=s.parentA,l=s.parentB,c=s.normal,d=s.tangent,n=0;n<i;n++)u=o[n],p=u.normalImpulse,f=u.tangentImpulse,0===p&&0===f||(v.x=c.x*p+d.x*f,
v.y=c.y*p+d.y*f,a.isStatic||a.isSleeping||(m=r.sub(u,a.position,y),a.positionPrev.x+=v.x*a.inverseMass,a.positionPrev.y+=v.y*a.inverseMass,a.anglePrev+=r.cross(m,v)*a.inverseInertia),l.isStatic||l.isSleeping||(m=r.sub(u,l.position,y),l.positionPrev.x-=v.x*l.inverseMass,l.positionPrev.y-=v.y*l.inverseMass,l.anglePrev-=r.cross(m,v)*l.inverseInertia))},o.solveVelocity=function(e,t){for(var n=t*t,i=o._restingThresh,r=o._restingThreshTangent,a=o._frictionNormalMultiplier,l=0;l<e.length;l++){var c=e[l];if(!c.isSensor){var d=c.parentA,u=c.parentB,p=c.normal,f=p.x,m=p.y,v=c.tangent,y=v.x,g=v.y,x=c.contacts,h=c.contactCount,b=1/x.length,w=d.position,S=w.x,C=w.y,P=u.position,A=P.x,B=P.y,M=S-d.positionPrev.x,k=C-d.positionPrev.y,I=A-u.positionPrev.x,_=B-u.positionPrev.y,T=d.angle-d.anglePrev,R=u.angle-u.anglePrev;d.velocity.x=M,d.velocity.y=k,u.velocity.x=I,u.velocity.y=_,d.angularVelocity=T,u.angularVelocity=R
;for(var V=d.inverseMass,E=u.inverseMass,F=d.inverseInertia,O=u.inverseInertia,L=0;L<h;L++){var q=x[L],W=q.x-S,j=q.y-C,D=q.x-A,N=q.y-B,G=M-j*T-(I-N*R),H=k+W*T-(_+D*R),z=f*G+m*H,U=y*G+g*H,X=Math.abs(U),Q=s.sign(U),Y=(1+c.restitution)*z,Z=s.clamp(c.separation+z,0,1)*a,$=U,J=1/0;X>c.friction*c.frictionStatic*Z*n&&(J=X,$=s.clamp(c.friction*Q*n,-J,J));var K=W*m-j*f,ee=D*m-N*f,te=b/(V+E+F*K*K+O*ee*ee);if(Y*=te,$*=te,z<0&&z*z>i*n)q.normalImpulse=0;else{var ne=q.normalImpulse;q.normalImpulse=Math.min(q.normalImpulse+Y,0),Y=q.normalImpulse-ne}if(U*U>r*n)q.tangentImpulse=0;else{var oe=q.tangentImpulse;q.tangentImpulse=s.clamp(q.tangentImpulse+$,-J,J),$=q.tangentImpulse-oe}var ie=f*Y+y*$,re=m*Y+g*$;d.isStatic||d.isSleeping||(d.positionPrev.x+=ie*V,d.positionPrev.y+=re*V,d.anglePrev+=(W*re-j*ie)*F),u.isStatic||u.isSleeping||(u.positionPrev.x-=ie*E,u.positionPrev.y-=re*E,u.anglePrev-=(D*re-N*ie)*O)}}}}}()},{"../core/Common":12,"../geometry/Bounds":24,"../geometry/Vector":27,
"../geometry/Vertices":28}],9:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices");!function(){o._temp=[{depth:0,axes:null},{depth:0,axes:null}],o.collides=function(e,t){var n=o._temp[0];if(!o._overlapAxes(e,t.vertices,n))return null;var r=o._temp[1];if(!o._overlapAxes(t,e.vertices,r))return null;var s,a=n.depth<r.depth?n:r,l=e.position,c=t.position,d=a.axis;s=d.x*(c.x-l.x)+d.y*(c.y-l.y)<0?{x:d.x,y:d.y}:{x:-d.x,y:-d.y};var u=e.vertices,p=t.vertices,f=o._findSupports(e,p,-s.x,-s.y),m=0,v=new Array(2);if(i.contains(u,f[0])&&(v[m++]=f[0]),i.contains(u,f[1])&&(v[m++]=f[1]),m<2){var y=o._findSupports(t,u,s.x,s.y);i.contains(p,y[0])&&(v[m++]=y[0]),m<2&&(i.contains(p,y[1])&&(v[m++]=y[1]),m<2&&(v[1]=null,m<1&&(v[m++]=f[0])))}var g=a.depth,x=e.parent,h=t.parent;return{idA:e.id,idB:t.id,bodyA:e,bodyB:t,parentA:x,parentB:h,separation:g,normal:s,tangent:{x:-s.y,y:s.x},penetration:{x:s.x*g,y:s.y*g},contacts:v,contactCount:m,isSensor:e.isSensor||t.isSensor,
inverseMass:x.inverseMass+h.inverseMass,friction:Math.min(x.friction,h.friction),frictionStatic:Math.max(x.frictionStatic,h.frictionStatic),restitution:Math.max(x.restitution,h.restitution),slop:Math.max(x.slop,h.slop)}},o._overlapAxes=function(e,t,n){var o=e.projections,i=e.axes;n.depth=Number.MAX_VALUE;for(var r=0;r<i.length;r++){for(var s=o[r],a=i[r],l=a.x,c=a.y,d=t[0],u=d.x*l+d.y*c,p=u,f=1;f<t.length;f+=1){d=t[f];var m=d.x*l+d.y*c;m>p?p=m:m<u&&(u=m)}var v=Math.min(s.max-u,p-s.min);if(v<=0)return;v<n.depth&&(n.depth=v,n.axis=a)}return n},o._findSupports=function(e,t,n,o){for(var i,r,s,a,l,c,d=Number.MAX_VALUE,u=d,p=e.position,f=p.x,m=p.y,v=0;v<t.length;v++)a=t[v],i=a.x-f,r=a.y-m,s=n*i+o*r,s<d?(u=d,c=l,d=s,l=a):s<u&&(u=s,c=a);return[l,c]}}()},{"../geometry/Vertices":28}],10:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector"),s=e("../core/Sleeping"),a=e("../geometry/Bounds"),l=e("../geometry/Axes"),c=e("../core/Common");!function(){
o._warming=.4,o._torqueDampen=1,o._minLength=1e-6,o.create=function(e){var t=e;t.bodyA&&!t.pointA&&(t.pointA={x:0,y:0}),t.bodyB&&!t.pointB&&(t.pointB={x:0,y:0});var n=t.bodyA?r.add(t.bodyA.position,t.pointA):t.pointA,o=t.bodyB?r.add(t.bodyB.position,t.pointB):t.pointB,i=r.magnitude(r.sub(n,o));t.length=void 0!==t.length?t.length:i,t.id=t.id||c.nextId(),t.label=t.label||"Constraint",t.type="constraint",t.stiffness=t.stiffness||(t.length>0?1:.7),t.damping=t.damping||0,t.angularStiffness=t.angularStiffness||0,t.angleA=t.bodyA?t.bodyA.angle:t.angleA,t.angleB=t.bodyB?t.bodyB.angle:t.angleB,t.plugin={};var s={visible:!0,lineWidth:2,strokeStyle:"#ffffff",type:"line",anchors:!0};return 0===t.length&&t.stiffness>.1?(s.type="pin",s.anchors=!1):t.stiffness<.9&&(s.type="spring"),t.render=c.extend(s,t.render),t},o.preSolveAll=function(e){for(var t=0;t<e.length;t+=1){var n=e[t],o=n.constraintImpulse;n.isStatic||0===o.x&&0===o.y&&0===o.angle||(n.position.x+=o.x,n.position.y+=o.y,n.angle+=o.angle)}},
o.solveAll=function(e,t){for(var n=0;n<e.length;n+=1){var i=e[n],r=!i.bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic;(r||s)&&o.solve(e[n],t)}for(n=0;n<e.length;n+=1)i=e[n],r=!i.bodyA||i.bodyA&&i.bodyA.isStatic,s=!i.bodyB||i.bodyB&&i.bodyB.isStatic,r||s||o.solve(e[n],t)},o.solve=function(e,t){var n=e.bodyA,i=e.bodyB,s=e.pointA,a=e.pointB;if(n||i){n&&!n.isStatic&&(r.rotate(s,n.angle-e.angleA,s),e.angleA=n.angle),i&&!i.isStatic&&(r.rotate(a,i.angle-e.angleB,a),e.angleB=i.angle);var l=s,c=a;if(n&&(l=r.add(n.position,s)),i&&(c=r.add(i.position,a)),l&&c){var d=r.sub(l,c),u=r.magnitude(d);u<o._minLength&&(u=o._minLength);var p,f,m,v,y,g=(u-e.length)/u,x=e.stiffness<1?e.stiffness*t:e.stiffness,h=r.mult(d,g*x),b=(n?n.inverseMass:0)+(i?i.inverseMass:0),w=(n?n.inverseInertia:0)+(i?i.inverseInertia:0),S=b+w;if(e.damping){var C=r.create();m=r.div(d,u),y=r.sub(i&&r.sub(i.position,i.positionPrev)||C,n&&r.sub(n.position,n.positionPrev)||C),v=r.dot(m,y)}
n&&!n.isStatic&&(f=n.inverseMass/b,n.constraintImpulse.x-=h.x*f,n.constraintImpulse.y-=h.y*f,n.position.x-=h.x*f,n.position.y-=h.y*f,e.damping&&(n.positionPrev.x-=e.damping*m.x*v*f,n.positionPrev.y-=e.damping*m.y*v*f),p=r.cross(s,h)/S*o._torqueDampen*n.inverseInertia*(1-e.angularStiffness),n.constraintImpulse.angle-=p,n.angle-=p),i&&!i.isStatic&&(f=i.inverseMass/b,i.constraintImpulse.x+=h.x*f,i.constraintImpulse.y+=h.y*f,i.position.x+=h.x*f,i.position.y+=h.y*f,e.damping&&(i.positionPrev.x+=e.damping*m.x*v*f,i.positionPrev.y+=e.damping*m.y*v*f),p=r.cross(a,h)/S*o._torqueDampen*i.inverseInertia*(1-e.angularStiffness),i.constraintImpulse.angle+=p,i.angle+=p)}}},o.postSolveAll=function(e){for(var t=0;t<e.length;t++){var n=e[t],c=n.constraintImpulse;if(!(n.isStatic||0===c.x&&0===c.y&&0===c.angle)){s.set(n,!1);for(var d=0;d<n.parts.length;d++){var u=n.parts[d];i.translate(u.vertices,c),d>0&&(u.position.x+=c.x,u.position.y+=c.y),0!==c.angle&&(i.rotate(u.vertices,c.angle,n.position),
l.rotate(u.axes,c.angle),d>0&&r.rotateAbout(u.position,c.angle,n.position,u.position)),a.update(u.bounds,u.vertices,n.velocity)}c.angle*=o._warming,c.x*=o._warming,c.y*=o._warming}}}}()},{"../core/Common":12,"../core/Sleeping":20,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Vector":27,"../geometry/Vertices":28}],11:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../core/Sleeping"),s=e("../core/Mouse"),a=e("../core/Events"),l=e("../collision/Detector"),c=e("./Constraint"),d=e("../body/Composite"),u=e("../core/Common"),p=e("../geometry/Bounds");!function(){o.create=function(e,t){var n=(e?e.mouse:null)||(t?t.mouse:null);n||(e&&e.render&&e.render.canvas?n=s.create(e.render.canvas):t&&t.element?n=s.create(t.element):(n=s.create(),u.warn("MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected")));var i=c.create({label:"Mouse Constraint",pointA:n.position,pointB:{x:0,y:0},length:.01,
stiffness:.1,angularStiffness:1,render:{strokeStyle:"#90EE90",lineWidth:3}}),r={type:"mouseConstraint",mouse:n,element:null,body:null,constraint:i,collisionFilter:{category:1,mask:4294967295,group:0}},l=u.extend(r,t);return a.on(e,"beforeUpdate",function(){var t=d.allBodies(e.world);o.update(l,t),o._triggerEvents(l)}),l},o.update=function(e,t){var n=e.mouse,o=e.constraint,s=e.body;if(0===n.button){if(o.bodyB)r.set(o.bodyB,!1),o.pointA=n.position;else for(var c=0;c<t.length;c++)if(s=t[c],p.contains(s.bounds,n.position)&&l.canCollide(s.collisionFilter,e.collisionFilter))for(var d=s.parts.length>1?1:0;d<s.parts.length;d++){var u=s.parts[d];if(i.contains(u.vertices,n.position)){o.pointA=n.position,o.bodyB=e.body=s,o.pointB={x:n.position.x-s.position.x,y:n.position.y-s.position.y},o.angleB=s.angle,r.set(s,!1),a.trigger(e,"startdrag",{mouse:n,body:s});break}}}else o.bodyB=e.body=null,o.pointB=null,s&&a.trigger(e,"enddrag",{mouse:n,body:s})},o._triggerEvents=function(e){
var t=e.mouse,n=t.sourceEvents;n.mousemove&&a.trigger(e,"mousemove",{mouse:t}),n.mousedown&&a.trigger(e,"mousedown",{mouse:t}),n.mouseup&&a.trigger(e,"mouseup",{mouse:t}),s.clearSourceEvents(t)}}()},{"../body/Composite":2,"../collision/Detector":4,"../core/Common":12,"../core/Events":14,"../core/Mouse":17,"../core/Sleeping":20,"../geometry/Bounds":24,"../geometry/Vertices":28,"./Constraint":10}],12:[function(e,t,n){var o={};t.exports=o,function(){o._nextId=0,o._seed=0,o._nowStartTime=+new Date,o.extend=function(e,t){var n,i;"boolean"==typeof t?(n=2,i=t):(n=1,i=!0);for(var r=n;r<arguments.length;r++){var s=arguments[r];if(s)for(var a in s)i&&s[a]&&s[a].constructor===Object?e[a]&&e[a].constructor!==Object?e[a]=s[a]:(e[a]=e[a]||{},o.extend(e[a],i,s[a])):e[a]=s[a]}return e},o.clone=function(e,t){return o.extend({},t,e)},o.keys=function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t},o.values=function(e){var t=[];if(Object.keys){
for(var n=Object.keys(e),o=0;o<n.length;o++)t.push(e[n[o]]);return t}for(var i in e)t.push(e[i]);return t},o.get=function(e,t,n,o){t=t.split(".").slice(n,o);for(var i=0;i<t.length;i+=1)e=e[t[i]];return e},o.set=function(e,t,n,i,r){var s=t.split(".").slice(i,r);return o.get(e,t,0,-1)[s[s.length-1]]=n,n},o.shuffle=function(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(o.random()*(t+1)),i=e[t];e[t]=e[n],e[n]=i}return e},o.choose=function(e){return e[Math.floor(o.random()*e.length)]},o.isElement=function(e){return"undefined"!=typeof HTMLElement?e instanceof HTMLElement:!(!e.nodeType||!e.nodeName)},o.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o.isFunction=function(e){return"function"==typeof e},o.isPlainObject=function(e){return"object"==typeof e&&e.constructor===Object},o.isString=function(e){return"[object String]"===toString.call(e)},o.clamp=function(e,t,n){return e<t?t:e>n?n:e},o.sign=function(e){return e<0?-1:1},o.now=function(){
if(window.performance){if(window.performance.now)return window.performance.now();if(window.performance.webkitNow)return window.performance.webkitNow()}return new Date-o._nowStartTime},o.random=function(t,n){return t=void 0!==t?t:0,n=void 0!==n?n:1,t+e()*(n-t)};var e=function(){return o._seed=(9301*o._seed+49297)%233280,o._seed/233280};o.colorToNumber=function(e){return e=e.replace("#",""),3==e.length&&(e=e.charAt(0)+e.charAt(0)+e.charAt(1)+e.charAt(1)+e.charAt(2)+e.charAt(2)),parseInt(e,16)},o.logLevel=1,o.log=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.log.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.info=function(){console&&o.logLevel>0&&o.logLevel<=2&&console.info.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warn=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.warn.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.nextId=function(){return o._nextId++},
o.indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},o.map=function(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o<e.length;o+=1)n.push(t(e[o]));return n},o.topologicalSort=function(e){var t=[],n=[],i=[];for(var r in e)n[r]||i[r]||o._topologicalSort(r,n,i,e,t);return t},o._topologicalSort=function(e,t,n,i,r){var s=i[e]||[];n[e]=!0;for(var a=0;a<s.length;a+=1){var l=s[a];n[l]||(t[l]||o._topologicalSort(l,t,n,i,r))}n[e]=!1,t[e]=!0,r.push(e)},o.chain=function(){for(var e=[],t=0;t<arguments.length;t+=1){var n=arguments[t];n._chained?e.push.apply(e,n._chained):e.push(n)}var o=function(){for(var t,n=new Array(arguments.length),o=0,i=arguments.length;o<i;o++)n[o]=arguments[o];for(o=0;o<e.length;o+=1){var r=e[o].apply(t,n);void 0!==r&&(t=r)}return t};return o._chained=e,o},o.chainPathBefore=function(e,t,n){return o.set(e,t,o.chain(n,o.get(e,t)))},o.chainPathAfter=function(e,t,n){return o.set(e,t,o.chain(o.get(e,t),n))}}()},{}],
13:[function(e,t,n){var o={};t.exports=o;var i=e("../body/World"),r=e("./Sleeping"),s=e("../collision/Resolver"),a=e("../render/Render"),l=e("../collision/Pairs"),c=(e("./Metrics"),e("../collision/Grid")),d=e("../collision/Detector"),u=e("./Events"),p=e("../body/Composite"),f=e("../constraint/Constraint"),m=e("./Common"),v=e("../body/Body");!function(){o.create=function(e,t){t=m.isElement(e)?t:e,e=m.isElement(e)?e:null,t=t||{},(e||t.render)&&m.warn("Engine.create: engine.render is deprecated (see docs)");var n={positionIterations:6,velocityIterations:4,constraintIterations:2,enableSleeping:!1,events:[],plugin:{},timing:{timestamp:0,timeScale:1},broadphase:{controller:c}},o=m.extend(n,t);if(e||o.render){var r={element:e,controller:a};o.render=m.extend(r,o.render)}return o.render&&o.render.controller&&(o.render=o.render.controller.create(o.render)),o.render&&(o.render.engine=o),o.world=t.world||i.create(o.world),o.pairs=l.create(),
o.broadphase=o.broadphase.controller.create(o.broadphase),o.metrics=o.metrics||{extended:!1},o.world.grid=o.broadphase,o},o.update=function(e,t,n){t=t||1e3/60,n=n||1;var i,a=e.world,l=e.timing,c=e.broadphase;l.timestamp+=t*l.timeScale;var m={timestamp:l.timestamp};u.trigger(e,"beforeUpdate",m);var v=p.allBodies(a),y=p.allConstraints(a),g=y.length>0;if(e.enableSleeping&&r.update(v,l.timeScale),o._bodiesApplyGravity(v,a.gravity),o._bodiesUpdate(v,t,l.timeScale,n,a.bounds),g){for(f.preSolveAll(v),i=0;i<e.constraintIterations;i++)f.solveAll(y,l.timeScale);f.postSolveAll(v,!0)}c.controller&&c.controller.update(c,v,e),a.isModified&&p.setModified(a,!1,!1,!0),d.collisions(v,e);var x=e.pairs;for(e.enableSleeping&&r.afterCollisions(x.list,l.timeScale),x.collisionStart.length>0&&u.trigger(e,"collisionStart",{pairs:x.collisionStart}),s.preSolvePosition(x.list),i=0;i<e.positionIterations;i++)s.solvePosition(x.list,v,l.timeScale);if(s.postSolvePosition(v),g){for(f.preSolveAll(v),
i=0;i<e.constraintIterations;i++)f.solveAll(y,l.timeScale);f.postSolveAll(v)}for(s.preSolveVelocity(x.list),i=0;i<e.velocityIterations;i++)s.solveVelocity(x.list,l.timeScale);return x.collisionActive.length>0&&u.trigger(e,"collisionActive",{pairs:x.collisionActive}),x.collisionEnd.length>0&&u.trigger(e,"collisionEnd",{pairs:x.collisionEnd}),o._bodiesClearForces(v),u.trigger(e,"afterUpdate",m),e},o.merge=function(e,t){if(m.extend(e,t),t.world){e.world=t.world,o.clear(e);for(var n=p.allBodies(e.world),i=0;i<n.length;i++){var s=n[i];r.set(s,!1),s.id=m.nextId()}}},o.clear=function(e){var t=e.world;l.clear(e.pairs);var n=e.broadphase;if(n.controller){var o=p.allBodies(t);n.controller.clear(n,o)}},o._bodiesClearForces=function(e){for(var t=0;t<e.length;t++){var n=e[t];n.force.x=0,n.force.y=0,n.torque=0}},o._bodiesApplyGravity=function(e,t){var n=void 0!==t.scale?t.scale:.001;if((0!==t.x||0!==t.y)&&0!==n)for(var o=0;o<e.length;o++){var i=e[o]
;i.isStatic||i.isSleeping||(i.force.y+=i.mass*t.y*n,i.force.x+=i.mass*t.x*n)}},o._bodiesUpdate=function(e,t,n,o,i){for(var r=0;r<e.length;r++){var s=e[r];s.isStatic||s.isSleeping||v.update(s,t,n,o)}}}()},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Detector":4,"../collision/Grid":5,"../collision/Pairs":6,"../collision/Resolver":8,"../constraint/Constraint":10,"../render/Render":30,"./Common":12,"./Events":14,"./Metrics":16,"./Sleeping":20}],14:[function(e,t,n){var o={};t.exports=o;var i=e("./Common");!function(){o.on=function(e,t,n){for(var o,i=t.split(" "),r=0;r<i.length;r++)o=i[r],e.events=e.events||{},e.events[o]=e.events[o]||[],e.events[o].push(n);return n},o.off=function(e,t,n){if(!t)return void(e.events={});"function"==typeof t&&(n=t,t=i.keys(e.events).join(" "));for(var o=t.split(" "),r=0;r<o.length;r++){var s=e.events[o[r]],a=[];if(n&&s)for(var l=0;l<s.length;l++)s[l]!==n&&a.push(s[l]);e.events[o[r]]=a}},o.trigger=function(e,t,n){
var o,r,s,a,l=e.events;if(l&&Object.keys(l).length>0){n||(n={}),o=t.split(" ");for(var c=0;c<o.length;c++)if(r=o[c],s=l[r]){a=i.clone(n,!1),a.name=r,a.source=e;for(var d=0;d<s.length;d++)s[d].apply(e,[a])}}}}()},{"./Common":12}],15:[function(e,t,n){var o={};t.exports=o;var i=e("./Plugin"),r=e("./Common");!function(){o.name="matter-js",o.version="0.15.0",o.uses=[],o.used=[],o.use=function(){i.use(o,Array.prototype.slice.call(arguments))},o.before=function(e,t){return e=e.replace(/^Matter./,""),r.chainPathBefore(o,e,t)},o.after=function(e,t){return e=e.replace(/^Matter./,""),r.chainPathAfter(o,e,t)}}()},{"./Common":12,"./Plugin":18}],16:[function(e,t,n){},{"../body/Composite":2,"./Common":12}],17:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Common");!function(){o.create=function(e){var t={};return e||i.log("Mouse.create: element was undefined, defaulting to document.body","warn"),t.element=e||document.body,t.absolute={x:0,y:0},t.position={x:0,y:0},t.mousedownPosition={x:0,y:0},
t.mouseupPosition={x:0,y:0},t.offset={x:0,y:0},t.scale={x:1,y:1},t.wheelDelta=0,t.button=-1,t.pixelRatio=t.element.getAttribute("data-pixel-ratio")||1,t.sourceEvents={mousemove:null,mousedown:null,mouseup:null,mousewheel:null},t.mousemove=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches&&(t.button=0,e.preventDefault()),t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.sourceEvents.mousemove=e},t.mousedown=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio);e.changedTouches?(t.button=0,e.preventDefault()):t.button=e.button,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.mousedownPosition.x=t.position.x,t.mousedownPosition.y=t.position.y,t.sourceEvents.mousedown=e},t.mouseup=function(e){var n=o._getRelativeMousePosition(e,t.element,t.pixelRatio)
;e.changedTouches&&e.preventDefault(),t.button=-1,t.absolute.x=n.x,t.absolute.y=n.y,t.position.x=t.absolute.x*t.scale.x+t.offset.x,t.position.y=t.absolute.y*t.scale.y+t.offset.y,t.mouseupPosition.x=t.position.x,t.mouseupPosition.y=t.position.y,t.sourceEvents.mouseup=e},t.mousewheel=function(e){t.wheelDelta=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),e.preventDefault()},o.setElement(t,t.element),t},o.setElement=function(e,t){e.element=t,t.addEventListener("mousemove",e.mousemove),t.addEventListener("mousedown",e.mousedown),t.addEventListener("mouseup",e.mouseup),t.addEventListener("mousewheel",e.mousewheel),t.addEventListener("DOMMouseScroll",e.mousewheel),t.addEventListener("touchmove",e.mousemove),t.addEventListener("touchstart",e.mousedown),t.addEventListener("touchend",e.mouseup)},o.clearSourceEvents=function(e){e.sourceEvents.mousemove=null,e.sourceEvents.mousedown=null,e.sourceEvents.mouseup=null,e.sourceEvents.mousewheel=null,e.wheelDelta=0},o.setOffset=function(e,t){
e.offset.x=t.x,e.offset.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o.setScale=function(e,t){e.scale.x=t.x,e.scale.y=t.y,e.position.x=e.absolute.x*e.scale.x+e.offset.x,e.position.y=e.absolute.y*e.scale.y+e.offset.y},o._getRelativeMousePosition=function(e,t,n){var o,i,r=t.getBoundingClientRect(),s=document.documentElement||document.body.parentNode||document.body,a=void 0!==window.pageXOffset?window.pageXOffset:s.scrollLeft,l=void 0!==window.pageYOffset?window.pageYOffset:s.scrollTop,c=e.changedTouches;return c?(o=c[0].pageX-r.left-a,i=c[0].pageY-r.top-l):(o=e.pageX-r.left-a,i=e.pageY-r.top-l),{x:o/(t.clientWidth/(t.width||t.clientWidth)*n),y:i/(t.clientHeight/(t.height||t.clientHeight)*n)}}}()},{"../core/Common":12}],18:[function(e,t,n){var o={};t.exports=o;var i=e("./Common");!function(){o._registry={},o.register=function(e){if(o.isPlugin(e)||i.warn("Plugin.register:",o.toString(e),"does not implement all required fields."),
e.name in o._registry){var t=o._registry[e.name],n=o.versionParse(e.version).number,r=o.versionParse(t.version).number;n>r?(i.warn("Plugin.register:",o.toString(t),"was upgraded to",o.toString(e)),o._registry[e.name]=e):n<r?i.warn("Plugin.register:",o.toString(t),"can not be downgraded to",o.toString(e)):e!==t&&i.warn("Plugin.register:",o.toString(e),"is already registered to different plugin object")}else o._registry[e.name]=e;return e},o.resolve=function(e){return o._registry[o.dependencyParse(e).name]},o.toString=function(e){return"string"==typeof e?e:(e.name||"anonymous")+"@"+(e.version||e.range||"0.0.0")},o.isPlugin=function(e){return e&&e.name&&e.version&&e.install},o.isUsed=function(e,t){return e.used.indexOf(t)>-1},o.isFor=function(e,t){var n=e.for&&o.dependencyParse(e.for);return!e.for||t.name===n.name&&o.versionSatisfies(t.version,n.range)},o.use=function(e,t){if(e.uses=(e.uses||[]).concat(t||[]),
0===e.uses.length)return void i.warn("Plugin.use:",o.toString(e),"does not specify any dependencies to install.");for(var n=o.dependencies(e),r=i.topologicalSort(n),s=[],a=0;a<r.length;a+=1)if(r[a]!==e.name){var l=o.resolve(r[a]);l?o.isUsed(e,l.name)||(o.isFor(l,e)||(i.warn("Plugin.use:",o.toString(l),"is for",l.for,"but installed on",o.toString(e)+"."),l._warned=!0),l.install?l.install(e):(i.warn("Plugin.use:",o.toString(l),"does not specify an install function."),l._warned=!0),l._warned?(s.push("🔶 "+o.toString(l)),delete l._warned):s.push("✅ "+o.toString(l)),e.used.push(l.name)):s.push("❌ "+r[a])}s.length>0&&i.info(s.join(" "))},o.dependencies=function(e,t){var n=o.dependencyParse(e),r=n.name;if(t=t||{},!(r in t)){e=o.resolve(e)||e,t[r]=i.map(e.uses||[],function(t){o.isPlugin(t)&&o.register(t);var r=o.dependencyParse(t),s=o.resolve(t)
;return s&&!o.versionSatisfies(s.version,r.range)?(i.warn("Plugin.dependencies:",o.toString(s),"does not satisfy",o.toString(r),"used by",o.toString(n)+"."),s._warned=!0,e._warned=!0):s||(i.warn("Plugin.dependencies:",o.toString(t),"used by",o.toString(n),"could not be resolved."),e._warned=!0),r.name});for(var s=0;s<t[r].length;s+=1)o.dependencies(t[r][s],t);return t}},o.dependencyParse=function(e){if(i.isString(e)){return/^[\w-]+(@(\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?))?$/.test(e)||i.warn("Plugin.dependencyParse:",e,"is not a valid dependency string."),{name:e.split("@")[0],range:e.split("@")[1]||"*"}}return{name:e.name,range:e.range||e.version}},o.versionParse=function(e){/^\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?$/.test(e)||i.warn("Plugin.versionParse:",e,"is not a valid version or range.");var t=e.split("-");e=t[0];var n=isNaN(Number(e[0])),o=n?e.substr(1):e,r=i.map(o.split("."),function(e){return Number(e)});return{isRange:n,version:o,range:e,operator:n?e[0]:"",parts:r,
prerelease:t[1],number:1e8*r[0]+1e4*r[1]+r[2]}},o.versionSatisfies=function(e,t){t=t||"*";var n=o.versionParse(t),i=n.parts,r=o.versionParse(e),s=r.parts;if(n.isRange){if("*"===n.operator||"*"===e)return!0;if("~"===n.operator)return s[0]===i[0]&&s[1]===i[1]&&s[2]>=i[2];if("^"===n.operator)return i[0]>0?s[0]===i[0]&&r.number>=n.number:i[1]>0?s[1]===i[1]&&s[2]>=i[2]:s[2]===i[2]}return e===t||"*"===e}}()},{"./Common":12}],19:[function(e,t,n){var o={};t.exports=o;var i=e("./Events"),r=e("./Engine"),s=e("./Common");!function(){var e,t;if("undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),!e){var n;e=function(e){n=setTimeout(function(){e(s.now())},1e3/60)},t=function(){clearTimeout(n)}}o.create=function(e){var t={fps:60,correction:1,deltaSampleSize:60,
counterTimestamp:0,frameCounter:0,deltaHistory:[],timePrev:null,timeScalePrev:1,frameRequestId:null,isFixed:!1,enabled:!0},n=s.extend(t,e);return n.delta=n.delta||1e3/n.fps,n.deltaMin=n.deltaMin||1e3/n.fps,n.deltaMax=n.deltaMax||1e3/(.5*n.fps),n.fps=1e3/n.delta,n},o.run=function(t,n){return void 0!==t.positionIterations&&(n=t,t=o.create()),function i(r){t.frameRequestId=e(i),r&&t.enabled&&o.tick(t,n,r)}(),t},o.tick=function(e,t,n){var o,s=t.timing,a=1,l={timestamp:s.timestamp};i.trigger(e,"beforeTick",l),i.trigger(t,"beforeTick",l),e.isFixed?o=e.delta:(o=n-e.timePrev||e.delta,e.timePrev=n,e.deltaHistory.push(o),e.deltaHistory=e.deltaHistory.slice(-e.deltaSampleSize),o=Math.min.apply(null,e.deltaHistory),o=o<e.deltaMin?e.deltaMin:o,o=o>e.deltaMax?e.deltaMax:o,a=o/e.delta,e.delta=o),0!==e.timeScalePrev&&(a*=s.timeScale/e.timeScalePrev),0===s.timeScale&&(a=0),e.timeScalePrev=s.timeScale,e.correction=a,e.frameCounter+=1,
n-e.counterTimestamp>=1e3&&(e.fps=e.frameCounter*((n-e.counterTimestamp)/1e3),e.counterTimestamp=n,e.frameCounter=0),i.trigger(e,"tick",l),i.trigger(t,"tick",l),t.world.isModified&&t.render&&t.render.controller&&t.render.controller.clear&&t.render.controller.clear(t.render),i.trigger(e,"beforeUpdate",l),r.update(t,o,a),i.trigger(e,"afterUpdate",l),t.render&&t.render.controller&&(i.trigger(e,"beforeRender",l),i.trigger(t,"beforeRender",l),t.render.controller.world(t.render),i.trigger(e,"afterRender",l),i.trigger(t,"afterRender",l)),i.trigger(e,"afterTick",l),i.trigger(t,"afterTick",l)},o.stop=function(e){t(e.frameRequestId)},o.start=function(e,t){o.run(e,t)}}()},{"./Common":12,"./Engine":13,"./Events":14}],20:[function(e,t,n){var o={};t.exports=o;var i=e("./Events");!function(){o._motionWakeThreshold=.18,o._motionSleepThreshold=.08,o._minBias=.9,o.update=function(e,t){for(var n=t*t*t,i=0;i<e.length;i++){var r=e[i],s=r.speed*r.speed+r.angularSpeed*r.angularSpeed
;if(0===r.force.x&&0===r.force.y){var a=Math.min(r.motion,s),l=Math.max(r.motion,s);r.motion=o._minBias*a+(1-o._minBias)*l,r.sleepThreshold>0&&r.motion<o._motionSleepThreshold*n?(r.sleepCounter+=1,r.sleepCounter>=r.sleepThreshold&&o.set(r,!0)):r.sleepCounter>0&&(r.sleepCounter-=1)}else o.set(r,!1)}},o.afterCollisions=function(e,t){for(var n=t*t*t,i=0;i<e.length;i++){var r=e[i],s=r.parentA,a=r.parentB;if(!(s.isSleeping&&a.isSleeping||s.isStatic||a.isStatic)&&(s.isSleeping||a.isSleeping)){var l,c;s.isSleeping?(l=s,c=a):(l=a,c=s),c.motion>o._motionWakeThreshold*n&&o.set(l,!1)}}},o.set=function(e,t){var n=e.isSleeping;t?(e.isSleeping=!0,e.sleepCounter=e.sleepThreshold,e.positionImpulse.x=0,e.positionImpulse.y=0,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.anglePrev=e.angle,e.speed=0,e.angularSpeed=0,e.motion=0,n||i.trigger(e,"sleepStart")):(e.isSleeping=!1,e.sleepCounter=0,n&&i.trigger(e,"sleepEnd"))}}()},{"./Events":14}],21:[function(e,t,n){(function(n){var o={}
;t.exports=o;var i=e("../geometry/Vertices"),r=e("../core/Common"),s=e("../body/Body"),a=e("../geometry/Bounds"),l=e("../geometry/Vector"),c="undefined"!=typeof window?window.decomp:void 0!==n?n.decomp:null;!function(){o.rectangle=function(e,t,n,o,a){a=a||{};var l={label:"Rectangle Body",position:{x:e,y:t},vertices:i.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};if(a.chamfer){var c=a.chamfer;l.vertices=i.chamfer(l.vertices,c.radius,c.quality,c.qualityMin,c.qualityMax),delete a.chamfer}return s.create(r.extend({},l,a))},o.trapezoid=function(e,t,n,o,a,l){l=l||{},a*=.5;var c,d=(1-2*a)*n,u=n*a,p=u+d,f=p+u;c=a<.5?"L 0 0 L "+u+" "+-o+" L "+p+" "+-o+" L "+f+" 0":"L 0 0 L "+p+" "+-o+" L "+f+" 0";var m={label:"Trapezoid Body",position:{x:e,y:t},vertices:i.fromPath(c)};if(l.chamfer){var v=l.chamfer;m.vertices=i.chamfer(m.vertices,v.radius,v.quality,v.qualityMin,v.qualityMax),delete l.chamfer}return s.create(r.extend({},m,l))},o.circle=function(e,t,n,i,s){i=i||{};var a={label:"Circle Body",
circleRadius:n};s=s||25;var l=Math.ceil(Math.max(10,Math.min(s,n)));return l%2==1&&(l+=1),o.polygon(e,t,l,n,r.extend({},a,i))},o.polygon=function(e,t,n,a,l){if(l=l||{},n<3)return o.circle(e,t,a,l);for(var c=2*Math.PI/n,d="",u=.5*c,p=0;p<n;p+=1){var f=u+p*c,m=Math.cos(f)*a,v=Math.sin(f)*a;d+="L "+m.toFixed(3)+" "+v.toFixed(3)+" "}var y={label:"Polygon Body",position:{x:e,y:t},vertices:i.fromPath(d)};if(l.chamfer){var g=l.chamfer;y.vertices=i.chamfer(y.vertices,g.radius,g.quality,g.qualityMin,g.qualityMax),delete l.chamfer}return s.create(r.extend({},y,l))},o.fromVertices=function(e,t,n,o,d,u,p){var f,m,v,y,g,x,h,b,w;for(o=o||{},m=[],d=void 0!==d&&d,u=void 0!==u?u:.01,p=void 0!==p?p:10,c||r.warn("Bodies.fromVertices: poly-decomp.js required. Could not decompose vertices. Fallback to convex hull."),r.isArray(n[0])||(n=[n]),b=0;b<n.length;b+=1)if(y=n[b],(v=i.isConvex(y))||!c)y=v?i.clockwiseSort(y):i.hull(y),m.push({position:{x:e,y:t},vertices:y});else{var S=y.map(function(e){
return[e.x,e.y]});c.makeCCW(S),!1!==u&&c.removeCollinearPoints(S,u);var C=c.quickDecomp(S);for(g=0;g<C.length;g++){var P=C[g],A=P.map(function(e){return{x:e[0],y:e[1]}});p>0&&i.area(A)<p||m.push({position:i.centre(A),vertices:A})}}for(g=0;g<m.length;g++)m[g]=s.create(r.extend(m[g],o));if(d){for(g=0;g<m.length;g++){var B=m[g];for(x=g+1;x<m.length;x++){var M=m[x];if(a.overlaps(B.bounds,M.bounds)){var k=B.vertices,I=M.vertices;for(h=0;h<B.vertices.length;h++)for(w=0;w<M.vertices.length;w++){var _=l.magnitudeSquared(l.sub(k[(h+1)%k.length],I[w])),T=l.magnitudeSquared(l.sub(k[h],I[(w+1)%I.length]));_<5&&T<5&&(k[h].isInternal=!0,I[w].isInternal=!0)}}}}}return m.length>1?(f=s.create(r.extend({parts:m.slice(0)},o)),s.setPosition(f,{x:e,y:t}),f):m[0]}}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../body/Body":1,"../core/Common":12,"../geometry/Bounds":24,"../geometry/Vector":27,"../geometry/Vertices":28}],
22:[function(e,t,n){var o={};t.exports=o;var i=e("../body/Composite"),r=e("../constraint/Constraint"),s=e("../core/Common"),a=e("../body/Body"),l=e("./Bodies");!function(){o.stack=function(e,t,n,o,r,s,l){for(var c,d=i.create({label:"Stack"}),u=e,p=t,f=0,m=0;m<o;m++){for(var v=0,y=0;y<n;y++){var g=l(u,p,y,m,c,f);if(g){var x=g.bounds.max.y-g.bounds.min.y,h=g.bounds.max.x-g.bounds.min.x;x>v&&(v=x),a.translate(g,{x:.5*h,y:.5*x}),u=g.bounds.max.x+r,i.addBody(d,g),c=g,f+=1}else u+=r}p+=v+s,u=e}return d},o.chain=function(e,t,n,o,a,l){for(var c=e.bodies,d=1;d<c.length;d++){var u=c[d-1],p=c[d],f=u.bounds.max.y-u.bounds.min.y,m=u.bounds.max.x-u.bounds.min.x,v=p.bounds.max.y-p.bounds.min.y,y=p.bounds.max.x-p.bounds.min.x,g={bodyA:u,pointA:{x:m*t,y:f*n},bodyB:p,pointB:{x:y*o,y:v*a}},x=s.extend(g,l);i.addConstraint(e,r.create(x))}return e.label+=" Chain",e},o.mesh=function(e,t,n,o,a){var l,c,d,u,p,f=e.bodies;for(l=0;l<n;l++){for(c=1;c<t;c++)d=f[c-1+l*t],u=f[c+l*t],
i.addConstraint(e,r.create(s.extend({bodyA:d,bodyB:u},a)));if(l>0)for(c=0;c<t;c++)d=f[c+(l-1)*t],u=f[c+l*t],i.addConstraint(e,r.create(s.extend({bodyA:d,bodyB:u},a))),o&&c>0&&(p=f[c-1+(l-1)*t],i.addConstraint(e,r.create(s.extend({bodyA:p,bodyB:u},a)))),o&&c<t-1&&(p=f[c+1+(l-1)*t],i.addConstraint(e,r.create(s.extend({bodyA:p,bodyB:u},a))))}return e.label+=" Mesh",e},o.pyramid=function(e,t,n,i,r,s,l){return o.stack(e,t,n,i,r,s,function(t,o,s,c,d,u){var p=Math.min(i,Math.ceil(n/2)),f=d?d.bounds.max.x-d.bounds.min.x:0;if(!(c>p)){c=p-c;var m=c,v=n-1-c;if(!(s<m||s>v)){1===u&&a.translate(d,{x:(s+(n%2==1?1:-1))*f,y:0});return l(e+(d?s*f:0)+s*r,o,s,c,d,u)}}})},o.newtonsCradle=function(e,t,n,o,s){for(var a=i.create({label:"Newtons Cradle"}),c=0;c<n;c++){var d=l.circle(e+c*(1.9*o),t+s,o,{inertia:1/0,restitution:1,friction:0,frictionAir:1e-4,slop:1}),u=r.create({pointA:{x:e+c*(1.9*o),y:t},bodyB:d});i.addBody(a,d),i.addConstraint(a,u)}return a},o.car=function(e,t,n,o,s){
var c=a.nextGroup(!0),d=.5*-n+20,u=.5*n-20,p=i.create({label:"Car"}),f=l.rectangle(e,t,n,o,{collisionFilter:{group:c},chamfer:{radius:.5*o},density:2e-4}),m=l.circle(e+d,t+0,s,{collisionFilter:{group:c},friction:.8}),v=l.circle(e+u,t+0,s,{collisionFilter:{group:c},friction:.8}),y=r.create({bodyB:f,pointB:{x:d,y:0},bodyA:m,stiffness:1,length:0}),g=r.create({bodyB:f,pointB:{x:u,y:0},bodyA:v,stiffness:1,length:0});return i.addBody(p,f),i.addBody(p,m),i.addBody(p,v),i.addConstraint(p,y),i.addConstraint(p,g),p},o.softBody=function(e,t,n,i,r,a,c,d,u,p){u=s.extend({inertia:1/0},u),p=s.extend({stiffness:.2,render:{type:"line",anchors:!1}},p);var f=o.stack(e,t,n,i,r,a,function(e,t){return l.circle(e,t,d,u)});return o.mesh(f,n,i,c,p),f.label="Soft Body",f}}()},{"../body/Body":1,"../body/Composite":2,"../constraint/Constraint":10,"../core/Common":12,"./Bodies":21}],23:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("../core/Common");!function(){o.fromVertices=function(e){
for(var t={},n=0;n<e.length;n++){var o=(n+1)%e.length,s=i.normalise({x:e[o].y-e[n].y,y:e[n].x-e[o].x}),a=0===s.y?1/0:s.x/s.y;a=a.toFixed(3).toString(),t[a]=s}return r.values(t)},o.rotate=function(e,t){if(0!==t)for(var n=Math.cos(t),o=Math.sin(t),i=0;i<e.length;i++){var r,s=e[i];r=s.x*n-s.y*o,s.y=s.x*o+s.y*n,s.x=r}}}()},{"../core/Common":12,"../geometry/Vector":27}],24:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e){var t={min:{x:0,y:0},max:{x:0,y:0}};return e&&o.update(t,e),t},o.update=function(e,t,n){e.min.x=1/0,e.max.x=-1/0,e.min.y=1/0,e.max.y=-1/0;for(var o=0;o<t.length;o++){var i=t[o];i.x>e.max.x&&(e.max.x=i.x),i.x<e.min.x&&(e.min.x=i.x),i.y>e.max.y&&(e.max.y=i.y),i.y<e.min.y&&(e.min.y=i.y)}n&&(n.x>0?e.max.x+=n.x:e.min.x+=n.x,n.y>0?e.max.y+=n.y:e.min.y+=n.y)},o.contains=function(e,t){return t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y},o.overlaps=function(e,t){return e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y},
o.translate=function(e,t){e.min.x+=t.x,e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},o.shift=function(e,t){var n=e.max.x-e.min.x,o=e.max.y-e.min.y;e.min.x=t.x,e.max.x=t.x+n,e.min.y=t.y,e.max.y=t.y+o}}()},{}],25:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e){for(var t=new Array(e),n=0;n<t.length;n++)t[n]={min:0,max:0};return t},o.verticesOntoAxes=function(e,t,n){for(var o=0;o<e.length;o++){for(var i=e[o],r=n[o],s=r.x,a=r.y,l=t[0],c=l.x*s+l.y*a,d=c,u=1;u<t.length;u+=1){l=t[u];var p=l.x*s+l.y*a;p>d?d=p:p<c&&(c=p)}i.min=c,i.max=d}}}()},{}],26:[function(e,t,n){var o={};t.exports=o;e("../geometry/Bounds");!function(){o.pathToVertices=function(e,t){var n,i,r,s,a,l,c,d,u,p,f,m,v=[],y=0,g=0,x=0;t=t||15;var h=function(e,t,n){var o=n%2==1&&n>1;if(!u||e!=u.x||t!=u.y){u&&o?(f=u.x,m=u.y):(f=0,m=0);var i={x:f+e,y:m+t};!o&&u||(u=i),v.push(i),g=f+e,x=m+t}},b=function(e){var t=e.pathSegTypeAsLetter.toUpperCase();if("Z"!==t){switch(t){case"M":case"L":case"T":case"C":case"S":case"Q":
g=e.x,x=e.y;break;case"H":g=e.x;break;case"V":x=e.y}h(g,x,e.pathSegType)}};for(o._svgPathToAbsolute(e),r=e.getTotalLength(),l=[],n=0;n<e.pathSegList.numberOfItems;n+=1)l.push(e.pathSegList.getItem(n));for(c=l.concat();y<r;){if(p=e.getPathSegAtLength(y),(a=l[p])!=d){for(;c.length&&c[0]!=a;)b(c.shift());d=a}switch(a.pathSegTypeAsLetter.toUpperCase()){case"C":case"T":case"S":case"Q":case"A":s=e.getPointAtLength(y),h(s.x,s.y,0)}y+=t}for(n=0,i=c.length;n<i;++n)b(c[n]);return v},o._svgPathToAbsolute=function(e){for(var t,n,o,i,r,s,a=e.pathSegList,l=0,c=0,d=a.numberOfItems,u=0;u<d;++u){var p=a.getItem(u),f=p.pathSegTypeAsLetter;if(/[MLHVCSQTA]/.test(f))"x"in p&&(l=p.x),"y"in p&&(c=p.y);else switch("x1"in p&&(o=l+p.x1),"x2"in p&&(r=l+p.x2),"y1"in p&&(i=c+p.y1),"y2"in p&&(s=c+p.y2),"x"in p&&(l+=p.x),"y"in p&&(c+=p.y),f){case"m":a.replaceItem(e.createSVGPathSegMovetoAbs(l,c),u);break;case"l":a.replaceItem(e.createSVGPathSegLinetoAbs(l,c),u);break;case"h":
a.replaceItem(e.createSVGPathSegLinetoHorizontalAbs(l),u);break;case"v":a.replaceItem(e.createSVGPathSegLinetoVerticalAbs(c),u);break;case"c":a.replaceItem(e.createSVGPathSegCurvetoCubicAbs(l,c,o,i,r,s),u);break;case"s":a.replaceItem(e.createSVGPathSegCurvetoCubicSmoothAbs(l,c,r,s),u);break;case"q":a.replaceItem(e.createSVGPathSegCurvetoQuadraticAbs(l,c,o,i),u);break;case"t":a.replaceItem(e.createSVGPathSegCurvetoQuadraticSmoothAbs(l,c),u);break;case"a":a.replaceItem(e.createSVGPathSegArcAbs(l,c,p.r1,p.r2,p.angle,p.largeArcFlag,p.sweepFlag),u);break;case"z":case"Z":l=t,c=n}"M"!=f&&"m"!=f||(t=l,n=c)}}}()},{"../geometry/Bounds":24}],27:[function(e,t,n){var o={};t.exports=o,function(){o.create=function(e,t){return{x:e||0,y:t||0}},o.clone=function(e){return{x:e.x,y:e.y}},o.magnitude=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},o.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y},o.rotate=function(e,t,n){var o=Math.cos(t),i=Math.sin(t);n||(n={});var r=e.x*o-e.y*i;return n.y=e.x*i+e.y*o,
n.x=r,n},o.rotateAbout=function(e,t,n,o){var i=Math.cos(t),r=Math.sin(t);o||(o={});var s=n.x+((e.x-n.x)*i-(e.y-n.y)*r);return o.y=n.y+((e.x-n.x)*r+(e.y-n.y)*i),o.x=s,o},o.normalise=function(e){var t=o.magnitude(e);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},o.dot=function(e,t){return e.x*t.x+e.y*t.y},o.cross=function(e,t){return e.x*t.y-e.y*t.x},o.cross3=function(e,t,n){return(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)},o.add=function(e,t,n){return n||(n={}),n.x=e.x+t.x,n.y=e.y+t.y,n},o.sub=function(e,t,n){return n||(n={}),n.x=e.x-t.x,n.y=e.y-t.y,n},o.mult=function(e,t){return{x:e.x*t,y:e.y*t}},o.div=function(e,t){return{x:e.x/t,y:e.y/t}},o.perp=function(e,t){return t=!0===t?-1:1,{x:t*-e.y,y:t*e.x}},o.neg=function(e){return{x:-e.x,y:-e.y}},o.angle=function(e,t){return Math.atan2(t.y-e.y,t.x-e.x)},o._temp=[o.create(),o.create(),o.create(),o.create(),o.create(),o.create()]}()},{}],28:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vector"),r=e("../core/Common");!function(){
o.create=function(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++){var r=e[i];n[i]=o.createVertex(t,i,r.x,r.y)}return n},o.createVertex=function(e,t,n,o){return{x:n,y:o,index:t,body:e,isInternal:!1,normalImpulse:0,tangentImpulse:0}},o.fromPath=function(e,t){var n=/L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/gi,i=[];return e.replace(n,function(e,t,n){i.push({x:parseFloat(t),y:parseFloat(n)})}),o.create(i,t)},o.centre=function(e){for(var t,n,r,s=o.area(e,!0),a={x:0,y:0},l=0;l<e.length;l++)r=(l+1)%e.length,t=i.cross(e[l],e[r]),n=i.mult(i.add(e[l],e[r]),t),a=i.add(a,n);return i.div(a,6*s)},o.mean=function(e){for(var t={x:0,y:0},n=0;n<e.length;n++)t.x+=e[n].x,t.y+=e[n].y;return i.div(t,e.length)},o.area=function(e,t){for(var n=0,o=e.length-1,i=0;i<e.length;i++)n+=(e[o].x-e[i].x)*(e[o].y+e[i].y),o=i;return t?n/2:Math.abs(n)/2},o.inertia=function(e,t){for(var n,o,r=0,s=0,a=e,l=0;l<a.length;l++)o=(l+1)%a.length,n=Math.abs(i.cross(a[o],a[l])),
r+=n*(i.dot(a[o],a[o])+i.dot(a[o],a[l])+i.dot(a[l],a[l])),s+=n;return t/6*(r/s)},o.translate=function(e,t,n){var o;if(n)for(o=0;o<e.length;o++)e[o].x+=t.x*n,e[o].y+=t.y*n;else for(o=0;o<e.length;o++)e[o].x+=t.x,e[o].y+=t.y;return e},o.rotate=function(e,t,n){if(0!==t){for(var o=Math.cos(t),i=Math.sin(t),r=0;r<e.length;r++){var s=e[r],a=s.x-n.x,l=s.y-n.y;s.x=n.x+(a*o-l*i),s.y=n.y+(a*i+l*o)}return e}},o.contains=function(e,t){for(var n=e[0],o=e.length-1;o>=0;o--){var i=e[o];if((t.x-i.x)*(n.y-i.y)+(t.y-i.y)*(i.x-n.x)>0)return!1;n=i}return!0},o.scale=function(e,t,n,r){if(1===t&&1===n)return e;r=r||o.centre(e);for(var s,a,l=0;l<e.length;l++)s=e[l],a=i.sub(s,r),e[l].x=r.x+a.x*t,e[l].y=r.y+a.y*n;return e},o.chamfer=function(e,t,n,o,s){t="number"==typeof t?[t]:t||[8],n=void 0!==n?n:-1,o=o||2,s=s||14;for(var a=[],l=0;l<e.length;l++){var c=e[l-1>=0?l-1:e.length-1],d=e[l],u=e[(l+1)%e.length],p=t[l<t.length?l:t.length-1];if(0!==p){var f=i.normalise({x:d.y-c.y,y:c.x-d.x}),m=i.normalise({x:u.y-d.y,
y:d.x-u.x}),v=Math.sqrt(2*Math.pow(p,2)),y=i.mult(r.clone(f),p),g=i.normalise(i.mult(i.add(f,m),.5)),x=i.sub(d,i.mult(g,v)),h=n;-1===n&&(h=1.75*Math.pow(p,.32)),h=r.clamp(h,o,s),h%2==1&&(h+=1);for(var b=Math.acos(i.dot(f,m)),w=b/h,S=0;S<h;S++)a.push(i.add(i.rotate(y,w*S),x))}else a.push(d)}return a},o.clockwiseSort=function(e){var t=o.mean(e);return e.sort(function(e,n){return i.angle(t,e)-i.angle(t,n)}),e},o.isConvex=function(e){var t,n,o,i,r=0,s=e.length;if(s<3)return null;for(t=0;t<s;t++)if(n=(t+1)%s,o=(t+2)%s,i=(e[n].x-e[t].x)*(e[o].y-e[n].y),i-=(e[n].y-e[t].y)*(e[o].x-e[n].x),i<0?r|=1:i>0&&(r|=2),3===r)return!1;return 0!==r||null},o.hull=function(e){var t,n,o=[],r=[];for(e=e.slice(0),e.sort(function(e,t){var n=e.x-t.x;return 0!==n?n:e.y-t.y}),n=0;n<e.length;n+=1){for(t=e[n];r.length>=2&&i.cross3(r[r.length-2],r[r.length-1],t)<=0;)r.pop();r.push(t)}for(n=e.length-1;n>=0;n-=1){for(t=e[n];o.length>=2&&i.cross3(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return o.pop(),
r.pop(),o.concat(r)}}()},{"../core/Common":12,"../geometry/Vector":27}],29:[function(e,t,n){var o=t.exports=e("../core/Matter");o.Body=e("../body/Body"),o.Composite=e("../body/Composite"),o.World=e("../body/World"),o.Detector=e("../collision/Detector"),o.Grid=e("../collision/Grid"),o.Pairs=e("../collision/Pairs"),o.Query=e("../collision/Query"),o.Resolver=e("../collision/Resolver"),o.SAT=e("../collision/SAT"),o.Constraint=e("../constraint/Constraint"),o.MouseConstraint=e("../constraint/MouseConstraint"),o.Common=e("../core/Common"),o.Engine=e("../core/Engine"),o.Events=e("../core/Events"),o.Mouse=e("../core/Mouse"),o.Runner=e("../core/Runner"),o.Sleeping=e("../core/Sleeping"),o.Plugin=e("../core/Plugin"),o.Bodies=e("../factory/Bodies"),o.Composites=e("../factory/Composites"),o.Axes=e("../geometry/Axes"),o.Bounds=e("../geometry/Bounds"),o.Svg=e("../geometry/Svg"),o.Vector=e("../geometry/Vector"),o.Vertices=e("../geometry/Vertices"),o.Projections=e("../geometry/Projections"),
o.Render=e("../render/Render"),o.RenderPixi=e("../render/RenderPixi"),o.World.add=o.Composite.add,o.World.remove=o.Composite.remove,o.World.addComposite=o.Composite.addComposite,o.World.addBody=o.Composite.addBody,o.World.addConstraint=o.Composite.addConstraint,o.World.clear=o.Composite.clear,o.Engine.run=o.Runner.run},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Detector":4,"../collision/Grid":5,"../collision/Pairs":6,"../collision/Query":7,"../collision/Resolver":8,"../collision/SAT":9,"../constraint/Constraint":10,"../constraint/MouseConstraint":11,"../core/Common":12,"../core/Engine":13,"../core/Events":14,"../core/Matter":15,"../core/Metrics":16,"../core/Mouse":17,"../core/Plugin":18,"../core/Runner":19,"../core/Sleeping":20,"../factory/Bodies":21,"../factory/Composites":22,"../geometry/Axes":23,"../geometry/Bounds":24,"../geometry/Projections":25,"../geometry/Svg":26,"../geometry/Vector":27,"../geometry/Vertices":28,"../render/Render":30,
"../render/RenderPixi":31}],30:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Common"),r=e("../body/Composite"),s=e("../geometry/Bounds"),a=e("../core/Events"),l=e("../collision/Grid"),c=e("../geometry/Vector"),d=e("../core/Mouse");!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(function(){e(i.now())},1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o.create=function(e){var t={controller:o,engine:null,element:null,canvas:null,mouse:null,frameRequestId:null,options:{width:800,height:600,pixelRatio:1,background:"#18181d",wireframeBackground:"#0f0f13",hasBounds:!!e.bounds,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,showBroadphase:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showSeparations:!1,showAxes:!1,
showPositions:!1,showAngleIndicator:!1,showIds:!1,showShadows:!1,showVertexNumbers:!1,showConvexHulls:!1,showInternalEdges:!1,showMousePosition:!1}},r=i.extend(t,e);return r.canvas&&(r.canvas.width=r.options.width||r.canvas.width,r.canvas.height=r.options.height||r.canvas.height),r.mouse=e.mouse,r.engine=e.engine,r.canvas=r.canvas||n(r.options.width,r.options.height),r.context=r.canvas.getContext("2d"),r.textures={},r.bounds=r.bounds||{min:{x:0,y:0},max:{x:r.canvas.width,y:r.canvas.height}},1!==r.options.pixelRatio&&o.setPixelRatio(r,r.options.pixelRatio),i.isElement(r.element)?r.element.appendChild(r.canvas):r.canvas.parentNode||i.log("Render.create: options.element was undefined, render.canvas was created but not appended","warn"),r},o.run=function(t){!function n(i){t.frameRequestId=e(n),o.world(t)}()},o.stop=function(e){t(e.frameRequestId)},o.setPixelRatio=function(e,t){var n=e.options,o=e.canvas;"auto"===t&&(t=u(o)),n.pixelRatio=t,o.setAttribute("data-pixel-ratio",t),
o.width=n.width*t,o.height=n.height*t,o.style.width=n.width+"px",o.style.height=n.height+"px",e.context.scale(t,t)},o.lookAt=function(e,t,n,o){o=void 0===o||o,t=i.isArray(t)?t:[t],n=n||{x:0,y:0};for(var r={min:{x:1/0,y:1/0},max:{x:-1/0,y:-1/0}},s=0;s<t.length;s+=1){var a=t[s],l=a.bounds?a.bounds.min:a.min||a.position||a,c=a.bounds?a.bounds.max:a.max||a.position||a;l&&c&&(l.x<r.min.x&&(r.min.x=l.x),c.x>r.max.x&&(r.max.x=c.x),l.y<r.min.y&&(r.min.y=l.y),c.y>r.max.y&&(r.max.y=c.y))}var u=r.max.x-r.min.x+2*n.x,p=r.max.y-r.min.y+2*n.y,f=e.canvas.height,m=e.canvas.width,v=m/f,y=u/p,g=1,x=1;y>v?x=y/v:g=v/y,e.options.hasBounds=!0,e.bounds.min.x=r.min.x,e.bounds.max.x=r.min.x+u*g,e.bounds.min.y=r.min.y,e.bounds.max.y=r.min.y+p*x,o&&(e.bounds.min.x+=.5*u-u*g*.5,e.bounds.max.x+=.5*u-u*g*.5,e.bounds.min.y+=.5*p-p*x*.5,e.bounds.max.y+=.5*p-p*x*.5),e.bounds.min.x-=n.x,e.bounds.max.x-=n.x,e.bounds.min.y-=n.y,e.bounds.max.y-=n.y,e.mouse&&(d.setScale(e.mouse,{
x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height}),d.setOffset(e.mouse,e.bounds.min))},o.startViewTransform=function(e){var t=e.bounds.max.x-e.bounds.min.x,n=e.bounds.max.y-e.bounds.min.y,o=t/e.options.width,i=n/e.options.height;e.context.scale(1/o,1/i),e.context.translate(-e.bounds.min.x,-e.bounds.min.y)},o.endViewTransform=function(e){e.context.setTransform(e.options.pixelRatio,0,0,e.options.pixelRatio,0,0)},o.world=function(e){var t,n=e.engine,i=n.world,u=e.canvas,p=e.context,m=e.options,v=r.allBodies(i),y=r.allConstraints(i),g=m.wireframes?m.wireframeBackground:m.background,x=[],h=[],b={timestamp:n.timing.timestamp};if(a.trigger(e,"beforeRender",b),e.currentBackground!==g&&f(e,g),p.globalCompositeOperation="source-in",p.fillStyle="transparent",p.fillRect(0,0,u.width,u.height),p.globalCompositeOperation="source-over",m.hasBounds){for(t=0;t<v.length;t++){var w=v[t];s.overlaps(w.bounds,e.bounds)&&x.push(w)}for(t=0;t<y.length;t++){
var S=y[t],C=S.bodyA,P=S.bodyB,A=S.pointA,B=S.pointB;C&&(A=c.add(C.position,S.pointA)),P&&(B=c.add(P.position,S.pointB)),A&&B&&((s.contains(e.bounds,A)||s.contains(e.bounds,B))&&h.push(S))}o.startViewTransform(e),e.mouse&&(d.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height}),d.setOffset(e.mouse,e.bounds.min))}else h=y,x=v;!m.wireframes||n.enableSleeping&&m.showSleeping?o.bodies(e,x,p):(m.showConvexHulls&&o.bodyConvexHulls(e,x,p),o.bodyWireframes(e,x,p)),m.showBounds&&o.bodyBounds(e,x,p),(m.showAxes||m.showAngleIndicator)&&o.bodyAxes(e,x,p),m.showPositions&&o.bodyPositions(e,x,p),m.showVelocity&&o.bodyVelocity(e,x,p),m.showIds&&o.bodyIds(e,x,p),m.showSeparations&&o.separations(e,n.pairs.list,p),m.showCollisions&&o.collisions(e,n.pairs.list,p),m.showVertexNumbers&&o.vertexNumbers(e,x,p),m.showMousePosition&&o.mousePosition(e,e.mouse,p),o.constraints(h,p),
m.showBroadphase&&n.broadphase.controller===l&&o.grid(e,n.broadphase,p),m.showDebug&&o.debug(e,p),m.hasBounds&&o.endViewTransform(e),a.trigger(e,"afterRender",b)},o.debug=function(e,t){var n=t,o=e.engine,i=o.world,s=o.metrics,a=e.options;r.allBodies(i);if(o.timing.timestamp-(e.debugTimestamp||0)>=500){var l="";s.timing&&(l+="fps: "+Math.round(s.timing.fps)+" "),e.debugString=l,e.debugTimestamp=o.timing.timestamp}if(e.debugString){n.font="12px Arial",a.wireframes?n.fillStyle="rgba(255,255,255,0.5)":n.fillStyle="rgba(0,0,0,0.5)";for(var c=e.debugString.split("\n"),d=0;d<c.length;d++)n.fillText(c[d],50,50+18*d)}},o.constraints=function(e,t){for(var n=t,o=0;o<e.length;o++){var r=e[o];if(r.render.visible&&r.pointA&&r.pointB){var s,a,l=r.bodyA,d=r.bodyB;if(s=l?c.add(l.position,r.pointA):r.pointA,"pin"===r.render.type)n.beginPath(),n.arc(s.x,s.y,3,0,2*Math.PI),n.closePath();else{if(a=d?c.add(d.position,r.pointB):r.pointB,n.beginPath(),n.moveTo(s.x,s.y),
"spring"===r.render.type)for(var u,p=c.sub(a,s),f=c.perp(c.normalise(p)),m=Math.ceil(i.clamp(r.length/5,12,20)),v=1;v<m;v+=1)u=v%2==0?1:-1,n.lineTo(s.x+p.x*(v/m)+f.x*u*4,s.y+p.y*(v/m)+f.y*u*4);n.lineTo(a.x,a.y)}r.render.lineWidth&&(n.lineWidth=r.render.lineWidth,n.strokeStyle=r.render.strokeStyle,n.stroke()),r.render.anchors&&(n.fillStyle=r.render.strokeStyle,n.beginPath(),n.arc(s.x,s.y,3,0,2*Math.PI),n.arc(a.x,a.y,3,0,2*Math.PI),n.closePath(),n.fill())}}},o.bodyShadows=function(e,t,n){for(var o=n,i=(e.engine,0);i<t.length;i++){var r=t[i];if(r.render.visible){if(r.circleRadius)o.beginPath(),o.arc(r.position.x,r.position.y,r.circleRadius,0,2*Math.PI),o.closePath();else{o.beginPath(),o.moveTo(r.vertices[0].x,r.vertices[0].y);for(var s=1;s<r.vertices.length;s++)o.lineTo(r.vertices[s].x,r.vertices[s].y);o.closePath()}var a=r.position.x-.5*e.options.width,l=r.position.y-.2*e.options.height,c=Math.abs(a)+Math.abs(l);o.shadowColor="rgba(0,0,0,0.15)",o.shadowOffsetX=.05*a,
o.shadowOffsetY=.05*l,o.shadowBlur=1+12*Math.min(1,c/1e3),o.fill(),o.shadowColor=null,o.shadowOffsetX=null,o.shadowOffsetY=null,o.shadowBlur=null}}},o.bodies=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options),c=l.showInternalEdges||!l.wireframes;for(r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(s=o.parts.length>1?1:0;s<o.parts.length;s++)if(i=o.parts[s],i.render.visible){if(l.showSleeping&&o.isSleeping?a.globalAlpha=.5*i.render.opacity:1!==i.render.opacity&&(a.globalAlpha=i.render.opacity),i.render.sprite&&i.render.sprite.texture&&!l.wireframes){var d=i.render.sprite,u=p(e,d.texture);a.translate(i.position.x,i.position.y),a.rotate(i.angle),a.drawImage(u,u.width*-d.xOffset*d.xScale,u.height*-d.yOffset*d.yScale,u.width*d.xScale,u.height*d.yScale),a.rotate(-i.angle),a.translate(-i.position.x,-i.position.y)}else{if(i.circleRadius)a.beginPath(),a.arc(i.position.x,i.position.y,i.circleRadius,0,2*Math.PI);else{a.beginPath(),a.moveTo(i.vertices[0].x,i.vertices[0].y)
;for(var f=1;f<i.vertices.length;f++)!i.vertices[f-1].isInternal||c?a.lineTo(i.vertices[f].x,i.vertices[f].y):a.moveTo(i.vertices[f].x,i.vertices[f].y),i.vertices[f].isInternal&&!c&&a.moveTo(i.vertices[(f+1)%i.vertices.length].x,i.vertices[(f+1)%i.vertices.length].y);a.lineTo(i.vertices[0].x,i.vertices[0].y),a.closePath()}l.wireframes?(a.lineWidth=1,a.strokeStyle="#bbb",a.stroke()):(a.fillStyle=i.render.fillStyle,i.render.lineWidth&&(a.lineWidth=i.render.lineWidth,a.strokeStyle=i.render.strokeStyle,a.stroke()),a.fill())}a.globalAlpha=1}},o.bodyWireframes=function(e,t,n){var o,i,r,s,a,l=n,c=e.options.showInternalEdges;for(l.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(a=o.parts.length>1?1:0;a<o.parts.length;a++){for(i=o.parts[a],l.moveTo(i.vertices[0].x,i.vertices[0].y),s=1;s<i.vertices.length;s++)!i.vertices[s-1].isInternal||c?l.lineTo(i.vertices[s].x,i.vertices[s].y):l.moveTo(i.vertices[s].x,i.vertices[s].y),
i.vertices[s].isInternal&&!c&&l.moveTo(i.vertices[(s+1)%i.vertices.length].x,i.vertices[(s+1)%i.vertices.length].y);l.lineTo(i.vertices[0].x,i.vertices[0].y)}l.lineWidth=1,l.strokeStyle="#bbb",l.stroke()},o.bodyConvexHulls=function(e,t,n){var o,i,r,s=n;for(s.beginPath(),i=0;i<t.length;i++)if(o=t[i],o.render.visible&&1!==o.parts.length){for(s.moveTo(o.vertices[0].x,o.vertices[0].y),r=1;r<o.vertices.length;r++)s.lineTo(o.vertices[r].x,o.vertices[r].y);s.lineTo(o.vertices[0].x,o.vertices[0].y)}s.lineWidth=1,s.strokeStyle="rgba(255,255,255,0.2)",s.stroke()},o.vertexNumbers=function(e,t,n){var o,i,r,s=n;for(o=0;o<t.length;o++){var a=t[o].parts;for(r=a.length>1?1:0;r<a.length;r++){var l=a[r];for(i=0;i<l.vertices.length;i++)s.fillStyle="rgba(255,255,255,0.2)",s.fillText(o+"_"+i,l.position.x+.8*(l.vertices[i].x-l.position.x),l.position.y+.8*(l.vertices[i].y-l.position.y))}}},o.mousePosition=function(e,t,n){var o=n;o.fillStyle="rgba(255,255,255,0.8)",
o.fillText(t.position.x+" "+t.position.y,t.position.x+5,t.position.y-5)},o.bodyBounds=function(e,t,n){var o=n,i=(e.engine,e.options);o.beginPath();for(var r=0;r<t.length;r++){if(t[r].render.visible)for(var s=t[r].parts,a=s.length>1?1:0;a<s.length;a++){var l=s[a];o.rect(l.bounds.min.x,l.bounds.min.y,l.bounds.max.x-l.bounds.min.x,l.bounds.max.y-l.bounds.min.y)}}i.wireframes?o.strokeStyle="rgba(255,255,255,0.08)":o.strokeStyle="rgba(0,0,0,0.1)",o.lineWidth=1,o.stroke()},o.bodyAxes=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options);for(a.beginPath(),i=0;i<t.length;i++){var c=t[i],d=c.parts;if(c.render.visible)if(l.showAxes)for(r=d.length>1?1:0;r<d.length;r++)for(o=d[r],s=0;s<o.axes.length;s++){var u=o.axes[s];a.moveTo(o.position.x,o.position.y),a.lineTo(o.position.x+20*u.x,o.position.y+20*u.y)}else for(r=d.length>1?1:0;r<d.length;r++)for(o=d[r],s=0;s<o.axes.length;s++)a.moveTo(o.position.x,o.position.y),
a.lineTo((o.vertices[0].x+o.vertices[o.vertices.length-1].x)/2,(o.vertices[0].y+o.vertices[o.vertices.length-1].y)/2)}l.wireframes?(a.strokeStyle="indianred",a.lineWidth=1):(a.strokeStyle="rgba(255, 255, 255, 0.4)",a.globalCompositeOperation="overlay",a.lineWidth=2),a.stroke(),a.globalCompositeOperation="source-over"},o.bodyPositions=function(e,t,n){var o,i,r,s,a=n,l=(e.engine,e.options);for(a.beginPath(),r=0;r<t.length;r++)if(o=t[r],o.render.visible)for(s=0;s<o.parts.length;s++)i=o.parts[s],a.arc(i.position.x,i.position.y,3,0,2*Math.PI,!1),a.closePath();for(l.wireframes?a.fillStyle="indianred":a.fillStyle="rgba(0,0,0,0.5)",a.fill(),a.beginPath(),r=0;r<t.length;r++)o=t[r],o.render.visible&&(a.arc(o.positionPrev.x,o.positionPrev.y,2,0,2*Math.PI,!1),a.closePath());a.fillStyle="rgba(255,165,0,0.8)",a.fill()},o.bodyVelocity=function(e,t,n){var o=n;o.beginPath();for(var i=0;i<t.length;i++){var r=t[i];r.render.visible&&(o.moveTo(r.position.x,r.position.y),
o.lineTo(r.position.x+2*(r.position.x-r.positionPrev.x),r.position.y+2*(r.position.y-r.positionPrev.y)))}o.lineWidth=3,o.strokeStyle="cornflowerblue",o.stroke()},o.bodyIds=function(e,t,n){var o,i,r=n;for(o=0;o<t.length;o++)if(t[o].render.visible){var s=t[o].parts;for(i=s.length>1?1:0;i<s.length;i++){var a=s[i];r.font="12px Arial",r.fillStyle="rgba(255,255,255,0.5)",r.fillText(a.id,a.position.x+10,a.position.y-10)}}},o.collisions=function(e,t,n){var o,i,r,s=n,a=e.options;for(s.beginPath(),i=0;i<t.length;i++)for(o=t[i],r=0;r<o.contactCount;r++){var l=o.contacts[r];s.rect(l.x-1.5,l.y-1.5,3.5,3.5)}for(a.wireframes?s.fillStyle="rgba(255,255,255,0.7)":s.fillStyle="orange",s.fill(),s.beginPath(),i=0;i<t.length;i++)if(o=t[i],o.contactCount>0){var c=o.contacts[0].x,d=o.contacts[0].y;2===o.contactCount&&(c=(o.contacts[0].x+o.contacts[1].x)/2,d=(o.contacts[0].y+o.contacts[1].y)/2),
o.bodyB===o.contacts[0].body||!0===o.bodyA.isStatic?s.moveTo(c-8*o.normal.x,d-8*o.normal.y):s.moveTo(c+8*o.normal.x,d+8*o.normal.y),s.lineTo(c,d)}a.wireframes?s.strokeStyle="rgba(255,165,0,0.7)":s.strokeStyle="orange",s.lineWidth=1,s.stroke()},o.separations=function(e,t,n){var o,i,r,s,a=n,l=e.options;for(a.beginPath(),s=0;s<t.length;s++){o=t[s],i=o.bodyA,r=o.bodyB;var c=1;r.isStatic||i.isStatic||(c=.5),r.isStatic&&(c=0),a.moveTo(r.position.x,r.position.y),a.lineTo(r.position.x-o.penetration.x*c,r.position.y-o.penetration.y*c),c=1,r.isStatic||i.isStatic||(c=.5),i.isStatic&&(c=0),a.moveTo(i.position.x,i.position.y),a.lineTo(i.position.x+o.penetration.x*c,i.position.y+o.penetration.y*c)}l.wireframes?a.strokeStyle="rgba(255,165,0,0.5)":a.strokeStyle="orange",a.stroke()},o.grid=function(e,t,n){var o=n;e.options.wireframes?o.strokeStyle="rgba(255,180,0,0.1)":o.strokeStyle="rgba(255,180,0,0.5)",o.beginPath()
;for(var r=t.buckets,s=i.keys(r),a=0;a<s.length;a+=1)for(var l=s[a],c=r[l],d=Object.keys(c),u=0;u<d.length;u+=1){var p=d[u],f=c[p];f.length<2||o.rect(.5+parseInt(l,10)*t.bucketWidth,.5+parseInt(p,10)*t.bucketHeight,t.bucketWidth,t.bucketHeight)}o.lineWidth=1,o.stroke()},o.inspector=function(e,t){var n,o=(e.engine,e.selected),i=e.render,r=i.options;if(r.hasBounds){var s=i.bounds.max.x-i.bounds.min.x,a=i.bounds.max.y-i.bounds.min.y,l=s/i.options.width,c=a/i.options.height;t.scale(1/l,1/c),t.translate(-i.bounds.min.x,-i.bounds.min.y)}for(var d=0;d<o.length;d++){var u=o[d].data;switch(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.9)",t.setLineDash([1,2]),u.type){case"body":n=u.bounds,t.beginPath(),t.rect(Math.floor(n.min.x-3),Math.floor(n.min.y-3),Math.floor(n.max.x-n.min.x+6),Math.floor(n.max.y-n.min.y+6)),t.closePath(),t.stroke();break;case"constraint":var p=u.pointA;u.bodyA&&(p=u.pointB),t.beginPath(),t.arc(p.x,p.y,10,0,2*Math.PI),t.closePath(),t.stroke()}
t.setLineDash([]),t.translate(-.5,-.5)}null!==e.selectStart&&(t.translate(.5,.5),t.lineWidth=1,t.strokeStyle="rgba(255,165,0,0.6)",t.fillStyle="rgba(255,165,0,0.1)",n=e.selectBounds,t.beginPath(),t.rect(Math.floor(n.min.x),Math.floor(n.min.y),Math.floor(n.max.x-n.min.x),Math.floor(n.max.y-n.min.y)),t.closePath(),t.stroke(),t.fill(),t.translate(-.5,-.5)),r.hasBounds&&t.setTransform(1,0,0,1,0,0)};var n=function(e,t){var n=document.createElement("canvas");return n.width=e,n.height=t,n.oncontextmenu=function(){return!1},n.onselectstart=function(){return!1},n},u=function(e){var t=e.getContext("2d");return(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)},p=function(e,t){var n=e.textures[t];return n||(n=e.textures[t]=new Image,n.src=t,n)},f=function(e,t){var n=t;/(jpg|gif|png)$/.test(t)&&(n="url("+t+")"),e.canvas.style.background=n,
e.canvas.style.backgroundSize="contain",e.currentBackground=t}}()},{"../body/Composite":2,"../collision/Grid":5,"../core/Common":12,"../core/Events":14,"../core/Mouse":17,"../geometry/Bounds":24,"../geometry/Vector":27}],31:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Bounds"),r=e("../body/Composite"),s=e("../core/Common"),a=e("../core/Events"),l=e("../geometry/Vector");!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(function(){e(s.now())},1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o.create=function(e){s.warn("RenderPixi.create: Matter.RenderPixi is deprecated (see docs)");var t={controller:o,engine:null,element:null,frameRequestId:null,canvas:null,renderer:null,container:null,spriteContainer:null,pixiOptions:null,
options:{width:800,height:600,background:"#fafafa",wireframeBackground:"#222",hasBounds:!1,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,showBroadphase:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showAxes:!1,showPositions:!1,showAngleIndicator:!1,showIds:!1,showShadows:!1}},n=s.extend(t,e),i=!n.options.wireframes&&"transparent"===n.options.background;return n.pixiOptions=n.pixiOptions||{view:n.canvas,transparent:i,antialias:!0,backgroundColor:e.background},n.mouse=e.mouse,n.engine=e.engine,n.renderer=n.renderer||new PIXI.WebGLRenderer(n.options.width,n.options.height,n.pixiOptions),n.container=n.container||new PIXI.Container,n.spriteContainer=n.spriteContainer||new PIXI.Container,n.canvas=n.canvas||n.renderer.view,n.bounds=n.bounds||{min:{x:0,y:0},max:{x:n.options.width,y:n.options.height}},a.on(n.engine,"beforeUpdate",function(){o.clear(n)}),n.textures={},n.sprites={},n.primitives={},n.container.addChild(n.spriteContainer),
s.isElement(n.element)?n.element.appendChild(n.canvas):s.warn('No "render.element" passed, "render.canvas" was not inserted into document.'),n.canvas.oncontextmenu=function(){return!1},n.canvas.onselectstart=function(){return!1},n},o.run=function(t){!function n(i){t.frameRequestId=e(n),o.world(t)}()},o.stop=function(e){t(e.frameRequestId)},o.clear=function(e){for(var t=e.container,n=e.spriteContainer;t.children[0];)t.removeChild(t.children[0]);for(;n.children[0];)n.removeChild(n.children[0]);var o=e.sprites["bg-0"];e.textures={},e.sprites={},e.primitives={},e.sprites["bg-0"]=o,o&&t.addChildAt(o,0),e.container.addChild(e.spriteContainer),e.currentBackground=null,t.scale.set(1,1),t.position.set(0,0)},o.setBackground=function(e,t){if(e.currentBackground!==t){var n=t.indexOf&&-1!==t.indexOf("#"),o=e.sprites["bg-0"];if(n){var i=s.colorToNumber(t);e.renderer.backgroundColor=i,o&&e.container.removeChild(o)}else if(!o){var r=d(e,t);o=e.sprites["bg-0"]=new PIXI.Sprite(r),o.position.x=0,
o.position.y=0,e.container.addChildAt(o,0)}e.currentBackground=t}},o.world=function(e){var t,n=e.engine,s=n.world,a=e.renderer,c=e.container,d=e.options,u=r.allBodies(s),p=r.allConstraints(s),f=[];d.wireframes?o.setBackground(e,d.wireframeBackground):o.setBackground(e,d.background);var m=e.bounds.max.x-e.bounds.min.x,v=e.bounds.max.y-e.bounds.min.y,y=m/e.options.width,g=v/e.options.height;if(d.hasBounds){for(t=0;t<u.length;t++){var x=u[t];x.render.sprite.visible=i.overlaps(x.bounds,e.bounds)}for(t=0;t<p.length;t++){var h=p[t],b=h.bodyA,w=h.bodyB,S=h.pointA,C=h.pointB;b&&(S=l.add(b.position,h.pointA)),w&&(C=l.add(w.position,h.pointB)),S&&C&&((i.contains(e.bounds,S)||i.contains(e.bounds,C))&&f.push(h))}c.scale.set(1/y,1/g),c.position.set(-e.bounds.min.x*(1/y),-e.bounds.min.y*(1/g))}else f=p;for(t=0;t<u.length;t++)o.body(e,u[t]);for(t=0;t<f.length;t++)o.constraint(e,f[t]);a.render(c)},o.constraint=function(e,t){var n=(e.engine,
t.bodyA),o=t.bodyB,i=t.pointA,r=t.pointB,a=e.container,l=t.render,c="c-"+t.id,d=e.primitives[c];if(d||(d=e.primitives[c]=new PIXI.Graphics),!l.visible||!t.pointA||!t.pointB)return void d.clear();-1===s.indexOf(a.children,d)&&a.addChild(d),d.clear(),d.beginFill(0,0),d.lineStyle(l.lineWidth,s.colorToNumber(l.strokeStyle),1),n?d.moveTo(n.position.x+i.x,n.position.y+i.y):d.moveTo(i.x,i.y),o?d.lineTo(o.position.x+r.x,o.position.y+r.y):d.lineTo(r.x,r.y),d.endFill()},o.body=function(e,t){var o=(e.engine,t.render);if(o.visible)if(o.sprite&&o.sprite.texture){var i="b-"+t.id,r=e.sprites[i],a=e.spriteContainer;r||(r=e.sprites[i]=n(e,t)),-1===s.indexOf(a.children,r)&&a.addChild(r),r.position.x=t.position.x,r.position.y=t.position.y,r.rotation=t.angle,r.scale.x=o.sprite.xScale||1,r.scale.y=o.sprite.yScale||1}else{var l="b-"+t.id,d=e.primitives[l],u=e.container;d||(d=e.primitives[l]=c(e,t),d.initialAngle=t.angle),-1===s.indexOf(u.children,d)&&u.addChild(d),d.position.x=t.position.x,
d.position.y=t.position.y,d.rotation=t.angle-d.initialAngle}};var n=function(e,t){var n=t.render,o=n.sprite.texture,i=d(e,o),r=new PIXI.Sprite(i);return r.anchor.x=t.render.sprite.xOffset,r.anchor.y=t.render.sprite.yOffset,r},c=function(e,t){var n,o=t.render,i=e.options,r=new PIXI.Graphics,a=s.colorToNumber(o.fillStyle),l=s.colorToNumber(o.strokeStyle),c=s.colorToNumber(o.strokeStyle),d=s.colorToNumber("#bbb"),u=s.colorToNumber("#CD5C5C");r.clear();for(var p=t.parts.length>1?1:0;p<t.parts.length;p++){n=t.parts[p],i.wireframes?(r.beginFill(0,0),r.lineStyle(1,d,1)):(r.beginFill(a,1),r.lineStyle(o.lineWidth,l,1)),r.moveTo(n.vertices[0].x-t.position.x,n.vertices[0].y-t.position.y);for(var f=1;f<n.vertices.length;f++)r.lineTo(n.vertices[f].x-t.position.x,n.vertices[f].y-t.position.y);r.lineTo(n.vertices[0].x-t.position.x,n.vertices[0].y-t.position.y),r.endFill(),(i.showAngleIndicator||i.showAxes)&&(r.beginFill(0,0),i.wireframes?r.lineStyle(1,u,1):r.lineStyle(1,c),
r.moveTo(n.position.x-t.position.x,n.position.y-t.position.y),r.lineTo((n.vertices[0].x+n.vertices[n.vertices.length-1].x)/2-t.position.x,(n.vertices[0].y+n.vertices[n.vertices.length-1].y)/2-t.position.y),r.endFill())}return r},d=function(e,t){var n=e.textures[t];return n||(n=e.textures[t]=PIXI.Texture.fromImage(t)),n}}()},{"../body/Composite":2,"../core/Common":12,"../core/Events":14,"../geometry/Bounds":24,"../geometry/Vector":27}]},{},[29])(29)});
\ No newline at end of file
/*!
* PEP v0.4.2 | https://github.com/jquery/PEP
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
*/
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
// define inherited MouseEvent properties
// skip bubbles and cancelable since they're set above in initEvent()
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
// Spec requires that pointers without pressure specified use 0.5 for down
// state and 0 for up state.
var f=0;
// add x/y properties aliased to clientX/Y
// define the properties of the PointerEvent interface
return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){
// only activate if this platform does not have pointer events
if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",$)}else u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){if(!a.ownerDocument.contains(a)){var b=new Error("InvalidStateError");throw b.name="InvalidStateError",b}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X}})}/**
* This is the constructor for new PointerEvents.
*
* New Pointer Events must be given a type, and an optional dictionary of
* initialization properties.
*
* Due to certain platform requirements, events returned from the constructor
* identify as MouseEvents.
*
* @constructor
* @param {String} inType The type of the event to create.
* @param {Object} [inDict] An optional dictionary of initial event properties.
* @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.
*/
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},
// return value, key, map
forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=[
// MouseEvent
"bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget",
// DOM Level 3
"buttons",
// PointerEvent
"pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary",
// event instance
"type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[
// MouseEvent
!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,
// DOM Level 3
0,
// PointerEvent
0,0,0,0,0,0,"",0,!1,
// event instance
"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),
// Scope objects for native events.
// This exists for ease of testing.
eventSources:Object.create(null),eventSourceList:[],/**
* Add a new event source that will generate pointer events.
*
* `inSource` must contain an array of event names named `events`, and
* functions with the names specified in the `events` array.
* @param {string} name A name for the event source
* @param {Object} source A new source of platform events.
*/
registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
// call eventsource register
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
// call eventsource register
b.unregister.call(b,a)},contains:/*scope.external.contains || */function(a,b){try{return a.contains(b)}catch(c){
// most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427
return!1}},
// EVENTS
down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},
// LISTENER LOGIC
eventHandler:function(a){
// This is used to prevent multiple dispatch of pointerevents from
// platform events. This can happen when two elements in different scopes
// are set up to create pointer events, which is relevant to Shadow DOM.
if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},
// set up event listeners
listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},
// remove event listeners
unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:/*scope.external.addEvent || */function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:/*scope.external.removeEvent || */function(a,b){a.removeEventListener(b,this.boundHandler)},
// EVENT CREATION AND TRACKING
/**
* Creates a new Event of type `inType`, based on the information in
* `inEvent`.
*
* @param {string} inType A string representing the type of event to create
* @param {Event} inEvent A platform event with a target
* @return {Event} A PointerEvent of type `inType`
*/
makeEvent:function(b,c){
// relatedTarget must be null if pointer is captured
this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},
// make and dispatch an event in one call
fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},/**
* Returns a snapshot of inEvent, with writable properties.
*
* @param {Event} inEvent An event that contains properties to copy.
* @return {Object} An object containing shallow copies of `inEvent`'s
* properties.
*/
cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],
// Work around SVGInstanceElement shadow tree
// Return the <use> element that is represented by the instance for Safari, Chrome, IE.
// This is the behavior implemented by Firefox.
!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);
// keep the semantics of preventDefault
return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];!d.contains(a.relatedTarget)&&d!==document;)e.push(d),d=d.parentNode;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c){this.captureInfo[b]&&this.releaseCapture(b),this.captureInfo[b]=c;var d=new a("gotpointercapture");d.pointerId=b,this.implicitRelease=this.releaseCapture.bind(this,b),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease),d._target=c,this.asyncDispatchEvent(d)},releaseCapture:function(b){var c=this.captureInfo[b];if(c){var d=new a("lostpointercapture");d.pointerId=b,this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease),d._target=c,this.asyncDispatchEvent(d)}},/**
* Dispatches the event to its target.
*
* @param {Event} inEvent The event to be dispatched.
* @return {Boolean} True if an event handler returns true, false otherwise.
*/
dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(
// is element a shadow host?
e=this.targetingShadow(f);e;){if(
// find the the element inside the shadow root
d=e.elementFromPoint(b,c)){
// shadowed element may contain a shadow root
var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d}
// check for older shadows
e=this.olderShadow(e)}
// light dom element is the target
return f}},owner:function(a){
// walk up until you hit the shadow root or document
for(var b=a;b.parentNode;)b=b.parentNode;
// the owner element is expected to be a Document or ShadowRoot
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
// if x, y is not in this root, fall back to document search
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
// Only watch scopes that can target find, as these are top-level.
// Otherwise we can see duplicate additions and removals that add noise.
//
// TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see
// a removal without an insertion when a node is redistributed among
// shadows. Since it all ends up correct in the document, watching only
// the document will yield the correct mutations to watch.
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
// register all touch-action = none nodes on document load
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
// find children with touch-action
var b=x(a,this.findElements,this);
// flatten the list
// make sure the added nodes are accounted for
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
// handler block for native mouse events
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
// collide with the global mouse listener
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
// simulated mouse events will be swallowed near a primary touchend
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
// Update buttons state after possible out-of-document mouseup.
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
// Produces wrong state of buttons in Browsers without `buttons` support
// when a mouse button that was pressed outside the document is released
// inside and other buttons are still pressed down.
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
// Support: Firefox <=44 only
// FF Ubuntu includes the lifted button in the `buttons` property on
// mouseup.
// https://bugzilla.mozilla.org/show_bug.cgi?id=1223366
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
// set touch-action on shadows as well
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
// remove touch-action from shadow
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
// simply update scrollType if listeners are already established
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
// set primary touch if there no pointers, or the only pointer is the mouse
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=a.radiusX||a.webkitRadiusX||0,c.height=a.radiusY||a.webkitRadiusY||0,c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
// forward modifier keys
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
// forward touch preventDefaults
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
// For single axis scrollers, determines whether the element should emit
// pointer events or behave as a scroller
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
// this element is a touch-action: none, should never scroll
b=!1;else if("XY"===c)
// this element should always scroll
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
// if delta in the scroll axis > delta other axis, scroll instead of
// making events
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
// In some instances, a touchstart can happen without a touchend. This
// leaves the pointermap in a broken state.
// Therefore, on every touchstart, we remove the touches that did not fire a
// touchend event.
// To keep state globally consistent, we fire a
// pointercancel for this "abandoned" touch
vacuumTouches:function(a){var b=a.touches;
// pointermap.size should be < tl.length here, as the touchstart has not
// been processed yet.
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
// Never remove pointerId == 1, which is mouse.
// Touch identifiers are 2 smaller than their pointerId, which is the
// index in pointermap.
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
// a finger drifted off the screen, ignore it
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
// recover from retargeting by shadow
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
// clean up case when finger leaves the screen
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
// prevent synth mouse events from creating pointer events
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
// only the primary finger will synth mouse events
if(this.isPrimaryTouch(c)){
// remember x/y of last touch
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y=u.pointermap,Z=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,$={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return Z&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Y["delete"](a)},MSPointerDown:function(a){Y.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},_=window.navigator;_.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&this.msSetPointerCapture(a)},X=function(a){i(a),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a,this)}),g(),h(),l();var aa={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return aa});
\ No newline at end of file
// Type definitions for tween.js r12
// Project: https://github.com/sole/tween.js/
// Definitions by: sunetos <https://github.com/sunetos>, jzarnikov <https://github.com/jzarnikov>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module TWEEN {
export var REVISION: string;
export function getAll(): Tween[];
export function removeAll(): void;
export function add(tween:Tween): void;
export function remove(tween:Tween): void;
export function update(time?:number): boolean;
export class Tween {
constructor(object?:any);
to(properties:any, duration:number): Tween;
start(time?:number): Tween;
stop(): Tween;
delay(amount:number): Tween;
easing(easing: (k: number) => number): Tween;
interpolation(interpolation: (v:number[], k:number) => number): Tween;
chain(...tweens:Tween[]): Tween;
onStart(callback: (object?: any) => void): Tween;
onUpdate(callback: (object?: any) => void): Tween;
onComplete(callback: (object?: any) => void): Tween;
update(time: number): boolean;
repeat(times: number): Tween;
yoyo(enable: boolean): Tween;
}
export var Easing: TweenEasing;
export var Interpolation: TweenInterpolation;
}
interface TweenEasing {
Linear: {
None(k:number): number;
};
Quadratic: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Cubic: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Quartic: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Quintic: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Sinusoidal: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Exponential: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Circular: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Elastic: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Back: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
Bounce: {
In(k:number): number;
Out(k:number): number;
InOut(k:number): number;
};
}
interface TweenInterpolation {
Linear(v:number[], k:number): number;
Bezier(v:number[], k:number): number;
CatmullRom(v:number[], k:number): number;
Utils: {
Linear(p0:number, p1:number, t:number): number;
Bernstein(n:number, i:number): number;
Factorial(n): number;
};
}
// tween.js - http://github.com/sole/tween.js
'use strict';void 0===Date.now&&(Date.now=function(){return(new Date).valueOf()});
var TWEEN=TWEEN||function(){var a=[];return{REVISION:"13",getAll:function(){return a},removeAll:function(){a=[]},add:function(c){a.push(c)},remove:function(c){c=a.indexOf(c);-1!==c&&a.splice(c,1)},update:function(c){if(0===a.length)return!1;for(var b=0,c=void 0!==c?c:"undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();b<a.length;)a[b].update(c)?b++:a.splice(b,1);return!0}}}();
TWEEN.Tween=function(a){var c={},b={},d={},e=1E3,g=0,h=!1,j=!1,q=0,m=null,w=TWEEN.Easing.Linear.None,x=TWEEN.Interpolation.Linear,n=[],r=null,s=!1,t=null,u=null,k=null,v;for(v in a)c[v]=parseFloat(a[v],10);this.to=function(a,c){void 0!==c&&(e=c);b=a;return this};this.start=function(e){TWEEN.add(this);j=!0;s=!1;m=void 0!==e?e:"undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now():Date.now();m+=q;for(var f in b){if(b[f]instanceof Array){if(0===
b[f].length)continue;b[f]=[a[f]].concat(b[f])}c[f]=a[f];!1===c[f]instanceof Array&&(c[f]*=1);d[f]=c[f]||0}return this};this.stop=function(){if(!j)return this;TWEEN.remove(this);j=!1;null!==k&&k.call(a);this.stopChainedTweens();return this};this.stopChainedTweens=function(){for(var a=0,b=n.length;a<b;a++)n[a].stop()};this.delay=function(a){q=a;return this};this.repeat=function(a){g=a;return this};this.yoyo=function(a){h=a;return this};this.easing=function(a){w=a;return this};this.interpolation=function(a){x=
a;return this};this.chain=function(){n=arguments;return this};this.onStart=function(a){r=a;return this};this.onUpdate=function(a){t=a;return this};this.onComplete=function(a){u=a;return this};this.onStop=function(a){k=a;return this};this.update=function(p){var f;if(p<m)return!0;!1===s&&(null!==r&&r.call(a),s=!0);var i=(p-m)/e,i=1<i?1:i,j=w(i);for(f in b){var k=c[f]||0,l=b[f];l instanceof Array?a[f]=x(l,j):("string"===typeof l&&(l=k+parseFloat(l,10)),"number"===typeof l&&(a[f]=k+(l-k)*j))}null!==t&&
t.call(a,j);if(1==i)if(0<g){isFinite(g)&&g--;for(f in d)"string"===typeof b[f]&&(d[f]+=parseFloat(b[f],10)),h&&(i=d[f],d[f]=b[f],b[f]=i),c[f]=d[f];m=p+q}else{null!==u&&u.call(a);f=0;for(i=n.length;f<i;f++)n[f].start(p);return!1}return!0}};
TWEEN.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return 1>(a*=2)?0.5*a*a:-0.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*a:0.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return 1>(a*=2)?0.5*a*a*a*a:-0.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*
a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*a*a*a:0.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return 0.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:1>(a*=2)?0.5*Math.pow(1024,a-1):0.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-
Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return 1>(a*=2)?-0.5*(Math.sqrt(1-a*a)-1):0.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var c,b=0.1;if(0===a)return 0;if(1===a)return 1;!b||1>b?(b=1,c=0.1):c=0.4*Math.asin(1/b)/(2*Math.PI);return-(b*Math.pow(2,10*(a-=1))*Math.sin((a-c)*2*Math.PI/0.4))},Out:function(a){var c,b=0.1;if(0===a)return 0;if(1===a)return 1;!b||1>b?(b=1,c=0.1):c=0.4*Math.asin(1/b)/(2*Math.PI);return b*Math.pow(2,-10*a)*Math.sin((a-c)*
2*Math.PI/0.4)+1},InOut:function(a){var c,b=0.1;if(0===a)return 0;if(1===a)return 1;!b||1>b?(b=1,c=0.1):c=0.4*Math.asin(1/b)/(2*Math.PI);return 1>(a*=2)?-0.5*b*Math.pow(2,10*(a-=1))*Math.sin((a-c)*2*Math.PI/0.4):0.5*b*Math.pow(2,-10*(a-=1))*Math.sin((a-c)*2*Math.PI/0.4)+1}},Back:{In:function(a){return a*a*(2.70158*a-1.70158)},Out:function(a){return--a*a*(2.70158*a+1.70158)+1},InOut:function(a){return 1>(a*=2)?0.5*a*a*(3.5949095*a-2.5949095):0.5*((a-=2)*a*(3.5949095*a+2.5949095)+2)}},Bounce:{In:function(a){return 1-
TWEEN.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+0.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+0.9375:7.5625*(a-=2.625/2.75)*a+0.984375},InOut:function(a){return 0.5>a?0.5*TWEEN.Easing.Bounce.In(2*a):0.5*TWEEN.Easing.Bounce.Out(2*a-1)+0.5}}};
TWEEN.Interpolation={Linear:function(a,c){var b=a.length-1,d=b*c,e=Math.floor(d),g=TWEEN.Interpolation.Utils.Linear;return 0>c?g(a[0],a[1],d):1<c?g(a[b],a[b-1],b-d):g(a[e],a[e+1>b?b:e+1],d-e)},Bezier:function(a,c){var b=0,d=a.length-1,e=Math.pow,g=TWEEN.Interpolation.Utils.Bernstein,h;for(h=0;h<=d;h++)b+=e(1-c,d-h)*e(c,h)*a[h]*g(d,h);return b},CatmullRom:function(a,c){var b=a.length-1,d=b*c,e=Math.floor(d),g=TWEEN.Interpolation.Utils.CatmullRom;return a[0]===a[b]?(0>c&&(e=Math.floor(d=b*(1+c))),g(a[(e-
1+b)%b],a[e],a[(e+1)%b],a[(e+2)%b],d-e)):0>c?a[0]-(g(a[0],a[0],a[1],a[1],-d)-a[0]):1<c?a[b]-(g(a[b],a[b],a[b-1],a[b-1],d-b)-a[b]):g(a[e?e-1:0],a[e],a[b<e+1?b:e+1],a[b<e+2?b:e+2],d-e)},Utils:{Linear:function(a,c,b){return(c-a)*b+a},Bernstein:function(a,c){var b=TWEEN.Interpolation.Utils.Factorial;return b(a)/b(c)/b(a-c)},Factorial:function(){var a=[1];return function(c){var b=1,d;if(a[c])return a[c];for(d=c;1<d;d--)b*=d;return a[c]=b}}(),CatmullRom:function(a,c,b,d,e){var a=0.5*(b-a),d=0.5*(d-c),g=
e*e;return(2*c-2*b+a+d)*e*g+(-3*c+3*b-2*a-d)*g+a*e+c}}};
export default () => resPath || '';
\ No newline at end of file
export default () => window['resPath'] || '';
\ No newline at end of file
......@@ -18,12 +18,14 @@ import SceneCtrl from "./ctrls/sceneCtrl";
import showAlertPanel from "./ctrls/showAlertPanel";
import { ModuleTypes } from "./types/sceneTypes";
import layers from "./views/layers";
import NoPrizePanel from "./components/NoPrizePanel";
export default class MainBase extends eui.UILayer {
constructor() {
super();
check_webp_feature();
Loading.instace.loadImage();
console.log(window['CFG'])
DataManager.ins.gameCfgData = window['CFG'];
DataManager.ins.gameCfgData.gameInfo.gameId = window["gameId"];
this.getData();
......@@ -37,6 +39,7 @@ export default class MainBase extends eui.UILayer {
[ModuleTypes.OPTIONS_PANEL, { cls: OptionsPanel }],
[ModuleTypes.PRIZE_PANEL, { cls: PrizePanel }],
[ModuleTypes.RANK_PANEL, { cls: RankPanel }],
[ModuleTypes.NOPRIZE_PANEL, { cls: NoPrizePanel }],
];
const scenes = [
......
export default class Loading extends egret.Sprite {
private static _parent: egret.Sprite;
private static _parent: eui.UILayer;
private static _instance: Loading;
private static bg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAC0CAYAAAATiCegAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCQzYyMjY2QTc2NDExRTg5QTUzRjU2RkQ3RDBDQzhDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCQzYyMjY3QTc2NDExRTg5QTUzRjU2RkQ3RDBDQzhDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0JDNjIyNjRBNzY0MTFFODlBNTNGNTZGRDdEMENDOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0JDNjIyNjVBNzY0MTFFODlBNTNGNTZGRDdEMENDOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4bbLCYAAACQklEQVR42uzZT0rDQBTA4fwBodssPEO3XiAH6Mqjuip0m2v0DrlBwYlkMJRUU6vzEL4PHlmUuhh+vGawrrY7zM9+fnYVfBrn5zA/j1u+VG8MrxccPwhy+C7EWnhEhth+Ed9rmp3z40FTQ/s0lzTnLQHm+OA3rUbYio/ICFvxERlhs/igdzYU0l9vwGn7vTgXCl5MPrZgY/sRuQVb24/ILdg4ByI1fn6J/Bm2AQnfgP7XS5TOBiR8A4IAESAIEAGCABEgCBABggARIAgQAYIAESAIEAGCABEgCBABggARIAgQAYIAESAIEAGCABEgCBABIkAQIAIEASJAECACBAEiQBAgAgQBIkAQIAIEASJAECACBAEiQBAgAgQBIkAQIAIEASJAECACRIAgQAQIAkSAIEAECAJEgCBABAgCRIAgQAQIAkSAIEAECAJEgCBABAgCRIAgQAQIAkSAIEAECAJEgAgQBIgAQYAIEASIAEGACBAEiABBgAgQBIgAQYAIEASIAEGACBAEiABBgAgQBIgAQYAIEASIAEGACBABggARIAgQAYIAESAIEAGCABEgCBABggARIAgQAYIAESAIkP8V4OgYCDLagIRq0zyl2TsKApxsQMLfAY/eA4l4/5vayxtwcB4UNuQNWNmCRGy/ZYC2IMW3X74FZ+c0Fzdi/thb3n7XAYqQovGtBShCisV3K8BlhM9pds6OBy8cp7X4JvWGP3BI06fpnCV3hjfcCu+eAJchVnOMlSBZCW55wz1u+dK7AAMAr747P8Ezfo0AAAAASUVORK5CYII=';
private static progress = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGRDM0MjA1QTc4NDExRTg5QTUzRjU2RkQ3RDBDQzhDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGRDM0MjA2QTc4NDExRTg5QTUzRjU2RkQ3RDBDQzhDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0JDNjIyNjhBNzY0MTFFODlBNTNGNTZGRDdEMENDOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZEMzQyMDRBNzg0MTFFODlBNTNGNTZGRDdEMENDOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4SQhovAAABqUlEQVR42uyavW6EMAzHSQbEgrqxlQWpU5+m6ov0SfoifZxOlVArurFVLIAEbS0ViUbJ5ds57vxbDhhs/xMfJI6zDIllWd6//4BrLL8MyxEI++f4Fwy/PLtwSCAJJIFnLrBt25thGO7h91yCtomJ6QzVdf203Y/j+FKW5WvKzwQIK4ricbvvuu65aZovpxmsqup2fw+GwUGqmRPFyWK0Etj3/af4LJVImThVjFYrGZVh23T1SVGfGLQvGTAAhlLNpO8AG30mQohc1/VDdh07exjmaKbwxVI5xvJhvZJRpWue53ehZk9my3UAnZZqMpHzPL+FEijaivEXME6laZoeYrxNY9omCIIgiI19xdkUzMq0b5xM3KcZL2KRKtOq/WTUpdqR4KZ7M9XeDoujxEkQBEFcD0coWTCfAPalvZhlQx/bPEQAQMyyoc8xAQ8hDohZNvQRefGle47l0LbTKdSpFsMaTdfzwejHZ5hpGWMmTwqEJoSU4kxE6jotrJoQUojTiQzahJDslOeESF0TgpZQjUBixQsrJuoXPTokkASSwCsR6NLpFIIfAQYAmaA+/cC+3MAAAAAASUVORK5CYII=';
......@@ -45,17 +45,21 @@ export default class Loading extends egret.Sprite {
}
show() {
Loading._parent.visible = true;
Loading._parent.addChild(this);
this.addEventListener(egret.Event.ENTER_FRAME, this.onEnterFrame, this);
}
hide() {
if (this.parent)
if (this.parent){
Loading._parent.visible = false;
Loading._parent.removeChild(this);
}
this.removeEventListener(egret.Event.ENTER_FRAME, this.onEnterFrame, this);
}
static init(parent: egret.Sprite) {
static init(parent: eui.UILayer) {
Loading._parent = parent;
}
......
import showLog from "../../new_tw/ctrls/showLog";
import { LotteryType } from "../../tw/enum/LotteryType";
import { DataManager } from "../../tw/manager/DataManager";
import { NetManager } from "../../tw/manager/NetManager";
import Panel from "./Panel";
import SceneCtrl from "../ctrls/sceneCtrl";
import { ModuleTypes } from "../types/sceneTypes";
export default class NoPrizePanel extends Panel {
get skinKey() { return 'NoPrize' }
start(data) {
this.data = data;
this.scoreTxt.text = `${this.data && this.data.score ? this.data.score : 0}`;
NetManager.ins.getInfo();
}
public closeBtn:eui.Button;
public againBtn:eui.Button;
public scoreTxt:eui.Label;
initEvents() {
super.initEvents();
this.againBtn.once(egret.TouchEvent.TOUCH_TAP, this.onTap_againBtn, this);
this.closeBtn.once(egret.TouchEvent.TOUCH_TAP, this.onTap_closeBtn, this);
}
onTap_againBtn():any{
}
onTap_closeBtn(): any {
super.onTouchTap_closeBtn();
SceneCtrl.instance.change(ModuleTypes.START_SCENE);
}
protected get closeBtns(): eui.Button[] {
return [this['closeBtn']]
}
}
\ No newline at end of file
......@@ -2,18 +2,19 @@ import { ModuleTypes } from "../types/sceneTypes";
import Panel from "../components/Panel";
import Loading from "../components/Loading";
export default class PanelCtrl {
private _parent: egret.Sprite;
private _parent: eui.UILayer;
private _mask: egret.Sprite;
static _instance: PanelCtrl;
static get instance() {
return PanelCtrl._instance || (PanelCtrl._instance = new PanelCtrl())
}
init(parent: egret.Sprite) {
init(parent: eui.UILayer) {
this._parent = parent;
}
show(type: ModuleTypes, data?) {
this._parent.visible = true;
const cls = this._panelClassMap[type];
const panel: Panel = new cls(data);
this.addMask();
......@@ -67,8 +68,10 @@ export default class PanelCtrl {
const tw = egret.Tween.get(panel);
tw.to({ y: panel.stage.stageHeight }, 300, egret.Ease.quartIn)
.call(() => {
this._parent.removeChild(panel);
this.removeMask();
this._parent.visible =false;
}, this);
}
......
......@@ -2,7 +2,7 @@ import { ModuleTypes } from "../types/sceneTypes";
import Scene from "../components/Scene";
import Loading from "../components/Loading";
export default class SceneCtrl {
private _parent: egret.Sprite;
private _parent: eui.UILayer;
private _currentScene: Scene;
private _mask: egret.Sprite;
......@@ -10,7 +10,7 @@ export default class SceneCtrl {
static get instance() {
return SceneCtrl._instance || (SceneCtrl._instance = new SceneCtrl())
}
init(parent: egret.Sprite) {
init(parent: eui.UILayer) {
this._parent = parent;
}
......
......@@ -3,9 +3,11 @@ export enum ModuleTypes {
PLAY_SCENE,
ALERT_PANEL,
MSG_PANEL,
RULE_PANEL,
HTML_RULE_PANEL,
OPTIONS_PANEL,
PRIZE_PANEL,
RANK_PANEL
RANK_PANEL,
NOPRIZE_PANEL
}
\ No newline at end of file
class Layers extends eui.UILayer {
private _topLayer: egret.Sprite;
private _popupLayer: egret.Sprite;
private _sceneLayer: egret.Sprite;
private _bottomLayer: egret.Sprite;
private _topLayer: eui.UILayer;
private _popupLayer: eui.UILayer;
private _sceneLayer: eui.UILayer;
private _bottomLayer: eui.UILayer;
init(root: eui.UILayer) {
root.addChild(this);
this._topLayer = new egret.Sprite();
this._popupLayer = new egret.Sprite();
this._sceneLayer = new egret.Sprite();
this._bottomLayer = new egret.Sprite();
this._topLayer = new eui.UILayer();
this._popupLayer = new eui.UILayer();
this._sceneLayer = new eui.UILayer();
this._bottomLayer = new eui.UILayer();
this._topLayer.visible = false;
this._popupLayer.visible = false;
this._bottomLayer.visible = false;
this.addChild(this._bottomLayer);
this.addChild(this._sceneLayer);
this.addChild(this._popupLayer);
......
{
"type": "activity",
"name": "game"
"name": "gravityBall1.0"
}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"alert","version":5,"files":["../assets/alert/alertbg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"alert","version":5,"files":["..\\assets\\alert\\alertbg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"options","version":5,"files":["../assets/option/line2.png","../assets/option/prizeBg.png","../assets/option/X-1.png","../assets/option/line.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"options","version":5,"files":["..\\assets\\option\\X-1.png","..\\assets\\option\\prizeBg.png","..\\assets\\option\\line2.png","..\\assets\\option\\line.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"play","version":5,"files":["../assets/playscene/testbtn.png","../assets/playscene/音乐开启.png","../assets/playscene/音乐关闭.png","../assets/playscene/轮子1.png","../assets/playscene/火箭.png","../assets/playscene/火.png","../assets/playscene/发弹雾气.png","../assets/playscene/大炮的头.png","../assets/playscene/大炮板子.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"play","version":5,"files":["..\\assets\\playscene\\testbtn.png","..\\assets\\playscene\\音乐开启.png","..\\assets\\playscene\\音乐关闭.png","..\\assets\\playscene\\轮子1.png","..\\assets\\playscene\\火箭.png","..\\assets\\playscene\\火.png","..\\assets\\playscene\\发弹雾气.png","..\\assets\\playscene\\大炮的头.png","..\\assets\\playscene\\大炮板子.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"preload","version":5,"files":["../assets/startScene/e4.png","../assets/startScene/e3.png","../assets/startScene/e2.png","../assets/startScene/e1.png","../assets/startScene/文案.png","../assets/文案.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"preload","version":5,"files":["..\\assets\\playscene\\+1.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"prize","version":5,"files":["../assets/prize/prizePanelbg.png","../assets/prize/PrizePanelX.png","../assets/prize/prizePanelUseBtn.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"prize","version":5,"files":["..\\assets\\prize\\PrizePanelX.png","..\\assets\\prize\\prizePanelUseBtn.png","..\\assets\\prize\\prizePanelbg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rank","version":5,"files":["../assets/rank/userItemBg.png","../assets/rank/rankTitle.png","../assets/rank/num3.png","../assets/rank/num2.png","../assets/rank/num1.png","../assets/rank/dog.png","../assets/rank/commonPanelBg.png","../assets/rank/closeBtn.png","../assets/rank/bottomLine.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rank","version":5,"files":["..\\assets\\rank\\userItemBg.png","..\\assets\\rank\\rankTitle.png","..\\assets\\rank\\num3.png","..\\assets\\rank\\num2.png","..\\assets\\rank\\num1.png","..\\assets\\rank\\dog.png","..\\assets\\rank\\commonPanelBg.png","..\\assets\\rank\\closeBtn.png","..\\assets\\rank\\bottomLine.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rule","version":5,"files":["../assets/rule/X.png","../assets/rule/ruleBg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rule","version":5,"files":["..\\assets\\rule\\X.png","..\\assets\\rule\\ruleBg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"start","version":5,"files":["../assets/startScene/optionBtn.png","../assets/startScene/rankBtn.png","../assets/startScene/recordbtn.png","../assets/startScene/ruleBtn.png","../assets/startScene/start_btn_gray.png","../assets/startScene/start_btn.png","../assets/startScene/文案.png","../assets/startScene/e1.png","../assets/startScene/e2.png","../assets/startScene/e3.png","../assets/startScene/e4.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"start","version":5,"files":["..\\assets\\startScene\\start_btn.png","..\\assets\\startScene\\start_btn_gray.png","..\\assets\\startScene\\ruleBtn.png","..\\assets\\startScene\\recordbtn.png","..\\assets\\startScene\\rankBtn.png","..\\assets\\startScene\\optionBtn.png","..\\assets\\startScene\\e4.png","..\\assets\\startScene\\e3.png","..\\assets\\startScene\\e2.png","..\\assets\\startScene\\e1.png","..\\assets\\startScene\\文案.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"waiting","version":5,"files":["..\\assets\\waiting\\bg.png","..\\assets\\waiting\\progress.png"]}
\ No newline at end of file
egret/resource/assets/文案.png

22 KB | W: | H:

egret/resource/assets/文案.png

28.1 KB | W: | H:

egret/resource/assets/文案.png
egret/resource/assets/文案.png
egret/resource/assets/文案.png
egret/resource/assets/文案.png
  • 2-up
  • Swipe
  • Onion skin
{
"groups": [
{
"keys": "optionBtn_png,rankBtn_png,recordbtn_png,ruleBtn_png,start_btn_gray_png,start_btn_png,文案_png,e1_png,e2_png,e3_png,e4_png",
"keys": "start_btn_png,start_btn_gray_png,ruleBtn_png,recordbtn_png,rankBtn_png,optionBtn_png,e4_png,e3_png,e2_png,e1_png",
"name": "start"
},
{
"keys": "line2_png,prizeBg_png,X-1_png,line_png",
"keys": "X-1_png,prizeBg_png,line2_png,line_png",
"name": "options"
},
{
......@@ -13,11 +13,11 @@
"name": "alert"
},
{
"keys": "prizePanelbg_png,PrizePanelX_png,prizePanelUseBtn_png",
"keys": "PrizePanelX_png,prizePanelUseBtn_png,prizePanelbg_png",
"name": "prize"
},
{
"keys": "testbtn_png,音乐开启_png,音乐关闭_png,轮子1_png,火箭_png,火_png,发弹雾气_png,大炮的头_png,大炮板子_png",
"keys": "testbtn_png,playscenebg_jpg,音乐开启_png,音乐关闭_png,轮子1_png,火箭_png,火_png,发弹雾气_png,大炮的头_png,大炮板子_png",
"name": "play"
},
{
......@@ -27,38 +27,30 @@
{
"keys": "X_png,ruleBg_png",
"name": "rule"
}
],
"resources": [
{
"url": "assets/rule/X.png",
"type": "image",
"name": "X_png"
},
{
"url": "assets/rule/ruleBg.png",
"type": "image",
"name": "ruleBg_png"
"keys": "bg_png,progress_png",
"name": "waiting"
},
{
"url": "assets/startScene/optionBtn.png",
"type": "image",
"name": "optionBtn_png"
"keys": "startSceneBg_jpg,+1_png,againBtn_png,gameOverBg_png,gameOverCloseBtn_png,gameOverTitle_png",
"name": "preload"
},
{
"url": "assets/startScene/ruleBtn.png",
"type": "image",
"name": "ruleBtn_png"
},
"keys": "againBtn_png,gameOverBg_png,gameOverCloseBtn_png,gameOverTitle_png",
"name": "noPrize"
}
],
"resources": [
{
"url": "assets/option/line2.png",
"url": "assets/文案.png",
"type": "image",
"name": "line2_png"
"name": "文案_png"
},
{
"url": "assets/option/prizeBg.png",
"url": "assets/alert/alertbg.png",
"type": "image",
"name": "prizeBg_png"
"name": "alertbg_png"
},
{
"url": "assets/option/X-1.png",
......@@ -71,39 +63,24 @@
"name": "line_png"
},
{
"url": "assets/alert/alertbg.png",
"type": "image",
"name": "alertbg_png"
},
{
"url": "assets/prize/prizePanelbg.png",
"type": "image",
"name": "prizePanelbg_png"
},
{
"url": "assets/prize/PrizePanelX.png",
"type": "image",
"name": "PrizePanelX_png"
},
{
"url": "assets/prize/prizePanelUseBtn.png",
"url": "assets/option/line2.png",
"type": "image",
"name": "prizePanelUseBtn_png"
"name": "line2_png"
},
{
"url": "assets/startScene/start_btn_gray.png",
"url": "assets/option/prizeBg.png",
"type": "image",
"name": "start_btn_gray_png"
"name": "prizeBg_png"
},
{
"url": "assets/startScene/start_btn.png",
"url": "assets/playscene/playscenebg.jpg",
"type": "image",
"name": "start_btn_png"
"name": "playscenebg_jpg"
},
{
"url": "assets/startScene/recordbtn.png",
"url": "assets/playscene/testbtn.png",
"type": "image",
"name": "recordbtn_png"
"name": "testbtn_png"
},
{
"url": "assets/playscene/发弹雾气.png",
......@@ -146,20 +123,40 @@
"name": "音乐开启_png"
},
{
"url": "assets/startScene/rankBtn.png",
"url": "assets/prize/PrizePanelX.png",
"type": "image",
"name": "rankBtn_png"
"name": "PrizePanelX_png"
},
{
"url": "assets/prize/prizePanelUseBtn.png",
"type": "image",
"name": "prizePanelUseBtn_png"
},
{
"url": "assets/prize/prizePanelbg.png",
"type": "image",
"name": "prizePanelbg_png"
},
{
"url": "assets/rank/bottomLine.png",
"type": "image",
"name": "bottomLine_png"
},
{
"url": "assets/rank/closeBtn.png",
"type": "image",
"name": "closeBtn_png"
},
{
"url": "assets/rank/commonPanelBg.png",
"type": "image",
"name": "commonPanelBg_png"
},
{
"url": "assets/rank/dog.png",
"type": "image",
"name": "dog_png"
},
{
"url": "assets/rank/num1.png",
"type": "image",
......@@ -186,29 +183,34 @@
"name": "userItemBg_png"
},
{
"url": "assets/rank/closeBtn.png",
"url": "assets/rule/X.png",
"type": "image",
"name": "closeBtn_png"
"name": "X_png"
},
{
"url": "assets/rank/dog.png",
"url": "assets/rule/ruleBg.png",
"type": "image",
"name": "dog_png"
"name": "ruleBg_png"
},
{
"url": "assets/playscene/testbtn.png",
"url": "assets/waiting/bg.png",
"type": "image",
"name": "testbtn_png"
"name": "bg_png"
},
{
"url": "assets/playscene/playscenebg.jpg",
"url": "assets/waiting/progress.png",
"type": "image",
"name": "playscenebg_jpg"
"name": "progress_png"
},
{
"url": "assets/startScene/e4.png",
"url": "assets/startScene/e1.png",
"type": "image",
"name": "e4_png"
"name": "e1_png"
},
{
"url": "assets/startScene/e2.png",
"type": "image",
"name": "e2_png"
},
{
"url": "assets/startScene/e3.png",
......@@ -216,24 +218,69 @@
"name": "e3_png"
},
{
"url": "assets/startScene/e2.png",
"url": "assets/startScene/e4.png",
"type": "image",
"name": "e2_png"
"name": "e4_png"
},
{
"url": "assets/startScene/e1.png",
"url": "assets/startScene/optionBtn.png",
"type": "image",
"name": "e1_png"
"name": "optionBtn_png"
},
{
"url": "assets/startScene/rankBtn.png",
"type": "image",
"name": "rankBtn_png"
},
{
"url": "assets/startScene/文案.png",
"url": "assets/startScene/recordbtn.png",
"type": "image",
"name": "文案_png"
"name": "recordbtn_png"
},
{
"url": "assets/startScene/ruleBtn.png",
"type": "image",
"name": "ruleBtn_png"
},
{
"url": "assets/startScene/start_btn.png",
"type": "image",
"name": "start_btn_png"
},
{
"url": "assets/startScene/start_btn_gray.png",
"type": "image",
"name": "start_btn_gray_png"
},
{
"url": "assets/startSceneBg.jpg",
"type": "image",
"name": "startSceneBg_jpg"
},
{
"url": "assets/playscene/+1.png",
"type": "image",
"name": "+1_png"
},
{
"url": "assets/gameover/againBtn.png",
"type": "image",
"name": "againBtn_png"
},
{
"url": "assets/gameover/gameOverBg.png",
"type": "image",
"name": "gameOverBg_png"
},
{
"url": "assets/gameover/gameOverCloseBtn.png",
"type": "image",
"name": "gameOverCloseBtn_png"
},
{
"url": "assets/startScene/startscenebg.jpg",
"url": "assets/gameover/gameOverTitle.png",
"type": "image",
"name": "startscenebg_jpg"
"name": "gameOverTitle_png"
}
]
}
\ No newline at end of file
......@@ -5,13 +5,21 @@
"resource/skins/AlertSkin.exml",
"resource/skins/OptionItemSkin.exml",
"resource/skins/OptionsSkin.exml",
"resource/skins/NoPrizeSkin.exml",
"resource/skins/PlaySkin.exml",
"resource/skins/PrizeSkin.exml",
"resource/skins/RankItemSkin.exml",
"resource/skins/RankSkin.exml",
"resource/skins/RuleSkin.exml",
"resource/skins/StartSkin.exml",
"resource/skins/VScrollBarSkin.exml"
"resource/skins/VScrollBarSkin.exml",
"resource/skins/component/ResultPanel.exml",
"resource/skins/component/VirtualJoystickSkin.exml",
"resource/skins/component/WheelBg.exml",
"resource/skins/component/WheelGift.exml",
"resource/skins/ui/IconButtonSkin.exml",
"resource/skins/ui/ProgressBarSkin.exml",
"resource/skins/ui/StartButtonSkin.exml"
],
"path": "resource/default.thm.json"
}
\ No newline at end of file
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
# (assimp v3.1.187496374)
mtllib cloud.obj.mtl
# 562 vertex positions
v 128.719 145.156 82.5156
v 134.297 149.203 39.5
v 120.141 162.297 88.4219
v 147.094 126.469 84.6094
v 95.1719 137.203 128.078
v 158.859 125.422 29.0312
v 158.938 126.75 -1.67188
v 113.547 157.125 -1.25
v 101.453 172.75 35.1875
v 123.25 168.547 51.5781
v 185.938 107.781 34.9375
v 107.016 114.125 153.031
v 178.938 113.75 81.9219
v 161.156 104.891 131.141
v 54.4531 120.281 190.203
v 101.312 96.3281 193.969
v 34.6875 96.0938 234.609
v 46.7344 138.297 154.297
v 16.2812 127.766 236.625
v 32 137.078 209.906
v 29.125 150.125 171.859
v 53.0781 156.062 136.328
v 90.8125 155.781 121.531
v 13.3125 150.75 123.875
v 21.0469 159.562 119.656
v 87.7031 173.953 115.25
v 60.125 169.844 124.891
v 41.4375 177.281 112.828
v 75.9062 185.188 92.4531
v 109.609 181.906 71.25
v 108.875 173.672 92.6719
v 63.6406 184.812 69.25
v 37.3281 178.125 90.2188
v 16.8281 167.516 86.7812
v 54.6406 170.609 51.4219
v 47.0156 164.875 39.5
v -21.2031 157.188 81.7812
v 93.8906 181.5 56.375
v 134.047 157.172 -33.5312
v 104.844 158.734 -72.7969
v 79.0781 179.969 -18.2969
v 167.484 138.438 -21.5469
v 194.031 89.2812 -14.3906
v 194.797 122.875 -36.4062
v 172.562 155.844 -42.2656
v 204.359 117.625 -73.1562
v 200 144.547 -72.8906
v 206.953 96.7656 -77.0625
v 191.688 141.766 -48.7812
v 194.531 128.172 -112.25
v 167.625 155.297 -104.188
v 190.328 143.703 -98.2656
v 201.766 103.625 -137.891
v 155.234 130.203 -144.469
v 159.031 139.969 -127.312
v 172.328 161.047 -72.5312
v 125.219 153.094 -113.531
v 142.062 159.781 -98.8438
v 138.688 166.062 -73.2344
v 194.891 110.797 -173.031
v 94.4219 147.062 -143.844
v 126.922 141.938 -181.75
v 160.578 132.156 -166.516
v 171.938 131.594 -198.359
v 197.281 100.891 -212.594
v 168.5 114.844 -230.812
v 191.844 115.531 -194.391
v 137.031 131.234 -228.312
v 145.453 137.75 -202.172
v 172.25 83.3125 -244.5
v 139.953 99.0156 -259.547
v 188.719 83.25 -225.438
v 187.297 67.9062 -215.875
v 159.562 58.0781 -243.078
v 132.75 64.5469 -264.891
v 148.984 81.1875 -258.891
v 200.766 86.3281 -189.125
v 201.172 73.5938 -172.266
v 226.109 77.2812 -130.844
v 216.672 58.5781 -162.641
v 202.438 32.9844 -173.078
v 179.469 43.5312 -196.312
v 220.984 64.7812 -41.5625
v 224.672 78.4062 -81.5
v 209.547 80.375 17.4375
v 198.016 50.7656 -6.28125
v 204.172 105.344 87.2656
v 208.062 99.0625 45.9531
v 153.047 83.5625 164.359
v 185.141 78.4688 146.766
v 193.781 98.75 125.547
v 142.719 74.8594 188.844
v 147.844 48.2969 146.219
v 63.6094 78.5156 236.984
v 104.719 87.0312 216.594
v 25.75 52.5781 233.672
v -20.0625 103.266 245.812
v 11.0156 80.2812 260.797
v 6.60938 145.656 231.859
v -18.3438 149.344 237.047
v 15.6562 157.75 211.469
v -18.9219 123.016 244.688
v 17.9531 161.359 181.344
v 1.26562 171.297 160.688
v -18.25 168.391 199.172
v 8.89062 158.984 134.828
v -21.875 164.25 122.125
v -20.125 171.297 147.266
v -41.6562 171.734 168.703
v -56.875 158.172 217.828
v -45.8438 146.234 234.5
v -57.6094 129.234 238.188
v -81.6094 139.453 217.938
v -73.7344 102.516 240.141
v -96.0781 124.062 215.062
v -82.4688 152.609 187.625
v -116.859 134.266 178.234
v -129.031 116.125 205.781
v -110.812 116.359 220.484
v -104.172 101.688 238.781
v -130.266 108.359 231.422
v -90.9062 75.5312 247.719
v -120.75 101.078 239.984
v -127.312 91.1719 245.125
v -105.391 82.7656 245.406
v -132.453 79.6562 242.094
v -121.219 67.8906 241.5
v -147.562 80.0156 234.672
v -144.047 96.0469 235.516
v -142.844 60.5312 225.438
v -138.062 46.0938 222.25
v -99.7656 47.9688 243.484
v -157.203 70.8281 210.922
v -150.391 97.25 220.938
v -154.016 82.3906 222.75
v -137.359 108.922 219.578
v -147.703 94.2812 200.328
v -150.359 91.0781 179.797
v -164.781 112.062 137.344
v -167.688 86.3125 146.531
v -184.625 54.5312 144.484
v -165.609 46.6719 186.953
v -129.969 149.5 143.766
v -70.9062 153.328 133.047
v -58.5938 160.109 146.672
v -62.8438 162.453 192.531
v -12.1562 185.703 40.8281
v -66.2656 174.953 29.3594
v -70.5312 174.297 83.2656
v 37.8906 180.547 25.9062
v 91.2656 175.469 -72.1875
v 61.6719 202.031 -66.5781
v 26.4219 206.359 -3.29688
v 58.6406 197.984 -28.5312
v 11.7031 215.609 -49.6406
v -27.5625 211.188 -6.53125
v -5.76562 203.156 14.2656
v 16.8438 207.188 -98.0312
v -37.4062 212.266 -63.6875
v 69.7969 177.734 -114.484
v 52.3125 197.25 -96.7656
v 19.4531 181.438 -123.609
v -35.5312 189.703 -105.609
v -20.9219 205.219 -91.5469
v 18.3438 164.141 -136.906
v 60.2344 158.969 -174.781
v 84.1875 131.719 -212.312
v 116.172 158.656 -74.3906
v 147.234 162.016 -47.5156
v 66.0312 106.219 -269.547
v 43.2812 130.906 -254.328
v 67.9219 142.812 -213.688
v 105.359 132.25 -216.812
v 103.047 110.641 -257.328
v 36.4062 160.859 -218.672
v 36.9844 167.734 -190.531
v 3.07812 177.625 -181.297
v 26.6094 146.969 -244.562
v -6.51562 147.672 -252.625
v -17.8906 169.375 -216.328
v -37.625 175.969 -176.25
v -45.75 170.406 -156.359
v -66 171.859 -196.031
v 16.0625 167.984 -154.172
v -64.875 153.75 -236.234
v -110.797 145.141 -209.609
v -94.2188 158.484 -177.938
v -84.6719 158.281 -214.75
v -105.484 151.781 -163.531
v -149.484 122.484 -194.984
v -92.5 130.594 -240.406
v -102.578 113.422 -244.203
v -46.4375 124.719 -265.156
v -52.1719 95.3438 -279.922
v -86.2812 84.2344 -282.359
v -114.062 101.188 -255.656
v -144.688 98.2812 -237.438
v 7.76562 103.516 -281.312
v -27.8125 74.6406 -298.016
v -62.5938 56.7656 -284.562
v 10.9375 86.2812 -295.578
v 50.6406 80.4531 -295.047
v 3.07812 122.797 -271.391
v 13.0938 63.4688 -311.422
v -21.7344 44.9062 -309.406
v -47.9219 52.3594 -293.547
v -13.9375 61.4844 -308.094
v -45.0781 27.5469 -289.719
v 16.6406 40.0469 -313.328
v -10.0938 23.2344 -301.812
v -27.7031 30.6094 -301.781
v 52.7969 49.5312 -309.719
v 34.8281 26.2812 -303.656
v 40.3281 64.9531 -307.031
v 75.5 62.8906 -292.5
v 90.6094 73.0156 -278.531
v 75.75 38.1406 -291.656
v 56.9844 36.7812 -303.438
v 105.219 39.5469 -271.219
v 56.5 17.625 -267.875
v 48.4844 21.875 -283.359
v 148.578 40.375 -237.734
v 109.953 15.3906 -260.547
v 110.828 83.9375 -271.812
v 164.375 18.8438 -167.906
v 163.219 16.4219 -205.406
v 216.078 12.4375 -142.453
v 184.422 15.1094 -159.531
v 219.344 27.5 -157.188
v 234.203 41.8125 -144.188
v 180.219 5.46875 -127.828
v 136.766 4.57812 -133.531
v 213.797 9.03125 -87.8906
v 183.969 7.07812 -80.4531
v 162.797 8 -70.3281
v 204.031 6.42188 -121.172
v 198.938 19.9531 -34.9844
v 235.656 27.7188 -102.078
v 230.391 32.2969 -51.8438
v 215.656 18.4062 -54.7031
v 242.984 55.8594 -92.4844
v 237.359 59.4531 -124.875
v 233.891 51.2188 -59.5469
v 211.969 44.6094 -24.0156
v 206.938 51 13.7812
v 179.234 20.3594 -2.82812
v 197.031 26.5 32.3125
v 154.344 14.1562 58.4375
v 157.234 1.03125 -5.89062
v 121.156 -7.14062 -110.5
v 150.547 -1.54688 -63.1094
v 71 -4.40625 -142.812
v 124.906 -3.17188 -162.234
v 156.172 9.17188 -178.859
v 139.281 -8.60938 -196.047
v 146.188 20.3906 -235.953
v 133.688 -1.625 -233.938
v 149.297 1.23438 -211.891
v 109.422 0.84375 -251.016
v 80.2031 -9.4375 -249.5
v 65.75 5.21875 -261.109
v 98.7031 -16 -219.75
v 50.0469 -19.4375 -213.562
v 51.3906 -13.2188 -236.844
v 31.2656 -6.17188 -240.891
v 5.1875 4.75 -251.094
v 7.09375 13.9062 -279.594
v 19.0781 -10.4531 -203.422
v 2.92188 -4.64062 -202.172
v -22.2344 -7.64062 -241.484
v -34.2344 9.375 -266.266
v -41.5312 -1.07812 -258.656
v -63.7656 -12.7188 -244.047
v -41.0938 -14.4688 -235.234
v -43.8438 -18.625 -212.016
v -12.7031 -10.0156 -206.688
v -77.5469 4.73438 -259.984
v -27 14.8906 -280.781
v -72.3594 21.8906 -272.828
v 9.90625 19.6562 -295.875
v -95.5625 36.0781 -281.266
v -78.5 59.1094 -288.031
v -104.156 58.8594 -293.734
v -125.516 83.375 -276.562
v -104.234 75.9375 -286.953
v -143.469 84.7031 -259.609
v -154.062 68.9219 -263.375
v -158.578 76.6094 -232.922
v -162.922 77.5 -211.953
v -133.141 62.2031 -284.391
v -133.781 43.7969 -280.125
v -154.484 46.6875 -247.359
v -150.031 51.8594 -264.719
v -119.469 23.5781 -250.953
v -159.047 35.6406 -217.766
v -127.391 32.1406 -263.625
v -110.562 44.6094 -287.172
v -83.9844 -4.29688 -249.969
v -111.062 -2.625 -236.562
v -116.766 12 -246.406
v -95.3594 -14.6406 -207.688
v -91.5312 -14.4375 -174.312
v -52.6094 -16.2344 -185.484
v -31.9688 -10.4219 -171.484
v -140.5 -3.89062 -192.188
v -128.203 -5.54688 -169.656
v -142.109 4.4375 -147.469
v -159.531 12.1562 -173.719
v -147.562 14.5938 -217.797
v -136.094 2.51562 -217.594
v -87.9219 -3.15625 -147.562
v -85.0312 3.14062 -130.938
v 0.703125 -5.14062 -144
v 35.3438 -12.3906 -173.047
v 74.8125 -9.17188 -158.078
v 88.1094 -17.4688 -184.484
v 55.7188 -17.9531 -189.234
v 119.938 -11.2344 -179.375
v 31.9844 -14.0469 -115.844
v 71.9375 -10.4844 -130.609
v 1.8125 -7.89062 -65.9531
v -31.8125 -12.2969 -111.641
v -144.797 1.64062 -90.9062
v -165.453 23.2969 -111
v -86.7969 -4.4375 -117.859
v -168.391 25.5 -167.891
v -185.266 49.1406 -192.047
v -179.547 76.9219 -197.047
v -186.094 100.5 -174.031
v -208.766 74.0156 -173.953
v -213.625 47.7344 -158.672
v -228.141 72.2188 -139.328
v -204.078 55.6406 -177.422
v -222.031 92.3906 -132.078
v -206.734 90.1094 -161.828
v -227.688 66.0625 -117.094
v -214.422 48.6875 -135.594
v -196.984 38.2812 -129.766
v -209.062 64.2344 -96.9531
v -215.172 94.1719 -89.5156
v -224.781 85.1719 -110.125
v -186.172 33.7344 -165.547
v -180.109 15.5625 -44.7812
v -190.938 26.125 -79.4375
v -195.453 62.7812 -81.4844
v -202.859 108.234 -46.3594
v -201.266 54.625 -70.75
v -214.844 76.9219 -41.0469
v -185.094 119.312 -122.562
v -199.297 107.562 -127.391
v -155.625 147.875 -157.672
v -57.3438 167.078 -126.312
v -93.4688 177.172 -121.016
v -118.234 161.578 -152.594
v -81.5938 179.641 -77.1719
v -67.2031 192.531 -72.1719
v -70.875 194.938 -27.7344
v -106.484 178.375 -26.2031
v -93.5625 183.359 -84.7188
v -120.891 182.125 -57.1562
v -48.5469 208.547 -32.1406
v -50.9844 188.453 19.2812
v -126.312 177.891 6.46875
v -84.1875 179.453 42.2969
v -120.578 186.641 56.1562
v -101.844 181.484 82.5312
v -122.609 175.469 105.219
v -87.375 162.875 121.547
v -143.469 159.344 124.219
v -175.984 149.453 111.719
v -166.672 170.016 71.9062
v -169 130.656 131.359
v -205.672 146.125 53.625
v -198.578 137.359 86.9375
v -202.25 119.203 88.9062
v -175.375 170.844 22.125
v -140.875 181.562 26.4688
v -161.578 151.938 -34.1562
v -170.312 158 -13.4062
v -118.875 192.25 -93.9844
v -133.203 186.547 -72.8281
v -163.547 176.797 -72.5781
v -162.719 161.484 -51.2344
v -158.156 180.891 -103.516
v -137.328 178.016 -134.562
v -114.297 184.875 -117.484
v -181.141 161.906 -113.172
v -159.562 163.531 -138.484
v -183.906 137.016 -119.125
v -191.484 141.984 -71.2969
v -182.219 160.375 -83.8125
v -202.531 137.422 -5.23438
v -207.656 103.5 23.7656
v -210.234 83.875 -2.07812
v -198.281 151.922 21.3594
v -212.766 122.203 31.3438
v -200.312 94.6094 83.6094
v -194.891 70.3906 97.625
v -206.547 74.875 49.6719
v -206.859 90.6406 21.0156
v -219.25 53.5938 7.60938
v -210.203 63.2969 24.0156
v -218.531 74.375 -12.7344
v -204.219 42.0781 31.4688
v -202.422 53.7969 58.9219
v -212.812 34.7969 13.9219
v -203.25 20.0938 -2.67188
v -189.25 17.8281 24.2344
v -200.641 35.4531 61.7969
v -207.266 34.5625 105.047
v -199.312 48.3906 100
v -205.953 21.8906 68.9062
v -194.578 9.20312 58.2656
v -183.562 30.5312 164.938
v -197.734 37.8281 145.469
v -147.344 20.1094 153.453
v -153.75 25.5312 199.562
v -105.062 25.75 243.016
v -137.891 30.5469 228.219
v -79.1875 46.7188 258.219
v -48.4531 25.7656 234.453
v -80.8906 69.2656 260.609
v -58.7188 84.8438 260.797
v -65.7344 60.4219 275.906
v -51.0156 74.4375 273.594
v -23.7656 75.7031 279.328
v -19.6875 90.5625 260.781
v -33.2188 54.1406 280.375
v -44.9531 36.1875 268.281
v -66.8125 46.7812 269.109
v -3.98438 52.0625 272.578
v -18.125 36.7031 262.25
v -7.85938 28.2188 243.516
v -44.0156 28.8594 246.625
v 7.54688 13.2656 209.375
v -43.2812 4.125 212.766
v -59.8906 15.6562 234.484
v -134.312 12.5781 230.266
v -110.781 13.6094 239.703
v -88.2656 3.28125 235.047
v -73.2656 -1.125 215.734
v -94.2656 -6.70312 193.797
v -115.656 -2.125 213.359
v -115.75 0.875 152.406
v -68.3125 -0.453125 176.922
v -119.016 -2.75 175.547
v -139.828 2.26562 187.5
v -145.953 13.3281 207
v -144.344 13.1719 164.609
v -112.016 4.45312 111.453
v -152.797 3.70312 113.766
v -161.172 16.0469 147.688
v -183.969 9.35938 140.234
v -192.953 21.8125 151.047
v -206.641 24.875 137.641
v -174.141 2.21875 116.578
v -187.656 -1 94.3438
v -201.188 8.84375 118.594
v -210.672 13.7031 90.0781
v -199.609 5.95312 78.375
v -168.047 3.25 77.8281
v -210.375 24.8906 110.906
v -155.125 6 66.5938
v -111.938 -7.53125 69.625
v -147.578 -2.54688 53.6719
v -169.016 0.390625 8.73438
v -170.953 4.28125 -44.1719
v -191.891 16.4844 -46.3438
v -147.016 -13.2656 -41.8125
v -131.125 -10.6719 -77.1406
v -91.5781 -18.0469 -90.2188
v -132.438 -16.6562 21.1875
v -153.281 -10.8125 -2.375
v -95.75 -22.4531 -35.5156
v -109.328 -15.7969 40.8281
v -79.0469 -19.9844 17.7812
v -42.9375 -21.8594 -56.0938
v -47.1094 -18.9844 -12.2344
v -27.7188 -12.0781 -2.0625
v -66.375 -9.51562 48.75
v -56.8906 -3.64062 60.9688
v -49.6406 -9 69.4688
v -70.9688 -7.84375 110.281
v 2.07812 -10.25 49.4688
v 2.01562 -4.3125 15.3906
v -54.0625 2.9375 163.172
v -45.7188 -4.15625 152.922
v 5.26562 -3.35938 174.109
v -28.8438 -17.1719 136.766
v 4.15625 -13.0625 153.703
v 36.4062 -15.75 139.562
v 54.8438 -1.375 155.406
v 67.0312 10.2656 166.594
v 4.70312 -22 110.141
v -29.5156 -19.8438 82.1719
v -47.4062 -16.0312 109.375
v 36.5469 -18.3281 85.0781
v 3.01562 -17.4375 68.3125
v 54.125 -5.82812 72.3594
v 77.7656 -3 114.594
v 54.3594 -13.2344 113.219
v 60.7031 0.609375 63.0156
v 113.766 -2.07812 71.1875
v 115.641 15.5781 113.859
v 70.1094 -6.17188 50.7969
v 30.1562 -11.1875 -2.8125
v -12.6562 -12.8906 -64.5312
v 16.2656 -13.0156 -67.0156
v -52.2344 -18.7812 -90.4375
v 82.3125 -21.125 -98.9219
v 44.8125 -22.0938 -57.2812
v 50.625 -20.3125 -95.2188
v 79.9219 -18.3906 19.7969
v 48.9375 -18.2969 -12.375
v 109.281 -12.6875 41.9375
v 128.859 -14.6719 19.6562
v 143.812 2.5 47.9688
v 92.7188 -22.7344 -33.625
v 142.281 -10.7656 -12.4219
v 130.812 -16.0312 -53.9219
v 113.547 -15.8281 -91.7812
v 176.75 17.1094 72.5781
v 169.859 23.3125 111.75
v 209.391 26.9375 81.8594
v 221.047 53.0469 42.4844
v 211.484 33.1719 50.2188
v 222.797 59.3125 88.2656
v 206.094 50.4375 126
v 196.609 31.1875 108.891
v 215.516 86.0938 117.344
v 223.016 86.6719 64.2812
v 204.234 72.9219 134.344
v 216.234 95.0469 90.6406
v 172.297 45.7031 137.547
v 123.047 22.2812 163.719
v 143.5 44.3906 164.703
v 142.391 47.2969 196.203
v 113.828 74.7031 226.109
v 136.859 67.2656 204.422
v 43.9688 49.8438 234.828
v 76.1562 51.0156 239.641
v 83.3281 69.9375 237.328
v 53.5938 24.9062 218.281
v 77.2656 32.2812 225.484
v 105.375 25.7031 210.234
v 85.3594 15.5156 184.953
v 115.703 50.6875 223.484
v 126.516 30.0625 189.719
v 13.2344 52.4844 250.25
v -3.03125 70.5625 273.266
v 219.625 74.5625 38.75
v -208.281 17.0781 -44.125
v -221.281 30.0469 -6.96875
v -211.844 20.75 -15.875
v -227.047 54.6406 -21.8281
v -224.328 45.9062 -5.125
v -220.844 59.0781 -40.2031
v -214.969 41.3125 -58.4219
v -204.844 26.2344 -63.4531
v -219.938 30.8281 -39.8125
v 126.156 114.719 -251.266
v -40.4531 142.422 -254.219
# 0 UV coordinates
# 562 vertex normals
vn 0.751525 0.522509 0.402735
vn 0.700906 0.713098 -0.0149231
vn 0.80469 0.408512 0.430804
vn 0.497894 0.825773 0.264953
vn 0.488034 0.670427 0.558882
vn 0.627993 0.773145 0.0887242
vn 0.627789 0.751413 0.203123
vn 0.3877 0.921506 0.0226957
vn 0.122149 0.907848 -0.401113
vn 0.730119 0.671907 -0.124367
vn 0.540641 0.836083 -0.0931252
vn 0.385048 0.824637 0.414381
vn 0.340031 0.933278 0.115632
vn 0.338087 0.845764 0.412771
vn 0.497777 0.735087 0.460288
vn 0.367846 0.793361 0.485043
vn 0.429804 0.463898 0.77464
vn 0.322627 0.859746 0.395914
vn 0.507686 0.309301 0.804107
vn 0.742992 0.573358 0.345287
vn 0.670268 0.741901 0.0179843
vn 0.0555169 0.605829 0.793655
vn 0.515851 0.37389 0.770781
vn 0.0855467 0.985379 0.147344
vn -0.474147 0.71598 0.512404
vn 0.327532 0.744822 0.581346
vn 0.0189117 0.746722 0.664867
vn -0.235121 0.900518 0.365766
vn 0.0564467 0.977896 0.201328
vn 0.36499 0.929809 0.0473017
vn 0.593813 0.686456 0.41972
vn -0.195933 0.954565 -0.224536
vn -0.352409 0.935676 -0.017848
vn -0.393511 0.918697 -0.0338301
vn -0.302236 0.86134 -0.408346
vn 0.142344 0.96568 0.217255
vn 0.0599509 0.969599 0.237244
vn 0.0722092 0.962699 -0.26076
vn 0.151882 0.936312 0.316626
vn 0.438467 0.892146 -0.108729
vn 0.555126 0.791648 0.255203
vn 0.408362 0.671498 0.61833
vn 0.869284 0.463465 0.17189
vn 0.83785 0.319198 0.442855
vn 0.39202 0.830289 0.396157
vn 0.989637 0.14344 0.00655177
vn 0.800173 0.599747 -0.00527365
vn 0.880664 0.461822 0.1056
vn 0.710505 0.55586 0.43151
vn 0.76907 0.514258 -0.379566
vn 0.305402 0.863288 -0.401825
vn 0.599076 0.706332 -0.377099
vn 0.767071 0.613495 -0.187686
vn 0.373348 0.910044 -0.180088
vn 0.287622 0.7707 -0.568591
vn 0.331095 0.942958 -0.0347286
vn 0.0344447 0.93587 -0.350657
vn 0.0194392 0.949824 -0.312179
vn -0.0338356 0.998888 -0.0328182
vn 0.777207 0.626214 0.0616842
vn 0.262198 0.936196 -0.23407
vn 0.08488 0.993619 -0.0742807
vn 0.396476 0.906317 0.146273
vn 0.455606 0.874699 -0.165303
vn 0.846342 0.332286 -0.416282
vn 0.497344 0.608952 -0.617921
vn 0.736955 0.664851 -0.121944
vn 0.131217 0.87357 -0.468676
vn 0.152843 0.969862 -0.189754
vn 0.647747 0.0247679 -0.761453
vn 0.342023 0.443969 -0.828198
vn 0.820981 -0.195133 -0.536575
vn 0.803262 -0.443335 -0.397775
vn 0.614526 -0.441781 -0.653595
vn 0.440401 -0.209086 -0.873115
vn 0.440504 0.046935 -0.896523
vn 0.990647 -0.0476847 -0.127848
vn 0.895253 0.104119 -0.433222
vn 0.785417 0.582189 -0.210181
vn 0.742528 0.209718 -0.636137
vn 0.511535 -0.410015 -0.755129
vn 0.75009 -0.470446 -0.464807
vn 0.8222 0.408698 0.396173
vn 0.767982 0.626756 0.131835
vn 0.858836 0.34655 -0.377231
vn 0.961744 -0.242788 0.126896
vn 0.423638 0.900117 0.101584
vn 0.610285 0.759659 -0.224658
vn 0.62509 0.398994 0.670869
vn 0.450948 0.0825757 0.888722
vn 0.39303 0.784317 0.479973
vn 0.831776 0.415867 0.3677
vn 0.54866 -0.652565 0.522619
vn 0.103603 0.47613 0.873251
vn 0.309567 0.840384 0.444885
vn 0.353848 -0.40307 0.843994
vn 0.0653861 0.439156 0.896029
vn 0.587535 0.331136 0.738344
vn 0.381702 0.598725 0.704153
vn 0.0453134 0.678407 0.733287
vn 0.447029 0.821235 0.354597
vn 0.024467 0.185946 0.982255
vn 0.592477 0.804236 0.0466463
vn 0.282287 0.958784 -0.0323653
vn 0.0391061 0.958182 0.283475
vn 0.506108 0.812925 -0.28811
vn -0.0187254 0.967882 -0.250705
vn -0.0212131 0.985663 -0.16739
vn -0.213175 0.976997 -0.00574341
vn -0.272175 0.857527 0.436541
vn -0.263723 0.559514 0.785744
vn -0.299998 0.307527 0.90301
vn -0.566515 0.605824 0.558603
vn -0.217594 0.480894 0.849349
vn -0.427317 0.680988 0.59469
vn -0.513031 0.850709 0.114429
vn -0.519097 0.77788 0.354178
vn -0.589685 0.790904 0.163531
vn -0.15724 0.855785 0.492857
vn -0.0194027 0.580211 0.814235
vn -0.263871 0.811048 0.522085
vn -0.359369 0.22917 0.904619
vn -0.064246 0.615334 0.785644
vn -0.181433 0.193087 0.964261
vn -0.0300008 0.0951744 0.995008
vn -0.34253 -0.231433 0.910556
vn -0.316983 -0.283457 0.905082
vn -0.671073 -0.217051 0.708908
vn -0.592403 0.438976 0.675543
vn -0.607944 -0.417553 0.675317
vn -0.653039 -0.12547 0.746858
vn -0.313974 -0.261333 0.912757
vn -0.96596 0.0344188 0.25639
vn -0.842372 0.532895 0.0802039
vn -0.935121 0.113926 0.335514
vn -0.555798 0.802673 0.216344
vn -0.850512 0.520039 -0.0786618
vn -0.832386 0.460246 0.308718
vn -0.78235 0.274558 0.559059
vn -0.859231 0.34343 0.37918
vn -0.837234 0.413271 0.358115
vn -0.889349 -0.0689051 0.452006
vn -0.259235 0.751372 0.606825
vn -0.0760042 0.981105 0.177921
vn -0.363813 0.915089 -0.173933
vn -0.365902 0.919967 0.140631
vn 0.0264149 0.812773 0.581981
vn -0.0820229 0.96888 0.233545
vn 0.265587 0.941166 0.208976
vn 0.393732 0.74745 0.535065
vn 0.699569 0.709612 -0.0839861
vn 0.444518 0.8944 -0.0495268
vn 0.290863 0.89926 0.326696
vn 0.485533 0.848008 0.212461
vn 0.0993189 0.995056 -0.000423163
vn -0.159786 0.95378 0.254506
vn 0.0517031 0.886345 0.460129
vn 0.0693958 0.901023 -0.428184
vn -0.242234 0.956226 -0.16418
vn 0.418592 0.754307 -0.505769
vn 0.359909 0.855294 -0.372743
vn 0.0136743 0.670429 -0.741848
vn -0.25976 0.749543 -0.60886
vn -0.217535 0.855385 -0.470101
vn 0.0875584 0.9307 -0.355149
vn 0.396468 0.916892 -0.0460665
vn 0.234952 0.903947 -0.357319
vn -0.211876 0.976939 -0.0264201
vn 0.0849702 0.970141 0.227173
vn 0.238616 0.686613 -0.686749
vn 0.341355 0.67848 -0.650493
vn 0.517886 0.7661 -0.380637
vn -0.0986489 0.930041 -0.353967
vn 0.0350834 0.746227 -0.664767
vn 0.292221 0.871929 -0.39287
vn 0.321272 0.937453 -0.134036
vn 0.101276 0.994509 -0.0263742
vn 0.23741 0.765854 -0.597582
vn 0.0423081 0.76529 -0.642294
vn 0.0050377 0.919075 -0.394052
vn -0.101501 0.990926 0.0881061
vn -0.128145 0.976288 0.174472
vn -0.225675 0.960996 -0.159868
vn 0.145503 0.959453 0.241412
vn -0.235758 0.780328 -0.579229
vn -0.543936 0.754324 -0.367599
vn -0.408167 0.910475 0.0665969
vn -0.38236 0.838433 -0.388369
vn -0.225431 0.923283 -0.311015
vn -0.593285 0.667548 -0.44988
vn -0.438541 0.550383 -0.710465
vn -0.39372 0.641082 -0.658785
vn -0.226459 0.504449 -0.833215
vn -0.209294 0.480683 -0.851552
vn -0.0546885 0.575436 -0.816016
vn -0.242353 0.790608 -0.56232
vn -0.606601 0.673524 -0.422374
vn 0.0231263 0.573446 -0.818917
vn -0.260861 0.44688 -0.855716
vn -0.212181 -0.0155464 -0.977107
vn -0.0141528 0.599684 -0.800112
vn 0.236724 0.564562 -0.790716
vn 0.0614452 0.55767 -0.827785
vn -0.0085441 0.370901 -0.928633
vn -0.313737 -0.0566583 -0.947818
vn -0.511484 0.0362681 -0.858527
vn -0.218655 0.309777 -0.925326
vn -0.422395 -0.51311 -0.747196
vn 0.00187085 -0.237319 -0.97143
vn -0.111976 -0.717243 -0.687767
vn -0.339695 -0.468271 -0.815677
vn 0.318376 0.0565066 -0.946279
vn 0.189472 -0.755429 -0.627238
vn 0.189365 0.431666 -0.881933
vn 0.522151 0.244382 -0.81709
vn 0.375428 0.260014 -0.889633
vn 0.533301 -0.491324 -0.688615
vn 0.373359 -0.493397 -0.785597
vn 0.442109 -0.34469 -0.828087
vn 0.128904 -0.765096 -0.630881
vn 0.251152 -0.895003 -0.368637
vn 0.664379 -0.381027 -0.642976
vn 0.359557 -0.378763 -0.852794
vn 0.208175 0.287532 -0.934873
vn 0.387459 -0.890476 -0.238597
vn 0.826502 -0.482457 -0.290051
vn 0.506945 -0.816079 -0.277529
vn 0.123442 -0.87365 -0.470636
vn 0.666753 -0.446627 -0.596628
vn 0.912951 -0.129395 -0.387012
vn 0.0348119 -0.994264 -0.101125
vn 0.200009 -0.976164 -0.0842599
vn 0.379901 -0.919017 0.105275
vn 0.0682962 -0.987747 0.140327
vn 0.307529 -0.951444 0.0134405
vn 0.169073 -0.984103 -0.0543671
vn 0.367158 -0.854325 0.367864
vn 0.84861 -0.528845 -0.0135623
vn 0.834412 -0.424302 0.351746
vn 0.485245 -0.819301 0.305422
vn 0.978113 0.193981 0.0752782
vn 0.923502 0.300455 -0.238476
vn 0.91703 0.148372 0.370192
vn 0.731001 -0.267388 0.627807
vn 0.865247 -0.30983 -0.394149
vn 0.567842 -0.81927 0.0797006
vn 0.519193 -0.836448 -0.175481
vn 0.350069 -0.923772 0.155234
vn 0.623121 -0.779101 0.0687096
vn 0.353181 -0.89238 -0.280928
vn 0.55353 -0.823151 -0.126601
vn 0.0752214 -0.996247 -0.0428149
vn 0.282169 -0.92049 0.270332
vn 0.613919 -0.76413 0.198013
vn 0.396445 -0.917906 0.0167198
vn 0.688124 -0.303546 -0.659048
vn 0.45716 -0.762276 -0.458193
vn 0.659202 -0.716144 -0.229324
vn 0.296939 -0.661997 -0.688177
vn 0.0784832 -0.855045 -0.51258
vn -0.0416008 -0.585932 -0.809291
vn 0.160166 -0.974631 -0.156339
vn -0.0929867 -0.990821 -0.0981184
vn -0.125355 -0.923633 -0.3622
vn -0.240131 -0.853639 -0.462209
vn 0.0517914 -0.925265 -0.375769
vn 0.0761509 -0.943368 -0.322889
vn -0.313792 -0.947057 -0.0679477
vn -0.00582241 -0.997612 -0.0688217
vn 0.269575 -0.903639 -0.332814
vn -0.0199967 -0.815798 -0.577991
vn 0.0560834 -0.74426 -0.665531
vn -0.0948334 -0.930405 -0.354051
vn 0.132959 -0.956657 -0.259092
vn 0.0675223 -0.997474 -0.0220486
vn 0.286163 -0.95818 0.00172396
vn -0.230987 -0.582167 -0.779568
vn -0.145189 -0.884464 -0.443445
vn -0.232278 -0.564375 -0.792166
vn 0.0445439 -0.908358 -0.415814
vn -0.0540252 -0.654985 -0.753708
vn 0.212036 -0.0630159 -0.975228
vn -0.0691604 0.0330158 -0.997059
vn -0.328758 0.654528 -0.680816
vn -0.138234 0.484578 -0.863757
vn -0.564715 0.640311 -0.520672
vn -0.838833 0.2389 -0.489169
vn -0.954551 0.219937 -0.201147
vn -0.827345 0.244103 -0.50588
vn -0.484892 0.178335 -0.856199
vn -0.49493 -0.547916 -0.674412
vn -0.85074 -0.449278 -0.272746
vn -0.810305 -0.332304 -0.482679
vn -0.476531 -0.652115 -0.58963
vn -0.79081 -0.426104 -0.43938
vn -0.378014 -0.837353 -0.394898
vn -0.128952 -0.513098 -0.848588
vn -0.256605 -0.754369 -0.60422
vn -0.364712 -0.835829 -0.410335
vn -0.489994 -0.535123 -0.688149
vn -0.183833 -0.976461 -0.112824
vn -0.0961136 -0.974693 0.201831
vn 0.0575485 -0.981647 0.181815
vn 0.0847536 -0.972558 0.216674
vn -0.420697 -0.903866 -0.0777212
vn -0.265555 -0.949475 0.167267
vn -0.331222 -0.901812 0.277537
vn -0.740866 -0.670497 -0.0393826
vn -0.739644 -0.516358 -0.431626
vn -0.548158 -0.742589 -0.384817
vn -0.0416401 -0.923795 0.380617
vn -0.163465 -0.985554 -0.0442932
vn -0.0409141 -0.998802 -0.0268287
vn -0.121392 -0.978853 0.164657
vn 0.0586316 -0.945454 0.320435
vn 0.0858159 -0.983657 0.158288
vn -0.0627014 -0.986864 0.148891
vn 0.218868 -0.944511 0.244939
vn -0.156437 -0.971129 -0.1801
vn 0.0939125 -0.922076 -0.375441
vn -0.00782455 -0.999962 0.00372097
vn 0.061343 -0.966735 -0.248314
vn -0.446181 -0.804292 -0.392474
vn -0.506091 -0.858752 -0.080107
vn -0.19332 -0.857289 -0.477162
vn -0.637425 -0.761094 -0.120107
vn -0.67094 -0.390067 -0.630624
vn -0.629314 0.248184 -0.736457
vn -0.603191 0.656419 -0.453073
vn -0.754652 0.213374 -0.620461
vn -0.740662 -0.606432 -0.289241
vn -0.949168 0.00870601 -0.31465
vn -0.736142 -0.233309 -0.635344
vn -0.741885 0.642032 -0.193394
vn -0.673046 0.574786 -0.465435
vn -0.856703 -0.431339 0.282853
vn -0.638697 -0.760188 0.11908
vn -0.511851 -0.834963 0.202104
vn -0.630739 -0.578069 0.517692
vn -0.898168 0.34916 0.267172
vn -0.948412 0.28398 0.140961
vn -0.467004 -0.852059 -0.236436
vn -0.505716 -0.851257 -0.140044
vn -0.611527 -0.578089 -0.54023
vn -0.921596 -0.38815 0.000689784
vn -0.930314 0.359315 -0.0735412
vn -0.79601 0.0789265 -0.600116
vn -0.896365 0.321422 -0.305317
vn -0.809975 0.530472 -0.25008
vn -0.561421 0.816936 -0.131992
vn -0.544024 0.570077 -0.615671
vn -0.068075 0.945714 -0.31779
vn 0.237986 0.894451 -0.378577
vn 0.0287916 0.756459 -0.653407
vn -0.19881 0.960553 -0.194453
vn -0.510998 0.810469 -0.286393
vn -0.484884 0.866511 0.118515
vn -0.275135 0.959511 0.0603328
vn 0.297974 0.953043 0.0540324
vn -0.151083 0.930972 0.332362
vn -0.385722 0.918805 0.0837623
vn -0.372086 0.822854 0.429491
vn -0.110498 0.971841 -0.208124
vn 0.172235 0.98187 -0.0791552
vn -0.0841983 0.995427 0.0451226
vn 0.116655 0.967328 0.225097
vn -0.137069 0.919648 0.368048
vn 0.118495 0.872503 0.474023
vn -0.336004 0.809612 0.48128
vn -0.568565 0.691878 0.445015
vn -0.422194 0.883706 0.202031
vn -0.652463 0.285578 0.701953
vn -0.781187 0.609715 0.13414
vn -0.820013 0.413867 0.395339
vn -0.923354 0.000141117 0.38395
vn -0.437077 0.892399 -0.112195
vn -0.187122 0.970912 -0.149383
vn -0.558131 0.829319 -0.0268262
vn -0.388348 0.840606 -0.37758
vn -0.0269943 0.998756 -0.0419188
vn -0.208069 0.945972 0.248684
vn -0.501539 0.827269 0.253148
vn -0.503337 0.71349 0.487427
vn -0.395547 0.906197 -0.149495
vn -0.180372 0.854264 -0.487544
vn 0.135672 0.914014 -0.382324
vn -0.764827 0.575869 -0.288815
vn -0.504895 0.696951 -0.509254
vn -0.914699 0.166118 -0.368417
vn -0.90877 0.400783 0.116232
vn -0.773597 0.624728 0.106122
vn -0.816035 0.495501 -0.2976
vn -0.999938 -0.00433544 0.0102633
vn -0.958036 0.274316 0.0831787
vn -0.709261 0.690903 -0.140004
vn -0.999179 0.0391213 0.0105561
vn -0.940074 -0.0291622 0.339722
vn -0.934701 0.157206 0.318778
vn -0.987862 -0.0185561 0.15422
vn -0.99662 0.0304364 0.0763084
vn -0.918286 0.119896 0.377326
vn -0.964053 0.0675141 0.256991
vn -0.894233 0.429772 0.125072
vn -0.899402 -0.350031 0.26183
vn -0.979778 -0.092169 0.177595
vn -0.726991 -0.493686 0.477241
vn -0.340528 -0.919572 0.19603
vn -0.592925 -0.805257 -0.000393227
vn -0.996866 -0.022165 -0.0759345
vn -0.892577 0.450013 0.0281997
vn -0.933637 0.343519 0.101576
vn -0.954538 0.0607801 -0.291827
vn -0.428476 -0.839421 -0.334336
vn -0.473506 -0.412758 0.778089
vn -0.789675 0.506237 0.346608
vn -0.356543 -0.906868 0.224651
vn -0.917363 -0.322226 0.233701
vn -0.119783 -0.0395484 0.992012
vn -0.66256 0.103289 0.741852
vn -0.537471 -0.634011 0.556017
vn 0.0294596 -0.727596 0.685373
vn -0.631207 0.290247 0.719259
vn -0.24264 0.679589 0.692304
vn -0.368055 0.0400139 0.928943
vn -0.268242 0.561401 0.782864
vn 0.0558367 0.453976 0.889263
vn 0.0502907 0.768656 0.637682
vn 0.0143812 -0.276351 0.960949
vn -0.0780265 -0.780895 0.61977
vn -0.387668 -0.56226 0.730463
vn 0.469845 -0.443674 0.763151
vn 0.234382 -0.766662 0.597741
vn 0.317901 -0.82764 0.462549
vn -0.179269 -0.934821 0.30655
vn 0.143714 -0.882179 0.448449
vn 0.230838 -0.93926 0.253978
vn 0.263695 -0.444309 0.856186
vn -0.524758 -0.621226 0.581985
vn -0.181091 -0.446207 0.876416
vn 0.0410333 -0.815023 0.577974
vn 0.125227 -0.968295 0.216157
vn 0.0280921 -0.999572 0.0081315
vn -0.218789 -0.941218 0.257372
vn -0.149275 -0.973104 -0.175456
vn 0.144069 -0.982255 -0.120083
vn -0.181058 -0.979757 -0.0854013
vn -0.489141 -0.872099 0.0135623
vn -0.772525 -0.587361 0.241271
vn -0.698877 -0.685272 -0.204874
vn -0.135092 -0.985403 0.103592
vn 0.0866406 -0.982979 0.162003
vn 0.0740621 -0.864227 0.49762
vn -0.154465 -0.894446 0.41965
vn -0.509049 -0.649396 0.564938
vn -0.890433 -0.249511 0.380623
vn 0.00934067 -0.975573 0.219476
vn -0.162163 -0.986734 0.00768566
vn -0.560677 -0.795565 0.229604
vn -0.885331 -0.463453 -0.0374138
vn -0.51438 -0.845965 -0.140557
vn 0.0783272 -0.984562 -0.156535
vn -0.990971 0.122136 0.0553034
vn -0.225437 -0.971573 0.0722802
vn -0.0698216 -0.95343 0.293421
vn -0.388417 -0.8873 0.248659
vn -0.587999 -0.805408 0.0746684
vn -0.639406 -0.750992 -0.164836
vn -0.0555395 -0.994654 -0.0870551
vn -0.331355 -0.938466 -0.0973949
vn -0.328987 -0.899365 -0.287941
vn -0.135929 -0.962876 -0.233222
vn -0.211349 -0.971895 0.103688
vn -0.436509 -0.898157 0.0526693
vn -0.0790952 -0.996751 -0.0152188
vn -0.0479012 -0.977702 0.20446
vn 0.0633695 -0.988464 0.137562
vn 0.111719 -0.993638 -0.0142325
vn 0.196572 -0.973022 0.120778
vn 0.239479 -0.960192 0.143807
vn 0.17677 -0.947135 0.267744
vn -0.0240928 -0.998319 0.052722
vn -0.291383 -0.903516 -0.314254
vn -0.335288 -0.939475 0.0704925
vn 0.0426801 -0.948069 -0.315187
vn 0.0248866 -0.998928 0.0390362
vn -0.0487512 -0.988932 0.140134
vn -0.281008 -0.873736 0.397013
vn 0.0319641 -0.885896 0.462781
vn -0.140074 -0.962789 0.231122
vn 0.00580559 -0.939598 0.342231
vn 0.180872 -0.95628 0.229811
vn 0.34623 -0.840532 0.416691
vn 0.25126 -0.925507 0.283384
vn 0.0202567 -0.998643 0.0479667
vn -0.132542 -0.982534 -0.130615
vn -0.246029 -0.967951 0.0504004
vn 0.20181 -0.969015 -0.14242
vn 0.0332604 -0.967254 -0.25162
vn 0.371813 -0.865455 -0.335771
vn 0.451231 -0.890414 0.0596059
vn 0.319332 -0.946545 0.0456134
vn 0.0870604 -0.993189 0.0774348
vn 0.136492 -0.919811 0.367856
vn 0.296113 -0.928884 0.222468
vn -0.186402 -0.927249 0.324751
vn -0.239335 -0.956193 0.168564
vn 0.29612 -0.955107 -0.00915613
vn -0.31701 -0.948234 0.0188605
vn 0.0366542 -0.986043 -0.162408
vn 0.0794059 -0.985783 -0.148079
vn -0.138847 -0.990085 0.0212802
vn -0.100764 -0.988388 -0.113739
vn -0.0690178 -0.98103 0.181156
vn -0.203545 -0.969109 0.139275
vn 0.0739581 -0.963539 0.257143
vn 0.270834 -0.95338 0.133101
vn 0.521368 -0.812354 0.261258
vn 0.0710363 -0.997201 0.0233409
vn 0.504087 -0.863155 0.029328
vn 0.328201 -0.942659 -0.0606378
vn 0.280093 -0.939857 -0.195492
vn 0.212499 -0.976587 0.0334995
vn 0.186591 -0.899972 0.393998
vn 0.642605 -0.755399 0.128182
vn 0.946417 -0.261057 -0.190114
vn 0.762993 -0.61941 -0.184858
vn 0.96961 -0.185986 0.15895
vn 0.662511 -0.469889 0.583339
vn 0.413996 -0.790314 0.451676
vn 0.872527 0.289403 0.393628
vn 0.947434 0.315169 -0.0551105
vn 0.697022 -0.0101218 0.716979
vn 0.76655 0.631763 0.115229
vn 0.288265 -0.56886 0.770261
vn 0.452976 -0.886812 0.0915282
vn 0.917308 -0.387326 0.0923263
vn 0.804843 -0.400704 0.437793
vn 0.516795 0.293646 0.804173
vn 0.780762 0.152494 0.605934
vn -0.121294 -0.306696 0.944047
vn 0.153926 -0.332785 0.930355
vn 0.221655 0.193446 0.955745
vn 0.0385646 -0.828674 0.558402
vn 0.121592 -0.689323 0.714177
vn 0.318202 -0.809516 0.493388
vn 0.137162 -0.965569 0.221048
vn 0.501414 -0.343738 0.793995
vn 0.559516 -0.783537 0.270207
vn 0.716456 -0.439566 0.541731
vn 0.453276 0.127381 0.882222
vn 0.947682 0.132709 -0.290322
vn -0.498533 -0.84871 -0.176511
vn -0.859443 -0.487366 0.154375
vn -0.501918 -0.856096 0.123198
vn -0.994648 0.0791395 -0.0664308
vn -0.964706 -0.0733568 0.252905
vn -0.911953 0.182502 -0.36747
vn -0.849895 -0.0420363 -0.525273
vn -0.728896 -0.485754 -0.482445
vn -0.918701 -0.34697 -0.188679
vn 0.176389 0.693339 -0.69869
vn -0.141235 0.652238 -0.744741
# Mesh 'n0b0_0' with 1120 faces
g n0b0_0
usemtl %%%DEFAULT
f 1//1 2//2 3//3
f 2//2 1//1 4//4
f 5//5 4//4 1//1
f 3//3 5//5 1//1
f 6//6 7//7 2//2
f 8//8 2//2 7//7
f 2//2 8//8 9//9
f 10//10 3//3 2//2
f 2//2 4//4 6//6
f 2//2 9//9 10//10
f 4//4 11//11 6//6
f 7//7 6//6 11//11
f 4//4 5//5 12//12
f 11//11 4//4 13//13
f 14//14 4//4 12//12
f 4//4 14//14 13//13
f 15//15 12//12 5//5
f 12//12 15//15 16//16
f 12//12 16//16 14//14
f 17//17 16//16 15//15
f 15//15 5//5 18//18
f 19//19 15//15 20//20
f 15//15 19//19 17//17
f 15//15 21//21 20//20
f 15//15 18//18 21//21
f 22//22 18//18 5//5
f 5//5 3//3 23//23
f 22//22 5//5 23//23
f 18//18 22//22 24//24
f 24//24 21//21 18//18
f 25//25 24//24 22//22
f 23//23 26//26 22//22
f 27//27 22//22 26//26
f 22//22 27//27 28//28
f 22//22 28//28 25//25
f 26//26 23//23 3//3
f 26//26 28//28 27//27
f 28//28 26//26 29//29
f 30//30 29//29 26//26
f 3//3 31//31 26//26
f 30//30 26//26 31//31
f 32//32 33//33 28//28
f 34//34 28//28 33//33
f 28//28 34//34 25//25
f 32//32 28//28 29//29
f 24//24 25//25 34//34
f 34//34 35//35 36//36
f 35//35 34//34 32//32
f 33//33 32//32 34//34
f 37//37 34//34 36//36
f 34//34 37//37 24//24
f 9//9 36//36 35//35
f 32//32 9//9 35//35
f 36//36 9//9 8//8
f 32//32 38//38 9//9
f 30//30 9//9 38//38
f 9//9 30//30 10//10
f 7//7 39//39 8//8
f 40//40 8//8 39//39
f 8//8 40//40 41//41
f 41//41 36//36 8//8
f 39//39 7//7 42//42
f 11//11 43//43 7//7
f 44//44 7//7 43//43
f 7//7 44//44 42//42
f 45//45 42//42 44//44
f 42//42 45//45 39//39
f 44//44 46//46 47//47
f 46//46 44//44 48//48
f 43//43 48//48 44//44
f 49//49 45//45 44//44
f 44//44 47//47 49//49
f 50//50 47//47 46//46
f 48//48 50//50 46//46
f 51//51 52//52 50//50
f 47//47 50//50 52//52
f 53//53 54//54 50//50
f 54//54 55//55 50//50
f 51//51 50//50 55//55
f 50//50 48//48 53//53
f 52//52 51//51 47//47
f 56//56 47//47 51//51
f 57//57 51//51 55//55
f 51//51 57//57 58//58
f 58//58 59//59 51//51
f 56//56 51//51 59//59
f 55//55 54//54 57//57
f 54//54 53//53 60//60
f 61//61 57//57 54//54
f 54//54 62//62 61//61
f 62//62 54//54 63//63
f 60//60 63//63 54//54
f 64//64 62//62 63//63
f 63//63 60//60 64//64
f 64//64 65//65 66//66
f 65//65 64//64 67//67
f 60//60 67//67 64//64
f 64//64 66//66 68//68
f 62//62 64//64 69//69
f 68//68 69//69 64//64
f 66//66 70//70 71//71
f 70//70 66//66 65//65
f 71//71 68//68 66//66
f 65//65 72//72 70//70
f 73//73 70//70 72//72
f 70//70 73//73 74//74
f 75//75 70//70 74//74
f 70//70 75//75 76//76
f 76//76 71//71 70//70
f 72//72 65//65 73//73
f 77//77 73//73 65//65
f 67//67 60//60 65//65
f 77//77 65//65 60//60
f 60//60 78//78 77//77
f 73//73 77//77 78//78
f 78//78 60//60 53//53
f 79//79 80//80 78//78
f 81//81 78//78 80//80
f 78//78 81//81 82//82
f 53//53 79//79 78//78
f 82//82 73//73 78//78
f 79//79 53//53 48//48
f 43//43 83//83 48//48
f 84//84 48//48 83//83
f 48//48 84//84 79//79
f 43//43 11//11 85//85
f 85//85 86//86 43//43
f 83//83 43//43 86//86
f 13//13 87//87 11//11
f 88//88 11//11 87//87
f 11//11 88//88 85//85
f 87//87 13//13 14//14
f 14//14 89//89 90//90
f 89//89 14//14 16//16
f 91//91 87//87 14//14
f 14//14 90//90 91//91
f 16//16 92//92 89//89
f 93//93 89//89 92//92
f 93//93 90//90 89//89
f 16//16 17//17 94//94
f 94//94 95//95 16//16
f 92//92 16//16 95//95
f 96//96 94//94 17//17
f 97//97 17//17 19//19
f 17//17 97//97 98//98
f 98//98 96//96 17//17
f 19//19 99//99 100//100
f 99//99 19//19 101//101
f 20//20 101//101 19//19
f 19//19 100//100 102//102
f 97//97 19//19 102//102
f 101//101 100//100 99//99
f 21//21 103//103 101//101
f 104//104 101//101 103//103
f 101//101 104//104 105//105
f 100//100 101//101 105//105
f 101//101 20//20 21//21
f 106//106 104//104 21//21
f 103//103 21//21 104//104
f 21//21 24//24 106//106
f 107//107 108//108 104//104
f 109//109 104//104 108//108
f 104//104 109//109 105//105
f 104//104 106//106 107//107
f 110//110 105//105 109//109
f 105//105 110//110 100//100
f 111//111 100//100 110//110
f 100//100 111//111 112//112
f 112//112 102//102 100//100
f 110//110 112//112 111//111
f 112//112 110//110 113//113
f 102//102 112//112 97//97
f 112//112 114//114 97//97
f 115//115 112//112 113//113
f 112//112 115//115 114//114
f 116//116 113//113 110//110
f 113//113 116//116 115//115
f 117//117 115//115 116//116
f 115//115 117//117 118//118
f 118//118 119//119 115//115
f 120//120 115//115 119//119
f 115//115 120//120 114//114
f 119//119 118//118 121//121
f 121//121 120//120 119//119
f 122//122 114//114 120//120
f 120//120 121//121 123//123
f 123//123 124//124 120//120
f 125//125 120//120 124//124
f 120//120 125//125 122//122
f 124//124 123//123 121//121
f 124//124 126//126 127//127
f 126//126 124//124 128//128
f 129//129 128//128 124//124
f 124//124 127//127 125//125
f 124//124 121//121 129//129
f 127//127 122//122 125//125
f 130//130 131//131 127//127
f 132//132 127//127 131//131
f 127//127 132//132 122//122
f 127//127 128//128 130//130
f 128//128 127//127 126//126
f 128//128 133//133 130//130
f 131//131 130//130 133//133
f 134//134 135//135 128//128
f 133//133 128//128 135//135
f 128//128 129//129 134//134
f 121//121 134//134 129//129
f 121//121 136//136 134//134
f 136//136 121//121 118//118
f 118//118 134//134 136//136
f 137//137 133//133 134//134
f 135//135 134//134 133//133
f 134//134 118//118 137//137
f 138//138 118//118 117//117
f 118//118 138//138 137//137
f 133//133 137//137 138//138
f 139//139 138//138 117//117
f 138//138 139//139 140//140
f 141//141 138//138 140//140
f 138//138 141//141 142//142
f 142//142 133//133 138//138
f 117//117 143//143 139//139
f 143//143 117//117 144//144
f 116//116 144//144 117//117
f 144//144 116//116 145//145
f 109//109 145//145 116//116
f 146//146 116//116 110//110
f 116//116 146//146 109//109
f 145//145 109//109 107//107
f 107//107 144//144 145//145
f 108//108 107//107 109//109
f 110//110 109//109 146//146
f 107//107 24//24 37//37
f 24//24 107//107 106//106
f 144//144 107//107 37//37
f 36//36 147//147 37//37
f 148//148 37//37 147//147
f 37//37 148//148 149//149
f 144//144 37//37 149//149
f 36//36 41//41 150//150
f 147//147 36//36 150//150
f 151//151 41//41 40//40
f 41//41 151//151 152//152
f 153//153 150//150 41//41
f 154//154 41//41 152//152
f 41//41 154//154 153//153
f 150//150 153//153 147//147
f 152//152 155//155 153//153
f 156//156 153//153 155//155
f 153//153 156//156 157//157
f 157//157 147//147 153//153
f 152//152 153//153 154//154
f 155//155 152//152 158//158
f 155//155 159//159 156//156
f 159//159 155//155 158//158
f 160//160 152//152 151//151
f 152//152 160//160 161//161
f 161//161 158//158 152//152
f 158//158 161//161 160//160
f 162//162 163//163 158//158
f 164//164 158//158 163//163
f 158//158 164//164 159//159
f 158//158 160//160 162//162
f 160//160 165//165 162//162
f 163//163 162//162 165//165
f 165//165 160//160 61//61
f 40//40 160//160 151//151
f 160//160 40//40 61//61
f 61//61 166//166 165//165
f 166//166 61//61 167//167
f 62//62 167//167 61//61
f 57//57 61//61 40//40
f 168//168 57//57 40//40
f 40//40 39//39 168//168
f 59//59 58//58 57//57
f 57//57 168//168 59//59
f 39//39 59//59 168//168
f 169//169 39//39 45//45
f 39//39 169//169 59//59
f 45//45 59//59 169//169
f 59//59 45//45 56//56
f 47//47 56//56 45//45
f 45//45 49//49 47//47
f 170//170 171//171 167//167
f 172//172 167//167 171//171
f 167//167 172//172 166//166
f 167//167 62//62 173//173
f 174//174 167//167 173//173
f 167//167 174//174 170//170
f 175//175 166//166 172//172
f 171//171 175//175 172//172
f 166//166 175//175 176//176
f 177//177 176//176 175//175
f 175//175 171//171 178//178
f 178//178 179//179 175//175
f 180//180 175//175 179//179
f 175//175 180//180 177//177
f 176//176 177//177 166//166
f 177//177 181//181 182//182
f 181//181 177//177 183//183
f 180//180 183//183 177//177
f 184//184 166//166 177//177
f 177//177 182//182 184//184
f 183//183 180//180 185//185
f 179//179 185//185 180//180
f 186//186 187//187 183//183
f 182//182 183//183 187//187
f 183//183 182//182 181//181
f 185//185 188//188 183//183
f 186//186 183//183 188//188
f 187//187 186//186 189//189
f 189//189 182//182 187//187
f 190//190 189//189 186//186
f 185//185 191//191 186//186
f 192//192 186//186 191//191
f 186//186 192//192 190//190
f 188//188 185//185 186//186
f 193//193 192//192 191//191
f 191//191 185//185 193//193
f 192//192 193//193 194//194
f 194//194 195//195 192//192
f 196//196 192//192 195//195
f 192//192 196//196 197//197
f 197//197 190//190 192//192
f 198//198 194//194 193//193
f 194//194 198//198 199//199
f 199//199 200//200 194//194
f 195//195 194//194 200//200
f 201//201 199//199 198//198
f 198//198 202//202 201//201
f 202//202 198//198 170//170
f 171//171 170//170 198//198
f 203//203 171//171 198//198
f 198//198 193//193 203//203
f 199//199 201//201 204//204
f 202//202 204//204 201//201
f 205//205 206//206 199//199
f 200//200 199//199 206//206
f 207//207 199//199 204//204
f 199//199 207//207 205//205
f 206//206 205//205 208//208
f 208//208 200//200 206//206
f 204//204 209//209 205//205
f 210//210 205//205 209//209
f 205//205 210//210 211//211
f 211//211 208//208 205//205
f 204//204 205//205 207//207
f 209//209 204//204 212//212
f 209//209 213//213 210//210
f 213//213 209//209 212//212
f 204//204 202//202 214//214
f 214//214 212//212 204//204
f 212//212 214//214 202//202
f 215//215 212//212 202//202
f 202//202 216//216 215//215
f 216//216 202//202 170//170
f 216//216 217//217 215//215
f 212//212 215//215 217//217
f 212//212 218//218 213//213
f 218//218 212//212 217//217
f 217//217 216//216 219//219
f 220//220 217//217 219//219
f 217//217 220//220 221//221
f 213//213 217//217 221//221
f 217//217 213//213 218//218
f 219//219 75//75 222//222
f 75//75 219//219 216//216
f 223//223 219//219 222//222
f 219//219 223//223 220//220
f 74//74 222//222 75//75
f 71//71 76//76 75//75
f 224//224 75//75 216//216
f 75//75 224//224 71//71
f 222//222 74//74 73//73
f 73//73 82//82 222//222
f 81//81 225//225 82//82
f 226//226 82//82 225//225
f 82//82 226//226 222//222
f 81//81 227//227 228//228
f 227//227 81//81 229//229
f 230//230 229//229 81//81
f 225//225 81//81 228//228
f 230//230 81//81 80//80
f 228//228 231//231 225//225
f 231//231 228//228 227//227
f 232//232 225//225 231//231
f 233//233 234//234 231//231
f 235//235 231//231 234//234
f 231//231 235//235 232//232
f 236//236 231//231 227//227
f 231//231 236//236 233//233
f 234//234 233//233 237//237
f 237//237 235//235 234//234
f 227//227 238//238 233//233
f 239//239 233//233 238//238
f 233//233 239//239 240//240
f 240//240 237//237 233//233
f 227//227 233//233 236//236
f 238//238 227//227 230//230
f 238//238 241//241 239//239
f 241//241 238//238 230//230
f 229//229 230//230 227//227
f 230//230 242//242 241//241
f 242//242 230//230 79//79
f 80//80 79//79 230//230
f 79//79 241//241 242//242
f 241//241 79//79 84//84
f 83//83 241//241 84//84
f 241//241 83//83 243//243
f 243//243 239//239 241//241
f 239//239 243//243 83//83
f 244//244 83//83 86//86
f 83//83 244//244 239//239
f 237//237 239//239 244//244
f 86//86 237//237 244//244
f 86//86 85//85 245//245
f 86//86 246//246 237//237
f 246//246 86//86 247//247
f 245//245 247//247 86//86
f 237//237 240//240 239//239
f 235//235 237//237 246//246
f 247//247 248//248 246//246
f 249//249 246//246 248//248
f 246//246 249//249 235//235
f 250//250 232//232 235//235
f 251//251 235//235 249//249
f 235//235 251//251 250//250
f 252//252 253//253 232//232
f 225//225 232//232 253//253
f 232//232 250//250 252//252
f 254//254 226//226 225//225
f 225//225 253//253 254//254
f 226//226 254//254 255//255
f 253//253 255//255 254//254
f 256//256 222//222 226//226
f 226//226 257//257 256//256
f 257//257 226//226 258//258
f 255//255 258//258 226//226
f 222//222 256//256 223//223
f 257//257 223//223 256//256
f 223//223 257//257 259//259
f 259//259 260//260 223//223
f 261//261 223//223 260//260
f 223//223 261//261 220//220
f 260//260 259//259 257//257
f 262//262 263//263 260//260
f 264//264 260//260 263//263
f 260//260 264//264 265//265
f 257//257 262//262 260//260
f 260//260 265//265 261//261
f 265//265 220//220 261//261
f 220//220 265//265 266//266
f 267//267 221//221 220//220
f 266//266 267//267 220//220
f 263//263 265//265 264//264
f 265//265 263//263 268//268
f 269//269 265//265 268//268
f 265//265 269//269 266//266
f 270//270 266//266 269//269
f 266//266 270//270 271//271
f 267//267 266//266 271//271
f 272//272 271//271 270//270
f 270//270 273//273 272//272
f 273//273 270//270 274//274
f 275//275 274//274 270//270
f 276//276 270//270 269//269
f 270//270 276//276 275//275
f 271//271 272//272 277//277
f 273//273 277//277 272//272
f 271//271 278//278 267//267
f 278//278 271//271 208//208
f 271//271 279//279 208//208
f 279//279 271//271 277//277
f 210//210 267//267 278//278
f 208//208 210//210 278//278
f 221//221 267//267 213//213
f 280//280 213//213 267//267
f 267//267 210//210 280//280
f 208//208 211//211 210//210
f 213//213 280//280 210//210
f 200//200 208//208 279//279
f 200//200 279//279 281//281
f 282//282 195//195 200//200
f 200//200 281//281 282//282
f 195//195 282//282 283//283
f 281//281 283//283 282//282
f 195//195 284//284 196//196
f 284//284 195//195 285//285
f 283//283 285//285 195//195
f 284//284 197//197 196//196
f 284//284 286//286 197//197
f 287//287 197//197 286//286
f 197//197 287//287 288//288
f 190//190 197//197 289//289
f 288//288 289//289 197//197
f 286//286 284//284 287//287
f 290//290 287//287 284//284
f 285//285 283//283 284//284
f 290//290 284//284 283//283
f 283//283 291//291 290//290
f 287//287 290//290 291//291
f 292//292 288//288 287//287
f 291//291 293//293 287//287
f 292//292 287//287 293//293
f 288//288 292//292 289//289
f 292//292 294//294 295//295
f 294//294 292//292 296//296
f 291//291 296//296 292//292
f 295//295 289//289 292//292
f 293//293 291//291 292//292
f 296//296 291//291 281//281
f 297//297 281//281 291//291
f 291//291 283//283 297//297
f 281//281 294//294 296//296
f 281//281 297//297 283//283
f 294//294 281//281 279//279
f 294//294 279//279 277//277
f 277//277 273//273 298//298
f 298//298 299//299 277//277
f 300//300 277//277 299//299
f 277//277 300//300 294//294
f 299//299 298//298 273//273
f 274//274 275//275 273//273
f 301//301 273//273 275//275
f 273//273 301//301 299//299
f 275//275 302//302 301//301
f 302//302 275//275 303//303
f 304//304 303//303 275//275
f 304//304 275//275 276//276
f 301//301 305//305 299//299
f 305//305 301//301 302//302
f 302//302 306//306 305//305
f 307//307 305//305 306//306
f 305//305 307//307 308//308
f 309//309 305//305 308//308
f 305//305 309//309 310//310
f 310//310 299//299 305//305
f 306//306 302//302 307//307
f 311//311 307//307 302//302
f 303//303 304//304 302//302
f 311//311 302//302 304//304
f 304//304 312//312 311//311
f 307//307 311//311 312//312
f 269//269 313//313 304//304
f 312//312 304//304 313//313
f 269//269 304//304 276//276
f 268//268 314//314 269//269
f 313//313 269//269 314//314
f 314//314 268//268 263//263
f 314//314 252//252 313//313
f 252//252 314//314 315//315
f 316//316 315//315 314//314
f 317//317 314//314 263//263
f 314//314 317//317 316//316
f 263//263 262//262 316//316
f 263//263 316//316 317//317
f 315//315 316//316 253//253
f 318//318 253//253 316//316
f 316//316 255//255 318//318
f 255//255 316//316 262//262
f 253//253 252//252 315//315
f 253//253 318//318 255//255
f 258//258 255//255 257//257
f 262//262 257//257 255//255
f 319//319 313//313 252//252
f 320//320 252//252 250//250
f 252//252 320//320 319//319
f 313//313 319//319 321//321
f 322//322 313//313 321//321
f 313//313 322//322 312//312
f 323//323 324//324 312//312
f 307//307 312//312 324//324
f 322//322 325//325 312//312
f 323//323 312//312 325//325
f 326//326 308//308 307//307
f 307//307 324//324 326//326
f 308//308 326//326 309//309
f 295//295 309//309 326//326
f 309//309 295//295 294//294
f 309//309 294//294 300//300
f 299//299 310//310 309//309
f 299//299 309//309 300//300
f 289//289 295//295 327//327
f 326//326 327//327 295//295
f 289//289 327//327 328//328
f 329//329 289//289 328//328
f 289//289 329//329 190//190
f 328//328 330//330 329//329
f 330//330 328//328 327//327
f 330//330 331//331 332//332
f 331//331 330//330 333//333
f 327//327 333//333 330//330
f 334//334 330//330 332//332
f 330//330 334//334 335//335
f 335//335 329//329 330//330
f 332//332 336//336 334//334
f 336//336 332//332 331//331
f 331//331 337//337 336//336
f 338//338 336//336 337//337
f 336//336 338//338 339//339
f 340//340 336//336 339//339
f 336//336 340//340 341//341
f 341//341 334//334 336//336
f 337//337 331//331 338//338
f 342//342 338//338 331//331
f 333//333 327//327 331//331
f 342//342 331//331 327//327
f 327//327 326//326 342//342
f 338//338 342//342 326//326
f 324//324 338//338 326//326
f 324//324 323//323 343//343
f 324//324 344//344 345//345
f 344//344 324//324 343//343
f 338//338 324//324 345//345
f 345//345 339//339 338//338
f 339//339 345//345 340//340
f 346//346 340//340 345//345
f 345//345 347//347 348//348
f 347//347 345//345 344//344
f 348//348 346//346 345//345
f 340//340 346//346 349//349
f 334//334 341//341 340//340
f 350//350 340//340 349//349
f 340//340 350//350 334//334
f 329//329 335//335 334//334
f 329//329 334//334 350//350
f 349//349 329//329 350//350
f 349//349 190//190 329//329
f 349//349 351//351 190//190
f 189//189 190//190 351//351
f 189//189 352//352 182//182
f 352//352 189//189 353//353
f 354//354 353//353 189//189
f 189//189 351//351 354//354
f 165//165 182//182 352//352
f 352//352 163//163 165//165
f 163//163 352//352 355//355
f 353//353 355//355 352//352
f 182//182 165//165 184//184
f 166//166 184//184 165//165
f 355//355 356//356 163//163
f 356//356 355//355 357//357
f 358//358 357//357 355//355
f 355//355 353//353 359//359
f 355//355 360//360 358//358
f 360//360 355//355 359//359
f 159//159 163//163 356//356
f 357//357 159//159 356//356
f 163//163 159//159 164//164
f 159//159 357//357 361//361
f 361//361 156//156 159//159
f 156//156 361//361 357//357
f 147//147 157//157 156//156
f 357//357 362//362 156//156
f 147//147 156//156 362//362
f 148//148 147//147 362//362
f 362//362 357//357 148//148
f 358//358 363//363 148//148
f 364//364 148//148 363//363
f 148//148 364//364 149//149
f 357//357 358//358 148//148
f 365//365 149//149 364//364
f 363//363 365//365 364//364
f 149//149 365//365 366//366
f 366//366 367//367 149//149
f 368//368 149//149 367//367
f 149//149 368//368 144//144
f 367//367 366//366 365//365
f 367//367 369//369 143//143
f 369//369 367//367 370//370
f 371//371 370//370 367//367
f 365//365 371//371 367//367
f 367//367 143//143 368//368
f 143//143 144//144 368//368
f 372//372 139//139 143//143
f 143//143 370//370 372//372
f 370//370 143//143 369//369
f 373//373 374//374 370//370
f 375//375 370//370 374//374
f 370//370 375//375 372//372
f 370//370 371//371 373//373
f 376//376 373//373 371//371
f 371//371 365//365 376//376
f 365//365 363//363 377//377
f 377//377 376//376 365//365
f 363//363 358//358 378//378
f 376//376 377//377 363//363
f 379//379 363//363 378//378
f 363//363 379//379 376//376
f 360//360 378//378 358//358
f 380//380 381//381 360//360
f 382//382 360//360 381//381
f 360//360 382//382 383//383
f 378//378 360//360 383//383
f 359//359 380//380 360//360
f 381//381 380//380 382//382
f 384//384 382//382 380//380
f 380//380 359//359 353//353
f 380//380 385//385 384//384
f 385//385 380//380 386//386
f 353//353 386//386 380//380
f 385//385 387//387 384//384
f 382//382 384//384 387//387
f 351//351 388//388 385//385
f 387//387 385//385 388//388
f 353//353 354//354 385//385
f 351//351 385//385 354//354
f 386//386 353//353 385//385
f 389//389 387//387 351//351
f 388//388 351//351 387//387
f 351//351 349//349 389//389
f 387//387 389//389 390//390
f 390//390 391//391 387//387
f 382//382 387//387 391//391
f 349//349 390//390 389//389
f 390//390 349//349 346//346
f 390//390 383//383 382//382
f 383//383 390//390 378//378
f 346//346 378//378 390//390
f 391//391 390//390 382//382
f 378//378 346//346 392//392
f 393//393 392//392 346//346
f 394//394 393//393 346//346
f 346//346 348//348 394//394
f 378//378 392//392 379//379
f 392//392 376//376 379//379
f 373//373 376//376 395//395
f 392//392 395//395 376//376
f 396//396 375//375 373//373
f 374//374 373//373 375//375
f 395//395 392//392 373//373
f 396//396 373//373 392//392
f 392//392 393//393 396//396
f 375//375 396//396 393//393
f 139//139 372//372 375//375
f 393//393 397//397 375//375
f 139//139 375//375 397//397
f 398//398 140//140 139//139
f 397//397 398//398 139//139
f 397//397 393//393 399//399
f 398//398 397//397 399//399
f 393//393 394//394 400//400
f 400//400 399//399 393//393
f 394//394 401//401 402//402
f 401//401 394//394 403//403
f 348//348 403//403 394//394
f 399//399 400//400 394//394
f 394//394 402//402 399//399
f 402//402 404//404 399//399
f 404//404 402//402 401//401
f 399//399 405//405 398//398
f 405//405 399//399 404//404
f 401//401 406//406 404//404
f 407//407 404//404 406//406
f 404//404 407//407 408//408
f 404//404 409//409 405//405
f 409//409 404//404 408//408
f 409//409 398//398 405//405
f 409//409 410//410 411//411
f 410//410 409//409 412//412
f 413//413 412//412 409//409
f 398//398 409//409 411//411
f 409//409 408//408 413//413
f 140//140 398//398 141//141
f 411//411 141//141 398//398
f 141//141 411//411 410//410
f 414//414 142//142 141//141
f 410//410 415//415 141//141
f 414//414 141//141 415//415
f 142//142 414//414 416//416
f 133//133 142//142 131//131
f 417//417 131//131 142//142
f 417//417 142//142 416//416
f 131//131 418//418 132//132
f 418//418 131//131 419//419
f 417//417 419//419 131//131
f 420//420 122//122 132//132
f 132//132 421//421 420//420
f 421//421 132//132 418//418
f 122//122 420//420 422//422
f 114//114 122//122 423//423
f 422//422 423//423 122//122
f 424//424 422//422 420//420
f 422//422 424//424 423//423
f 425//425 423//423 424//424
f 423//423 425//425 426//426
f 423//423 426//426 427//427
f 97//97 423//423 427//427
f 423//423 97//97 114//114
f 424//424 426//426 425//425
f 426//426 424//424 428//428
f 429//429 428//428 424//424
f 430//430 424//424 420//420
f 424//424 430//430 429//429
f 428//428 429//429 431//431
f 428//428 431//431 426//426
f 432//432 431//431 429//429
f 429//429 433//433 432//432
f 433//433 429//429 434//434
f 420//420 434//434 429//429
f 420//420 429//429 430//430
f 434//434 420//420 421//421
f 421//421 433//433 434//434
f 433//433 421//421 435//435
f 436//436 435//435 421//421
f 418//418 437//437 421//421
f 436//436 421//421 437//437
f 438//438 418//418 419//419
f 418//418 438//438 439//439
f 439//439 440//440 418//418
f 437//437 418//418 440//440
f 440//440 436//436 437//437
f 440//440 439//439 438//438
f 436//436 440//440 441//441
f 442//442 441//441 440//440
f 438//438 443//443 440//440
f 442//442 440//440 443//443
f 441//441 442//442 436//436
f 442//442 444//444 445//445
f 444//444 442//442 446//446
f 447//447 446//446 442//442
f 445//445 436//436 442//442
f 447//447 442//442 443//443
f 443//443 438//438 447//447
f 438//438 448//448 447//447
f 417//417 447//447 448//448
f 447//447 417//417 449//449
f 446//446 447//447 444//444
f 449//449 444//444 447//447
f 448//448 438//438 417//417
f 419//419 417//417 438//438
f 416//416 449//449 417//417
f 449//449 416//416 444//444
f 450//450 444//444 416//416
f 451//451 450//450 416//416
f 452//452 416//416 414//414
f 416//416 452//452 451//451
f 453//453 451//451 452//452
f 414//414 453//453 452//452
f 453//453 414//414 454//454
f 455//455 454//454 414//414
f 455//455 414//414 415//415
f 454//454 455//455 453//453
f 451//451 453//453 456//456
f 457//457 456//456 453//453
f 458//458 453//453 455//455
f 453//453 458//458 457//457
f 456//456 457//457 451//451
f 459//459 460//460 457//457
f 413//413 457//457 460//460
f 457//457 413//413 461//461
f 461//461 451//451 457//457
f 459//459 457//457 458//458
f 455//455 459//459 458//458
f 455//455 462//462 459//459
f 462//462 455//455 410//410
f 415//415 410//410 455//455
f 410//410 459//459 462//462
f 459//459 410//410 412//412
f 412//412 413//413 459//459
f 460//460 459//459 413//413
f 463//463 461//461 413//413
f 408//408 463//463 413//413
f 461//461 463//463 451//451
f 450//450 451//451 463//463
f 463//463 464//464 450//450
f 464//464 463//463 465//465
f 466//466 465//465 463//463
f 463//463 408//408 466//466
f 343//343 408//408 407//407
f 408//408 343//343 466//466
f 343//343 467//467 466//466
f 467//467 343//343 323//323
f 407//407 468//468 343//343
f 344//344 343//343 468//468
f 469//469 466//466 467//467
f 323//323 469//469 467//467
f 323//323 470//470 469//469
f 470//470 323//323 471//471
f 325//325 471//471 323//323
f 471//471 469//469 470//470
f 472//472 473//473 469//469
f 466//466 469//469 473//473
f 469//469 471//471 474//474
f 474//474 472//472 469//469
f 473//473 472//472 466//466
f 465//465 466//466 472//472
f 472//472 464//464 465//465
f 464//464 472//472 475//475
f 476//476 475//475 472//472
f 472//472 474//474 476//476
f 474//474 477//477 476//476
f 477//477 474//474 471//471
f 476//476 478//478 479//479
f 478//478 476//476 477//477
f 475//475 476//476 464//464
f 480//480 464//464 476//476
f 476//476 479//479 480//480
f 481//481 450//450 464//464
f 464//464 480//480 481//481
f 479//479 481//481 480//480
f 482//482 483//483 481//481
f 450//450 481//481 483//483
f 481//481 484//484 482//482
f 484//484 481//481 485//485
f 479//479 485//485 481//481
f 444//444 450//450 486//486
f 483//483 486//486 450//450
f 486//486 445//445 444//444
f 486//486 483//483 487//487
f 435//435 436//436 486//486
f 445//445 486//486 436//436
f 488//488 486//486 487//487
f 486//486 488//488 435//435
f 489//489 487//487 483//483
f 487//487 489//489 488//488
f 490//490 488//488 489//489
f 488//488 490//490 491//491
f 492//492 493//493 488//488
f 493//493 435//435 488//488
f 488//488 491//491 492//492
f 489//489 491//491 490//490
f 491//491 489//489 494//494
f 495//495 494//494 489//489
f 496//496 489//489 483//483
f 489//489 496//496 495//495
f 494//494 495//495 497//497
f 497//497 491//491 494//494
f 498//498 497//497 495//495
f 495//495 484//484 498//498
f 484//484 495//495 482//482
f 483//483 482//482 495//495
f 483//483 495//495 496//496
f 497//497 498//498 484//484
f 499//499 500//500 497//497
f 501//501 497//497 500//500
f 497//497 501//501 491//491
f 497//497 484//484 499//499
f 502//502 484//484 485//485
f 484//484 502//502 499//499
f 500//500 499//499 502//502
f 502//502 503//503 504//504
f 503//503 502//502 505//505
f 506//506 505//505 502//502
f 504//504 500//500 502//502
f 485//485 506//506 502//502
f 485//485 479//479 321//321
f 506//506 485//485 321//321
f 507//507 321//321 479//479
f 479//479 477//477 507//507
f 477//477 479//479 478//478
f 321//321 508//508 506//506
f 508//508 321//321 319//319
f 321//321 507//507 322//322
f 477//477 322//322 507//507
f 322//322 477//477 509//509
f 471//471 509//509 477//477
f 509//509 471//471 322//322
f 325//325 322//322 471//471
f 510//510 319//319 320//320
f 319//319 511//511 508//508
f 511//511 319//319 512//512
f 510//510 512//512 319//319
f 511//511 506//506 508//508
f 505//505 506//506 513//513
f 514//514 513//513 506//506
f 506//506 511//511 514//514
f 505//505 513//513 503//503
f 248//248 504//504 503//503
f 503//503 515//515 516//516
f 515//515 503//503 513//513
f 503//503 516//516 517//517
f 248//248 503//503 517//517
f 513//513 516//516 515//515
f 516//516 513//513 518//518
f 516//516 519//519 249//249
f 519//519 516//516 520//520
f 518//518 520//520 516//516
f 249//249 517//517 516//516
f 517//517 249//249 248//248
f 249//249 520//520 251//251
f 520//520 249//249 519//519
f 520//520 250//250 251//251
f 520//520 521//521 250//250
f 521//521 520//520 510//510
f 518//518 510//510 520//520
f 518//518 511//511 510//510
f 511//511 518//518 513//513
f 512//512 510//510 511//511
f 250//250 510//510 320//320
f 510//510 250//250 521//521
f 513//513 514//514 511//511
f 522//522 523//523 248//248
f 504//504 248//248 523//523
f 248//248 247//247 522//522
f 247//247 524//524 522//522
f 523//523 522//522 524//524
f 525//525 526//526 247//247
f 524//524 247//247 526//526
f 247//247 245//245 525//525
f 526//526 525//525 524//524
f 524//524 527//527 528//528
f 527//527 524//524 525//525
f 529//529 523//523 524//524
f 524//524 528//528 529//529
f 530//530 528//528 527//527
f 527//527 525//525 531//531
f 527//527 531//531 530//530
f 90//90 532//532 530//530
f 528//528 530//530 532//532
f 530//530 533//533 87//87
f 533//533 530//530 531//531
f 87//87 91//91 530//530
f 90//90 530//530 91//91
f 534//534 528//528 90//90
f 532//532 90//90 528//528
f 90//90 93//93 534//534
f 93//93 523//523 534//534
f 528//528 534//534 523//523
f 535//535 504//504 93//93
f 523//523 93//93 504//504
f 92//92 536//536 93//93
f 535//535 93//93 536//536
f 523//523 529//529 528//528
f 536//536 92//92 537//537
f 537//537 535//535 536//536
f 538//538 92//92 95//95
f 92//92 538//538 539//539
f 539//539 537//537 92//92
f 95//95 94//94 538//538
f 94//94 96//96 540//540
f 541//541 94//94 540//540
f 94//94 541//541 542//542
f 542//542 538//538 94//94
f 543//543 540//540 96//96
f 540//540 543//543 541//541
f 544//544 541//541 543//543
f 543//543 545//545 544//544
f 545//545 543//543 546//546
f 493//493 546//546 543//543
f 96//96 435//435 543//543
f 435//435 493//493 543//543
f 541//541 544//544 545//545
f 538//538 542//542 541//541
f 547//547 541//541 545//545
f 541//541 547//547 538//538
f 537//537 539//539 538//538
f 537//537 538//538 547//547
f 545//545 537//537 547//547
f 535//535 537//537 548//548
f 545//545 548//548 537//537
f 546//546 493//493 535//535
f 504//504 535//535 493//493
f 548//548 545//545 535//535
f 546//546 535//535 545//545
f 500//500 504//504 493//493
f 493//493 492//492 500//500
f 500//500 491//491 501//501
f 491//491 500//500 492//492
f 435//435 96//96 433//433
f 549//549 433//433 96//96
f 96//96 98//98 549//549
f 431//431 432//432 433//433
f 433//433 549//549 431//431
f 98//98 431//431 549//549
f 431//431 98//98 550//550
f 426//426 550//550 98//98
f 427//427 98//98 97//97
f 98//98 427//427 426//426
f 550//550 426//426 431//431
f 87//87 531//531 88//88
f 531//531 87//87 533//533
f 531//531 551//551 85//85
f 551//551 531//531 525//525
f 531//531 85//85 88//88
f 525//525 85//85 551//551
f 85//85 525//525 245//245
f 468//468 407//407 552//552
f 552//552 344//344 468//468
f 553//553 407//407 406//406
f 407//407 553//553 554//554
f 554//554 552//552 407//407
f 406//406 401//401 553//553
f 555//555 401//401 403//403
f 401//401 555//555 556//556
f 556//556 553//553 401//401
f 403//403 348//348 555//555
f 557//557 555//555 348//348
f 348//348 558//558 557//557
f 558//558 348//348 347//347
f 555//555 557//557 558//558
f 344//344 558//558 347//347
f 558//558 344//344 559//559
f 559//559 552//552 558//558
f 560//560 558//558 552//552
f 558//558 560//560 555//555
f 552//552 559//559 344//344
f 552//552 554//554 553//553
f 552//552 553//553 560//560
f 553//553 555//555 560//560
f 553//553 556//556 555//555
f 174//174 561//561 71//71
f 68//68 71//71 561//561
f 174//174 71//71 224//224
f 561//561 174//174 68//68
f 173//173 68//68 174//174
f 216//216 170//170 174//174
f 216//216 174//174 224//224
f 68//68 173//173 62//62
f 69//69 68//68 62//62
f 171//171 203//203 179//179
f 193//193 179//179 203//203
f 179//179 178//178 171//171
f 185//185 179//179 562//562
f 193//193 562//562 179//179
f 562//562 193//193 185//185
f 3//3 10//10 30//30
f 31//31 3//3 30//30
f 29//29 30//30 32//32
f 38//38 32//32 30//30
# File produced by Open Asset Import Library (http://www.assimp.sf.net)
# (assimp v3.1.187496374)
newmtl %%%DEFAULT
Kd 0.3 0.3 0.3
Ka 0 0 0
Ks 0 0 0
Ke 0 0 0
d 1
illum 1
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="NoPrizeSkin" width="750" height="1206" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Rect id="mask0" width="750" height="1624" fillAlpha="0.3" top="0" x="0"/>
<e:Image id="bg" source="gameOverBg_png" horizontalCenter="0" verticalCenter="0"/>
<e:Button id="closeBtn" label="" y="1006.79" skinName="ui.IconButtonSkin" icon="gameOverCloseBtn_png" horizontalCenter="0.5" anchorOffsetX="25.76" anchorOffsetY="24.24"/>
<e:Image id="title" source="gameOverTitle_png" y="490" horizontalCenter="0.5"/>
<e:Button id="againBtn" label="" y="828.7" skinName="ui.IconButtonSkin" icon="againBtn_png" anchorOffsetX="165.15" anchorOffsetY="51.52" horizontalCenter="0"/>
<e:Label id="scoreTxt" text="55" y="603" textColor="0xf2a235" fontFamily="Microsoft YaHei" bold="true" size="140" verticalAlign="middle" horizontalCenter="0.5"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="PlaySkin" width="750" height="1663" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Button id="testBtn" label="点击出奖" y="409" scaleX="1" scaleY="1" horizontalCenter="18.5">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="testbtn_png" source.down="testbtn_png" source.disabled="testbtn_png"/>
<e:Label id="labelDisplay" horizontalCenter="0" verticalCenter="0" size="26"/>
</e:Skin>
</e:skinName>
</e:Button>
<e:Group x="0" top="20" width="100%">
<e:Group y="0" right="20">
<e:Button id="musicon" label="" x="0" y="0">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="音乐开启_png" source.down="音乐开启_png" source.disabled="音乐开启_png"/>
<e:Label id="labelDisplay" horizontalCenter="0" verticalCenter="0"/>
</e:Skin>
</e:skinName>
</e:Button>
<e:Button id="musicoff" label="">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="音乐关闭_png" source.down="音乐关闭_png" source.disabled="音乐关闭_png"/>
<e:Label id="labelDisplay" horizontalCenter="0" verticalCenter="0"/>
</e:Skin>
</e:skinName>
</e:Button>
</e:Group>
<e:Group x="201" y="0">
<e:Image source="火_png" x="0" y="0"/>
<e:Label text="20%" x="41" y="0" verticalAlign="middle" textAlign="center" width="96" height="100%" fontFamily="Helvetica"/>
</e:Group>
<e:Group x="22" top="0">
<e:Image source="火箭_png" left="0" top="0"/>
<e:Label text="10" x="41" verticalCenter="0" height="100%" verticalAlign="middle" textAlign="center" width="96" fontFamily="Helvetica"/>
</e:Group>
<e:Label id="score" text="123456789" y="63" verticalAlign="middle" textAlign="center" width="100%" size="65" bold="true" fontFamily="Helvetica"/>
</e:Group>
<e:Group id="car" x="329" width="93" verticalCenter="357">
<e:Image source="大炮板子_png" y="125" anchorOffsetX="46.5" x="46.5"/>
<e:Image source="大炮的头_png" y="51" anchorOffsetX="35" width="70" horizontalCenter="0"/>
<e:Image id="lunzi1" source="轮子1_png" anchorOffsetX="22.5" anchorOffsetY="22.5" x="10" y="142.5"/>
<e:Image id="lunzi2" source="轮子1_png" anchorOffsetX="22.5" anchorOffsetY="22.5" x="82" y="142.5"/>
<e:Image id="fireEffect" source="发弹雾气_png" y="29" horizontalCenter="0"/>
</e:Group>
<e:Skin class="PlaySkin" width="750" height="1206" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing" >
<e:Rect id="touchPlane" width="750" height="1624" x="0" y="0" fillColor="0x000000" fillAlpha="0" strokeAlpha="0"/>
<e:Label id="scoreTxt" text="0" size="100" fontFamily="Microsoft YaHei" top="50" horizontalCenter="0"/>
<e:Image id="scoreTip" source="+1_png" anchorOffsetX="45" anchorOffsetY="36" alpha="0" horizontalCenter="0" y="604"/>
</e:Skin>
\ No newline at end of file
......@@ -19,7 +19,7 @@
</e:Group>
</e:Scroller>
<e:Image id="title" y="268.69" horizontalCenter="1.5" source="rankTitle_png"/>
<e:Image id="dog" source="dog_png" x="440" y="169"/>
<e:Label id="rankNum" text="排名" x="112" y="375" textColor="0x000000" bold="true" fontFamily="Microsoft YaHei" anchorOffsetX="0" width="162" textAlign="center"/>
<e:Label id="userIdtxt" text="用户" x="274" y="375" textColor="0x000000" bold="true" fontFamily="Microsoft YaHei" anchorOffsetX="0" width="200" textAlign="center"/>
<e:Label id="scoretxt" text="分数" x="474" y="375" textColor="0x000000" bold="true" fontFamily="Microsoft YaHei" anchorOffsetX="0" width="164" textAlign="center"/>
......
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="StartSkin" width="750" height="1624" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Skin class="StartSkin" width="750" height="1206" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<w:Config id="16705cb4eec"/>
<e:Image id="bg" source="startSceneBg_jpg" bottom="0" horizontalCenter="0"/>
<e:Group id="elements" horizontalCenter="0" verticalCenter="-172" height="664" width="756">
<e:Image id="e1" source="e1_png" x="154.5" y="124" anchorOffsetX="38" anchorOffsetY="35.5"/>
<e:Image id="e2" source="e2_png" x="756" y="531.5" anchorOffsetX="122" anchorOffsetY="131.5"/>
......@@ -8,7 +9,7 @@
<e:Image id="e4" source="e4_png" x="0" y="436.5" anchorOffsetY="69.5"/>
<e:Image id="logo" source="文案_png" x="378" y="266" anchorOffsetX="221.5" anchorOffsetY="145.5"/>
</e:Group>
<e:Group horizontalCenter="0" verticalCenter="32">
<e:Group horizontalCenter="0.5" bottom="120">
<e:Button id="startBtn" label="" scaleX="1" scaleY="1" anchorOffsetX="152.5" anchorOffsetY="49.5" y="108.21" horizontalCenter="0">
<e:skinName>
<e:Skin states="up,down,disabled">
......@@ -20,8 +21,8 @@
<e:Label id="countTxt" text="1/1" width="100%" verticalAlign="middle" textAlign="center" y="183.39" horizontalCenter="0"/>
<e:Label id="countdownTxt" text="" width="100%" verticalAlign="middle" textAlign="center" y="0" horizontalCenter="0"/>
</e:Group>
<e:Label id="exemptionTxt" text="*兑换项与活动均与设备制造商Apple Inc.公司无关*" width="100%" horizontalCenter="0" bottom="5"
verticalAlign="middle" textAlign="center" textColor="0x333333" size="18" />
<e:Label id="exemptionTxt" text="*兑换项与活动均与设备制造商Apple Inc.公司无关*" width="100%" horizontalCenter="0" bottom="20"
verticalAlign="middle" textAlign="center" size="18" textColor="0xc6c6c6"/>
<e:Button id="recordBtn" label="奖品记录" y="16" scaleX="1" scaleY="1" right="23">
<e:skinName>
<e:Skin states="up,down,disabled">
......
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="component.ResultPanel" width="378" height="164" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Image id="bg" source="earnPanel_png" x="0" y="0"/>
<e:Label id="credits" text="0" x="41.5" y="65" size="64" anchorOffsetX="0" width="292" textAlign="center"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="VirtualJoystickSkin" width="150" height="150" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Image id="joystickBg" source="joystickBg_png" width="150" height="150" anchorOffsetX="75" anchorOffsetY="75" verticalCenter="0" horizontalCenter="0"/>
<e:Image id="joystickBall" width="80" height="80" anchorOffsetX="0" anchorOffsetY="0" x="35" y="35" source="joystickBall_png"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="WheelBg" width="603" height="603" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Image id="wheelBg" source="wheelBg2_png" anchorOffsetX="301.5" anchorOffsetY="301.5" left="0" top="0"/>
<e:Image source="gift_png" x="176.5" y="76.5" rotation="-22.5"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="WheelGift" width="92" height="300" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Image id="gift" source="gift_png" y="61" horizontalCenter="0"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="ui.IconButtonSkin" xmlns:e="http://ns.egret.com/eui" xmlns:ns1="*" states="up,down,disabled" >
<e:Image id="iconDisplay" source="" horizontalCenter="0" verticalCenter="0" scaleX.down="0.95" scaleY.down="0.95"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="ui.ProgressBarSkin" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<e:Image id="thumb" source="loading_progress_thumb" x="3" y="3"/>
<e:Image id="track" source="loading_progress_track" scale9Grid="16,13,2,2" width="404"/>
</e:Skin>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="ui.StartButtonSkin" xmlns:e="http://ns.egret.com/eui" xmlns:ns1="*" states="up,down,disabled,wating" >
<e:Image id="iconDisplay" source="" horizontalCenter="0" verticalCenter="0" scaleX.down="0.95" scaleY.down="0.95"/>
<e:Image source="startBtnBg_png" includeIn="wating" x="0" y="0"/>
<e:Image source="wating_png" includeIn="wating" horizontalCenter="0" verticalCenter="23.5"/>
<e:Image source="startBtnBg_png" includeIn="disabled" x="0" y="0"/>
<e:Image source="go_png" includeIn="disabled" x="62" y="143"/>
<e:Image source="startBtnBg_png" includeIn="down" x="0" y="0" scaleX="0.95" scaleY="0.95"/>
<e:Image source="go_png" includeIn="down" horizontalCenter="0.5" verticalCenter="25.5" scaleX="0.95" scaleY="0.95"/>
<e:Image source="startBtnBg_png" includeIn="up" horizontalCenter="0" verticalCenter="0"/>
<e:Image source="go_png" includeIn="up" horizontalCenter="0.5" verticalCenter="25.5"/>
</e:Skin>
\ No newline at end of file
import { NetManager } from './../libs/tw/manager/NetManager';
import { ModuleTypes } from './../libs/new_wx/types/sceneTypes';
import StartScene from "./startScene/StartScene";
import PlayScene from "./playScene/PlayScene";
import MainBase from "../libs/new_wx/MainBase";
import PanelCtrl from '../libs/new_wx/ctrls/panelCtrl';
import SceneCtrl from '../libs/new_wx/ctrls/sceneCtrl';
import showAlertPanel from '../libs/new_wx/ctrls/showAlertPanel';
import ExNoPrizePanel from './NoPrizePanel/ExNoPrizePanel';
import RankPanel from '../libs/new_wx/components/RankPanel';
import PrizePanel from '../libs/new_wx/components/PrizePanel';
import OptionsPanel from '../libs/new_wx/components/OptionsPanel';
import HTMLRulePanel from '../libs/new_wx/components/HTMLRulePanel';
import RulePanel from '../libs/new_wx/components/RulePanel';
import Alert from '../libs/new_wx/components/Alert';
class Main extends MainBase {
protected get startSceneConfig() {
......@@ -9,6 +21,30 @@ class Main extends MainBase {
protected get playSceneConfig() {
return { cls: PlayScene }
}
protected registerModules() {
const panels = [
[ModuleTypes.ALERT_PANEL, { cls: Alert }],
[ModuleTypes.RULE_PANEL, { cls: RulePanel }],
[ModuleTypes.HTML_RULE_PANEL, { cls: HTMLRulePanel }],
[ModuleTypes.OPTIONS_PANEL, { cls: OptionsPanel }],
[ModuleTypes.PRIZE_PANEL, { cls: PrizePanel }],
[ModuleTypes.RANK_PANEL, { cls: RankPanel }],
[ModuleTypes.NOPRIZE_PANEL, { cls: ExNoPrizePanel }],
];
const scenes = [
[ModuleTypes.START_SCENE, this.startSceneConfig],
[ModuleTypes.PLAY_SCENE, this.playSceneConfig]
];
panels.forEach(item => PanelCtrl.instance.registerPanel(item[0], item[1]));
scenes.forEach(item => SceneCtrl.instance.registerScene(item[0], item[1]));
NetManager.ins.onNotSuccess = (msg) => {
showAlertPanel(msg)
}
}
}
......
import { DataManager } from './../../libs/tw/manager/DataManager';
import { NetManager } from './../../libs/tw/manager/NetManager';
import NoPrizePanel from "../../libs/new_wx/components/NoPrizePanel";
import SceneCtrl from "../../libs/new_wx/ctrls/sceneCtrl";
import PanelCtrl from '../../libs/new_wx/ctrls/panelCtrl';
import { ModuleTypes } from "../../libs/new_wx/types/sceneTypes";
export default class ExNoPrziePanel extends NoPrizePanel {
onTap_againBtn(){
this.againBtn.touchEnabled = false;
if(DataManager.ins.getInfoData.status.code == 3){
// 参与次数已用完
let data = {msg:`今日次数已用完\n明日再来吧~`, type:'err'}
PanelCtrl.instance.show(ModuleTypes.MSG_PANEL, data)
return;
}else if(DataManager.ins.getInfoData.status.code == 2){
// 积分不足
let data = {msg:`积分不足\n去赚积分吧`, type:'creditsOut'}
PanelCtrl.instance.show(ModuleTypes.MSG_PANEL, data)
return;
}else if(DataManager.ins.getInfoData.status.code == 1){
// 未登录
let data = {msg:`未登录账号\n请先登录`, type:'requirelogin'}
PanelCtrl.instance.show(ModuleTypes.MSG_PANEL, data)
return;
}else{
this.doStart(this.doStartResult.bind(this),false)
}
}
public doStart(callback: Function, isAgain = false, credits?: number, customizedType?: number): void {
if(window['requirelogin']) {
window['requirelogin']();
return;
}
NetManager.ins.doStart((success: boolean) => {
if(success) {
this.getStartOrderStatus(callback, customizedType);
} else {
callback(success);
}
},
isAgain,
credits,
customizedType);
}
private getStartOrderStatus(callback: Function, customizedType?: number): void {
NetManager.ins.getStartStatus(
callback,
DataManager.ins.doStartData.ticketId,
() => { return DataManager.ins.getStartStatusData.code == 0; },
5,
customizedType);
}
// 开始的回调
private doStartResult(success:boolean){
if(!success) {
return;
}
PanelCtrl.instance.closeCurrent();
setTimeout(() => {
SceneCtrl.instance.change(ModuleTypes.PLAY_SCENE);
this.againBtn.touchEnabled = true;
}, 1000);
}
}
\ No newline at end of file
import { DataManager } from './../../libs/tw/manager/DataManager';
import prePlayScene from "./prePlayScene";
import PlaySceneBase from "../../libs/new_wx/components/PlaySceneBase";
import PanelCtrl from "../../libs/new_wx/ctrls/panelCtrl";
import { ModuleTypes } from "../../libs/new_wx/types/sceneTypes";
import { NetManager } from "../../libs/tw/manager/NetManager";
const { TouchEvent } = egret;
export default class PlayScene extends PlaySceneBase{
public get skinKey() { return 'Play' }
public touchPlane:eui.Rect;
public scoreTxt:eui.Label;
public scoreTip:eui.Image;
public BABYLON:any = window['BABYLON'];
public rocketP:any;
public rocketLine:any;
public score:number = 0; // 分数
private touchDown:boolean; // 是否点击屏幕
private createCount:number = 0; // 生成云的计数
constructor(){
super()
this.restart();
}
restart(){
prePlayScene.instance.disposeAll();
prePlayScene.instance.startTimestamp = Date.now();
prePlayScene.instance.rocketP.position.set(0,30,0);
prePlayScene.instance.cloudRange = 30;
prePlayScene.instance.initCloudPool(prePlayScene.instance.cloudTemplate);
this.addEventListener(egret.Event.ENTER_FRAME,this.onEnterFrame,this);
}
private onEnterFrame(){
this.createCount++;
if(this.createCount%500 == 0){
// 生成新的 会动的云
for(let i = 0; i < 5; i++){
let nCloud = prePlayScene.instance.cloudTemplate.clone(`cloud_${i}`);
let randomNum = Math.random();
let newScale = Math.max(0.01*randomNum, 0.005)
nCloud.scaling.set(0, 0, 0);
let nCloudTW = egret.Tween.get(nCloud.scaling);
nCloudTW.to({x:newScale,y:newScale,z:newScale}, 500).wait(1000).call(()=>{
let nnCloudTW = egret.Tween.get(nCloud.position,{onChange:()=>{
let distance = this.BABYLON.Vector3.Distance(new this.BABYLON.Vector3(0,0,0),prePlayScene.instance.rocketP.position);
if(distance<10){
prePlayScene.instance.removeEle(nCloud, prePlayScene.instance.cloudPool)
nCloud.dispose();
}
}});
nnCloudTW.to({x:0,y:0,z:0}, 15000).call(()=>{
prePlayScene.instance.removeEle(nCloud, prePlayScene.instance.cloudPool)
nCloud.dispose();
})
});
let newAngle = Math.random()*360;
let newRadius = Math.max(Math.random() * prePlayScene.instance.cloudRange, 10);
nCloud.position.set(newRadius*Math.cos(newAngle),newRadius*Math.sin(newAngle),0);
nCloud.lookAt(new this.BABYLON.Vector3(0,0,0));
nCloud.rotate(new this.BABYLON.Vector3(1,0,0),Math.PI/2);
nCloud.visibility = 1;
prePlayScene.instance.cloudPool.push(nCloud);
}
// 生成新的不会动的云
for(let i = 0; i < 5; i++){
let nCloud = prePlayScene.instance.cloudTemplate.clone(`cloud_${i}`);
let randomNum = Math.random();
let newScale = Math.max(0.01*randomNum, 0.005)
nCloud.scaling.set(0, 0, 0);
let nCloudTW = egret.Tween.get(nCloud.scaling);
nCloudTW.to({x:newScale,y:newScale,z:newScale}, 500);
let newAngle = Math.random()*360;
let newRadius = Math.max(Math.random() * prePlayScene.instance.cloudRange, 10);
nCloud.position.set(newRadius*Math.cos(newAngle),newRadius*Math.sin(newAngle),0);
nCloud.lookAt(new this.BABYLON.Vector3(0,0,0));
nCloud.rotate(new this.BABYLON.Vector3(1,0,0),Math.PI/2);
nCloud.visibility = 1;
prePlayScene.instance.cloudPool.push(nCloud);
}
// 生成不允许碰撞的云
for(let i = 0; i < 5; i++){
let nCloud = prePlayScene.instance.cloudTemplate.clone(`blackCloud_${i}`);
let randomNum = Math.random();
let newScale = Math.max(0.01*randomNum, 0.005)
nCloud.scaling.set(0, 0, 0);
let nCloudTW = egret.Tween.get(nCloud.scaling);
nCloudTW.to({x:newScale,y:newScale,z:newScale}, 500).wait(5000).to({x:0,y:0,z:0},500).call(()=>{
prePlayScene.instance.removeEle(nCloud, prePlayScene.instance.cloudPool)
nCloud.dispose();
});
let newAngle = Math.random()*360;
let newRadius = Math.max(Math.random() * prePlayScene.instance.cloudRange, 10);
nCloud.position.set(newRadius*Math.cos(newAngle),newRadius*Math.sin(newAngle),0);
nCloud.lookAt(new this.BABYLON.Vector3(0,0,0));
nCloud.rotate(new this.BABYLON.Vector3(1,0,0),Math.PI/2);
nCloud.visibility = 1;
let blackMaterial = new this.BABYLON.StandardMaterial('blackMaterial', prePlayScene.instance.scene);
blackMaterial.diffuseColor = new this.BABYLON.Color3(0,0,0);
nCloud.material = blackMaterial;
nCloud.gameType = 'blackCloud';
prePlayScene.instance.cloudPool.push(nCloud);
}
}
if(prePlayScene.instance.planet){
prePlayScene.instance.planet.rotation.y += 0.01;
}
if(prePlayScene.instance.realRocket){
let distance = prePlayScene.instance.BABYLON.Vector3.Distance(new this.BABYLON.Vector3(0,0,0),prePlayScene.instance.rocketP.position);
if(distance < 5){
this.gameOver();
}else{
prePlayScene.instance.scene.render();
if(distance > prePlayScene.instance.cloudRange){
prePlayScene.instance.cloudRange = distance + 20;
}
prePlayScene.instance.bg.rotate(new this.BABYLON.Vector3(0,0,1), -0.001)
// 自转
prePlayScene.instance.realRocket.rotation.y -= 0.1;
// 向原点加速移动
for(let cloud of prePlayScene.instance.cloudPool){
prePlayScene.instance.moveByVector3(cloud,cloud.position.subtract(new this.BABYLON.Vector3(0,0,0)).normalize(),0.005)
if (cloud.intersectsMesh(prePlayScene.instance.realRocket, true)) {
if(cloud.gameType == 'blackCloud'){
// 撞到了黑云 游戏结束
this.gameOver();
}else{
// 如果碰到了就让速度反向
prePlayScene.instance.downSpeed = -0.03;
prePlayScene.instance.startTimestamp = Date.now()
this.updateScore(1);
prePlayScene.instance.removeEle(cloud, prePlayScene.instance.cloudPool)
cloud.dispose()
}
}else{
}
}
prePlayScene.instance.accelerateByVector3(prePlayScene.instance.rocketP, new this.BABYLON.Vector3(0,0,0).subtract(prePlayScene.instance.rocketP.position), prePlayScene.instance.downSpeed, prePlayScene.instance.downAddSpeed)
// 是否触控发生
if(this.touchDown){
prePlayScene.instance.rotateSpeed = 0.5;
}else{
prePlayScene.instance.rotateSpeed = 0.05;
}
// 沿切线移动
let tangent = new this.BABYLON.Vector3.Cross(new this.BABYLON.Vector3(0,0,0).subtract(prePlayScene.instance.rocketP.position),new this.BABYLON.Vector3(0,0,1)).normalize();
prePlayScene.instance.moveByVector3(prePlayScene.instance.rocketP, tangent, prePlayScene.instance.rotateSpeed);
const newForward = prePlayScene.instance.lastPosition.subtract(prePlayScene.instance.rocketP.position).normalize();
if(newForward !== this.BABYLON.Vector3(0,0,0)){
prePlayScene.instance.rocket.lookAt(newForward)
prePlayScene.instance.lastPosition = prePlayScene.instance.rocketP.position.clone();
}
// 删除连线
if(prePlayScene.instance.rocketLine){
prePlayScene.instance.rocketLine.dispose();
}
// 画连线
let path = [
prePlayScene.instance.rocketP.position,
new this.BABYLON.Vector3(0,0,0)
];
prePlayScene.instance.rocketLine = this.BABYLON.MeshBuilder.CreateTube("tube", {path: path, radius: 0.1}, prePlayScene.instance.scene);
}
}
}
gameOver(){
this.removeEventListener(egret.Event.ENTER_FRAME, this.onEnterFrame, this);
this.gameSubmitData(this.gameSubmitResult.bind(this), this.score);
}
// 提交成绩的回调
private gameSubmitResult(success){
if(!success){
return;
}
let data = {score:this.score}
if(DataManager.ins.gameGetSubmitResultData && DataManager.ins.gameGetSubmitResultData.lottery){
PanelCtrl.instance.show(ModuleTypes.PRIZE_PANEL,data);
}else{
PanelCtrl.instance.show(ModuleTypes.NOPRIZE_PANEL,data);
// SceneCtrl.instance.change(ModuleTypes.NOPRIZE_PANEL, data);
}
}
/**
* 提交游戏成绩
* @param callback
* @param score 得分
* @param allDynamics 防作弊数据
* @param checkScore 是否校验得分
* @param customizedType 定制类型 1推币机
*/
protected gameSubmitData(callback: Function, score: number, checkScore?: boolean, customizedType?: number): void {
NetManager.ins.gameSubmit(
(success: boolean) => {
if(success) {
this.getSubmitResult(callback, DataManager.ins.gameSubmitData.orderId);
} else {
callback(success);
}
},
DataManager.ins.doStartData.ticketId,
score,
'[]',
DataManager.ins.doStartData.submitToken,
'',
checkScore,
customizedType);
}
/**
* 查询提交结果
* @param callback
* @param orderId
*/
private getSubmitResult(callback: Function, orderId: number): void {
NetManager.ins.getSubmitResult(callback, orderId, () => {
return DataManager.ins.gameGetSubmitResultData.flag;
});
}
export default class PlayScene extends PlaySceneBase {
testBtn: eui.Button;
initEvents() {
this.touchPlane.addEventListener( egret.TouchEvent.TOUCH_BEGIN, this.onTouchBegin_touchPlane, this);
this.touchPlane.addEventListener( egret.TouchEvent.TOUCH_END, this.onTouchOut_touchPlane, this);
this.touchPlane.addEventListener( egret.TouchEvent.TOUCH_CANCEL, this.onTouchOut_touchPlane, this);
this.touchPlane.addEventListener( egret.TouchEvent.TOUCH_RELEASE_OUTSIDE, this.onTouchOut_touchPlane, this);
}
removeEvents() {
this.touchPlane.removeEventListener( egret.TouchEvent.TOUCH_BEGIN, this.onTouchBegin_touchPlane, this);
this.touchPlane.removeEventListener( egret.TouchEvent.TOUCH_END, this.onTouchOut_touchPlane, this);
this.touchPlane.removeEventListener( egret.TouchEvent.TOUCH_CANCEL, this.onTouchOut_touchPlane, this);
this.touchPlane.removeEventListener( egret.TouchEvent.TOUCH_RELEASE_OUTSIDE, this.onTouchOut_touchPlane, this);
}
private onTouchBegin_touchPlane(e:egret.TouchEvent){
this.touchDown = true;
}
this.testBtn.once(egret.TouchEvent.TOUCH_TAP, () => {
this.testBtn.parent.removeChild(this.testBtn);
this.score = 10;
this.sendSubmit();
}, this)
private onTouchOut_touchPlane(e:egret.TouchEvent){
this.touchDown = false;
}
// 更新分数
private updateScore(score?:number){
let _score = 1;
if(score){
_score = score;
}
this.scoreTip.y = this.stage.stageHeight/2;
this.scoreTip.scaleX = 0;
this.scoreTip.scaleY = 0;
this.scoreTip.alpha = 1;
this.scoreTip.source = `+${_score}_png`;
let scoreTw = egret.Tween.get(this.scoreTip);
scoreTw.to({scaleX:1,scaleY:1},200).to({y:this.stage.stageHeight/2 - 100,alpha:0},100);
this.score += _score;
this.scoreTxt.text = `${this.score}`;
}
}
\ No newline at end of file
export default class prePlayScene{
constructor(){
// this.initScene();
}
static _instance: prePlayScene;
static get instance() {
return prePlayScene._instance || (prePlayScene._instance = new prePlayScene())
}
public BABYLON:any = window['BABYLON'];
public canvasWebgl:any;
public scene:any;
public camera:any;
public light:any;
public light2:any;
public cloudPool:any[] = []; // 云的数组
public cloudTemplate:any; // 云的模板
public rocketP:any;
public rocketLine:any;
public rocket:any;
public realRocket:any;
public gravity:number = -0.98;
public glowLayer:any; // 发光层
public planet:any; // 星球
public touchDown:boolean; // 是否点击屏幕
public rotateSpeed:number = 0; // 旋转速度
public lastPosition:any; // 最后的位置
public startTimestamp:number; // 开始的时间戳
public stopTimestamp:number; //
public score:number = 0; // 分数
public downSpeed:number = -0.025; // 下落速度
public downAddSpeed:number = 0.04; // 下落加速度
public createCount:number = 0; // 生成云的计数
public cloudRange:number = 30; // 云生成的范围
public TailSystem:any; // 尾巴粒子系统
public bg:any;
initScene(){
let container = document.getElementById("egretContainer");
let w = document.documentElement.clientWidth || document.body.clientWidth;
let h = document.documentElement.clientHeight || document.body.clientHeight;
document.querySelectorAll("canvas")[0].style.position = "absolute";
document.querySelectorAll("canvas")[0].setAttribute("touch-action","none");
this.canvasWebgl = document.createElement("canvas");
this.canvasWebgl.width = w;
this.canvasWebgl.height = h;
container.appendChild(this.canvasWebgl);
let engine = new this.BABYLON.Engine(this.canvasWebgl, true);
engine.getRenderingCanvas=function(){
return document.querySelectorAll("canvas")[0]
};
this.scene = new this.BABYLON.Scene(engine);
this.scene.ambientColor = this.BABYLON.Color3.FromInts(10, 30, 10);
this.scene.clearColor = this.BABYLON.Color3.FromInts(22, 3, 49);
this.scene.collisionsEnabled = true;
this.light = new this.BABYLON.HemisphericLight("dir01", new this.BABYLON.Vector3(0, -1, -0.3), this.scene);
this.light.position = new this.BABYLON.Vector3(20, 60, 30);
this.light2 = new this.BABYLON.HemisphericLight("dir02", new this.BABYLON.Vector3(0, 1, 0.3), this.scene);
this.light2.position = new this.BABYLON.Vector3(20, -60, 30);
this.camera = new this.BABYLON.FreeCamera("Camera", new this.BABYLON.Vector3(0, 0, 150), this.scene);
this.glowLayer = new this.BABYLON.GlowLayer("glow", this.scene);
this.glowLayer.intensity = 2;
// 背景
let bg = this.BABYLON.Mesh.CreatePlane('bg',400,this.scene);
bg.position.set(0,0,-10);
bg.rotate(new this.BABYLON.Vector3(0,0,1),Math.PI/2)
let bgMaterial = new this.BABYLON.StandardMaterial('bgMaterial',this.scene);
bgMaterial.diffuseTexture = new this.BABYLON.Texture('//yun.duiba.com.cn/db_games/activity/gravityBall1.0/model/bg.jpg',this.scene);
bgMaterial.backFaceCulling = false;
bg.material = bgMaterial;
this.bg = bg;
// 云
this.BABYLON.SceneLoader.ImportMesh("", "//yun.duiba.com.cn/db_games/activity/gravityBall1.0/model/", "cloud.obj", this.scene, (newMeshes) => {
const cloud = newMeshes[0];
cloud.scaling.set(0.015,0.015,0.015);
let cloudtMaterial = new this.BABYLON.StandardMaterial("cloudtMaterial", this.scene);
cloudtMaterial.diffuseColor = new this.BABYLON.Color3(1,1,1);
cloudtMaterial.ambientColor = new this.BABYLON.Color3(1,1,1);
cloudtMaterial.specularColor = new this.BABYLON.Color3(1,1,1);
cloudtMaterial.backFaceCulling = false;
cloud.material = cloudtMaterial;
cloud.position.y = 10;
cloud.visibility = 0;
this.cloudTemplate = cloud;
})
// 星球和用户球体
this.BABYLON.SceneLoader.ImportMesh("", "//yun.duiba.com.cn/db_games/activity/gravityBall1.0/model/", "planet.gltf", this.scene, (newMeshes) => {
// 星球
this.planet = newMeshes[0]['_children'][0];
let planetMaterial = new this.BABYLON.StandardMaterial("planetMaterial", this.scene);
planetMaterial.diffuseTexture = new this.BABYLON.Texture('//yun.duiba.com.cn/db_games/activity/gravityBall1.0/model/texture.png', this.scene);
planetMaterial.ambientColor = new this.BABYLON.Color3(1,1,1);
planetMaterial.diffuseColor = new this.BABYLON.Color3(1,1,1);
planetMaterial.backFaceCulling = false;
this.planet.material = planetMaterial;
// 用户球体
this.realRocket = newMeshes[0]['_children'][0].clone();
this.realRocket.scaling = new this.BABYLON.Vector3(1.5,1.5,1.5);
this.rocket = this.BABYLON.Mesh.CreateBox('rocket', 2, this.scene);
this.rocketP = this.BABYLON.Mesh.CreateBox('rocketP', 2, this.scene);
this.rocket.parent = this.rocketP;
this.rocket.visibility = 0;
this.rocketP.visibility = 0;
this.rocketP.ellipsoid = new this.BABYLON.Vector3(1, 1, 1);
this.rocketP.ellipsoidOffset = new this.BABYLON.Vector3(0, 0, 0);
let rocketMaterial = new this.BABYLON.StandardMaterial("rocketMaterial", this.scene);
rocketMaterial.diffuseColor = new this.BABYLON.Color3(140/255,50/255,0);
rocketMaterial.ambientColor = new this.BABYLON.Color3(140/255,50/255,0);
rocketMaterial.specularColor = new this.BABYLON.Color3(140/255,50/255,0);
rocketMaterial.emissiveColor = new this.BABYLON.Color3(140/255,50/255,0);
rocketMaterial.backFaceCulling = false;
this.realRocket.material = rocketMaterial;
this.realRocket.parent = this.rocket;
this.camera.parent = this.rocketP;
this.camera.setTarget(this.realRocket.position.add(new this.BABYLON.Vector3(0,0,0)))
this.rocketP.position.y = 40;
this.lastPosition = this.rocketP.position.clone();
this.realRocket.addRotation(0, 0, Math.PI);
this.initTail()
})
// Fog
this.scene.fogMode = this.BABYLON.Scene.FOGMODE_EXP;
this.scene.fogDensity = 0.0015;
this.scene.fogColor = this.scene.clearColor;
let inputManager = this.camera.inputs;
this.startTimestamp = Date.now();
}
// 初始化云
initCloudPool(demo:any){
// 生成云池
for(let i = 0; i < 30; i++){
let nCloud = demo.clone(`cloud_${i}`);
let randomNum = Math.random();
let newScale = Math.max(0.01*randomNum,0.005)
nCloud.scaling.set(newScale, newScale, newScale);
let newAngle = Math.random()*360;
let newRadius = Math.max(Math.random()*this.cloudRange,10);
nCloud.position.set(newRadius*Math.cos(newAngle),newRadius*Math.sin(newAngle),0);
nCloud.lookAt(new this.BABYLON.Vector3(0,0,0));
nCloud.rotate(new this.BABYLON.Vector3(1,0,0),Math.PI/2);
nCloud.visibility = 1;
this.cloudPool.push(nCloud);
}
}
// 初始化尾巴
initTail(){
// debugger
this.TailSystem = new this.BABYLON.ParticleSystem("particles", 1000, this.scene);
this.TailSystem.particleTexture = new this.BABYLON.Texture("//yun.duiba.com.cn/db_games/activity/gravityBall1.0/model/fire.jpg", this.scene);
this.TailSystem.blendMode = this.BABYLON.ParticleSystem.BLENDMODE_ONEONE;
this.TailSystem.minAngularSpeed = -2;
this.TailSystem.maxAngularSpeed = 2;
this.TailSystem.minSize = 3;
this.TailSystem.maxSize = 4;
this.TailSystem.minLifeTime = 0.005;
this.TailSystem.maxLifeTime = 0.015;
this.TailSystem.minEmitPower = 0.5;
this.TailSystem.maxEmitPower = 4.0;
this.TailSystem.emitter = this.rocketP;
this.TailSystem.emitRate = 10000;
this.TailSystem.direction1 = new this.BABYLON.Vector3(-0.2, -0.2, -0.2);
this.TailSystem.direction2 = new this.BABYLON.Vector3(0.2, 0.2, 0.2);
this.TailSystem.color1 = new this.BABYLON.Color3(1, 0, 0);
this.TailSystem.color2 = new this.BABYLON.Color3(0.95, 0.84, 0.05);
// this.TailSystem.moveSource = true;
this.TailSystem.start();
}
disposeAll(){
for(let cloud of this.cloudPool){
cloud.dispose();
this.removeEle(cloud, this.cloudPool);
}
}
/**
* 让物体朝传入方向移动
* 放在onEnterFrame里或者render里
* 该方法里重力垂直向下
*/
public moveByVector3(mesh:any, forward:any, speed?:number, isGravity?:boolean){
let _speed:number = 1;
let _gravity = 0;
let _isGravity = false;
if(speed){
_speed = speed;
}
if(isGravity){
_isGravity = isGravity;
}
if(_isGravity && this.gravity){
_gravity = this.gravity;
}
mesh.position.x += forward.x * _speed;
mesh.position.y += forward.y * _speed + _gravity;
mesh.position.z += forward.z * _speed;
}
/**
* 让物体朝传入方向加速/减速移动
* */
public tempSpeed:number = 0;
public accelerateByVector3(mesh:any, forward:any, speed?:number, addSpeed?:number, isGravity?:boolean){
let _speed:number = 1;
let _addSpeed:number = 0;
let _gravity = 0;
let _isGravity = false;
const time = (Date.now() - this.startTimestamp)/1000;
if(speed){
_speed = speed;
}
if(addSpeed){
_addSpeed = addSpeed;
}
if(isGravity){
_isGravity = isGravity;
}
if(_isGravity && this.gravity){
_gravity = this.gravity
}
// v1 = v0 + a*t
let newSpeed = _speed + _addSpeed * time;
mesh.position.x += forward.x * newSpeed;
mesh.position.y += forward.y * newSpeed + _gravity;
mesh.position.z += forward.z * newSpeed;
}
/**
* 移除数组里的元素
* @param e 要移除的元素
* @param arr 目标数组
* */
public removeEle(e, arr) {
var index = arr.indexOf(e);
if (index >= 0) {
arr.splice(index, 1)
}
}
}
\ No newline at end of file
import StartSceneBase from "../../libs/new_wx/components/StartSceneBase";
import prePlayScene from "../playScene/prePlayScene";
export default class StartScene extends StartSceneBase {
async start(){
super.start();
if(!prePlayScene.instance.canvasWebgl){
prePlayScene.instance.initScene();
}
}
}
\ No newline at end of file
{
"defaultSeverity": "error",
"extends": [
// "tslint:recommended"
],
"jsRules": {},
"rules": {
"only-arrow-functions": true,
"no-namespace": true,
"no-var-keyword": true,
"prefer-const": true,
"no-conditional-assignment": true,
"prefer-for-of": true,
"no-inferrable-types": true,
// "no-magic-numbers": true,
"cyclomatic-complexity": true
},
"rulesDirectory": []
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment