<snapdata remixID="586279"><project name="Hummingbird-Chrome" app="Snap! 4.0, http://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAACJUlEQVR4Xu3SwQkAIAADMd1/6AoucZ90gcKRu23HFIgKXACj8m5/AQBBSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt/5A4Lj3qhsHKpPAAAAAElFTkSuQmCC</thumbnail><stage name="Stage" width="480" height="360" costume="0" tempo="60" threadsafe="false" lines="round" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list id="2"></list></costumes><sounds><list id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="15.686274509804434" y="50" heading="195" scale="1" rotation="1" draggable="true" costume="1" color="80,80,80" pen="tip" id="8"><costumes><list id="9"><item><ref mediaID="Sprite_cst_Untitled"></ref></item></list></costumes><sounds><list id="10"></list></sounds><variables></variables><blocks></blocks><scripts><comment x="10" y="10" w="339" collapsed="false">Welcome to Snap! We have pre-loaded the Hummingbird blocks for you. Blocks that move servos, motors, and vibration motors are located in the Motion category. Blocks that control LEDs are in the Looks category. Blocks that read sensor data are in the Sensing category. All Hummingbird blocks are located at the end of the list of blocks in a given category, and they all start with “HB”. &#xD;&#xD;The rest of the blocks are regular Snap! blocks. You can right click on most regular Snap! blocks and select help… to find out how they work. Visit www.hummingbirdkit.com/learning/snap-programming/ to find out how the Hummingbird blocks work.&#xD;&#xD;You can try any block just by clicking on it. Try it! Hook up an LED to Hummingbird LED port 1 and see if you can get it to turn on!&#xD;&#xD;We love to blink LEDs at BirdBrain Tech! Once you&apos;ve plugged an LED into port 1, try running this program----------&gt;&#xD;&#xD;</comment><script x="370" y="212.00000000000023"><block s="receiveKey"><l><option>space</option></l></block><block s="doRepeat"><l>10</l><script><custom-block s="Hummingbird LED %n %n"><l>1</l><l>80</l></custom-block><block s="doWait"><l>.1</l></block><custom-block s="Hummingbird LED %n %n"><l>1</l><l>0</l></custom-block><block s="doWait"><l>.1</l></block></script></block></script></scripts></sprite><watcher scope="Stage" s="getTimer" style="normal" x="0.15625" y="1.4687501249999997" color="4,148,220" hidden="true"/><watcher scope="Stage" s="getLastAnswer" style="normal" x="0.15625" y="1.7968751562500032" color="4,148,220" hidden="true"/><watcher scope="Sprite" s="getScale" style="normal" x="0.15625" y="2.1250001874999924" color="143,86,227" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Hummingbird LED %&apos;port&apos; %&apos;intensity&apos;" type="command" category="looks"><header></header><code></code><inputs><input type="%n">1</input><input type="%n">50</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum,intensitynum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#xD;&#xD;&#xD;&#xD;var portString = realPort.toString();&#xD;&#xD;&#xD;&#xD;var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;&#xD;    realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;&#xD;var report = {  message:"L".charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                port:portString.charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                intensity:realIntensity&#xD;&#xD;&#xD;&#xD;             };&#xD;&#xD;&#xD;&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="port"/><block var="intensity"/></list></block></script></block-definition><block-definition s="Hummingbird TRI-LED %&apos;port&apos; R %&apos;redLED&apos; G %&apos;greenLED&apos; B %&apos;blueLED&apos;" type="command" category="looks"><header></header><code></code><inputs><input type="%n">1</input><input type="%n">0</input><input type="%n">100</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>rednum</l><l>greennum</l><l>bluenum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1; //convert from zero-indexed&#xD;&#xD;&#xD;&#xD;var portString = realPort.toString(); //convert to string&#xD;&#xD;&#xD;&#xD;var realRed = Math.floor(rednum*2.55);&#xD;&#xD;&#xD;    realRed = Math.max(Math.min(realRed,255.0),0.0);&#xD;var realGreen = Math.floor(greennum*2.55);&#xD;&#xD;&#xD;    realGreen = Math.max(Math.min(realGreen,255.0),0.0);&#xD;var realBlue = Math.floor(bluenum*2.55);&#xD;&#xD;&#xD;    realBlue = Math.max(Math.min(realBlue,255.0),0.0);&#xD;var report = {  message:"O".charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                port: portString.charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                red: realRed,&#xD;&#xD;&#xD;&#xD;                green: realGreen,&#xD;&#xD;&#xD;&#xD;                blue: realBlue&#xD;&#xD;&#xD;&#xD;             };&#xD;chrome.runtime.sendMessage(hummingbirdAppID,report,function(){});</l></block><list><block var="port"/><block var="redLED"/><block var="greenLED"/><block var="blueLED"/></list></block></script></block-definition><block-definition s="Hummingbird Servo %&apos;port&apos; %&apos;position&apos;" type="command" category="motion"><header></header><code></code><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>ang</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1; //convert to zero-indexed number&#xD;&#xD;&#xD;&#xD;var portString = realPort.toString(); //convert to string&#xD;&#xD;&#xD;&#xD;var realAngle = Math.floor(ang*1.25);&#xD;&#xD;&#xD;    realAngle = Math.max(Math.min(realAngle,225.0),0.0);&#xD;&#xD;var report = { message:"S".charCodeAt(0),&#xD;&#xD;&#xD;&#xD;               port:portString.charCodeAt(0),&#xD;&#xD;&#xD;&#xD;               angle: realAngle&#xD;&#xD;&#xD;&#xD;             };&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="port"/><block var="position"/></list></block></script></block-definition><block-definition s="Hummingbird Motor %&apos;port&apos; %&apos;speed&apos;" type="command" category="motion"><header></header><code></code><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>velocity</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1; //convert from zero-indexed&#xD;&#xD;&#xD;&#xD;        var portString = realPort.toString(); //convert to string&#xD;&#xD;&#xD;&#xD;        var direction;&#xD;&#xD;&#xD;&#xD;        if(velocity &lt; 0){&#xD;&#xD;&#xD;&#xD;            direction = "1".charCodeAt(0);&#xD;&#xD;&#xD;&#xD;            velocity = Math.floor(velocity * -2.55);&#xD;&#xD;&#xD;&#xD;        }&#xD;&#xD;&#xD;&#xD;        else{&#xD;&#xD;&#xD;&#xD;            direction = "0".charCodeAt(0);&#xD;&#xD;&#xD;&#xD;            velocity = Math.floor(velocity*2.55);&#xD;&#xD;&#xD;&#xD;        }&#xD;&#xD;&#xD;        velocity = Math.max(Math.min(velocity,255.0),0.0);&#xD;        var report = {  message:"M".charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                    port: portString.charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                    dir: direction, //direction&#xD;&#xD;&#xD;&#xD;                    vel:velocity //speed&#xD;&#xD;&#xD;&#xD;                 };&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="port"/><block var="speed"/></list></block></script></block-definition><block-definition s="Hummingbird Vibration %&apos;port&apos; %&apos;intensity&apos;" type="command" category="motion"><header></header><code></code><inputs><input type="%n">1</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>intensitynum</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1; //convert to zero-indexed number&#xD;&#xD;&#xD;&#xD;        var portString = realPort.toString(); //convert to string&#xD;&#xD;&#xD;&#xD;        var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;&#xD;        realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;        var report = { message: "V".charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                   port: portString.charCodeAt(0),&#xD;&#xD;&#xD;&#xD;                   intensity:realIntensity&#xD;&#xD;&#xD;&#xD;        };&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="port"/><block var="intensity"/></list></block></script></block-definition><block-definition s="Say This %&apos;speech&apos;" type="command" category="sound"><header></header><code></code><inputs><input type="%txt">I am known by many names, but you may call me...Tim.</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>phrase</l></list><l>var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var report = { message: "SPEAK", val: phrase};&#xD;chrome.runtime.sendMessage(hummingbirdAppID, report, function(){});</l></block><list><block var="speech"/></list></block></script></block-definition><block-definition s="Hummingbird Light %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Temperature C %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = Math.floor(((sensorvalue-127)/2.4+25)*100/100);;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Temperature F %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportRound"><block s="reportSum"><l>32</l><block s="reportProduct"><l>1.80</l><custom-block s="HB Temperature C %n"><block var="port"/></custom-block></block></block></block></block></script></block-definition><block-definition s="HB Distance CM %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    var reading = sensorvalue*4;&#xD;&#xD;    if(reading &lt; 130){&#xD;        sensorvalue =  100;&#xD;    }&#xD;    else { //formula based on mathematical regression&#xD;            reading = reading - 120;&#xD;            var distance;&#xD;            if (reading &gt; 680)&#xD;                distance = 5.0;&#xD;            else{&#xD;                var sensor_val_square = reading*reading;&#xD;                distance = sensor_val_square*sensor_val_square*reading*-0.000000000004789&#xD;				               + sensor_val_square*sensor_val_square*0.000000010057143&#xD;				               - sensor_val_square*reading*0.000008279033021 &#xD;				               + sensor_val_square*0.003416264518201 &#xD;				               - reading*0.756893112198934 &#xD;				               + 90.707167605683000;&#xD;            }&#xD;            sensorvalue =  parseInt(distance);&#xD;        }&#xD;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="HB Distance Inch %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportQuotient"><custom-block s="HB Distance CM %n"><block var="port"/></custom-block><l>0.254</l></block></block><l>10</l></block></block></script></block-definition><block-definition s="Hummingbird Raw Sensor %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="Hummingbird Knob %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;    sensorvalue = sensorvalue / 2.55;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition><block-definition s="Hummingbird Sound %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><inputs><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>port</l></list><l>var sensorvalue = Number.MAX_VALUE;&#xD;&#xD;&#xD;&#xD;var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;&#xD;&#xD;&#xD;var realport = port - 1;&#xD;&#xD;&#xD;&#xD;var myself = this;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function getSensorData(callback) {&#xD;&#xD;&#xD;&#xD;    var getValue = function(response) {&#xD;&#xD;&#xD;&#xD;        if (realport === 0)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port1;&#xD;&#xD;&#xD;&#xD;        else if (realport === 1)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port2;&#xD;&#xD;&#xD;&#xD;        else if (realport === 2)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port3;&#xD;&#xD;&#xD;&#xD;        else if (realport === 3)&#xD;&#xD;&#xD;&#xD;            sensorvalue = response.port4;&#xD;&#xD;&#xD;&#xD;        callback(sensorvalue);&#xD;&#xD;&#xD;&#xD;    };&#xD;&#xD;&#xD;&#xD;    console.log("sending message to chrome");&#xD;&#xD;&#xD;&#xD;    chrome.runtime.sendMessage(hummingbirdAppID, {&#xD;&#xD;&#xD;&#xD;        message: "POLL"&#xD;&#xD;&#xD;&#xD;    }, getValue);&#xD;&#xD;&#xD;&#xD;    console.log("sent message to chrome");&#xD;&#xD;&#xD;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;function processValue(sensorvalue) {&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;    console.log("sensor value has been set: ", sensorvalue);&#xD;&#xD;&#xD;&#xD;    if (port === 1)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy1 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 2)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy2 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 3)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy3 = sensorvalue&#xD;&#xD;&#xD;&#xD;    else if (port === 4)&#xD;&#xD;&#xD;&#xD;      myself.hummingbirdDummy4 = sensorvalue&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;getSensorData(processValue);&#xD;&#xD;&#xD;</l></block><list><block var="port"/></list></block><block s="doWait"><l>0.01</l></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>port</l></list><l>if (port === 1)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy1&#xD;&#xD;&#xD;&#xD;else if (port === 2)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy2&#xD;&#xD;&#xD;&#xD;else if (port === 3)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy3&#xD;&#xD;&#xD;&#xD;else if (port === 4)&#xD;&#xD;&#xD;&#xD;  return this.hummingbirdDummy4</l></block><list><block var="port"/></list></block></block></script></block-definition></blocks><variables></variables></project><media name="Hummingbird-Chrome" app="Snap! 4.0, http://snap.berkeley.edu" version="1"><costume name="Untitled" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC" mediaID="Sprite_cst_Untitled"/></media></snapdata>