Recently I came up with the need to extend Image class of Fabric js lib. I had to keep synchronized two different Fabric Canvases, with different scale.
In the code snippet below, fabric.TavImage extends fabric.Image. AddToCanvases function adds an instance of TavImage to one canvas, then clones the object and adds it, scaled, to another canvas.
//
// TavImage
//
fabric.TavImage = fabric.util.createClass(fabric.Image, {
type: 'tavImage',
initialize: function (element, options) {
options || (options = {});
this.callSuper('initialize', element, options);
this.set('scaleFrontCanvas', options.scaleFrontCanvas || '');
this.set('scaleHiddenCanvas', options.scaleHiddenCanvas || '');
this.set('id', options.id || '');
this.set('objFrontCloned', options.objFrontCloned || '');
this.set('trasfParams', options.trasfParams || '');
this.set('isBaseImage', options.isBaseImage || false);
this.set('scaleFactor', options.scaleFactor || '');
},
toObject: function () {
return fabric.util.object.extend(this.callSuper('toObject'), {
scaleFrontCanvas: this.get('scaleFrontCanvas'),
scaleHiddenCanvas: this.get('scaleHiddenCanvas'),
id: this.get('id'),
objFrontCloned: this.get('objFrontCloned'),
trasfParams: this.get('trasfParams'),
isBaseImage: this.get('isBaseImage'),
scaleFactor: this.get('scaleFactor')
});
},
_render: function (ctx) {
this.callSuper('_render', ctx);
},
addToCanvases: function (hiddenCanvas, frontCanvas) {
hiddenCanvas.hiddenObjectsCount += 1;
// check if it is not already in canvs
var objects = hiddenCanvas.getObjects();
for (var i in objects) {
if (objects[i].get('id') == this.id)
return;
}
// add to frontCanvas
this.addToFrontCanvas(frontCanvas);
// add to hidden Canvas
this.addToHiddenCanvas(hiddenCanvas);
},
addToFrontCanvas: function (frontCanvas) {
// clone object
this.objFrontCloned = fabric.util.object.clone(this);
this.objFrontCloned.scaleX = this.scaleFrontCanvas || this.scaleX;
this.objFrontCloned.scaleY = this.scaleFrontCanvas || this.scaleY;
frontCanvas.add(this.objFrontCloned);
// center base image layer
if (this.isBaseImage == true) {
this.objFrontCloned.center();
}
this.objFrontCloned.setCoords();
},
addToHiddenCanvas: function (hiddenCanvas) {
// scale to hiddenCanvas
this.scaleX = this.scaleHiddenCanvas || this.scaleX;
this.scaleY = this.scaleHiddenCanvas || this.scaleY;
hiddenCanvas.add(this);
// center base image layer
if (this.isBaseImage == true) {
//this.objFrontCloned.center();
//this.objFrontCloned.setCoords();
}
else {
this.updateCoordsForHiddenCanvas();
//this.updateScaleForHiddenCanvas();
}
},
updateCoordsForHiddenCanvas: function () {
this.left = Math.round(this.trasfParams.s + 1/this.scaleFrontCanvas * (this.objFrontCloned.left - this.trasfParams.s1));
this.top = Math.round(this.trasfParams.t + 1/this.scaleFrontCanvas * (this.objFrontCloned.top - this.trasfParams.t1));
this.setCoords();
},
updateScaleForHiddenCanvas: function () {
if(this.scaleFactor == '')
this.scaleFactor = this.objFrontCloned.scaleX;
this.scaleX = this.objFrontCloned.scaleX / this.scaleFactor;
this.scaleY = this.objFrontCloned.scaleY / this.scaleFactor;
this.setCoords();
}
});
/**
* Creates an instance of fabric.Image from an URL string
* @static
* @param {String} url URL to create an image from
* @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument)
* @param {Object} [imgOptions] Options object
*/
fabric.TavImage.fromURL = function (url, callback, imgOptions) {
fabric.util.loadImage(url, function (img) {
callback(new fabric.TavImage(img, imgOptions));
}, null, imgOptions && imgOptions.crossOrigin);
};
Sometimes there is the need to change the texture of a mesh at run time; for instance to change aspect of a virtual character, to create some light effects and so on.
In the code snippet below, function loadNewTexture accept the url of the new image for the texture to create a new image object. In the onload event of the image, it is drawed on the texture assigned to the material of the mesh.
Do not forget to set "needsUpdate property of the mesh to true at the end.
MyObject.prototype.loadNewTexture = function (src) {
var that = this;
var textureImg = new Image();
textureImg.src = src;
textureImg.onload = function () {
var ctx = that.mesh.material.map.image.getContext('2d');
ctx.drawImage(textureImg, 0, 0, textureImg.width, textureImg.height,
0, 0, textureImg.width, textureImg.height);
that.mesh.material.map.needsUpdate = true;
};
}
In the first part of this article series we have described the main concepts of Near Field communication and how Microsoft has provided support for this technology in Windows 8. Then we have seen how to set up two Windows 8 virtual machines with a proximity driver, i.e something which allows us to simulate a tap gesture. In this second part we will learn how to use the sample proximity driver and explore the functionalities exposed by the Proximity API.
NetNfpControl: a testing tool to simulate a proximity event
As already described in the first part, we can use a sample proximity driver to simulate a tap gesture. We found the sample netnfp solution in the Windows 8 Driver Samples package. In this solution, together with the driver and the package for the driver projects, there is also a project, NetNfpControl, containing a testing tool to simulate proximity hardware.
![](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAD/APcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9BfiZrOpeH/h14q8Q6NcCC+0vRby7tJPL8zZJHbySRyV8Bj9rT9oUHP8AwsE/+Cmw/wDjFfd/xoJHwi8cEf8AQt6pn/wHkr8+/hFr5s7e88N2+o63oF3r93ZW9j4g0mNy8MuXPkSCPy38h9/mPsk/5Zx/I9fo3B+Fws8FXqV6EKlrf1sfmHG+LxWHx1GhQrTh7hsP+1t+0LhSfiAfmzn/AIlNh/8AGKiH7XH7Q3J/4T88dP8AiU2H/wAYq1/wqjQluLHRfFM+qt4h16PWLsajZzwR6ZZSWkk8bxumz95/qJHkffHsjkjpnxH8JWWr+GP+EneS7+26R4e8JwQQR/6t47i0k8zzP++I6+uUclqVORYWFv8ABHuo/n+R8bz53CE5zxM//A5f4v8A0kg/4a4/aF5x4/Pt/wASmw/+MVJ/w1x+0Mcf8XAPv/xKbD/4xXVan8PfBHhqfR/COl2mt2upr8Rn0OPWob6BLuNP9F7+Tvx5cn7v5/3cn7zP/LOuXg+FvhGf+y9N1S716XVPEcGs30GorPH9ksjaSTxjz02eZP8A6jfI+9NnmVjSq5JUhzvCw/8AAI+ev4Fzedw9xYqf/gUv8I0/tb/tD9viAf8AwU2H/wAYqL/hrj9of/of/wDyk2H/AMYqLVfhr4Gt9Du49Pl1061a+D7DxVJNPdQ/ZXNx5G+DZs3/APLf7+//AIB/HU3hzX30P4BFoPGviTQXuvE2oJGukx/Jef6HB8k/79PLT/vv/crapSyh0lUo4WGrt8HlfzMIYnOOf2dTFT/8D/8AthT+1v8AtDDH/FwDz/1CLD/4xTf+GuP2hyf+R/P/AIKbD/4xV/R/gt4N1O/8KeZL4kjtPFVpc3cccckclxYx2+nvP5cn7v8AeSSSbJI/9X+48v8A56fI7RPDHhzTfDOta/4ZXUrW28R+Bb2Q2up3Uc7weXqcEHmb440/dybP+ef/AD0qG8l09nhYdPsR6u3/ALbI0hPO7+/iZ/8Agcv7v/yUTPH7XH7Q2D/xX59v+JTYf/GKD+1x+0KCcePz7f8AEpsP/jFXpfgz4Mk8TXHhS1n8Q2k+ieJNK0DUb26ng8vUPtD+XI8CbP3D/J5kaSPP+7qC0+GfwkfRtS8S6z4i1LRtNGtz6JZm6uXkkV4LdX3v9nsX3lzID5H7j/V/fkpc+SWT+qR/8AXX/gahz55z+z+tT/8AA5f19kg/4a4/aH/6H8/+Ciw/+MUh/a4/aHP/ADP5/wDBTYf/ABiuU+IXhvwz4Wg8P2WiR6q97f6LZ6nfT3U8ckfmXEEcnlpHHH+7/wC/n/2zl4Y4/IcyNGU/v/8ALT/Vv/B5n3K9jDZXlFekqqwsNf7kTzK+b5rh58k8VP8A8Cker/8ADXP7Q/8A0UA/+Cmw/wDkej/hrj9of/ooB/8ABTYf/GK8tuEth52+NI/3nz7P3nlyfvP3cf7z95H/AKv95/mQuEtv32I0j/efvNn7zy5P3n7uP95+8j/1f7z/ADJr/YuUf9AsP/AImf8Abma/9BM//A5HqX/DXH7Q/wD0UA/+Cmw/+MUz/hrj9of/AKH8/wDgosP/AIxXmFwlt++xGkf7z95s/eeXJ+8/dx/vP3kf+r/ef5kZcQ2w87zGSP8AefP5f7zy5P3n7uP95+8j/wBX+8/zI/7Fyn/oFh/4BEP7czX/AKCZ/wDgcj1H/hrn9ob/AKKKf/BTYf8Axij/AIa4/aG/6H8/+Cmw/wDjFeXXCWw87CIn7z59n7zy5P3n7uP95+8j/wBX+8/zI+4S2HnAIkf7z5/L/eeXJ+8/dx/vP3kf+r/ef5ky/sTLP+fEP/AIh/bma/8AQTP/AMDkepf8NcftD/8ARQD/AOCmw/8AjFH/AA1z+0P/ANFAP/gpsP8A5Hry2RLb99iNI/3nz7P3nlyfvP3cf7z95H/q/wB5/mR9wlt++xGkf7z95s/eeXJ+8/dx/vP3kf8Aq/3n+ZNP7Fyn/oFh/wCARD+3M1/6CZ/+ByPT/wDhrj9ob/ooB/8ABTYf/GKYP2uP2gs/8j+f/BTYf/GK8xnS2HnAIkf7z5/L/eeXJ+8/dx/vP3kf+r/ef5ko3ZJuZsIkfz42I+9Epf2Jln/QLD/wCJH9uZr1xM//AAOR7E37W/7QQHHxCYn20mw/+MUw/tcftDH/AJqAf/BTYf8Axil8EeKv2dbX4eXsXj34XS3fiywi8uye31G+jg1H3fZN+72ceZmvJJ3jmd5o4I4Ekk8yOOP/AFaf9/K5sPluWYqpUpvBcnJ/chqdmJzXMsPThU+uTnz/AN+Wh7vofx5/a98UWZ1Lwxd6/q9ujmBprDwxbzIjjrHvjg5/1lYI/a1/aFKsR8Qj8uMf8Siw5/8AIFdd+znrvhDw8fDHijW/Gun2kfgy+1vWtXtvst688NpdwWljB9yHy5P3+z+PiNk/29nz5exJa3E8FvdwX0cDvGl1B5nlzf8ATRPMjST/AL7SvPwGDwWKxVWlUwkLQ/uecvlsk/8At46cXmGYYbC0a8MVP3/7/wDh/wDto/8Abp6kf2uP2hzz/wAJ+f8AwU2H/wAYpx/a3/aGPKePm6ZOdJsP/jFdb8MofDU/gHSh+0D9iXS1uvL8GSXjv9oc4+dH2fP/AGdv9fbZxivKPi7J47bxzqA+IWY9Wj8vYif8e6W//LPyP4PI2Z2bKvC4bLcTXqYf6rD/AMBj/wCSf+3fysrEYrNMPRhX+sz9/wDvS/8AJve/8B/mP0m+GWrar4i+G/hPXNQlF1qGq6LZXdxII/L82WS3jd3/ADorP+Dx/wCLPeCf+xZ0v/0njor8Qx0FHESS7n7xgKzlhKT/ALqJfitb32tfCrxdbafY3E91eeHtQjt7SOPzJJJJLeTy4/L/AOelfnlofgz9ojwt9o/4Rfwp8RtINwds39n2F9D5x9X8v79fpzH/AO06f5YHQCvdyjiGpk9GdBQU+fueJnnDEM9rwr8/JyH5iW3gf9oKz0Wfw3Y+DviHDpNy5ebT4bC+S1mz13p/q3/1dT6b4T/aO0m4+2aX4Z+JVldC1isRPbWd8ji3i/1cG+P+D/Yr9Lp9SsbF/KvL2CB/+mknl1PHPFInmxy+Yle7/rzUs17Cnr5Hz78PaMP+YmZ+ZS+GP2kYjcunh74lRm7u472dktL7M1wmHSd/+ekieWPn9hUEPgz9oi10u70CDwn8R00+9cvdWaWF95MznGXdP9W+cD8hX6d76rf2lpvnfZv7StPP/wCef2iPzKP9eqn/AEDU/uD/AIh7D/oJmfmU/wAP/ju4k8zwJ49+ezj09/8AiWXfz28fl+XB9z7nyR/u/wDpnVnRvCv7SPhizk03wz4c+JWl2c0hkltrKzvoUaQ/30jr9NaKc+PalReydCH3BDw5oQ/eQxMz84vCNj+0J4a8R/2/feA/iLqm9JzJDNZ33z3ElpJAk/8Aq/vpG9YV94N/aK1a6ub/AFbwr8SL25u4Psd3Nc2F87z23/POR5P9ZH/0zr9DtD+LPw28S3IsfDnjPTdSnOryaHstd7/6bHBJO8f/AH7gnfzP9X+7rrKyXG1RVPa/VoX/AK8y/wDUCHJ7P6zM/Mi48LftG3cWnW934Y+JUyaMYpdPR7O+f7EYxiPyP7nEY/1dJo3hL9o3w7Jdy+HvC/xK0w3p3XX2OzvofOPq/l/fr9MrSQT2Vrcyffkt45P/ACHXM+MPir4J8CavomgeKNRv7e98QSfZ9Mjg0i7u/tUv/PPzLeOSPzP+mdaf68z9n7P2FO3oR/xDyHx/WZn5x33wu+NGovHLqHw28bXb28EdvH5+k3cmyOP/AFcf+r+5UX/CnPi3/wBEp8X/APgiu/8A43X6nfx/hUlbLxDxKVlRgZPw2wj3rTPys/4U58WP+iUeMP8AwRXf/wAbo/4VB8Wf+iT+MP8AwRXf/wAbr9TqZR/xEPGf8+YE/wDEM8J/z+mflh/wp/4tf9Ep8Yf+CK7/APjdO/4U58Wv+iU+L/8AwRXf/wAbr9QNS1zQ9GudOstY1vTbC61ST7PYQXV3HHJdyf8APOOOT/WSVdx7VP8AxETG/wDPpf18yv8AiGuE/wCf0z8tP+FOfFj/AKJR4w/8EV3/APG6P+FOfFj/AKJR4w/8Ed3/APG6/UDWtXtdB0qbV9Rtr94Lcx+YljYT39x/rNn7uC3jkkk/791yGofG/wAB6RYXOparbeM7SztIJJ5pp/A+vRxwpGD5jvJ9k/dpxVf8RDxn/PmBP/EM8J/z+mfnd/wqD4s/9En8Yf8Agiu//jdP/wCFQfFn/olPjD/wRXf/AMbr9SL6SW0s7q5j+/bxySVI/wB96f8AxETGf8+YB/xDLCf8/pn5X/8ACn/i1/0Sjxf/AOCK7/8AjdNPwc+LGP8AklPjD/wRXf8A8br9SNS1Gx0qwn1LVL6CwsrePzJ555PLjjj/AOmklVPD/iPw/wCKtNTVvC/iDTda0+STy/tWnXkc9v5n/XSOj/iImMv/AAoC/wCIa4X/AJ/TPzCPwe+Lp4Pws8Xf+CK7/wDjdPPwe+Lnf4W+Lv8AwRXf/wAbr788Tar4K8OReNfG/wASPEOsabouh6nb28lxBqV+kcEclvaeX+4t5P8AnpP/AM8/+WlcTov7QH7JfiDUIdKsPjJqSTTCUxve6xrVjBjy/M+eed444/8Agclby4/rw+OC/H/5I5YeHFOp8FT+v/AT5Bs/hv8AGnTbS+s7H4Z+LFi1S0+y3KHQp8snnxzbB+7/AL8Kf98VVX4PfF0DA+Ffi7H/AGArv/43X39qkPgLWfh74h8VfD/xxdasun2F4EvtN8YXd3HHcR2/mf8ALOd49/8Aq/3deohVHAFYy48xFOPtKdNamkPDmhUn7OdY/LL/AIU58We/wo8Yf+CK7/8AjdPPwg+LRGB8KfGGf+wFd/8Axuv1LoqP+IhYv/nzA6P+IaYW/wDGmcr8KNP1Gw+Ffg/SryK5sb2DQdPtpopU8uWKWO3j3o6eoorqqK/PMTP2tWUz9NwlD2FGNNdBiff/AO2dWKqQSfc8z7/l1NvoA86tNN03WbDUdX1jUv8ATfM/efu5JPI/7Zx1r+A5PLTUbG3vvtdlbyR/Z5PL8v8A1n+srR1XwPomq3L30nnwPJ/rPIk/1laGm6VY6VbfYdPi8tP/AEZQBS8VXdzaeHr25s5fLfy//alchaeH/DcmlXtyNb8/y/8AVz/Z5I/Lk/8AalejSQRTo8UkXmJJ/rI657/hXnh/zvN/0vZ/zz8z93QBd8K3dzd+HrK5vJfMfy//AGpXn/xRt/FHjbxnonwgtL2TRvD2uaTe6pq2o2s/+mXdvbyW8cmnx/8APv5n2uPzJP8Ann+7jr1SOOKBEiii8tI/9XHXIeLvBvinVfFGi+LvCfinSdJvdHsNR0+SPUtFkv4547yS0k/5Zz2/lyR/ZI/+/lIDwe91v4HeMNBu/jJ+znq9imv/AAc037aY0024gt57L7PP/ockckcfmeZH9ojjk/1kfmV9SabJdT2Frc6jY/YLqS3jkntPM8zyJP8AlpH5n/LSvmH4b/sYeJvhf4U8a+DvDvxj024s/Hdh/Zepvd+EpHkSPy7iP9x5d/H+8/0iT/WeZX1RJ9+mBR03/kGWX/XpH/6Lrzb9prxNL4D+D+qfEnSraCTW/C8kd5pM8/8Aq7S8uP8AQPtHl/8ALTy47uT93JXptjmOwtYpP3bx28f/AKLqr4g8P6R4q0S98N+INMjv9L1SCS3u7ST/AFckclID5B8Yz/Ej4H6bq/ju2+LXxG1nV/B95ZSXkHiCS4n0DxJZXEdp5n2P939nt/3l3JHHHHJJJ/o8n/bP7Pu/NjSf7HFHJPH/AKuOSTy45JK8Q8P/ALJHw80bVdLvtR8U+O/EOn6HcR3Gk6Hrmvfa9LsZI/8AV+Xb+X/yzr27fTA4r4c+MviH4quNUHjT4XJ4Th0+f7PbySat9rku5P8AnpH/AKPH+7/6aUfGD4seHPgr4DvPH/iSGe4gs5fLgggT95dXEn+rj/6Z/wDXSu1rP8QaHonifRL3w34k02DUtL1C3+z3dpPH5kckdAHwPZaJ8O/2gT4Q8AeGP2nvH194g1m7+2X+l+INev763sDbxyTyfZ/MsI45LiONJP3kkkf/AG0r7+sLP7BYW1j9quLv7JBHb+fdyeZcT+X/AMtJJP8AnpTNC0Wx8N6JZ6Bo5uEsrCP7PBHPdzzyeX/10kkkkkq1UAfIHxYtPF3xS+Nfj/w3q3jWCz0HwHLo0emWj/DGDxZIkmoWH2h/+WEkkf7y3/1n/XP/AKZ153B4S1S21rxx4JisNL1vVdLX7NpF1pvgez0LULgX/hDXp/s/2e3gSTeX+z/u5OfMT1r6i8Vfsx6B4m8d638Q7P4pfEnwvqPiA25v08Oa9HY27/Z7eOCP/lh/zzj/APIkla3wt+AHhX4V61rXiWDxD4j8U6trklncXGo+JrtL64SW3t54IpI5NkcnmeXPJH/1z/d0Aeka5/yDdQ/64SVaf/XPVLUo5ZNMuo4/3jyW8lXZPvvVgfG//BQPx/Y6z4e0j4FeErq+1PxdqGr295caVpsckkn2fy5PLjkjj/5aSSSRyRx/9M/M/wCeddV+yjrPx61y8gtvHnw7PgXwb4b8PDR7TShYPYfa9Q8yOT7R5cn7z/Vxyf8ATP8Aef8AXSvYdC+Cvw88OfEXW/irYaB/xUuuH9/dzPv8v935cnl/88/MrtqgD55/aW0q+1/4KfFvw/pcfmXuoeIdBs7eP+/JJJpMcddjJqXw9+P6aJonifwd4ggtZDH4s8NXdxd/ZPtQt/LjjvLeSzn8yPy/tcf7uTy5P3n+r/556Gs+EZPHOmeP/DFtq/8AZM93rVnJFfRwJO9rLHZ2DxyRxyf8tP3f7uqQ/Zd+DVx4XtvCOs6Dqeq6dbQx2kaX3iHUpCkUeD5cf7/93H5kaP5cflx/u4/k/dx16VVUWvfXv+7/AOknm0HWv7nwe9/6UeceGbSXQ/G/7TfhKz1LVrjS9P03Rbi3gvtTuL7y5JNIfzJPMuJJJPMk8uP/AL9x/wByvqGvHv8AhSPwu+DXw28dn4b+Fzo39saNP9rH2+e48zy4J/L/AOPiST/npJXrm+sJJ+wj/il+hvTt9an/ANu/+3EtRUUVznWMooooALSPzLmCL/npHWx/ZVt/z0esex4vLXzIvL/1dYnxX0nxJqWm6edDi1C6tLS9M2radpWpSWGoX1t5T5jt7hJI9knmGOTZ5ke/ZjzBUVAOz/sq2/56PT/7Gtv+esleLn462mlyaBoPgvwx4g8TWg0+2vLiedNQnu4beSeSIR/u7WfzLiMwSbxcSQ/6sfPIfMIvap8fp9J13xPpa+F4L610TS9V1S1vbW7utl29h5fmW7ySWkce/MhT9xJcbPLPmUAetf2Ta/8APV6P7Jtf+er1wGn+P/GWr61a+HdO8GaWdRSzt9T1bztbdLeztriSRIfKkFu5nn2RuTGUSPI/1nSuc8A/EXxPa6n/AGR4g0SS70fWPGmu6Ja6pNqZknSSO4u5I4/s/l/6jZb7ARJnI/1fl/vKPt8gX9znPYv7Jte0r0f2Nbd5JK8v+IjX+j+M4fE3iafxD/wicMFulvdaVq0tvHpV55+JJLyCN4/tEEnmW4+fzfL8uT93HGZJKt6f8WNZu9UgmHhC3j8N3+s3OgWt+up/6WbqDzEMklqY/wB3H5kEif6x5P8AV/u6Od8gHov9jW3/AD0ko/sm1/56vXi3w++L2qad8Mkn1S1n1W70HwBbeKJ7q4vsyXskguP3b/u+v+j/AOs/2+lMPxI8YSXfjWfxLo9u+h6ZrujWOnLY6zPDcQC4+weXny4I/k/0gySfvPWP/V/vKvXn5APaf7Ktv+ej1H/ZVt/z1krz/TPizrN5q8Eo8GW8fhq81m50C0v11P8A0s3Vv5iGSS0Mf7uPzIJI/wDWPJ/q/wB3Vb4cfFvXvGF9oEet+DINHtfFmjSazpjx6t9qkxGbfzI5Y/LQR83CbCHfg/8ALP7lRD3wPSf7Ktv+eslSf2Vbf89Hrx/SpdX1D4y+NM6L4r1L+zNRto7CdPEklrpFr/xLLeTy57f7R/y0kc/8u8n+szU9v8ctZ1ew0u/0HwH9sl1TXP8AhHI47jVvIEd/HBcSXAk/dv8Au4Ht/L8z/lp+8kRCPL8wA9Z/sq2/56PT/wCybX/nq9eKal8YbqDXdN8Ta3aXdlDomkeKf7b0qzu/PikuLCS0/wBW58sSf8tPLeSNP9Z/yzrY1f4w+KfDdleQ+J/h9aQ6tbppc9raWOtme3njvLyO0x58kEflujyc5jxwPnoA9T/sm1/56vTP7Ktv+ej15jD8Y9bfx9/whLeBbudLO4gsNXvbIX08VrcS28cpEciWhgkjTzE/eSSQSc/6vpv0NJ+KOuap8GdQ+LF14at9Nxos+sWNql8brzI0tzIm8+XGE+lH2OcV/f5Dvv7Ktv8Ano9H9lW3/PR68t0/SNQ1vxKvw+17xVrws9E0Cy1CX7Lq09pcajeXEs4klknikSTy08v/AFccnl/vOekdUtU8ceM/h94u8VaeLKPVvDPhTwdFrMSXOrSG8kaM3fVzAS7yeQI/3knSMSfvHeSgcP3h6/8A2Vbf89Hp/wDZNr/z1evKtJ8b67B491bUfFlpqFrap4X0q9bStL+1at5Mkl3dx74444/M3+X5fmbI/wD0XvqW7+Nmlah8JZfiBFoOuBrhLGAWUllf2sj3F2Y40jjfyPMkTfJjzLeOT/Yy/FAHqH9k2v8Az1emf2Vbf89HryXwv4t8Q3c/gzVtSs9X097zUbjw7e2l8bwRzoLeSeC4jS4t4JJH/wBHH7z7OnWX/rpXtXl+9AHKX3wy8C6zdvqOr+FNJvruQfPPcafBJI//AAPZUH/Cn/hp/wBCPoX/AILIP/iK7KgkDvWscRXW8jD6tRn9k4sfB74Zjr4H0L/wWQf/ABFWtb1vwd4fuILHXvE+m6bdXgP2eG6v44Xm/wBzzDn8q6K4uIrSF7m5kSOFI/Md3+4lfCOl/En9nHxN4v8AijrHxX0x/Fd9qmrSW+h3KWE9159mkeyCC0kGfLk6/vP3fWOk6lWqrSkaQowh8ED7m/sq22f62Sj+yrb/AJ6PXnf7POm+NNC+AnhbTfGEcr+IbbTcGC6fy5E+eTyI3/ufu/Lj49Kv/DPxr8R/F13qy+OPhSvhCGwnMFvI+rG7e7kyMyIn2eMeX/t//XrMs6O5j2SyQj+B6KLn/j4uP+ulFWAyD/kJR1L4l8KaR4stobfVRqKLBJ5kctjqdzYTof8ArpbvHJjH8FYvibWj4a0bU/EH2bz/AOzLG4u/I8zy9/lx+Z5deFH9sFAcH4aj/wAHP/2ivTy/IswzeHPhIc9vQ8nMs8wOVz9ni58h7jJ8IvAgl06ax0u7019JthYWz6Xqt3YP9m8zzPKd7eSMyJ5nz/vN/wB+T++cjfBr4cG61C4fRLiU6rb3tpPG+pXbxpHd/wDHxHHGZPLtxJ/0z2da8eh/apZ9Ng1e68F6FptrcXElvA+qeMrSw+0SR+W8nl/aNnmf6yP/AL7pT+1jpA5/s3wL/wCHN0n/AOOUq+R4rD1PZ1eRPtzw/wDkgoZ3hatP2lPnt/gl/wDInuWqfD7wtq+qWWuXcN/Be6ZF5FvPY6neWjvHw4jk8iRPPj4/1b7xn8afD4B8L27W3laUU+watPrluPtMn7u9n8zzHHz9D58uU+58/SvBdQ/auk02K2lPw9sp4b+D7RaT2fieC6t54/MdP3b28bx/6xJI/wDtnVcftiQ9/hmP/Bz/APaK9DD8IZxiqaq0aN0+04f/ACRw1OK8rw9T2dSf/ksv/kT37xD8OfCfinU49Y12z1CeWMIJLddTuo7Ofy33oJ7RJBBcYP8Az0jeq9l8NfBun+I38U2Wl3SXbXEl55Zv7h7SOeTPmXEdoZPIjlf58yJGJP3knPzmvCf+GxIf+iZj/wAHP/2imf8ADYKf9Ez/APK1/wDaK1/1Hzz/AJ8P/wACh/8AJEf645N/z+/8lke16l8D/hpqul2ujT6DeJZWemf2RHbw6vdwJJZ4/wCPefZJ+/T/AK6b+9XLn4XeBrq8vNQudLuN2oSWUt3H9unEEklm8clvIY/M2eZH5EXz9f3Yrwj/AIbBh/6Jn/5Wf/tFH/DYKf8ARNv/ACtf/aKv/UjPP+fH/k0P/kg/1yyb/n9/5LI93sPhn4N07xG/iiy0q6S7aeS82G/uHtEnkz5lxHaGTyI5X+fMiRiT95Jz85q/pPgPwpoh0VdK0g258N2Mmn6YBcSOIbeQJvj5f94P3cf389K+ef8AhsGH/omf/lZ/+0Uf8NiJ/wBEy/8AK1/9oqP9R88/58f+Tw/+SD/XLJv+f3/ksj3e4+F/hK68QXniVRrtrfanIJLs2XiHULWOaQRiMO8Ec6RE7I0/gzxXN+J/gdoepTaBb6BaPptlp+rW95fRwahcwD7Pb2FxaRm38p/3c48yP94nlyYjH7zKJXln/DYkH/RNx/4Ov/tFH/DYif8ARMv/ACtf/aKP9R88/wCfH/k8f/kg/wBcsm/5/f8Aksj3mL4Z+CrKGys7fQI3t7O2vbQRzzST+ZDduj3Ak8xz5vmFBvZ95P51XsfhP4E06xk0yLSLuaK4eykdr3U7u7nP2SXzIIzNLI8nlxuMiPOzrx85rw7/AIbET/omX/la/wDtFH/DYi/9E3/8rP8A9oqv9SM8/wCfH/k0P/kg/wBccm/5/f8Aksj6Bm+HfhKfxSPGK2l/aaq7IZpLPVbu1iujGDsNxBFIkc/Gf9Yj1f0/whoGm+El8D2enbNEjsf7PS1MjuPs/l7Nnz+1fN//AA2In/RMv/K1/wDaKd/w2In/AETMf+Dn/wC0VP8AqRnnwew/8nh/8kV/rjk3/P7/AMkke1j4W6Tq2k6Rb+Jru5v9S0WEwW+sWV3cadebOhzLBIJPnQJ5g8zy3cb/ACxwBPdfCnwRfsxvtLvJBLpUmiXGdUu1FxZOH/dz/vP35/eSfO+X+c968L/4bET/AKJl/wCVr/7RR/w2DD/0TP8A8rP/ANoq/wDUjPP+fH/k0P8A5In/AFxyb/n9/wCSyPpC08NaHZa1Jr1nZ+XfS2NvYPN5j5+zRSO6R/nJJVfV/B/hnXPDj+ENS0a2fS5IUt1tUTy0jjQjZ5ezmPZgbNn3OK+d/wDhsFP+iZ/+Vr/7RTP+GwU/6Jn/AOVr/wC0VH+o+ef8+P8AyaH/AMkH+uWTf8/v/JZHvFn8OrbTNZ0i9t9V1Gew0c3FxBb39/d39x9skTZ5v2i4nkfZ5ZkTy+n7yu33j0r5TT9sRO3wzH/g6/8AtFO/4bEh/wCicD/wdf8A2ir/ANSM8/58P/wKH/yQf65ZN/z+/wDJZH1XvHrTcj1r5X/4bEh/6JmP/Bz/APaKZ/w2Cn/RNv8Aytf/AGio/wBSM8/58f8Ak8P/AJIP9csm/wCf3/ksj3D4wfDWH4teBr7wPP4k1LRo9QaPzZ7D77x/883/AL6etangTwH4W+Gvhiz8H+EdOSx0+0jAjQjMjv3d3/jf3/8ArV89/wDDYKf9E2/8rX/2imf8Ngp/0TP/AMrX/wBoo/1Hzz/nx/5PD/5IP9csm/5/f+SyPq3cNmPem5r5U/4bBT/omf8A5Wv/ALRR/wANgp/0TP8A8rX/ANopPgjPEr+w/wDJof8AyQLjHJ27Kt/5LI+jLz/j5n/36Ky/DmsDxP4d0zXfJ+y/2raW935XmeZ5XmR79lFfM1IVqUnBn0dKpCtBTiZ3xN/5EXxP/wBgK8/9FyV8F8bq+8/iHb3N94O8R2VpbPPNcaNeRxwIm+SSTy5P3dfF/wDwrX4h7v8Akn/iLPp/ZU//AMbr9X8OsXh8Hh63tqiW27PzHxAw1SvWo+zpm14L8F/B7xwnhbTPjPd6Z/ZYufECafZ3epXFoZL3y9Jk8xJI5E+5HHP/AKx/+WkddR8Lfgn+xH8YtQ8Q6Z4M+G188nht7eO4e61DU4I547iOSSC4j/f/ALyOTy5KwLP4OQeLPDMWlfEDwt4/hh0y6vHl03TdDkP9qW939k/d+fJH+78uSxjkrZ8N+EfiX8OdQ8Y+JbXW/F2r6p4outHt459F8NyWM5srC0ngQz/bLGe38yTzI/MSOPjZ/rP+WdfMZ7gYYvH1qlB+/Nv0377bH2+QYjB4PJIe3l+8hD/244Hxboem+GLbTfDeh2nkadpcuu2dpB5kkmy3j1/U444/Mk/6Z10w0YeNNI06w8FxaN9lA0+0u4pLONL2yvJJCnnvNs8x0d/9t/8AWfcT5KpeJPCHj/W2svsvw78YMYI7jzLi9s5Jp57i4vJ7uSSTy4II/wDWXcn+rjqZ7D44vYw2EXhDxBapDJbSeZa6AYJ5JIP9XvnjTzJNn/TSvvsBH2WWYaiqtOFSHea/4N/vX5o/LMxk8RmVavTpz5J/3C54W8E+H11m11DTtWfWrD/iZ6fcJe6akIS4jtHkSTZvfzI//iKx08AW0c0v2zWpEgg8P2+vSSJaeZJ5b+R+78vzP+m//kOtKeH453F3Bft4S1xJ7c3Pl/ZvDphTM6eXJJsSDZ5jp/y0pxsPjedIbRP+ET137G9r/Z7/APFOnz5LfzN/l+d5G/y/+2ldMcRilU9p9ap30Xxrvf8AlttpsvwMZ0qHwewn/XKaOv8Aw7sLrxBr/h7whexwW1trGn2CQ3VknySXEjx/u597ybI/L/4H/wBs6xdP+GOk63dWsej+LZns5Lm8sp5rjT/Jkge3gefOxHfzI5Nn/wBrqxfW3x01Ge4uLjwt4iSe4kt5J54dCeCR5Lff5cnmRx/f/eP89Nnh+Odze29+fCeuQzWxuRH5Ph3yUzOnlySbEg8vzHT/AJaVFKvi6UPZrGU9u635bXfu6+9/TLqUcLUnz+wn/UjmvE3hq10W10jUdL1Wa9sdWtJJ4HmtfJePy3dJI3Te/wDc/v1v6V4Q0Txo0fiGfVX0FNd8QPpljZ21j50cMkmx0/jT5Pn2f+yVm33gz4q3tjZ6bd+CPET22nJJHaR/2NP8kcj+ZJ/yz/vvU9l4Z+MelQ2dtYeC/EaJYX39p2n/ABJpPkuPk/ef6v8A2ErvqYl1MMuTFQ9qr63W3TpbtfTucEMM/af7vPkJ4vhjZ23hyPXNf8UW2mtKtzPHbeZaySbLd3ST9286PI/7uTy0RH/5Z/vE/wCWej4q+H3gy01zxTJDrt7p2meH7q3t5I/7PM7mWfzP3aHzv3mzy/8AWSP/APbKB0n40S6S2j3PgjWruzaSSSOO68OGd4PM/wBZseSDzE/4BT9X0b42a0t9HqngzxBIdQ+z/atnh/YZ/L37JJPLj+/87/vK4/bYp1XUnjKflZrRc0fL+W/9XOz2VD2fJDCzNm48A6RpWhf8IkbyP+1L7xb/AGI97JpaOdibNmx5H3x/fEn7v7/+rrmdS8O6T4Ytjr2n6iNetY7i70idJ7Tydlx5HyPH9/zE+fzP+WcnyfwVs6fZfF6bxBpur+IfBvia6toNdj1mdI9Dk3vL+7Dyf6v+4lU/FeifF7xRc4u/BOv/AGZLiSe3jj0DyOX/AI38tP3kn3PnkrPB1atOt7OviYNPWeq1vfbS/bqrfgVXowqU+eFCf9w5/QLW2g8MeI9dktknmj+z2EHmR+Zs+0b/ADJP+unlwSR/9tK1PF4jvfC2latHFpMzm7uY5LzTbWO1jj+RPLgdNiSSOnz/AD7P4/vvT9E8IfErS7HU9Nf4b+I54dTgjj/5Bs8ey4jk3pJ/q/8AMcklO1rw38X9fggtb7wPrKQW8kkkcNt4cNqnmSf8tNkCJ+8/6aV6EsTSqY32yq07J/zrbkS0+fp6M5adKrToezdOf/gAy6+Henw6XJLb+KZJtTj0K314Wv2Dy4/s8nl+ZH5+/wD1n7z/AJ51Z1f4beHdFvdZivvGF99k0Ka3tbqaHSUeSSeTf5caR+dwnlo/z760/E9t8U9T0yz0XTvAniOG0TSbOwn3+H8TuIETfH5+zzNm+Pfs8yqUWn/G+O+1LUm8I67PLrA3X6XPh0zQzyf89PJeDZ/45XHSx2NqUvaSxUE/WH93+7/i728zeeFoU3/An/5N/wDJEsPwqvrmaHQm12yjhGs3lvJOLRE/dpZxz/aN77P+Wf8ABJ+7rN1P4daRpRvtRufFyy6TaRW5EtnFBdTG5n3+XHsjm2f8sHk/1/8AzzreubT4o2djpsmh+GPGjatDqVxq11e3OiSR/v3jSORP496fI/3/AL/mfcrLj074y291PdW/gDUE+2QpDPAnhNfsrxpJ5ieZB5Gzfz9/y99ZU8djKmscTTS9Unfn327eXyNJ4bC/8+JjpfBXgy/03wilhrlzbXWsQXj3E11aonnmOScDPmTeWHyiRonybx/y0rL1PQ7eHwvq0EllPBc6BqtvHG97Y/ZbuSO4jk3xzp+8/wCWiR/8tP8AnpWhFpPxjitbKxb4f6nPBYvI1uk3hVJvL8zzPM/1kH3P3n3P9XUmq6H8VdY0qSzufh14j+03d8L++uv7Nk/feXH5cEcaRx/u40jkk/77rpp4ipTqr2mJg1f+dae/e/TTk922v3bZ1KUKlP8Ad0J/+Af3f/kvePO/m9qPm9q6T/hWvxF/6J/4j/8ABTP/APG6P+Fa/EX/AKJ/4j/8FM//AMbr6P8AtXAf8/YfejxP7Oxv/Ps5v5vaj5vauk/4Vr8Rf+if+I//AAUz/wDxuj/hWvxF/wCif+I//BTP/wDG6P7VwH/P2H3oP7Oxv/Ps5n5vanc+1dJ/wrX4i/8ARP8AxH/4KZ//AI3QPhr8Rf8Aon/iP/wUz/8Axuk81wFn+9h96Kjl2Nuv3Z9o/DL/AJJ14W/7A1n/AOiI6Kl+HltLY+AvDdnfRNbSW2lWkcsTpseKQQJlPwor+a8W74mo/Nn9CZcrYaC8jZj/AOQkn/XOtjA9Kx4/+QrH/wBc/wD2pWzXJdrY6Wk9zgfjR8bPAHwF8D3Pj7x/qQt7WA+Vb2sfz3F9c/8ALO3gT/lpJXoBAPUV84fHr9hr4e/tHeLo/FvxC+Inj7/R4/s9jp1jfWiWllH/AMtPLjktJP8AWV9H0XYcq7HMeP8AxRaeE/DN/q1xq+nafc/ZLkWBvZIo43uEt5JPL/ezwRyfJG8n+sj/AHccn7yP/WVzV54v8Lag97Za78YvDi2UX2jzINNv47G48v8A0/zI5J/tEkkflxx/6yP7PJHJYXEnmeX5kcfb+IdPu9W0ueysb82l1mOSCfEhjjuY5BJHvSOSOSSPzETzI/MTzI/3f8dY1vreuTtAJPAWvQGQx+Z5lxYfuxJ5HMnl3H/LPz5P/AS48vzP9H88uwsuxn+B7TWtM8SanpHiLXodR1CKxgu5pLczpGftF5fyApb3F/cSRp1jH7uMfu/LSSRIxFb4fi7xb8X7v4n6p4F+G+oeEbSHR/DVnrmzWNJnuJL64uLi7j+z+fHdx/Z0/wBHj/eeXJ/rK6fwJY+IIluJ9Xg1CzjSzs7K3tryd5JQkfmSZeQ3dxFJJ5c8dvJJhJJJLeSTzJI5Lfy+f8WfDXx3qPxDvvHfgz4gafoiarodtoV/bzaC95cKlvPPJ5lvP9ojjik/0h/9Zbzx/u/9XIPkqbsqy5NjMg/aQ8E6t4PtdUOrvoWtXfhI+KJbefRbzU7fSoPLm3yT+QkYkjjkt7iP78fmeXx/rI67Sx+J/gmfT1vxrLNnWI/D+FsJ0k/tCQ48sRhPMAw/meZ/q/L/AHnmbMyVyF5+zvpZ0nxJoGi6+9hp+u/D+38CQRvbmeS0jj+1/wCkSSGT95xd/wCr/wCmf+s/eVo2PwctrT4ip41k1+STTvsEUb6OLfZHJqqW/wBk/tDzPM/1n2P/AEfy6qbdtCOWPb+vd/8Abhf+GifhCNL1LW5PEd4mnaf9nL3dxol9Hb3UdxcC3jks5JIP9Mj8ySOPzIPMj/eR/wDPQV32kajb6zp1vrFlDdpDeQR3Ecd3aSW8/lv08yOSNJI5P9h6+fvCP7I1j4R8OSeFNO1HwVa20dxpzwajY+CI7TW54rPUYLuNLy7juMXn+o2eZ5cZ8z95X0hRdjsuwmB6U/HtTadRdhyrsAAHQUzA9KfRRdhyrsFHl56iiii7CyDGeoowPSiii7Cy7DMD0owPSn02i7DlXYMe1FFFF2Fl2EwPSjA9KWii7DlXYTA9KMD0paKLsOVdhMD0p+B6U2nUXYcq7Ge/+veih/8AXvRVDKkf/IVj/wCuf/tStmsaP/kKx/8AXP8A9qVs0AFOptOqAOF8Z/F/wj4A8deFfBHii5ntZPF8d49nfSJ+4jkt5LePy5JP+WZkku444/8ApoRH/wAtEruq8L+PHw48b/EPx74Y07w5ZWKaHqHhnxBoHiLUb2NJ0sLe7udMk/dwSf6yeT7I8cfmfu4/9Z/yz8uT2PQdHtvD+iaf4fs5bua30+1jtEe7uJJ7iRI49nzySfvJH/6aUAaJ4GcV4PZftGa7eX/hjTZvDfgy1vfFem/2pYQXHiyeORI/Ljk8uf8A0D92/lzx17ux2qTivkLTNC+AWu+FPBHjU+IfhrB440Lw3b20aay9hJbz3H2a3T/T4/8AWSSW/kfu/wB4nl1hWn7+kzsw1JTozm4857zB418eWPifQNF8UeD9CtLXW72Wwjmstdnu5EkjtJ5/uSWkf/Pv/fqz8Uvix4Y+Ellomo+KkvvsutaxHo6z2tv5sdr5kcknnz88QRxwP5kleB/ATxd4o1y58BaR44+IfhjXdRj8UajcQQWN99ovo4/sereZJcHz5P3f7y38v/nnH5cde3/FrwbqXjDVPAAtNKhv7DTPEv2zVYpTGI0s/wCz7yB/3cn+s/eTxx+X/t06NT2gYiCg4+5y+7/8kdFaeNNKu/HV74Bjju/7Q0/SLPWJJzGnkPb3Ek8cfP8Af/0eSrV94q0TTvEWneEry+Mep6paXN5aQeW/7yO38v7RJ5n+r/5eI/8Av5XzD4p+BfxluG+IHhrSrWS40mLQdC0fw9dJqMH2jVdOt9RuLq4sJPtHmR7/ALPP9n/0iOSOT935n+skq54H+Adp4b8b/D/xPH8GNbuLXR31m0k/tyz8NJeaTJcSWclvcRpp8kdvHBHJHeSf6P8AvEkuJP3f7yr+wcc/6/8AAT1nw5+0Z4G8VfC63+LelafrCafcX9npb2M8Ecd3BcXlxbwR+YnmeWP+PiCT/Wf6uSum8F+P7Pxzda5FpOh6tBY6Jqj6V/aN1HCkF9cwSvHOIMSGT93JH5ZMkcf+xvFfPs/wE+JmlfCn4eWXhvw/b/2wI/DWn+MdKkv44/3en3lvPHeRyeZ5cklv5ckf/TSOT/pnHHWT4h+EWkeAfDnhHw/cfCKyuE1n4uateSaHpS2tv/a2nSW+rSW8Z/eRxOn2fy/3cknl+X+7k71rb3/6/ulytyr+vsyPoj4hfFlfAGu6T4bg8B+JvE+p6va3moRWuhm08xLe0+z+ZJJ9ouIP+fiP5I9/0rqvDHiTSfGPhvS/Fvh+5E+maxaR3lm+zZ5kUkfmR187eHPgV4/uNT8HLbXGs/D3SbK38VEW+iXFhJPo9vqF5ZyWen/6RHcR/cjk/wCPf93H5flxyeXWt4m/Z8um8Q6+vgfQ7XTVsfhpb+F/BeqSXH73TNRj+3ofLk/1kb+XcR/6R/rP3kn/AE0qdeX+v73/ANqLp/X8x9E1mSX15HqtrpiaXeyw3EEskl/G8At4DGU/dyfP5m+Tfxsj/g/g4r5y0L4NazHY6v4g8EfBhPhy+l2ul3mieHxPYR/btcs5JH+0H7JJJbx+Ykn2TzHk8ySOR/M8vy46ta58G/iRf/YdZ0uwjsfEmseF/FkurXy30aC01rUDZ/ZrfzI38z92lv8AZ/Mj/wCWduKJkw/eHuVr400278e3vw8jtrv+0NP0m21iR/LTyPs9xLPHH/wP/R5K6Svjy++BXjXUdL8bj4f/AAauPhzp+seHvDtnHo0N/pgkvpLPUJ57+38uOSe3j8yCTy/3n7uTzP3n+skrpvh18A47XxH4CuNQ+HmtwaF4bOuXC2viaPQwbC9uJdPktpILfS/9Ejj8y3nkTYnySZkPz7KuAdf6/lPp2m06m1ABTqbTqAG0UUUAFFFFABRRRQBRf/XvRQ/+veirAqR/8hiP/rn/AO1K2axo/wDkMR/9c/8A2pWzRUAKK+NP25vjh+0DZWU3wn/Z5+FXj68ubyPOq+J9N8PXckcEUn/LvZyRx/6z/npJ/wAs/wDrp/q/suoAqanqlhpNjc6tq19b2lnaQSXE088nlxwxxg+ZI8n/ACzTArIuPHGigy2uj3P9vXsZkj+xaU8dxIJY/tH7uT/lnb/vLS4j8yeSOPzI/L8zzKp/EptUt/B92+nanbabbhJIr+6n3gW9tJG6PceYLu3+ziPzPPkk8zzPLjk2fvPLokt/iT5sxj8SeG+BJ5Z/sK4+T/X+X/y9/wC3b/8AXTy5P9X5kflgD/B3xB0Lx08p8PXVtd2kUX2mO6t7+zuo54jcXFukifZ55PkzaSn58dv+Wkckca6/8Uvhl4P1q08M+LfiJ4Z0bWL/AMp7TTtS1WCC4uPMfZH5ccj+ZJ+89KreFvEUHiDxPf3NrdPH/wASnT/MsjfRzvZ3Aub+OSKSOO7kj8xJEkjk8uOP54tnmT+Xst/KPGHja38I/tVSpd/FXwT4Qgv/AAno0ctv4ijH2jU4/t+ofurOT7XB5cn/AGzn/wBZH8lJ/HCAK6hOaPoyivkrXPjt8TLHwz41udG8YwXY0OOOPQb6eCCOPVdKk1TyLvXJHjt5P+POPzI/3cckf7v7RJHJHcRx17P+z54k1/xN8P8A7br/AI68OeL547+4gTVND1yDVo3j/wCeck9vaWkfmR+Z/wAs4I/3fl04e+E24Hp1Np1FADao3+kabqc1pdajpttdvp1x9otHmgSTyJfLePzI/wDnnJ5ckkf/AG0q9RQAUUUUAOooooAKKKKAG0UUUAFFFFABRRRQAUUUUAFFFFAFF/8AXvRQ/wDr3oqwKkf/ACGI/wDrn/7UrZrGj/5DEf8A17/+1K2aKgBRRRUAFc5B4H0i0aIx3Gu4txH5Ql1+/kGY/s+N/mT/ALz/AI9I8/3/ADLjzP8Aj4uPM8a/aO8XeJPA/wARfCeveHfGiaQmmeGfEWqSafdiSS11yWO90WCOzkRMyeY/2iSOJ4/3nmSR/wCs/eRye7aDqF1rOh6dq17pV5pNxd2kVxJZXQj+0Wkskf8Aq5Nn7vfHQAzSNDtPD8H2XTZdRkQmIn7Xf3F24EcccYAkuHk/gjj/AN+TzJD88jvWoCCcA0EEjAr4ji8HeINMvfhhrifDf4YJ4Nl8LR3mp6rqtpsj/wCPS08yS/n+z+XHJ5kkn2f95+8/eVnUnNT5IG9ChCpCc5zPtzcN20Hml75r5x+H+u/A3xp4g8CeKfhJovhqyuY/Et7Z3cdjZ2kd3BH/AGfqcY8z7P8A6uOT7P5kf/PSPy6oft1ah8SLTw78OtJ+Fnja/wDDeva548stKju7W8kgjfzI7jy47jy/9ZH5nl/u6mnPUVajCn78JfZPp2nV8GeEv2xr/TvHXxO+JPiWLWbiHRvD+haf/wAIcLyR47TxDJcSWk9vHH+82f6Rj544/M8vny5K634n/tRfHBfh/FqXh34ZzeDdRg8Z6Nocl3qkd3b29/b3Egz9j/tDTYJMffjkeS3j8v8A1kfmVrfS/wDXxcpj5f18PMfY2ecU2vgPxd8afi98Pfj38Z9f13xJf/8ACFWdpp2gX9jHqdxcW/h69vNL8y3vLP8A1flx/aI/Lkk8uP8A4+I5Kv8Aw0+Ifxc8Qa9+z7pur63e6lpD+AbjxRfGXxTd2k+pXNv5e+S78uPzLjy8/wDHvJJJHJ/y08uohJ353/XxS/8ASYh/X/pP/wAkfd554or4z8RftyeNIPhba+MG+FsGhzeMPB+reIPCs0Gs/wBpSR3Fn5fmfaIPs8floPMMn+sk4T+DrXoNzrmmfs4/C7Tvihea34x8d67r0GnaZHBqHiO7nt9U1K8ePy5FS4kkt7OPzO9vGnlxk/JJ8gq/P+v690OfofRdFfMOsftf+ItD8QQ/Dy5+Fdg3jX/hMbLwhcWEfiWQWEf2y0+0QXEd39k8yRP+mfkRyJXOX/7VnxW8X6z8Jh4D8NaNpcOveMNV8Oa7YXWr+Ybi4s/MjeOO4Np/qP8AVyeYkfmf8s/Loi1P+v8AD/8AJRCXuf1/X8p9g0AEEn1r5gl/bJ8QQ6H4z8T3Hwmtf7M0DxZL4G0wx+It93quq/aI44/Mj+yeXbwfvP3knmSeX/zzkrF8afH7xd4j+KPgTwLc2134T13w58S7LR/ENjpWtSXdpfW1xp889v8Av/Lg8yOT/nnJH/yzojeXL/X8v/yQp+5z/wBf18J9c02nU2mMKKKKACiiigAooooAKKKKAKL/AOveih/9e9FWBQg/5Dkf/XD/ANqVu1hp/wAhpP8Ar3/9qVuUVACiuB+Nnxs8A/AXwPdePviBqXkWsB8u3tIz/pF9cf8ALO3gj/5aSV31QBzWufDvwj4k8X+H/HOu6Lb3er+E0vY9JnnOfsv2jy/MkTP/AC0/cR/P/wBdK6Wua8feJrXwn4Zv9WuNX0/T7n7Jciwa9kijje4S3kk8v97PBHJ8kbyf6yP93HJ+8j/1lc7eeL/C+oPe2Wu/GLw6tlF9o8yDTL+OwuPL/wBP8yOSf7RJJH5ccf34/s8kclhcSeZs3xxgHo9eXaL8OPiRonhbT/B0Xjbwhdafpdhb6fGl14TuJPMjjj8v95/p/wDsVq+BrTWtM8S6npHiLX4dRv4rGC7nktzOkZ+0Xl/JlLe4v7iSNOsY/dxj935aSSJGIrfgvjF8WfiR4O8U+KYfC134Ut9F8GeErLxRd2uq2FxJcal5lxeRyW8dxHcRx2/7u0/d/u5P3klROEKkzajWnCE+Q1/h98Cb/wAB3ehRpr3h/wDs3Q9SudV8iw8PSWlxPJPHdx/vJ5LuT93H9rk/5Z13njH4e+EPH1zoUvizRvt7+G9Vi1zTD9pkj8i9jz5cn7uTEn+s+4/yVWf4oeFbTxRpng3VW1ax1PWP+PL7Vot3HaTyeXJP5aXfl/Z/M8uOT935nmfJXIeLvj9oq+FrvWvh8bnUXstX0rT/ALXdaLfR6ZcR3GpwWkklvdyRx29x/rJP9RJJShT9nP3CJ1p1/jNDWP2cPgtruqeMdW1nwBZXV18QLeO38Rl55/Kv44/9X+78zy45E/56R7JPM/eVNefAT4Z6j4UvPBeq6drWo6Xf3dvfyf2l4i1O7u0uLfy5LeSO7kuJLiMx+WP9XInerGpfHT4b6X4b/wCEwuL7WrnQvtFxbvqNp4e1K7gAgP7y43xwP/o//Tx/x78f6yovEHxy+GPhnX/+Eb1rxI63ST2VtI8Gm3c9vHcXkkcdvbyXEcclvHJJ5kf7uSTzPLk8z/V1p/cIBPgT8LvJ8YWtx4Vlu18dWltp/iL7XqF1O+oRW9v9nQvJJIT5nl5/eJ+8z+8+/wA02x+BHw08PQ6PL4Y8NraXvhfQrjw3osj39xJ9kspP9ZGfMk/ef6uP95J5klaWnfFXwNrniybwVpuq3cuoW8lxbeYNNuo7OSaDHn28d4Y/s8ksZ+/HHJ5ieXJ/zzkrtaicPaQFD3J2PAv2df2U/C3wm8B6FZeKtKtNY8VWmiXGj3876ld39j5dxJ5lxHbwXB8uOOTjzPLjj8yunsf2ZfgzZaBP4Uh8OalcaHcW4s4rG68Q6ndwWkYkSRBaJJcSfY/3kccm+Dy/9WlerU6qnPnnzkwh7M8vsP2dfg7ZnTbqPwrcT3Wm69F4ogurrVry6vJNUSPy47i4uJJHluP3f7v95JJHTV/Zz+D0ekWOhw+Fp7SLT9duPElo9prF/BcQajceZ5lxHcRz+ZH5nmSfu/M8uvUqbTLPO4fgT8J08NeIfBjeEo5NI8T6vLrmpwPdXD+ZqMknmPcRyeZ5kEm9I3j8vy/LP+rqHSf2evhFpU2m3Nr4Vne80vWv+ElgvrvVru7vJNQ8ry/PnuJJJJLj5P3f7ySSvSqKACnU2nUAFNp1NoAKKKKACiiigAooooAov/r3oof/AF70VYFCP/kPJ/1w/wDalbtYUf8AyHk/64f+1K3aKgHzl8ev2Gvh7+0d4uTxb8QviH49/wBHg+z2OnWN9aJaWMf/AC08uOS0k/1nFfRtFFQBmeIdPu9W0ueysb82l1mOSCfEhjjuY5BJHvSOSOSSPzETzI/MTzI/3f8AHWTb63rlw0Ik8Ba/AZDH5nmXFh+7EnkcyeXcf8s/Pk6f8+lx5fmf6P5+b40+L/hDwB468KeCPE9zPaS+L47ySxu5I/8AR45beS3j8uST/lmZJLuOOP8A6aER/wDLSOu5833oA47wLp3iCKO4n1qC/s0Szs7K3tryR5JRHH5kmZJDd3EUknlzx28knySSSW8knmSRvb+Xl6r8FPB3iL4uH4r+KNE0bWLu10mysNMjvtJjuJdNuLe4uJ/tFvPJ/q3/AH6f6v8A5516OTjmvCbH9ojXbu98MabN4c8G2l74v03+1LCC48WTxukflxyeXP8A6B+7fy7iOs5z9nM2p0ZzhIsap+zidZ+M8PxUv/Eekzpban/aECT6F5mpxx/Y/sn2OO/+0fu7T948nlxx/wCskkqK5/Z51vV/hNcfA/xH460y/wDB9uNOg0uJNBkt79LOzvI5xb3Fx9r8u4/dxxx+ZHHB/wA9K7ODxt48sfEOg6R4n8H6DaWuuX8mnxz2Wuz3ciSR2c9x/q5LSP8A59/+elegU4VIVPcCrTnTnzzPnrx7+yzrPj7wvp/hLU/H+i32laRY3uj2EeseFvt/kWckcccFx5f2iOP+0LdI5I47vy/9XJ/q/wDWeZz3xJ8HeKU8Yf8ACv8AwZq+u31t4k8TeHdU1Ow/4Qu7+zwSWclpJcXH9tSf6HHb/Z7SP/R/3knmfu45P3nl19TU15BGlXzcnvmJ4x4B/Z3tPh78S9T8a6XD4IuLTUNS1DVPtE3g6P8At+CW88ySWP8AtaOf95H5jv8A6yD/AFZ8vfxXtNc74C8Y6b8QvBei+O9HtruCz1yzj1CCO6jjjkSOT/np5ddFRfk9wP74U6m06gAooooAbRTqbQAUUUUAFFFFABRRRQAUUUUAFFFFAFF/9e9FD/696KsCin/Iwp/17/8AtStysBP+RhT/AK9//alb9FQAoooqAPDfj38OPHXxD8e+GdO8OWVkmiah4Z8Q6Br2o30aTx2NveXGmSfu7eT/AFlxJ9kkjj8z93H/AKz/AJZ+XJ69oWkW3h/RNO8P2Ul3Nb6faR2cb3VxJPcSRxx7P3kkn7yST/ppWpTfKoAUkgZAr5H0nQvgJrnhXwP41PiL4ZweN9D8N29tGmsvYSW89x9mt0/0+P8A1kj2/kfu/wB4nl19c0gAByBUThPn54G1GvCEJwnE+TvgJ4w8U65ceA9K8b/EDwzruox+KNRuIILG/wDtF+kf2PVt8lx+/k/d/PB5eP8AVx+XHXf/ALUdlBqS/DSyvPCU/imB/GsYn0aGdIpL6P8AsvUPMj/eSRxyf9c5JPLk/wBXJXuIQB9/fFUr/SdN1O4s7rUdNtrt9OuPtFo80KP5EvlvH5kf9x/Lkkj/AOB/WiEP5y61aFT4P5T5F+IfwI+JmufC3TvBmn/C5o7J38RX+mabY/2LPd+G7i4uM2Fv5+oeZHbweXJJ5klh+8jk8vy5PLSvU9E8C6xY/F688QeN/hPJ4surxrJ9C8VSSWE//CPRR2ccclp+/nS4g/0iOeTzLeOTzPtFe8UVZzHx54K+DHxT8JfB+48JeIPhpbeJfEOo6RpVm2oyJpl3JBpUckCXGjxwXkn2fzLf95JH5n+jySfvJP3n7uSTSfhF4k8JeDPC8Xjj4SXHijw14fuPE0n9h31/pMf9lfaLzz7DUJI45I7OPy7fzI/9H/1Hmfu46+v9lcz4w+G/w8+ISWsXj3wL4e8SpZvJJaR6xpkF35H/AFz8yP8Ad0T/AHhZ8geF/gv4u8VeGfhH4o1DQfFms6Jb+BNGj03+wH0GS40a8jk3yXH/ABOI/Mj8yOS3/wBItJI5P9H/AHn/ACzr7jpv+rT93Tquc/aEf3woooqACiiigAooooAKKKKACiiigAooooAKKKKAKL/696KH/wBe9FWBnJ/yMKf9e/8A7UrfrAT/AJGFP+vf/wBqVv0VACiiioAdRsoooAKbTqbQAUUUUAOp9MooAKKKKAG0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFF/9e9FD/696KsDNT/kZU/69P8A2pXQVz6f8jKn/Xp/7UroKKgBRRRUAFFFFABRRRQAUUUUAFFFFADqKbRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFF/8AXvRQ/wDr3oqwM1P+RlT/AK9P/aldBXPx/wDIzp/15/8AtSugoqAFFFFQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUX/wBe9FD/AOveirA//9k=)
Read all on silverlightshow:
http://www.silverlightshow.net/items/Near-Field-Communication-in-Windows-8-Part-2.aspx
Near Field Communication (NFC) is certainly a promising technology and some standardization processes are on-going at nfc-forum.
Microsoft announced extended support for this technology in Windows 8, but renamed it as Near Field Proximity. I'm investigating on the Proximity API that developers can use to create NFC-enabled apps; it is surprisingly simple..
Read more on my first-part article:
http://www.silverlightshow.net/items/Near-Field-Communication-in-windows-8-part-1.aspx