Skip to content

Instantly share code, notes, and snippets.

@FrissAnalytics
Created September 25, 2018 12:10
Show Gist options
  • Save FrissAnalytics/db72996a3c960ed8366d5657372bf9a6 to your computer and use it in GitHub Desktop.
Save FrissAnalytics/db72996a3c960ed8366d5657372bf9a6 to your computer and use it in GitHub Desktop.
Rotating Cube
license: gpl-3.0
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
margin: 0;
}
canvas {
width: 100%;
height: 100%;
}
#controls {
position: absolute;
padding: 10px;
color: #fff;
font-family: "Helvetica Neue", sans-serif;
background: rgba(255, 255, 255, .1);
}
#controls .input-wrapper {
display: inline-block;
text-align: center;
}
</style>
</head>
<body>
<div id="controls">
<div class="input-wrapper">
<div>Vertical rotation</div>
<input id="x" type="range" value="0" min="0" max="1000">
</div>
<div class="input-wrapper">
<div>Horizontal rotation</div>
<input id="y" type="range" value="1000" min="0" max="1000">
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/88/three.min.js"></script>
<script>
var scene = new THREE.Scene();
// There are a few different cameras in three.js. For now, let's use a PerspectiveCamera.
// The first attribute is the field of view.
// FOV is the extent of the scene that is seen on the display at any given moment.
// The value is in degrees.
// The second one is the aspect ratio.
// You almost always want to use the width of the element divided by the height,
// or you'll get the same result as when you play old movies on a widescreen TV -
// the image looks squished.
// The next two attributes are the near and far clipping plane.
// What that means, is that objects further away from the camera than the value of far
// or closer than near won't be rendered.
// You don't have to worry about this now, but you may want to use other values in your apps
// to get better performance.
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
// Next up is the renderer. This is where the magic happens.
// In addition to the WebGLRenderer we use here, three.js comes with a few others,
// often used as fallbacks for users with older browsers
// or for those who don't have WebGL support for some reason.
// In addition to creating the renderer instance,
// we also need to set the size at which we want it to render our app.
// It's a good idea to use the width and height of the area we want to fill with our app -
// in this case, the width and height of the browser window. For performance intensive apps,
// you can also give setSize smaller values, like window.innerWidth/2 and window.innerHeight/2,
// which will make the app render at half size.
// If you wish to keep the size of your app but render it at a lower resolution,
// you can do so by calling setSize with false as updateStyle (the third argument).
// For example, setSize(window.innerWidth/2, window.innerHeight/2, false) will render your app
// at half resolution, given that your <canvas> has 100% width and height.
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
// Last but not least, we add the renderer element to our HTML document.
// This is a <canvas> element the renderer uses to display the scene to us.
document.body.appendChild(renderer.domElement);
// To create a cube, we need a BoxGeometry.
// This is an object that contains all the points (vertices) and fill (faces) of the cube.
// We'll explore this more in the future.
var geometry = new THREE.BoxGeometry(2, 2, 2);
// In addition to the geometry, we need a material to color it.
// Three.js comes with several materials, but we'll stick to the MeshBasicMaterial for now.
// All materials take an object of properties which will be applied to them.
// To keep things very simple, we only supply a color attribute of 0x00ff00, which is green.
// This works the same way that colors work in CSS or Photoshop (hex colors).
var material = new THREE.MeshBasicMaterial({ color: "steelblue" });
// The third thing we need is a Mesh.
// A mesh is an object that takes a geometry, and applies a material to it,
// which we then can insert to our scene, and move freely around.
var cube = new THREE.Mesh(geometry, material);
// By default, when we call scene.add(), the thing we add will be added to the coordinates (0,0,0).
// This would cause both the camera and the cube to be inside each other.
// To avoid this, we simply move the camera out a bit.
scene.add(cube);
camera.position.z = 5;
// From https://stackoverflow.com/questions/20153705/three-js-wireframe-material-all-polygons-vs-just-edges/
// If you want to render a wireframe of a given geometry, you can now use this pattern:
// WireframeGeometry will render all edges. EdgesGeometry will render the hard edges only.
var geo = new THREE.EdgesGeometry(geometry); // or WireframeGeometry(geometry)
var mat = new THREE.LineBasicMaterial({ color: "white", linewidth: 1 });
var wireframe = new THREE.LineSegments(geo, mat);
scene.add(wireframe);
// This will create a loop that causes the renderer to draw the scene 60 times per second.
// This will be run every frame (60 times per second),
// and give the cube (and wireframe) a nice rotation animation.
// Basically, anything you want to move or change while the app is running
// has to go through the animate loop.
// You can of course call other functions from there,
// so that you don't end up with a animate function that's hundreds of lines.
function animate() {
// If you're new to writing games in the browser,
// you might say "why don't we just create a setInterval?"
// The thing is - we could, but requestAnimationFrame has a number of advantages.
// Perhaps the most important one is that it pauses
// hen the user navigates to another browser tab,
// hence not wasting their precious processing power and battery life.
requestAnimationFrame(animate);
var x = Math.sqrt(document.getElementById("x").value) / 1000;
var y = Math.sqrt(document.getElementById("y").value) / 1000;
cube.rotation.x += x;
cube.rotation.y += y;
wireframe.rotation.x += x;
wireframe.rotation.y += y;
renderer.render(scene, camera);
}
animate();
window.onmousemove = () => {
var mouse_x = event.clientX,
mouse_y = event.clientY,
controls_bounds = document.getElementById("controls").getBoundingClientRect();
if (mouse_x > controls_bounds.width || mouse_y > controls_bounds.height){
document.getElementById("x").value = mouse_y / window.innerHeight * 1000;
document.getElementById("y").value = mouse_x / window.innerWidth * 1000;
}
}
</script>
</body>
</html>
�PNG

