main
John Lauer Publish clean board component LODs and opt-in preview (1/2) ada1b42 29d ago
<!doctype html><meta charset="utf-8"><title>Component LOD asset transport</title><script>
'use strict';
// Binary is sent only to the embedding frame that requested this exact hash.
const expected={"sha256":"aba27af6670236fd510deb5c9ef9a1e9172cf4beb7d523878b950d3cf9b557c7","sizeBytes":4592,"base64":"Z2xURgIAAADwEQAAJA0AAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6ImdsVEYtVHJhbnNmb3JtIHY0LjUuMCIsInZlcnNpb24iOiIyLjAifSwiYWNjZXNzb3JzIjpbeyJ0eXBlIjoiU0NBTEFSIiwiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjAsImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjB9LHsidHlwZSI6IlNDQUxBUiIsImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjozNiwiYnVmZmVyVmlldyI6MCwiYnl0ZU9mZnNldCI6MH0seyJ0eXBlIjoiU0NBTEFSIiwiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjMwLCJidWZmZXJWaWV3IjowLCJieXRlT2Zmc2V0Ijo3Mn0seyJ0eXBlIjoiU0NBTEFSIiwiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjYsImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjEzMn0seyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjowLCJidWZmZXJWaWV3IjoxLCJieXRlT2Zmc2V0IjowfSx7InR5cGUiOiJWRUMzIiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjAsIm1heCI6W251bGwsbnVsbCxudWxsXSwibWluIjpbbnVsbCxudWxsLG51bGxdLCJidWZmZXJWaWV3IjoxLCJieXRlT2Zmc2V0IjoxMn0seyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwiYnVmZmVyVmlldyI6MiwiYnl0ZU9mZnNldCI6MH0seyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC41NDg0MTc2Mjc4MTE0MzE5LDEsMC4yODM4NTI2NjY2MTY0Mzk4XSwibWluIjpbLTAuNTQ4NDE3NjI3ODExNDMxOSwtMSwtMC4yOTAzMjI1NzE5OTI4NzQxNV0sImJ1ZmZlclZpZXciOjIsImJ5dGVPZmZzZXQiOjEyfSx7InR5cGUiOiJWRUMzIiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE2LCJidWZmZXJWaWV3IjozLCJieXRlT2Zmc2V0IjowfSx7InR5cGUiOiJWRUMzIiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE2LCJtYXgiOlswLjU0ODQxNzYyNzgxMTQzMTksMSwwLjI4Mzg1MjY2NjYxNjQzOThdLCJtaW4iOlstMC41NDg0MTc2Mjc4MTE0MzE5LC0xLC0wLjI5MDMyMjU3MTk5Mjg3NDE1XSwiYnVmZmVyVmlldyI6MywiYnl0ZU9mZnNldCI6MTJ9LHsidHlwZSI6IlZFQzMiLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NCwiYnVmZmVyVmlldyI6NCwiYnl0ZU9mZnNldCI6MH0seyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50Ijo0LCJtYXgiOlswLjU0ODQxNzYyNzgxMTQzMTksMC42MTI4NzI3MTk3NjQ3MDk1LDAuMjkwMzIyNTcxOTkyODc0MTVdLCJtaW4iOlstMC41NDg0MTc2Mjc4MTE0MzE5LC0wLjYxMjg3MjcxOTc2NDcwOTUsMC4yOTAzMjI1NzE5OTI4NzQxNV0sImJ1ZmZlclZpZXciOjQsImJ5dGVPZmZzZXQiOjEyfV0sImJ1ZmZlclZpZXdzIjpbeyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjAsImJ5dGVMZW5ndGgiOjE0NCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjE0NCwiYnl0ZUxlbmd0aCI6MCwiYnl0ZVN0cmlkZSI6MjQsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxNDQsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZVN0cmlkZSI6MjQsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0Ijo3MjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZVN0cmlkZSI6MjQsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxMTA0LCJieXRlTGVuZ3RoIjo5NiwiYnl0ZVN0cmlkZSI6MjQsInRhcmdldCI6MzQ5NjJ9XSwiYnVmZmVycyI6W3siYnl0ZUxlbmd0aCI6MTIwMH1dLCJtYXRlcmlhbHMiOlt7Im5hbWUiOiJtYXRfMCIsImRvdWJsZVNpZGVkIjp0cnVlLCJwYnJNZXRhbGxpY1JvdWdobmVzcyI6eyJiYXNlQ29sb3JGYWN0b3IiOlswLjUyMDk5NTU1NzMwODE5NywwLjUyMDk5NTU1NzMwODE5NywwLjUyMDk5NTU1NzMwODE5NywxXX19LHsibmFtZSI6Im1hdF8xIiwiZG91YmxlU2lkZWQiOnRydWUsInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvckZhY3RvciI6WzAuNjU4Mzc0ODQ1OTgxNTk3OSwwLjY1ODM3NDg0NTk4MTU5NzksMC42NTgzNzQ4NDU5ODE1OTc5LDFdfX0seyJuYW1lIjoibWF0XzIiLCJkb3VibGVTaWRlZCI6dHJ1ZSwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC45NzM0NDUyOTYyODc1MzY2LDEsMSwxXX19LHsibmFtZSI6Im1hdF8zIiwiZG91YmxlU2lkZWQiOnRydWUsInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvckZhY3RvciI6WzAuMDA2OTk1NDEwMTkyNzU3ODQ1LDAuMTYyMDI5MzcwNjY1NTUwMjMsMCwxXX19XSwibWVzaGVzIjpbeyJuYW1lIjoiMDYwMyIsInByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjo0LCJQT1NJVElPTiI6NX0sIm1vZGUiOjQsIm1hdGVyaWFsIjowLCJpbmRpY2VzIjowfSx7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjo2LCJQT1NJVElPTiI6N30sIm1vZGUiOjQsIm1hdGVyaWFsIjoxLCJpbmRpY2VzIjoxfSx7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjo4LCJQT1NJVElPTiI6OX0sIm1vZGUiOjQsIm1hdGVyaWFsIjoyLCJpbmRpY2VzIjoyfSx7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjoxMCwiUE9TSVRJT04iOjExfSwibW9kZSI6NCwibWF0ZXJpYWwiOjMsImluZGljZXMiOjN9XX1dLCJub2RlcyI6W3sibmFtZSI6IkFkb20gWi11cCBmb290cHJpbnQgZGlzcGxheSBwb3NlIiwiZXh0cmFzIjp7InBoeXNpY2FsIjp0cnVlLCJzb3VyY2UiOiJUTlBXX2UzXzA2MDMuZ2xiIiwicG9zZVF1YWxpZmljYXRpb24iOiJEaXNwbGF5IHBvc2U7IG5hdGl2ZSBzZWF0aW5nIGFuZCBwaW4tMSBxdWFsaWZpY2F0aW9uIHJlbWFpbiBzZXBhcmF0ZSJ9LCJ0cmFuc2xhdGlvbiI6Wy0wLjAwMDc3NSwwLjAwMDQyNSwwXSwicm90YXRpb24iOlswLDAsLTAuNzA3MTA2NzgxMTg2NTQ3NiwwLjcwNzEwNjc4MTE4NjU0NzZdLCJjaGlsZHJlbiI6WzFdLCJzY2FsZSI6WzEsMSwxXX0seyJuYW1lIjoiMDYwMyIsInRyYW5zbGF0aW9uIjpbMC4wMDA0MjUwMDAwMDU2MzQ1MDEzLDAuMDAwNzc1MDAwMDIyMjU4NjA5NSwwLjAwMDIyNDk5OTk5NjEzNTAxMTMyXSwic2NhbGUiOlswLjAwMDc3NTAwMDAyMjI1ODYwOTYsMC4wMDA3NzUwMDAwMjIyNTg2MDk2LDAuMDAwNzc1MDAwMDIyMjU4NjA5Nl0sIm1lc2giOjAsInJvdGF0aW9uIjpbMCwwLDAsMV19XSwic2NlbmVzIjpbeyJub2RlcyI6WzBdfV0sInNjZW5lIjowLCJleHRlbnNpb25zVXNlZCI6WyJLSFJfbWF0ZXJpYWxzX3VubGl0IiwiS0hSX21lc2hfcXVhbnRpemF0aW9uIl0sImV4dGVuc2lvbnNSZXF1aXJlZCI6WyJLSFJfbWVzaF9xdWFudGl6YXRpb24iXX0gsAQAAEJJTgAAAAEAAgAAAAMAAQAEAAUABgAEAAcABQAIAAkACgAIAAoACwAMAA0ADgAMAA8ADQAQABEAEgAQABMAEQAUABUAFgAUABYAFwAAAAEAAgAAAAMAAQAEAAUABgAHAAYACAAHAAQABgAHAAgACQAKAAsADAANAAwADgANAAoADAANAA4ADwAAAAEAAgAAAAMAAQAAAAAAAAAAAAAAgD8ZZQy/AACAvyNVkT4AAAAAAAAAAAAAgD8ZZQw/OuUcvyNVkT4AAAAAAAAAAAAAgD8ZZQy/OuUcvyNVkT4AAAAAAAAAAAAAgD8ZZQw/AACAvyNVkT4AAAAAAAAAAAAAgD8ZZQy/OuUcPyNVkT4AAAAAAAAAAAAAgD8ZZQw/AACAPyNVkT4AAAAAAAAAAAAAgD8ZZQy/AACAPyNVkT4AAAAAAAAAAAAAgD8ZZQw/OuUcPyNVkT4AAAAAAACAPwAAAAAZZQy/AACAPyNVkT4AAAAAAACAPwAAAAAZZQw/AACAPyNVkT4AAAAAAACAPwAAAAAZZQw/AACAPymllL4AAAAAAACAPwAAAAAZZQy/AACAPymllL4AAAAAAAAAAAAAgL8ZZQw/AACAPymllL4AAAAAAAAAAAAAgL8ZZQy/OuUcPymllL4AAAAAAAAAAAAAgL8ZZQy/AACAPymllL4AAAAAAAAAAAAAgL8ZZQw/OuUcPymllL4AAAAAAAAAAAAAgL8ZZQw/OuUcvymllL4AAAAAAAAAAAAAgL8ZZQy/AACAvymllL4AAAAAAAAAAAAAgL8ZZQy/OuUcvymllL4AAAAAAAAAAAAAgL8ZZQw/AACAvymllL4AAAAAAACAvwAAAAAZZQw/AACAvyNVkT4AAAAAAACAvwAAAAAZZQy/AACAvyNVkT4AAAAAAACAvwAAAAAZZQy/AACAvymllL4AAAAAAACAvwAAAAAZZQw/AACAvymllL4AAAAAAAAAAAAAgL8ZZQy/OuUcPyNVkb4AAAAAAAAAAAAAgL8ZZQw/OuUcvyNVkb4AAAAAAAAAAAAAgL8ZZQy/OuUcvyNVkb4AAAAAAAAAAAAAgL8ZZQw/OuUcPyNVkb4AAIA/AAAAAAAAAAAZZQw/AACAvyNVkT4AAIA/AAAAAAAAAAAZZQw/AACAvymllL4AAIA/AAAAAAAAAAAZZQw/OuUcvyNVkb4AAIA/AAAAAAAAAAAZZQw/AACAPyNVkT4AAIA/AAAAAAAAAAAZZQw/OuUcPyNVkb4AAIA/AAAAAAAAAAAZZQw/AACAPymllL4AAIC/AAAAAAAAAAAZZQy/AACAPyNVkT4AAIC/AAAAAAAAAAAZZQy/AACAPymllL4AAIC/AAAAAAAAAAAZZQy/OuUcPyNVkb4AAIC/AAAAAAAAAAAZZQy/AACAvyNVkT4AAIC/AAAAAAAAAAAZZQy/OuUcvyNVkb4AAIC/AAAAAAAAAAAZZQy/AACAvymllL4AAAAAAAAAAAAAgD8ZZQw/OuUcPymllD4AAAAAAAAAAAAAgD8ZZQy/OuUcvymllD4AAAAAAAAAAAAAgD8ZZQw/OuUcvymllD4AAAAAAAAAAAAAgD8ZZQy/OuUcPymllD4="};
const request=new URLSearchParams(location.hash.slice(1));
const nonce=request.get('nonce'),hash=request.get('sha256');
if(parent!==window&&/^[a-f0-9]{32}$/.test(nonce||'')&&hash===expected.sha256){
 const text=atob(expected.base64),bytes=new Uint8Array(text.length);
 for(let i=0;i<text.length;i++)bytes[i]=text.charCodeAt(i);
 parent.postMessage({type:'adom-lod-asset',nonce,sha256:expected.sha256,sizeBytes:bytes.byteLength,buffer:bytes.buffer},'*',[bytes.buffer]);
}
</script>