IHDR���D 7iCCPICC ProfileX��yTUϷ��sn½tw�t�tw��\��K
" R�H���؄b R�(
(* ��~�����֛���g�ٳ糧��p+S"#Ca�£��n��������H};;+��?�OsO�^>�Y��?������/���޾Q>a(�F�'� v� �EG���,T� �E�q�&V_�ޛ�jC����^H
5�u^�>����)�7(U=�b�@�/\��Ζ��s�P,��v��M�6)���xӗ�D0
�� �����Oa�1�F3)�j������DX�c�;t?����L(
���_�c̜�/�D�c��I�#K�X(&�Y�7֡P7ڢ��GB���}8����>�jc��NN���\�e��G�?����A��N�mޏ r�A1�_F�8Z�n�1!���o_1��9G@X�_��æ>�dn�[n�d����C�����`�(7�?||���7� )~�οy"G#� ~�WE����GZ�BM��B(u��v&]l��`@0��n�_ Kd���&7�����4{� �z����@T���)���u�&�:��E~ �o;��Z?��W�J7�2��6v�E���0 F���B�zhVĨc4�����+�g�3Ù�$w�P�eW�����
,���j�C�����~�`�a�`G�ρ G������X �+���U���y��w1��
����G�c�0\@��z���E}SA������{��Dy"Ld'�%��G'E��ͺo��s���_O ����7����--���d W�{�m�҂4� iDz�[�����Xzs���� ��#^~J~�_}S~�Oݘ��;z}�FD�S������O�<�Gv������g�����a�L�����Q�3N]�d�QW�.������}ȩ��j� ���@��N���]�G�@h=` ,�-p�`:΁ e��� d�#���Ԁ��
h-�6� �~��@��{� ̀9� A"C�'��BҐ"��@Ɛ��C^P�@{�T(:
��NC��e� � =����[h
�-�L�Y`^X ���a}�v����.8N���p|�߆�O�Q�<��aCD1Dl��"IHR�T uH3:ӏ�QdY��0�� �^�0��.L&sS�����y�y����’�<Xi�&�� ��aӱE�j�ul���c�p8N���Uw\0n.W��ǵ�pc�Y<ω��k�m�|4>߆Ŀ�/h �E� ��NH!�Z �� �2��(J�$�}���\b���G|O\�a��Ѧq� ��OSLSG�E��--���=mm2m1�%���oiIL$)�!ɓC:L:Kj'='� ��bd=�9�|�\K�$�&/�1��ҙ�����+��A7H���H/J�O��>����*}�4�A�����P���0�0��̨�h�Ƙ�x���$�I�ɘɗ)�����i�af6d�aNe�b�b~ςcg1g f�f����2��Ī��º�����(�&�f�ʖ�v��)�;/�>�{&{� �<7��GG=��%NNc��<��W\.).{�8��\]\��,�Z�>�Y�W�Gx`)�=<�<=<��|������y;y��������
�Z�����u��� ���?
� �
 ���4�<-�+�,$.�,�"T/�J�FX]�_�@�CxF�_�Zd��y�Q���h��1�{��b�b�b��&�9����ϋ�� K�J쒨���I�K�H�I�K�R*R�R%R}Ұ��t�t�����-�[*� ːd�ebe�˼�e���M�m��"'"�!�'wO�|�|�� & ��f��R�>�%�CJd%�}J�Jߔ����O*?SaV�V9�ҡ����JU�S�RQ�R+UVgQ�S�Q����0�اѢ�����yE󫖌V��9�ɭ�[��Vm�Ҧh������9�3�+�Kѭ�}�'��W�7�/��A����������a�a�bdj�e�k�d�l|�����I��y�S�=��fX3K�<�as^s�Z� 5�D�;�$KG��ﬤ��V�ְ��u��KQ�p�[`kn�o��N�n��M{���}������w:�s�s2p�uz�,����B���R�2�j�z�u�M�-���;�{�{���ţ�cv���m�=U<�=�n߾{��\;Bw��I���������
ŖRA��6�.���1�9���WϷ�w�O��߄���Q������@����� àA߂͂˃�ClCΆ����և¼š™�C��D�E����L�ݥ��p� ՒZEm�j�fA�=11b���Ė�.Ĺ�]�͸;|wO�T|f�D�I™=�=>{:�
�ݿ�m�~��$(�;�c��}�M�k�����(E>�h��T���4޴䴱�ΧӥSӇj,��de�f*e����՝-�]�����}H�P����{sUsO� ?�4O7��(�ф�c���7

~�,|P�\T~��X̱�b����"Ǐ_9x�I�AI})Oif�|�o��I��u����K��N=;mz�F�XEQ%�2��C�Kս3�gj�����Wφ��q��S�V[{��\�y�|��� ��/]l���;]�V�} \������W,�t\U�ZwM�Z�u��Y7��7fF��,�:����ߔ�y�E�����V�ִֵ�����������:vv��t��c��˲��]�������׾��@�AS�zw�CՇ7zTz�?Ryt�W��F�Z_c�F��ց�A��ۏ��2z�����S�φ=�G��>�|���H����ؗY�^��y]�F�M���護Fo{�9�{1�3�i<j|�}�� ���I�ɖ)�����>���iy:�3���/_�}���3�6��������?��T��1k7�z.lny>k�s�fQ}�ޒ���r�
~�xUr���寗kakk�*e�)������Y��0��o�m����-] Y�|I�8b�p�x.��F�ֆB>B�D?�(���\�2�&����E���S����@��#aF�Cb%�������-�2�r��
Ɋ畞���
j�ճ4nh��J�V����Ի��Ґ`�j�crĴ��d)bejl�k{����#�����K��!�:��o��x�o_� �h(��2>��~;��(��A[�B���ж�S���v�ԩQ����OcZck��w'Ň&��1߫�����O#Y�e�k�_Z���2�f�g�d?�ysh�����Gf�����,a��o9nz§d_iqY�ɶ򇧆N�T�VNU��Fβ�H���<w��╺��o��(]u�u�ȍچ���M���7o�\�U�Z�V�^v��#�s��.ǻ��8�-�}��}�ag��G-��}��Q����ǏK����<�>�y�\o7r]_*/'^��z=��Ш�觷��Ɛ��q�����|h�p��<0%75���S�������/>_�^�����m�w��w�� ������h|�kUvmmc���Kp0��Lb.c�qnxm� Q�F�V�$O֤���aHb,gje�be`Sg�pdp^�z�C˫ķ�?Y�`�� �YQZ1~q sI/�x��-�ezd'�1
��[�<��U�U�Ԛ�i�����ͭ��k���kpɰ�� ���L�������*�z�M�m���t� �,��,�4�x�@w'�m��&�=v��,��D�������W�'�5P>�4��ZV��I��IՋ�Z�~s16=�{�q�|��޽���I �p�����N��Z�w`{��A� �LJ���39w�>�%w��|����3� ���[8�pB�$������X�ԩ���T<�������lw��s��_(������� ��Z�.{÷��q�{S�e���m-����u�L�ו|7�^���'�?��q|$Ӌ��ҟ=<h��x����S��gi��$��i������7G��ʼ#��0�9^�~�� ���d�Ծ�A�|�?�}��9���=�G�ϸ٠9�y��� � =?/���VG6�_܁,�g��Cr1Ҙ>lN7�?C$�i�i�Iqd:Ez:�9���L���,��l������+\�܃<��u|��%E�B���"��1cq���r�(i�-�2�̔��}�f�s��J��^*�8�>�Bu7 N��eZ�[�qگun�����2��&OMo���Y�Z�Z[�Z�;mRm��8�>ڷ:�;:i9��_�\t��f����ƣf[z�/n��#y���k�R��՗�;�w�W�z�J`[Pr�^i�f� �8����<���k�m���n�}���w��x����=���&�%I$���L���b�*��q�6��<8��(�>+'���|h��ܬ#!y�G����ߖ?]�P�_dp,�8�DV�x�I�r�S�U*�*%��pV3���!�ң+I���Ńu�_Z�"q����� ,��M���-�[���m���n��h�|sg���=��r�/?|ڳ�+ٷ�����NJC��|v|�4"������q�ٓ�m��-گ���ot� �
@>g�B�y h�yv��8i�`�M�r�����'�9�?��h�i<иy7�D#� � �`b�$!=4>����`4C� l���(o^B�k$�A�1�&& S�y�e�Z�Y'���qx,��� H%4�DWb q�ƚ�4�<� m C�&u�Eə�/tNt-h���v1�3�3�1�0�bVg��������:�Îc/��h�����V��)����[�+P(�+�,�~!rU4W,T�RBZ�,9#�D�斓2I��r�,�3
��)e*�X�ʪ�����x�9�ս�K���=�^��I�9#`�C�9���hA�d��V��� �+�oqx�DvVvqwMt;�~�c“v����{��(�� �"~��Z�� C��.��D �2��D+����쾜�uOb�>��)iV�dn����;̚�&�Q��µb��V'w���8U5rV������˧��h�m�k��&���er����'107�7,�|���7�� ~�Z�����w�S~Nc~m1k�qyh��j��5�����́ p1�t�5�a �*���{�
�Ar���B�m����a+�
��;�b��E�q �����BXm��M�
N��{�g������ ��D-b>q����Z7�kh$L% �5ȧ�h�v�Mл��2�0�3�0�12u3;2�B#�%�\6)���8�8np�s~���&sW������Y����*xX(H�@�C��-�#����RL҄-X�,��<�AaQqRiX�[��m�n�ߵ��k���F�Q� � M�4��M�MM�v�'Y���g5c�mkl��i�ǜ
� \N���}�Pٖ��h��h�>oa�B�������l!J�Na��'"�#?R٣L�cc�Ǝ�f��N���,Q,)q����T����� \��lLN�a��μ�|�B�cZǵJ��4�%Oc*�V�Vs��U�}��«��K}Wf�+4�mz�B�j�N���3u��������W�?��=�x662����-��{� ���i��Y?��C{��V:W�Zܘ�����`�A"(�@�!i��B�P;�f���h�As$ iGV1Z�L3f�����$q�q��:�
�A"j�h`�`�'�F�7I��d;��zA�vO�9�#L2L���Y�,5��/�����{9szspK��,��k�?*&h%$/�!�Y�&�U��Ī���=/�d�2�F�NJ?��T�US�:5H��Z����[�U_� ߈͸��Ü�b��M�����㈳�K�����m�� ;R� J��_5��b��`���0��@���錋����%�*9~�Ӕ�4�!��RFT�P�s���#�y��3
���מ�QJSv�\�ԭ
���3F��5v�C�.�י�7]��r��z⍕��f����R�Tۧ:J����ܻ� �t�x��~�A�ǃOr�-���\xi�j�M��껔q�}�<���i���/&_�gʾ�������s�6�/����c�<� �/��"��U�������T�,�:�^���r�ua Zs^;�>�Q�J��D2�zm����歭-W���V���K�C7��ٸk(}�����������t��F�iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<exif:PixelXDimension>960</exif:PixelXDimension>
<exif:PixelYDimension>500</exif:PixelYDimension>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
��21*IDATx�� r��P)�5�[xYՓWo�eSzFXE69���GU�P�p}�n>c�~}yyy��� @� �Z���)� @��' [
 @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @� @��l  @� @�@ �D�I� @��5@� @�%�mV$ @��� @���K�Y� @� [ @� PB@.�fE @�@����,����.�����twv$@�� ������/����������~ @��{�{�C�v�a�]�R�6A����  @��g���� @��n=�. ����H�xy�� ���ځ�ڴ�k2�'@���p��~�L`��{�A����  @���\���&@��U�����o '@��
p�.��V=�^+X�&�}� W�  @�i�Y���k2�'@���p��a�}x�oh~h";|H��% @`x�V�%�o���
‘�1�" g�: @�n�7��c� 0��<o�̜�x�:;L>�+L/ O�B @�����{���kAxGg!@�����{` ������
� �N�� �õĄ @ x#�}��}�]����7uFXI���v���м�&��7auR�H@��i  @`�@���r��?!��'@��{�{�C�����zRA�P~'@��� � ��������g�G�� @���\��&@�������S\���������8V@>���  �F@�M���
�+�� @����P#@����g��/ �o�HXW@^��� �R���V�ohN��C��awQ��K�_��,���{�ǻ�
��z:\���!@�@��L��.���� ��n�� @`jx���<xs���
�g�J�$ W�Z  �S��_�6[
�³t�<  0��<G�̒� ���vBAx5V'�X@���  PD@.�he @� ���P!w��A@��K�H��q�q{cf�L����~�[�E��Dmݶ_�5Q�L��4� ���in�����)`WxMM�"@�@n��r��:�G���w��9�1Fh�������#��\ @`;����L ����s���|����v�g�y @`{;�����<M�L4�#�"@�@q;���� �)pm�k� ���E��p�N��� ����4�8�"��BZ`h?m7��,�p�N��� �������{�v���g�3uS-�_�3��[9�%<\�����p�+��_d�&� �z�\�N��3 ���M� @຀|��R , � CN�$���0l) @ �����*#@��M�{�>=�|��ufA8sw�F�@U�W���  �g�����ZowJ�� @�@8GUA��]��]�]�����n��]� �zc`�'@����<|Z��p����m=����<���?�K�&@���~�|��O�
������� \ ��N�`�F@��U&J��1z�<f��@�}�^>ʻ �M�-��:�,x䛠�]B�&��z�ms�7��ϼ���\�C��g� 0�@ B� �0� �� @ �����*#@��!B�!�.z"�f��{�%�:A�@��g��&�k׶|M��[ ��{������7@ߣ��#`x�^�)��<U���l���5�� &N������ � l����w �^K`��ۮ�赺�<C��}0 &���o�>/�����Н��}�@���5� @����|��5l"����MxS����Vd_G{l�w/i�!@��~n���ڕ 0��ַA�.�jx}I���{:_�u��5r���GU @`���'OӮ]'ڃ��;���b p���C�]�c��+��D����F
�m^n���6UO�@N;�9��*,����.M�N�%��zk諒����W=����ⳅ^���.#@��n�n�.D����K*y���w�ۛ�誄�
xx���  �T���O)[P�NE�}�Co�`ƞ����w��9";���1�M��� ��v��B���AYM�V�Wu:x\�_������|{����� @��%n�^��X$����a*��iŗ����2߿���R�7 @ ���}T� �`%����wi3!@��-�o����L��/º�%_R�罊���� ��Y_�B��#��� p���໩V;�ߌ�7���D 0��<e�L�������Co��໽�+ @��1n�>��U  0��H_�u��B�pv����B�W;_����;�$`8S7�B���}'��)?��|>n� 0���9�f��L`��Ӣ��j�~�Co;R��Ռ|�e� @ ������ @��J#~��҄�k2��/��>���  �O�-��z�"��D���h���a�8��E�N�S ����_���u���v>I��Y�=K�̓;
���)I ���_�͡Z���_�o�^K�y 0��<nǒ� ��V�,�n�?��jx%@��H�H�0 "0�a��e �=���=��:� ��8: F� ��2?X$�b����h��e�` pQ@���M�Y��� ��Y�z��۟�qwU�-���]�����9�,!����������Y;g�X& /�r4�d ��a���z�ߦp�O��c�]�{ �zoq�#@���Z�% ����  @��/;��(� @��S��� �����G�`��� �v��x=1#l%`x+Y�%@����� ������-"@���p��+�U��=�6_���*S7�*��Q;c^@ �a�s�y;��{�;��w�k�~�)������ @���}'�M�ѝ�|���p&M�&�'n�� @��s=�.� ]���Y���v��wm�/����]��d�&�k�Qz�����o����* @��;�K�K�i�n�izӶZa PX�p��+��d�"�K������K:��k�v t�����~�u�q PM@���q� @�@�J��I�|�����/(! �h�"  �@�%��3�$ @` x�>� @�l, o �� @��x�l�'fD��=�=�]� xNr��: �I@����.��>�����;�;�>\�/�x� @�� ���l!�y�-T���[@�[�� @��C��Ρ�.N��C�C�]�sx^r�>�%  ���Q @ ��?�I�P� @`���ˡ @� 0��<o�̜�
xnrWn�H�:��i  0��<I�L� @������i @��D@��Q�I���|q��p�5��5���
�����  @� @`���ˡ @����k�ޙ9��גt
4Y� @ �����J#@� @�����+�!� �nZ���=&G��]�]�]� @������ @�� x~}sb @���m2I�# H�� 3!@�� �˼M��}��"�h�  @���\��
&@��|V������K*�#@�����U @����� 2= @�9��?����$ g�Z @� @઀|��\��vM�� @������17 @�iϭ?M�H# �i�B @� @ �#c pQ���Eo(�v��bJ8P@>ߥ  @� @`?x?kW"@�@*;k�ڙ�w+�m�� ��� @� @��l�l3_ @�xH@~�͇ @������n��C�G������]� @��@wI @`{w)lo�
�M@��c�K����b:P3L��) �$r\h;lB�5� @�� ��u�| 0���L'kX�����"�V&
� �N�_2��o�����j� @�����g�C���c��,>ܙ�a�|�^ @���x>J��" ���"�!��۟5
U% 0��<e�L��
d|x\m3�$` ^R�4�: @��U<�*�� @�+
�+b:�+�y`+�H��H}�&@������1;L+�y�i[g� @ �����
#@�����<�f@�|�^ @����^��n
�C��D @�@i�t�O���<����+ @�� ��99���<�x>�H��,�r0� ��Z�`#���c�]���?,�"@�� <�!�S�#�Y,�% �2N�� �=u5J'"@��@�x\������$ ����O @��nU}�Gn
���&� P^@.� @`��o� @��ˋl @��!3��}����n�!�c�E�Z��� PR@.�vE @` �e�>�<�����4w�+ ���j p&`�� įw ��;Ýw� �E��]��" @��@ 0���/�vc?n ������ۭ#� @���v���x�v���3�����w��6 �S @��_6e\p��U �P�-� �N���zי��w|��<s͝c ��fC���n�.��_����E��, � �t 𜀿��9��?�w}g���  @`Lx̾�J �䧖�]�Z�V-�� �Q�K�W<|�&�@����o��*�C
��-&E��ο�������*$@��H�H�0�$�y�Oi~�;�)H! 0��<M�L�5<���=�����S� @`6���1�%@�@1���p����C @ ���,�T �1���=��[�� @�@&8S7�B�������nw��_fK��*p�N�� Z��3���;v̎�<\}�� xx�f�[��}����� @����U@�S ��<��?^�<�K����(� @�x���,�<�B��w��F�NK�� ���:1l)`WvK��܂o�c����퍙 @�@ �n��������޷�oT�� @�@A�`ӕL��,��~�컾�]ѕ @�������H�;
xx[�|�aö��N����8�
l(�V��q��M������ @����~���-���=C�+��S�Q �=���>o�  0��<v̎xx�ɡ�� �� �Z@N�^� @��@ s~�|�sr����R% �S����-�~Y�g�(�# ��J @�?�B__
v}��!@���p���%�
����g� @�@M�f�UM�����^!��6�q�;�_�
$@��;�;�B�s
T}}�w��5X_@^��  @` �����[�Z��B����4�4 @`;�*�B �ۭ!g&@��p�>���
���k�7X� @��O�ן��� @��x���2[�����ß�ꃂ�V��K��g쪚 @�@����|���$@����$@��l-8���5����O�G �~ԅ]�!О�}�v�[nw�%d��v�c� �P`�/�r�s�E�$8D@>��E  @�h��|�^%�O���lU�-0����󽻍$@�w x�n* @�@6����o�U�I��H�0�]`����{�]�
���d�,p������^��l) o��� 0�����y��a� �D�3�I� xN`��{�}}{n�>M�,����� �X`����x�(����h�I @��^[=�5ګ��C�� ��m� @�@Q�5�E)�M����j�� @��k�
݃���� @�@8C�@�� <z+��z+���& �F�D �M`�О�Ͷ�C���5H�:�XM�޿�e�:���D @`3�ןg~���NL�����?U������_ ��(� @�S�z�6�$)p�<p �nw>�#�M�����O @�@1�������\���%@��4p�V*� @�"�@G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H@�t� @� @�@8M+B� @����#@� @��4p�V*� @�"8�1F� @�i�4�T @�Dp�c� @���iZ� @���H� @���ӴR! @�  ���1 @�H# �i�B @� @ �#c @� �F@N�J� @� @�@$ G:� @� @ �����
!@� @��H���PWۖ�JIEND�B`�
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment