diff --git a/multimedia/image/image_js_standard/Test.json b/multimedia/image/image_js_standard/Test.json index cf4cec3982fb141e98cba5b982fa0f1d8855fb06..23d9d30d5ce067b6af07f8e80128448746c6dd70 100644 --- a/multimedia/image/image_js_standard/Test.json +++ b/multimedia/image/image_js_standard/Test.json @@ -37,6 +37,7 @@ "type": "ShellKit", "run-command": [ "chmod -R 666 /data/media/*", + "chmod -R 666 /data/local/*", "setenforce 0" ], "teardown-command":[ diff --git a/multimedia/image/image_js_standard/src/main/js/test/image.test.js b/multimedia/image/image_js_standard/src/main/js/test/image.test.js index 7dd0223353588eeefaa02e466d61fc24cd4614e4..0688c44591988208c2ebdb56ea4705ae2fadace0 100644 --- a/multimedia/image/image_js_standard/src/main/js/test/image.test.js +++ b/multimedia/image/image_js_standard/src/main/js/test/image.test.js @@ -14,8 +14,9 @@ */ import image from '@ohos.multimedia.image' +import fileio from '@ohos.fileio' import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index' -import { testPng, testJpg } from './testImg' +import {testPng, testJpg, tc_020buf, tc_020_1buf, tc_021buf, tc_021_1buf, tc_022buf} from './testImg' describe('Image', function () { @@ -38,10 +39,10 @@ describe('Image', function () { /** * @tc.number : TC_001 - * @tc.name : create pixelmap object + * @tc.name : create pixelmap-promise (editable: true, pixelFormat: RGBA_8888, size: { height: 4, width: 6 }, bytes = buffer) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.using color,colorlength,offsetwidth and opts create newPixelMap + * 2.set editable,pixeFormat,size + * 3.using color and opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional @@ -49,10 +50,10 @@ describe('Image', function () { */ it('TC_001', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 2, width: 3 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(Color, opts) .then( pixelmap => { - expect(pixelmap !== null).assertTrue(); + expect(pixelmap != undefined).assertTrue(); console.info('TC_001 success'); done(); }) @@ -62,65 +63,60 @@ describe('Image', function () { done(); }) }) - + /** * @tc.number : TC_001-1 - * @tc.name : create pixelmap object + * @tc.name : create pixelmap-callback (editable: false, pixelFormat: RGBA_8888, size: { height: 4, width: 6 },bytes = buffer) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.using color,colorlength, offset,width and opts create newPixelMap + * 2.set editable,pixelFormat,size + * 3.using colorand opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 0 - */ + */ it('TC_001-1', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 2, width: 3 } } - image.createPixelMap(Color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); + let opts = { editable: false, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); console.info('TC_001-1 success'); done(); }) - .catch(error => { - console.log('TC_001-1 error: ' + error); - expect().assertFail(); - done(); - }) }) - /** * @tc.number : TC_001-2 - * @tc.name : create pixelmap object + * @tc.name : createpixelmap-promise (editable: true, pixelFormat: RGB_565, size: { height: 6, width: 8 },bytes = buffer) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.usingcolor,colorlength, offset,width and opts create newPixelMap + * 2.set editable,pixelFormat,size + * 3.using colorand opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 0 */ - it('TC_001-2', 0, async function (done) { + it('TC_001-2', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 1, editable: true, pixelFormat: 0, scaleMode: 2, size: { height: 2, width: 3 } } - image.createPixelMap(Color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_001-2 success'); - done(); - }) - .catch(error => { - console.log('TC_001-2 error: ' + error); - expect().assertFail(); - done(); + let opts = { editable: true, pixelFormat: 2, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts) + .then( pixelmap => { + expect(pixelmap != undefined).assertTrue(); + console.info('TC_001-2 success'); + done(); + }) + .catch(error => { + console.log('TC_001-2 error: ' + error); + expect().assertFail(); + done(); + }) }) - }) /** * @tc.number : TC_001-3 - * @tc.name : create pixelmap object + * @tc.name : createpixelmap-callback (editable: false, pixelFormat: RGB_565, size: { height: 6, width: 8 },bytes = buffer) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.usingcolor,colorlength,offset,width and opts create newPixelMap + * 2.set editable,pixelFormat,size + * 3.using colorand opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional @@ -128,77 +124,152 @@ describe('Image', function () { */ it('TC_001-3', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 2, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 2, width: 3 } } - image.createPixelMap(Color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); + let opts = { editable: false, pixelFormat: 2, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); console.info('TC_001-3 success'); done(); - }) - .catch(error => { - console.log('TC_001-3 error: ' + error); - expect().assertFail(); - done(); + }) }) - /** * @tc.number : TC_001-4 - * @tc.name : create pixelmap object + * @tc.name : createpixelmap-promise(editable: true, pixelFormat: unkonwn, size: { height: 6, width: 8 }) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.usingcolor,colorlength,offset,width and opts create newPixelMap + * 2.set editable,pixelFormat,size + * 3.using colorand opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 0 */ - it('TC_001-4', 0, async function (done) { + it('TC_001-4', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 3, editable: false, pixelFormat: 2, scaleMode: 2, size: { height: 2, width: 3 } } - image.createPixelMap(Color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_001-4 success'); + let opts = { editable: true, pixelFormat: 0, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts) + .then( pixelmap => { + expect(pixelmap != undefined).assertTrue(); + console.info('TC_001-4 success'); + done(); + }) + .catch(error => { + console.log('TC_001-4 error: ' + error); + expect().assertFail(); + done(); + }) + }) + + /** + * @tc.number : TC_001-5 + * @tc.name : create pixelmap-callback(editable: false, pixelFormat: unkonwn, size: { height: 6, width: 8 }) + * @tc.desc : 1.create InitializationOptions object + * 2.set editable,pixelFormat,size + * 3.using colorand opts create newPixelMap + * 4.return newpixelmap not empty + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 0 + */ + it('TC_001-5', 0, async function (done) { + const Color = new ArrayBuffer(96); + let opts = { editable: false, pixelFormat: 0, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); + console.info('TC_001-5 success'); done(); }) - .catch(error => { - console.log('TC_001-4 error: ' + error); - expect().assertFail(); + }) + /** + * @tc.number : TC_001-6 + * @tc.name : create pixelmap-callback(editable: true, pixelFormat: RGBA_8888, size: { height: 6, width: 8 } bytes > buffer ) + * @tc.desc : 1.create InitializationOptions object + * 2.set editable,pixeFormat,size + * 3.using color and opts create newPixelMap + * 4.return newpixelmap not empty + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 0 + */ + it('TC_001-6', 0, async function (done) { + const Color = new ArrayBuffer(96); + let opts = { editable: true, pixelFormat: 3, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); + console.info('TC_001-6 success'); done(); }) }) /** - * @tc.number : TC_001-5 - * @tc.name : create pixelmap object + * @tc.number : TC_001-7 + * @tc.name : create pixelmap-callback(editable: true, pixelFormat: RGB_565, size: { height: 2, width: 3 }, bytes < buffer) * @tc.desc : 1.create InitializationOptions object - * 2.set color,colorlength,offset,width,height,pixeFormat,alphyType - * 3.usingcolor,colorlength,offset,width and opts create newPixelMap + * 2.set editable,pixeFormat,size + * 3.using color and opts create newPixelMap * 4.return newpixelmap not empty * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 0 */ - it('TC_001-5', 0, async function (done) { + it('TC_001-7', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 3, editable: true, pixelFormat: 2, scaleMode: 1, size: { height: -1, width: -1 } } - image.createPixelMap(Color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_001-5 success'); + let opts = { editable: true, pixelFormat: 2, size: { height: 2, width: 3 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); + console.info('TC_001-7 success'); done(); - }).catch(error => { - console.log('TC_001-4 error: ' + error); - expect().assertFail(); + }) + }) + + /** + * @tc.number : TC_001-8 + * @tc.name : create pixelmap-callback(editable: true, pixelFormat: unkonwn, size: { height: -1, width: -1 }) + * @tc.desc : 1.create InitializationOptions object + * 2.set editable,pixeFormat,size + * 3.using color and opts create newPixelMap + * 4.return newpixelmap empty + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 0 + */ + it('TC_001-8', 0, async function (done) { + const Color = new ArrayBuffer(96); + let opts = { editable: true, pixelFormat: 0, size: { height: -1, width: -1 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap == undefined).assertTrue(); + console.info('TC_001-8 success'); + done(); + }) + }) + + /** + * @tc.number : TC_001-9 + * @tc.name : create pixelmap-callback(editable: true, pixelFormat: unsupported format, size: { height: 6, width: 8 }) + * @tc.desc : 1.create InitializationOptions object + * 2.set editable,pixeFormat,size + * 3.using color and opts create newPixelMap + * 4.return newpixelmap empty + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 0 + */ + it('TC_001-9', 0, async function (done) { + const Color = new ArrayBuffer(96); + let opts = { editable: true, pixelFormat: 1, size: { height: 6, width: 8 } } + image.createPixelMap(Color, opts, (err, pixelmap) => { + expect(pixelmap == undefined).assertTrue(); + console.info('TC_001-9 success'); done(); }) }) /** * @tc.number : TC_020 - * @tc.name : read Pixels To Buffer + * @tc.name : readPixelsToBuffer-promise * @tc.desc : read all pixels to an buffer * 1.create PixelMap,buffer * 2.call readPixelsToBuffer - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -211,52 +282,52 @@ describe('Image', function () { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(color, opts) .then( pixelmap => { - console.info('TC_020 createPixelMap in'); - if (pixelmap == null) { + if (pixelmap == undefined) { console.info('TC_020 createPixelMap failed'); expect(false).assertTrue() done(); } - const readBuffer = new ArrayBuffer(96); pixelmap.readPixelsToBuffer(readBuffer).then(() => { - var bufferArr = new Uint8Array(readBuffer); + var bufferArr2 = new Uint8Array(readBuffer); var res = true; - for (var i = 0; i < bufferArr.length; i++) { - if(res) { - if (bufferArr[i] !== 0) { + for (var i = 0; i < bufferArr2.length; i++) { + if (bufferArr2[i] != tc_020buf[i]) { res = false; - console.info('TC_020 Success'); - expect(true).assertTrue(); + console.info('TC_20_buffer'+ bufferArr2[i]); + console.info('TC_020 failed'); + expect(false).assertTrue(); done(); break; } } - } if (res) { - console.info('TC_020 buffer is all empty'); - expect(false).assertTrue() + console.info('TC_020 success'); + expect(true).assertTrue() done(); } - }) - }) - .catch(error => { - console.log('TC_020 error: ' + error); - expect().assertFail(); - done(); + }).catch(error => { + console.log('TC_020 read error: ' + error); + expect().assertFail(); + done(); }) + }).catch(error => { + console.log('TC_020 error: ' + error); + expect().assertFail(); + done(); + }) }) /** * @tc.number : TC_020-1 - * @tc.name : read Pixels To Buffer + * @tc.name : readPixelsToBuffer-callback * @tc.desc : read all pixels to an buffer * 1.create PixelMap,buffer * 2.call readPixelsToBuffer - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -269,49 +340,43 @@ describe('Image', function () { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, (pixelmap) => { - console.info('TC_020-1 createPixelMap in'); - expect(pixelmap !== null).assertTrue(); - console.info('TC_020-1 success'); + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err, pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_020-1 createPixelMap failed'); + expect(false).assertTrue(); done(); - }) + }else{ const readBuffer = new ArrayBuffer(96); pixelmap.readPixelsToBuffer(readBuffer,() => { var bufferArr = new Uint8Array(readBuffer); var res = true; for (var i = 0; i < bufferArr.length; i++) { - if(res) { - if (bufferArr[i] !== 0) { - res = false; - console.info('TC_020-1 Success'); - expect(true).assertTrue(); - done(); - break; - } + if (bufferArr[i] != tc_020_1buf[i]) { + res = false; + console.info('TC_020-1 failed'); + expect(false).assertTrue(); + done(); + break; } } if (res) { - console.info('TC_020-1 buffer is all empty'); - expect(false).assertTrue() + console.info('TC_020-1 success'); + expect(true).assertTrue() done(); } }) - - .catch(error => { - console.log('TC_020-1 error: ' + error); - expect().assertFail(); - done(); - }) + } + }) }) /** * @tc.number : TC_020-2 - * @tc.name : read Pixels To Buffer + * @tc.name : readPixelsToBuffer-callback(buffer:0) * @tc.desc : read all pixels to an buffer * 1.create PixelMap,buffer * 2.call readPixelsToBuffer - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -324,48 +389,43 @@ describe('Image', function () { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 2, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, (pixelmap) => { - console.info('TC_020-2 createPixelMap in'); - expect(pixelmap !== null).assertTrue(); - console.info('TC_020-2 success'); - done(); - }) - const readBuffer = new ArrayBuffer(0); - pixelmap.readPixelsToBuffer(readBuffer,() => { - var bufferArr = new Uint8Array(readBuffer); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - if(res) { - if (bufferArr[i] !== 0) { - res = false; - console.info('TC_020-2 Success'); - expect(true).assertTrue(); + let opts = { editable: true, pixelFormat: 2, size: { height: 6, width: 8 } } + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_020-2 createPixelMap failed'); + expect(false).assertTrue(); + done(); + }else{ + const readBuffer = new ArrayBuffer(0); + pixelmap.readPixelsToBuffer(readBuffer,() => { + var bufferArr = new Uint8Array(readBuffer); + var res = true; + for (var i = 0; i < bufferArr.length; i++) { + if (bufferArr[i] == 0) { + res = false; + console.info('TC_020-2 failed'); + expect(false).assertTrue(); + done(); + break; + } + } + if (res) { + console.info('TC_020-2 success'); + expect(true).assertTrue() done(); - break; } - } - } - if (res) { - console.info('TC_020-2 buffer is all empty'); - expect(false).assertTrue() - done(); - } - }) - .catch(error => { - console.log('TC_020-2 error: ' + error); - expect().assertFail(); - done(); - }) + }) + } + }) }) /** * @tc.number : TC_021 - * @tc.name : read Pixels + * @tc.name : readPixels-promise * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -376,41 +436,36 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(color, opts) .then( pixelmap => { - if (pixelmap == null) { + if (pixelmap == undefined) { console.info('TC_021 createPixelMap failed'); expect(false).assertTrue() done(); } - - const area = { pixels: new ArrayBuffer(20), + const area = { pixels: new ArrayBuffer(8), offset: 0, stride: 8, region: { size: { height: 1, width: 2 }, x: 0, y: 0 } } pixelmap.readPixels(area).then(() => { - var bufferArr = new Uint8Array(area.pixels); + var bufferArr2 = new Uint8Array(area.pixels); var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021 buffer ' + bufferArr[i]); - if(res) { - if (bufferArr[i] == 0) { - res = false; - console.info('TC_021 Success'); - expect(true).assertTrue(); - done(); - break; - } + for (var i = 0; i < bufferArr2.length; i++) { + if (bufferArr2[i] != tc_021buf[i]) { + res = false; + console.info('TC_021 failed'); + expect(false).assertTrue(); + done(); + break; } } if (res) { - console.info('TC_021 buffer is all empty'); - expect(false).assertTrue() + console.info('TC_021 success'); + expect(true).assertTrue() done(); } - }) }) .catch(error => { @@ -422,11 +477,11 @@ describe('Image', function () { /** * @tc.number : TC_021-1 - * @tc.name : read Pixels + * @tc.name : readPixels-callback * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -437,57 +492,47 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_021-1 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(20), - offset: 0, - stride: 8, - region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} - pixelmap.readPixels(area,(data) => { - if(data !== null) { - var bufferArr = new Uint8Array(area.pixels); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021-1 buffer ' + bufferArr[i]); - if(res) { - if(bufferArr[i] == 0) { + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err, pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_020-1 createPixelMap failed'); + expect(false).assertTrue(); + done(); + }else{ + const area = { pixels: new ArrayBuffer(8), + offset: 0, + stride: 8, + region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} + pixelmap.readPixels(area, () => { + var bufferArr = new Uint8Array(area.pixels); + var res = true; + for (var i = 0; i < bufferArr.length; i++) { + console.info('TC_021-1 buffer ' + bufferArr[i]); + if(bufferArr[i] != tc_021_1buf[i]) { res = false; - console.info('TC_021-1 Success'); - expect(true).assertTrue(); + console.info('TC_021-1 failed'); + expect(false).assertTrue(); done(); break; - } + } } - } - if (res) { - console.info('TC_021-1 buffer is all empty'); - expect(false).assertTrue() - done(); - } - } else { - console.info('TC_021-1 fail'); - expect(false).assertTrue() - done(); + if (res) { + console.info('TC_021-1 success'); + expect(true).assertTrue() + done(); + } + }) } }) - .catch(error => { - console.log('TC_021-1 error: ' + error); - expect().assertFail(); - done(); - }) }) /** * @tc.number : TC_021-2 - * @tc.name : read Pixels + * @tc.name : readPixels-callback( region: { size: { height: 1, width: 2 }, x: -1, y: -1 }) * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -498,53 +543,37 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_021-2 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(20), - offset: 0, - stride: 8, - region: { size: { height: 1, width: 2 }, x: -1, y: 0 }} - pixelmap.readPixels(area,(data) => { - if(data !== null){ - var bufferArr = new Uint8Array(area.pixels); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021-2 buffer ' + bufferArr[i]); - if(res) { - if (bufferArr[i] == 0) { - res = false; - console.info('TC_021-2 Success'); - expect(true).assertTrue(); - done(); - break; - } - } - } - if (res) { - console.info('TC_021-2 buffer is all empty'); - expect(false).assertTrue() + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue(); + console.info('TC_021-2 create pixelmap fail'); + done(); + }else{ + const area = { pixels: new ArrayBuffer(20), + offset: 0, + stride: 8, + region: { size: { height: 1, width: 2 }, x: -1, y: -1 }} + pixelmap.readPixels(area).then(()=>{ + console.info('TC_021-2 failed'); + expect(false).assertTrue(); done(); - } - } - }) - .catch(error => { - console.log('TC_021-2 error: ' + error); - expect().assertFail(); - done(); - }) + }).catch(()=>{ + expect(true).assertTrue(); + console.info('TC_021-2 success'); + done(); + }) + } + }) }) /** * @tc.number : TC_021-3 - * @tc.name : read Pixels + * @tc.name : readPixels-promise(buffer:0) * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -555,53 +584,37 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_021-3 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(0), - offset: 0, - stride: 8, - region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} - pixelmap.readPixels(area,(data) => { - if(data !== null){ - var bufferArr = new Uint8Array(area.pixels); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021-3 buffer ' + bufferArr[i]); - if(res) { - if (bufferArr[i] == 0) { - res = false; - console.info('TC_021-3 Success'); - expect(true).assertTrue(); - done(); - break; - } - } - } - if (res) { - console.info('TC_021-3 buffer is all empty'); - expect(false).assertTrue() - done(); - } - } - }) - .catch(error => { - console.log('TC_021-3 error: ' + error); - expect().assertFail(); - done(); + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue(); + console.info('TC_021-3 create pixelmap success'); + done(); + }else{ + const area = { pixels: new ArrayBuffer(0), + offset: 0, + stride: 8, + region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} + pixelmap.readPixels(area).then(()=>{ + console.info('TC_021-3 failed'); + except(false).assertTrue(); + done(); + }).catch(()=>{ + except(true).assertTrue(); + console.info('TC_021-3 success'); + done(); + }) + } }) }) /** * @tc.number : TC_021-4 - * @tc.name : read Pixels + * @tc.name : readPixels-promise(offset > buffer) * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -612,53 +625,36 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_021-4 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(20), - offset: 21, - stride: 8, - region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} - pixelmap.readPixels(area,(data) => { - if(data !== null){ - var bufferArr = new Uint8Array(area.pixels); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021-4 buffer ' + bufferArr[i]); - if(res) { - if (bufferArr[i] == 0) { - res = false; - console.info('TC_021-4 Success'); - expect(true).assertTrue(); - done(); - break; - } - } - } - if (res) { - console.info('TC_021-4 buffer is all empty'); - expect(false).assertTrue() - done(); - } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err, pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue(); + console.info('TC_021-4 createPixelMap success'); + done(); } - }) - .catch(error => { - console.log('TC_021-4 error: ' + error); - expect().assertFail(); - done(); - }) + const area = { pixels: new ArrayBuffer(20), + offset: 21, + stride: 8, + region: { size: { height: 1, width: 2 }, x: 0, y: 0 }} + pixelmap.readPixels(area).then(()=>{ + console.info('TC_021-4 failed'); + expect(false).assertTrue(); + done(); + }).catch(()=>{ + expect(true).assertTrue(); + console.info('TC_021-4 success'); + done(); + }) + }) }) /** * @tc.number : TC_021-5 - * @tc.name : read Pixels + * @tc.name : readPixels-promise(region: { size: { height: -1, width:-1}, x: 0, y: 0 }) * @tc.desc : 1.create PixelMap * 2.call readPixels * 3.promise return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -669,80 +665,63 @@ describe('Image', function () { for (var i = 0; i < bufferArr.length; i++) { bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_021-5 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(20), - offset: 0, - stride: 8, - region: { size: { height: -1, width:-1}, x: 0, y: 0 }} - pixelmap.readPixels(area,(data) => { - if(data !== null){ - var bufferArr = new Uint8Array(area.pixels); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - console.info('TC_021-5 buffer ' + bufferArr[i]); - if(res) { - if (bufferArr[i] == 0) { - res = false; - console.info('TC_021-5 Success'); - expect(true).assertTrue(); - done(); - break; - } - } - } - if (res) { - console.info('TC_021-5 buffer is all empty'); - expect(false).assertTrue() - done(); - } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue(); + console.info('TC_021-5 createPixelMap success'); + done(); } - }) - .catch(error => { - console.log('TC_021-5 error: ' + error); - expect().assertFail(); - done(); + const area = { pixels: new ArrayBuffer(20), + offset: 0, + stride: 8, + region: { size: { height: -1, width:-1}, x: 0, y: 0 }} + pixelmap.readPixels(area).then(()=>{ + console.info('TC_021-5 failed'); + expect(false).assertTrue(); + done(); + }).catch(()=>{ + expect(true).assertTrue(); + console.info('TC_021-5 success'); + done(); + }) }) }) /** * @tc.number : TC_022 - * @tc.name : write Pixels + * @tc.name : writePixels-promise * @tc.desc : 1.create PixelMap * 2.call writePixels - * 3.call return null - * 4.callbackcall return null + * 3.call return undefined + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_022', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(color, opts) .then( pixelmap => { - if (pixelmap == null) { + if (pixelmap == undefined) { console.info('TC_022 createPixelMap failed'); expect(false).assertTrue() done(); } - const area = { pixels: new ArrayBuffer(20), + const area = { pixels: new ArrayBuffer(8), offset: 0, stride: 8, region: { size: { height: 1, width: 2 }, x: 0, y: 0 } } var bufferArr = new Uint8Array(area.pixels); for (var i = 0; i < bufferArr.length; i++) { - bufferArr[i] = i; + bufferArr[i] = i + 1; } pixelmap.writePixels(area).then(() => { - const readArea = { pixels: new ArrayBuffer(20), + const readArea = { pixels: new ArrayBuffer(8), offset: 0, stride: 8, region: { size: { height: 1, width: 2 }, x: 0, y: 0 } @@ -751,22 +730,19 @@ describe('Image', function () { var readArr = new Uint8Array(readArea.pixels); var res = true; for (var i = 0; i < readArr.length; i++) { - if(res) { - if (readArr[i] !== 0) { - res = false; - console.info('TC_022 Success'); - expect(true).assertTrue(); - done(); - break; - } - } + if (readArr[i] != tc_022buf[i]) { + res = false; + console.info('TC_022 failed'); + expect(false).assertTrue(); + done(); + break; + } } if (res) { - console.info('TC_022 buffer is all empty'); - expect(false).assertTrue() + console.info('TC_022 success'); + expect(true).assertTrue() done(); } - }) }) }) @@ -779,57 +755,54 @@ describe('Image', function () { /** * @tc.number : TC_022-1 - * @tc.name : write Pixels + * @tc.name : writePixels-callback * @tc.desc : 1.create PixelMap * 2.call writePixels - * 3.call return null - * 4.callbackcall return null + * 3.call return undefined + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_022-1', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_022-1 success'); - done(); - }) - const area = { pixels: new ArrayBuffer(20), - offset: 0, - stride: 8, - region: { size: { height: 1, width: 2 }, x: 0, y: 0 } - } - var bufferArr = new Uint8Array(area.pixels); - for (var i = 0; i < bufferArr.length; i++) { - bufferArr[i] = i; - } - pixelmap.writePixels(area,() => { - const readArea = { pixels: new ArrayBuffer(20), + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err, pixelmap) => { + expect(pixelmap != undefined).assertTrue(); + const area = { pixels: new ArrayBuffer(8), offset: 0, stride: 8, region: { size: { height: 1, width: 2 }, x: 0, y: 0 } } - pixelmap.readPixels(readArea,() => { - var readArr = new Uint8Array(readArea.pixels); - var res = true; - for (var i = 0; i < readArr.length; i++) { - if(res) { - if (readArr[i] !== 0) { + var bufferArr = new Uint8Array(area.pixels); + for (var i = 0; i < bufferArr.length; i++) { + bufferArr[i] = i + 1; + } + + pixelmap.writePixels(area, () => { + const readArea = { pixels: new ArrayBuffer(8), + offset: 0, + stride: 8, + region: { size: { height: 1, width: 2 }, x: 0, y: 0 } + } + pixelmap.readPixels(readArea,() => { + var readArr = new Uint8Array(readArea.pixels); + var res = true; + for (var i = 0; i < readArr.length; i++) { + if (readArr[i] == 0) { res = false; - console.info('TC_022-1 Success'); - expect(true).assertTrue(); + console.info('TC_022-1 failed'); + expect(false).assertTrue(); done(); break; } } - } - if (res) { - console.info('TC_022-1 buffer is all empty'); - expect(false).assertTrue() - done(); - } + if (res) { + console.info('TC_022-1 success'); + expect(true).assertTrue() + done(); + } + }) }) }) .catch(error => { @@ -841,50 +814,48 @@ describe('Image', function () { /** * @tc.number : TC_023 - * @tc.name : write Buffer To Pixels + * @tc.name : writeBufferToPixels-promise * @tc.desc : 1.create PixelMap,buffer * 2.call writeBufferToPixels - * 3.call return null - * 4.callbackcall return null + * 3.call return undefined + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_023', 0, async function (done) { const color = new ArrayBuffer(96); - var bufferArr = new Uint8Array(color); - for (var i = 0; i < bufferArr.length; i++) { - bufferArr[i] = i; - } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 }} + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 }} image.createPixelMap(color, opts) .then( pixelmap => { - if (pixelmap == null) { + if (pixelmap == undefined) { console.info('TC_023 createPixelMap failed'); expect(false).assertTrue() done(); } const writeColor = new ArrayBuffer(96); + var bufferArr = new Uint8Array(writeColor); + for (var i = 0; i < bufferArr.length; i++) { + bufferArr[i] = i + 1; + } pixelmap.writeBufferToPixels(writeColor).then(() => { const readBuffer = new ArrayBuffer(96); pixelmap.readPixelsToBuffer(readBuffer).then(() => { var bufferArr = new Uint8Array(readBuffer); var res = true; for (var i = 0; i < bufferArr.length; i++) { - if(res) { - if (bufferArr[i] !== i) { - res = false; - console.info('TC_023 Success'); - expect(true).assertTrue() - done(); - break; - } + if (bufferArr[i] == 0) { + res = false; + console.info('TC_023 failed'); + expect(false).assertTrue() + done(); + break; } } if (res) { - console.info('TC_023 no change after writeBuffer'); - expect(false).assertTrue(); + console.info('TC_023 success'); + expect(true).assertTrue(); done(); } }) @@ -899,11 +870,11 @@ describe('Image', function () { /** * @tc.number : TC_023-1 - * @tc.name : write Buffer To Pixels + * @tc.name : writeBufferToPixels-callback * @tc.desc : 1.create PixelMap,buffer * 2.call writeBufferToPixels - * 3.call return null - * 4.callbackcall return null + * 3.call return undefined + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 @@ -912,241 +883,247 @@ describe('Image', function () { const color = new ArrayBuffer(96); var bufferArr = new Uint8Array(color); for (var i = 0; i < bufferArr.length; i++) { - bufferArr[i] = i; + bufferArr[i] = i + 1; } - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts,pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_023-1 success'); - done(); - }) - const writeColor = new ArrayBuffer(96); - pixelmap.writeBufferToPixels(writeColor,() => { - const readBuffer = new ArrayBuffer(96); - pixelmap.readPixelsToBuffer(readBuffer,() => { - var bufferArr = new Uint8Array(readBuffer); - var res = true; - for (var i = 0; i < bufferArr.length; i++) { - if(res) { - if (bufferArr[i] !== i) { - res = false; - console.info('TC_023-1 Success'); - expect(true).assertTrue() - done(); - break; + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts).then( pixelmap => { + if(pixelmap == undefined){ + expect(false).assertTrue() + console.info('TC_023-1 failed'); + done(); + } + const writeColor = new ArrayBuffer(96); + pixelmap.writeBufferToPixels(writeColor,() => { + const readBuffer = new ArrayBuffer(96); + pixelmap.readPixelsToBuffer(readBuffer,() => { + var bufferArr = new Uint8Array(readBuffer); + var res = true; + for (var i = 0; i < bufferArr.length; i++) { + if(res) { + if (bufferArr[i] == 0) { + res = false; + console.info('TC_023-1 Success'); + expect(true).assertTrue() + done(); + break; + } } } - } - if (res) { - console.info('TC_023-1 no change after writeBuffer'); - expect(false).assertTrue(); - done(); - } - }) - }) - .catch(error => { - console.log('TC_023-1 error: ' + error); - expect().assertFail(); - done(); + if (res) { + console.info('TC_023-1 no change after writeBuffer'); + expect(false).assertTrue(); + done(); + } + }) + }) }) }) /** * @tc.number : TC_024 - * @tc.name : get Image In fo + * @tc.name : getImageInfo-pixelmap-promise * @tc.desc : 1.create PixelMap,ImageInfo * 2.call getImageInfo * 3.call return imageinfo - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_024', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 2, scaleMode: 1, size: { height: 4, width: 6 } } + let opts = { editable: true, pixelFormat: 2, size: { height: 6, width: 8 } } image.createPixelMap(color, opts) - .then( pixelmap => { - if (pixelmap == null) { - console.info('TC_024 createPixelMap failed'); + .then( pixelmap => { + if (pixelmap == undefined) { + console.info('TC_024 createPixelMap failed'); + expect(false).assertTrue() + done(); + } + pixelmap.getImageInfo().then( imageInfo => { + if (imageInfo == undefined) { + console.info('TC_024 imageInfo is empty'); expect(false).assertTrue() done(); - } - pixelmap.getImageInfo().then( imageInfo => { - if (imageInfo !== null) { - console.info('TC_024 imageInfo is ready'); - expect(imageInfo.size.height == 4).assertTrue(); - expect(imageInfo.size.width == 6).assertTrue(); - expect(imageInfo.pixelFormat == 2).assertTrue(); - done(); - } else { - console.info('TC_024 imageInfo is empty'); - expect(false).assertTrue() - done(); - } - }) - }) - .catch(error => { - console.log('TC_024 error: ' + error); + } + if(imageInfo.size.height == 4 && imageInfo.size.width == 6){ + console.info('TC_024 success '); + expect(true).assertTrue() + done(); + } + done(); + }).catch(error => { + console.log('TC_024 getimageinfo error: ' + error); expect().assertFail(); done(); }) + done(); + }) + .catch(error => { + console.log('TC_024 error: ' + error); + expect().assertFail(); + done(); + }) }) /** * @tc.number : TC_024-1 - * @tc.name : get Image In fo + * @tc.name : getImageInfo-pixelmap-callback * @tc.desc : 1.create PixelMap,ImageInfo * 2.call getImageInfo * 3.call return imageinfo - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_024-1', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_024-1 success'); - done(); - }) - pixelmap.getImageInfo( imageInfo => { - if (imageInfo !== null) { - console.info('TC_024-1 imageInfo is ready'); - expect(imageInfo.size.height == 4).assertTrue(); - expect(imageInfo.size.width == 6).assertTrue(); - expect(imageInfo.pixelFormat == 4).assertTrue(); - done(); - } else { - console.info('TC_024-1 imageInfo is empty'); + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ expect(false).assertTrue() + console.info('TC_024-1 create pixelmap fail'); done(); } - }) - .catch(error => { - console.log('TC_024-1 error: ' + error); - expect().assertFail(); - done(); + pixelmap.getImageInfo( (err,imageInfo) => { + if (imageInfo == undefined) { + console.info('TC_024-1 imageInfo is empty'); + expect(false).assertTrue() + done(); + } + if(imageInfo.size.height == 4 && imageInfo.size.width == 6){ + console.info('TC_024-1 imageInfo success'); + expect(true).assertTrue() + done(); + } + done(); + }) }) }) /** * @tc.number : TC_025-1 - * @tc.name : get Bytes Number PerRow + * @tc.name : getBytesNumberPerRow * @tc.desc : 1.create PixelMap * 2.set PixelMap * 3.call getBytesNumberPerRow * 4. call return number - * 5.callback return null + * 5.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_025-1', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - const expectNum = opts.pixelFormat * opts.size.width; - image.createPixelMap(color, opts, pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_25-1 success'); - done(); - }) - pixelmap.getBytesNumberPerRow().then(num => { - console.info('TC_025-1 num is ' + num); - expect(num == expectNum).assertTrue(); - done(); - }) - .catch(error => { - console.log('TC_025-1 error: ' + error); - expect().assertFail(); - done(); + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + const expectNum = 4 * opts.size.width; + image.createPixelMap(color, opts, (err,pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue() + console.info('TC_25-1 create pixelmap fail'); + done(); + } else { + const num = pixelmap.getBytesNumberPerRow(); + console.info('TC_025-1 num is ' + num); + expect(num == expectNum).assertTrue(); + if(num == expectNum) { + console.info('TC_25-1 success'); + } else { + console.info('TC_25-1 fail'); + } + done(); + } }) }) /** * @tc.number : TC_026-1 - * @tc.name : get Pixel Bytes Number + * @tc.name : getPixelBytesNumber * @tc.desc : 1.create PixelMap * 2.set Pixel * 3.call getPixelBytesNumber * 4. call return number - * 5.callback return null + * 5.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_026-1', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - const expectNum = opts.pixelFormat * opts.size.width * opts.size.height; - image.createPixelMap(color, opts,pixelmap => { - expect(pixelmap !== null).assertTrue(); - console.info('TC_026-1 success'); - done(); - }) - pixelmap.getPixelBytesNumber().then(num => { - console.info('TC_026-1 num is ' + num); - expect(num == expectNum).assertTrue(); - done(); - }) - .catch(error => { - console.log('TC_026-1 error: ' + error); - expect().assertFail(); - done(); + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + const expectNum = 4 * opts.size.width * opts.size.height; + image.createPixelMap(color, opts,(err,pixelmap) => { + if(pixelmap == undefined){ + expect(false).assertTrue() + console.info('TC_026-1 create pixelmap fail'); + done(); + } else { + const num = pixelmap.getPixelBytesNumber(); + console.info('TC_026-1 num is ' + num); + expect(num == expectNum).assertTrue(); + if(num == expectNum) { + console.info('TC_026-1 success'); + } else { + console.info('TC_026-1 fail'); + } + done(); + } }) }) /** * @tc.number : TC_027 - * @tc.name : release + * @tc.name : release-pixelmap-promise * @tc.desc : 1.create PixelMap * 2.set Pixel * 3.call release - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_027', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(color, opts).then(pixelmap => { - if (pixelmap == null) { - console.info('TC_027 createPixelMap failed'); - expect(false).assertTrue() - done(); - } - pixelmap.release().then(() => { - console.info('TC_027 success'); - expect(true).assertTrue(); - done(); - }) - .catch(error => { + if (pixelmap == undefined) { + console.info('TC_027 createPixelMap failed'); + expect(false).assertTrue() + done(); + } + pixelmap.release().then(() => { + console.info('TC_027 success'); + expect(true).assertTrue(); + done(); + }).catch(error => { console.log('TC_027 error: ' + error); expect().assertFail(); done(); }) + }).catch(error => { + console.log('TC_027 createPixelMap failed error: ' + error); + expect().assertFail(); + done(); }) }) /** * @tc.number : TC_027-1 - * @tc.name : release(callback) + * @tc.name : release-pixelmap-callback * @tc.desc : 1.create PixelMap * 2.set Pixel * 3.call release - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_027-1', 0, async function (done) { const color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 4, width: 6 } } - image.createPixelMap(color, opts, (error,pixelmap) => { - if (pixelmap == null) { + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } + image.createPixelMap(color, opts, (err, pixelmap) => { + if (pixelmap == undefined) { console.info('TC_027-1 createPixelMap failed'); expect(false).assertTrue() done(); @@ -1161,7 +1138,7 @@ describe('Image', function () { /** * @tc.number : TC_041 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-jpg * @tc.desc : 1.set uri * 2.call createImageSource(uri) * 3.return imagesource @@ -1171,14 +1148,14 @@ describe('Image', function () { */ it('TC_041', 0, async function (done) { const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_041 finished'); + expect(imageSourceApi != undefined).assertTrue(); + console.info('TC_041 success'); done(); }) /** * @tc.number : TC_041-1 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-bmp * @tc.desc : 1.seturi * 2.call createImageSource(uri) * 3.return imagesource @@ -1188,14 +1165,14 @@ describe('Image', function () { */ it('TC_041-1', 0, async function (done) { const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_041-1 finished'); + expect(imageSourceApi != undefined).assertTrue(); + console.info('TC_041-1 success'); done(); }) /** * @tc.number : TC_041-2 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-gif * @tc.desc : 1.seturi * 2.call createImageSource(uri) * 3.return imagesource @@ -1205,14 +1182,14 @@ describe('Image', function () { */ it('TC_041-2', 0, async function (done) { const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_041-2 finished'); + expect(imageSourceApi != undefined).assertTrue(); + console.info('TC_041-2 success'); done(); }) /** * @tc.number : TC_041-3 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-png * @tc.desc : 1.seturi * 2.call createImageSource(uri) * 3.return imagesource @@ -1222,14 +1199,14 @@ describe('Image', function () { */ it('TC_041-3', 0, async function (done) { const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_041-3 finished'); + expect(imageSourceApi != undefined).assertTrue(); + console.info('TC_041-3 success'); done(); }) /** * @tc.number : TC_041-4 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-wrong suffix file * @tc.desc : 1.call createImageSource(uri) * 2.Incoming wrong suffix file * 3.imagesource null @@ -1238,15 +1215,15 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_041-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.tif'); - expect(imageSourceApi == null).assertTrue(); - console.info('TC_041-4 finished'); + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.tif'); + expect(imageSourceApi == undefined).assertTrue(); + console.info('TC_041-4 success'); done(); }) /** * @tc.number : TC_041-5 - * @tc.name : create Image Source(uri) + * @tc.name : createImageSource(uri)-wrong uri * @tc.desc : 1.call createImageSource(uri) * 2.set wrong uri * 3.return null @@ -1255,15 +1232,15 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_041-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/multiedia/test.jpg'); - expect(imageSourceApi == null).assertTrue(); - console.info('TC_041-5 finished'); + const imageSourceApi = image.createImageSource('file:///multimedia/test.jpg'); + expect(imageSourceApi == undefined).assertTrue(); + console.info('TC_041-5 success'); done(); }) /** * @tc.number : TC_042 - * @tc.name : create Image Source(fd) + * @tc.name : createImageSource(fd) * @tc.desc : 1.call createImageSource * 2.set fd * 3.return imagesource @@ -1272,83 +1249,41 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_042', 0, async function (done) { - const imageSourceApi = image.createImageSource(29); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_042 finished'); - done(); - }) - - /** - * @tc.number : TC_042-1 - * @tc.name : create Image Source(fd) bmp - * @tc.desc : 1.call createImageSource - * 2.set fd - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_042-1', 0, async function (done) { - const imageSourceApi = image.createImageSource(30); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_042-1 finished'); - done(); - }) - - /** - * @tc.number : TC_042-2 - * @tc.name : create Image Source(fd) png - * @tc.desc : 1.call createImageSource - * 2.set fd - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_042-2', 0, async function (done) { - const imageSourceApi = image.createImageSource(28); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_042-2 finished'); - done(); - }) - - /** - * @tc.number : TC_042-3 - * @tc.name : create Image Source(fd) gif - * @tc.desc : 1.call createImageSource - * 2.set fd - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_042-3', 0, async function (done) { - const imageSourceApi = image.createImageSource(27); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_042-3 finished'); - done(); + let fd = fileio.openSync('/data/local/tmp/test.jpg'); + const imageSourceApi = image.createImageSource(fd); + if (imageSourceApi == undefined) { + console.info('TC_042 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + imageSourceApi.getImageInfo((err,imageInfo) => { + console.info('TC_042 success'); + expect(imageInfo != undefined).assertTrue(); + done(); + }) + } }) /** - * @tc.number : TC_042-4 - * @tc.name : create Image Source(fd) + * @tc.number : TC_042-1 + * @tc.name : createImageSource(fd) fd<0 * @tc.desc : 1.call createImageSource * 2.set wrong fd - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 0 */ - it('TC_042-4', 0, async function (done) { + it('TC_042-1', 0, async function (done) { const imageSourceApi = image.createImageSource(-2); - expect(imageSourceApi == null).assertTrue(); - console.info('TC_042-4 finished'); + expect(imageSourceApi == undefined).assertTrue(); + console.info('TC_042-1 success'); done(); }) /** * @tc.number : TC_043 - * @tc.name : create Image Source(data) + * @tc.name : createImageSource(data) * @tc.desc : 1.setdata * 2.createImageSource * 3.return imagesource @@ -1357,17 +1292,25 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_043', 0, async function (done) { - console.info('TC_043 start'); - const data = new ArrayBuffer(96); + console.info('TC_043 start'); + const data = testJpg.buffer; const imageSourceApi = image.createImageSource(data); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_043 finished'); - done(); + if (imageSourceApi == undefined) { + console.info('TC_043 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + imageSourceApi.getImageInfo((err,imageInfo) => { + console.info('TC_043 imageInfo'); + expect(imageInfo != undefined).assertTrue(); + done(); + }) + } }) /** * @tc.number : TC_043-1 - * @tc.name : create Image Source(data) bmp + * @tc.name : createImageSource(data) buffer:0 * @tc.desc : 1.setdata * 2.createImageSource * 3.return imagesource @@ -1376,94 +1319,37 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_043-1', 0, async function (done) { - console.info('TC_043-1 start'); - const data = new ArrayBuffer(104); - const imageSourceApi = image.createImageSource(data); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_043-1 finished'); - done(); - }) - - /** - * @tc.number : TC_043-2 - * @tc.name : create Image Source(data) png - * @tc.desc : 1.setdata - * 2.createImageSource - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_043-2', 0, async function (done) { - console.info('TC_043-2 start'); - const data = new ArrayBuffer(112); - const imageSourceApi = image.createImageSource(data); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_043-2 finished'); - done(); - }) - - /** - * @tc.number : TC_043-3 - * @tc.name : create Image Source(data) gif - * @tc.desc : 1.setdata - * 2.createImageSource - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_043-3', 0, async function (done) { - console.info('TC_043-3 start'); - const data = new ArrayBuffer(112); - const imageSourceApi = image.createImageSource(data); - expect(imageSourceApi !== null).assertTrue(); - console.info('TC_043-3 finished'); - done(); - }) - - /** - * @tc.number : TC_043-4 - * @tc.name : create Image Source(data) - * @tc.desc : 1.setdata - * 2.createImageSource - * 3.return imagesource - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 0 - */ - it('TC_043-4', 0, async function (done) { - console.info('TC_043-4 start'); + console.info('TC_043-1 start'); const data = new ArrayBuffer(0); const imageSourceApi = image.createImageSource(data); - expect(imageSourceApi == null).assertTrue(); - console.info('TC_043-4 finished'); + expect(imageSourceApi == undefined).assertTrue(); + console.info('TC_043-1 success'); done(); }) /** * @tc.number : TC_044 - * @tc.name : release() + * @tc.name : release-imagesource-promise-jpg * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_044', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_044 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.release().then(()=>{ - console.info('TC_044 release'); + console.info('TC_044 success'); expect(true).assertTrue(); done(); }).catch(error => { - console.info('TC_044 release'); + console.info('TC_044 error'); expect(false).assertTrue(); done(); }) @@ -1472,17 +1358,17 @@ describe('Image', function () { /** * @tc.number : TC_044-1 - * @tc.name : release() + * @tc.name : release-imagesource-callback-jpg * @tc.desc : 1.create ImageSource * 2.call release() - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_044-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_044-1 create image source failed'); expect(false).assertTrue(); done(); @@ -1497,26 +1383,26 @@ describe('Image', function () { /** * @tc.number : TC_045 - * @tc.name : get Image Info(ImageInfo) + * @tc.name : getImageInfo(callback: AsyncCallback)-jpg * @tc.desc : 1.create imageSource * 2.imageSourcecall getImageInfo(ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_045', 0, async function (done) { - console.info('TC_045'); - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_045 create image source failed'); expect(false).assertTrue(); done(); } else { - console.info('TC_045 suc'); - imageSourceApi.getImageInfo(imageInfo => { + imageSourceApi.getImageInfo((err,imageInfo) => { console.info('TC_045 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); + expect(imageInfo != undefined).assertTrue(); done(); }) } @@ -1524,26 +1410,26 @@ describe('Image', function () { /** * @tc.number : TC_045-1 - * @tc.name : get Image Info(ImageInfo) + * @tc.name : getImageInfo(callback: AsyncCallback)-bmp * @tc.desc : 1.create imageSource * 2.imageSourcecall getImageInfo(ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_045-1', 0, async function (done) { - console.info('TC_045-1'); - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_045 create image source failed'); + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_045-1 create image source failed'); expect(false).assertTrue(); done(); } else { - console.info('TC_045-1 suc'); - imageSourceApi.getImageInfo(imageInfo => { + imageSourceApi.getImageInfo((err,imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_045-1 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1551,26 +1437,26 @@ describe('Image', function () { /** * @tc.number : TC_045-2 - * @tc.name : get Image Info(ImageInfo) + * @tc.name : getImageInfo(callback: AsyncCallback)-png * @tc.desc : 1.create imageSource * 2.imageSourcecall getImageInfo(ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_045-2', 0, async function (done) { - console.info('TC_045-2'); - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_045-2 create image source failed'); expect(false).assertTrue(); done(); } else { - console.info('TC_045-2 suc'); - imageSourceApi.getImageInfo(imageInfo => { + imageSourceApi.getImageInfo((err,imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_045-2 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1578,26 +1464,27 @@ describe('Image', function () { /** * @tc.number : TC_045-3 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(callback: AsyncCallback)-gif * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_045-3', 0, async function (done) { console.info('TC_045-3'); - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_045-3 create image source failed'); expect(false).assertTrue(); done(); } else { - console.info('TC_045-3 suc'); - imageSourceApi.getImageInfo(imageInfo => { + imageSourceApi.getImageInfo((err,imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_045-3 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1605,24 +1492,26 @@ describe('Image', function () { /** * @tc.number : TC_046 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-jpg * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_046 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(0,(error, imageInfo) => { + imageSourceApi.getImageInfo(0, (err, imageInfo) => { console.info('TC_046 imageInfo'); - expect(imageInfo !== null).assertTrue(); + expect(imageInfo != undefined).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1630,24 +1519,26 @@ describe('Image', function () { /** * @tc.number : TC_046-1 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-bmp * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { console.info('TC_046-1 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(0,imageInfo => { + imageSourceApi.getImageInfo(0, (err, imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_046-1 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1655,24 +1546,26 @@ describe('Image', function () { /** * @tc.number: TC_046-2 - * @tc.name : getImageInfo(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-png * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_046-2 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(0,imageInfo => { + imageSourceApi.getImageInfo(0, (err, imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_046-2 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1680,24 +1573,26 @@ describe('Image', function () { /** * @tc.number: TC_046-3 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-gif * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_046-3 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(0,imageInfo => { + imageSourceApi.getImageInfo(0,(err, imageInfo) => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_046-3 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); done(); }) } @@ -1705,49 +1600,52 @@ describe('Image', function () { /** * @tc.number: TC_046-4 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-gif(frame:1)-index:1 * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_046-4 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(1,imageInfo => { - console.info('TC_046-4 imageInfo'); - expect(imageInfo == null).assertTrue(); - done(); + imageSourceApi.getImageInfo(1, (err, imageInfo) => { + if(imageInfo == undefined) { + expect(true).assertTrue(); + done(); + } else { + expect(false).assertTrue(); + done(); + } }) } }) /** * @tc.number: TC_046-5 - * @tc.name : get Image Info(index, ImageInfo) + * @tc.name : getImageInfo(index: number, callback: AsyncCallback)-gif-index:-1 * @tc.desc : 1.create ImageInfo * 2.call getImageInfo(index, ImageInfo) - * 3.callback return null + * 3.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_046-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_046-5 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.getImageInfo(-1,imageInfo => { - console.info('TC_046-5 imageInfo'); - expect(imageInfo == null).assertTrue(); + imageSourceApi.getImageInfo(-1, (err, imageInfo) => { + expect(imageInfo == undefined).assertTrue(); done(); }) } @@ -1755,7 +1653,7 @@ describe('Image', function () { /** * @tc.number : TC_047 - * @tc.name : get Image Info(index) return Image Info + * @tc.name : getImageInfo(index?: number): Promise-jpg * @tc.desc : 1.create imagesource * 2.call getImageInfo(index) * 3.callbackcall ,return imageinfo @@ -1764,16 +1662,22 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_047', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_047 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(0) .then(imageInfo => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_047 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); + done(); + }).catch(error => { + console.log('TC_047 error: ' + error); + expect().assertFail(); done(); }) } @@ -1781,7 +1685,7 @@ describe('Image', function () { /** * @tc.number : TC_047-1 - * @tc.name : get Image Info(index) return Image Info + * @tc.name : getImageInfo(index?: number): Promise-bmp * @tc.desc : 1.create imagesource * 2.call getImageInfo(index) * 3.callbackcall ,return imageinfo @@ -1790,16 +1694,22 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_047-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { console.info('TC_047-1 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(0) .then(imageInfo => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_047-1 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); + done(); + }).catch(error => { + console.log('TC_047-1 error: ' + error); + expect().assertFail(); done(); }) } @@ -1807,7 +1717,7 @@ describe('Image', function () { /** * @tc.number : TC_047-2 - * @tc.name : get Image Info(index) return Image Info + * @tc.name : getImageInfo(index?: number): Promise-png * @tc.desc : 1.create imagesource * 2.call getImageInfo(index) * 3.callbackcall ,return imageinfo @@ -1816,16 +1726,22 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_047-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_047-2 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(0) .then(imageInfo => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_047-2 imageInfo'); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); + done(); + }).catch(error => { + console.log('TC_047-2 error: ' + error); + expect().assertFail(); done(); }) } @@ -1833,7 +1749,7 @@ describe('Image', function () { /** * @tc.number : TC_047-3 - * @tc.name : get Image Info(index) return ImageInfo + * @tc.name : getImageInfo(index?: number): Promise-gif * @tc.desc : 1.create imagesource * 2.call getImageInfo(index) * 3.callbackcall ,return imageinfo @@ -1842,16 +1758,22 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_047-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_047-3 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(0) .then(imageInfo => { + expect(imageInfo != undefined).assertTrue(); console.info('TC_047-3 '); - expect(imageInfo !== null).assertTrue(); + console.info('imageInfo.size.height:'+imageInfo.size.height); + console.info('imageInfo.size.width:'+imageInfo.size.width); + done(); + }).catch(error => { + console.log('TC_047-3 error: ' + error); + expect().assertFail(); done(); }) } @@ -1859,25 +1781,29 @@ describe('Image', function () { /** * @tc.number: TC_047-4 - * @tc.name : get Image Info(index) return ImageInfo + * @tc.name : getImageInfo(index?: number): Promise-gif(frame:1)-index:1 * @tc.desc : 1.create imagesource * 2.call getImageInfo(index=1) - * 3.callback return imageinfo null + * 3.callback return imageinfo undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_047-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_047-4 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(1) - .then((error,imageInfo) => { - expect(imageInfo == null).assertTrue(); - console.info('TC_047-4 suc'); + .then(() => { + console.log('TC_047-4 failed'); + expect().assertFail(); + done(); + }).catch(error => { + console.log('TC_047-4 success'); + expect(true).assertTrue(); done(); }) } @@ -1885,25 +1811,29 @@ describe('Image', function () { /** * @tc.number : TC_047-5 - * @tc.name : get Image Info(index) return ImageInfo + * @tc.name : getImageInfo(index?: number): Promise-gif-index:-1 * @tc.desc : 1.create imagesource * 2.call getImageInfo(index=-1) - * 3.callback return imageinfo null + * 3.callback return imageinfo undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_047-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_047-5 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageInfo(-1) - .then((error,imageInfo) => { - expect(imageInfo == null).assertTrue(); - console.info('TC_047-5 success'); + .then(() => { + console.log('TC_047-5 failed'); + expect().assertFail(); + done(); + }).catch(error => { + console.log('TC_047-5 success'); + expect(true).assertTrue(); done(); }) } @@ -1911,18 +1841,18 @@ describe('Image', function () { /** * @tc.number : TC_050 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGBA_8888-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050 create image source failed'); expect(false).assertTrue(); done(); @@ -1936,28 +1866,27 @@ describe('Image', function () { desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { + console.info('TC_050 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** * @tc.number : TC_050-1 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGB_565-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_050-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + it('TC_050-1', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-1 create image source failed'); expect(false).assertTrue(); done(); @@ -1967,21 +1896,20 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:0, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-1 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { + console.info('TC_050-1 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) - } + } }) - /** * @tc.number : TC_050-2 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions)-pixelformat:unknown-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -1990,9 +1918,9 @@ describe('Image', function () { * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_050-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + it('TC_050-2', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-2 create image source failed'); expect(false).assertTrue(); done(); @@ -2004,65 +1932,69 @@ describe('Image', function () { rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-2 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { + console.info('TC_050-2 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) - } + } }) - /** * @tc.number : TC_050-3 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions: index 1})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-3 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { - sampleSize:-1, + sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-3 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-3 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_050-4 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:index -1})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-4 create image source failed'); expect(false).assertTrue(); done(); @@ -2071,154 +2003,174 @@ describe('Image', function () { sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:2, + rotate:10, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:-1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-4 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.error('TC_050-4 success'); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } }) } }) /** * @tc.number : TC_050-5 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:sampleSize -1})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-5 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { - sampleSize:1, - editable: false, + sampleSize:-1, + editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-5 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-5 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_050-6 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:rotate -10})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional - * @tc.level : Level 1 + * @tc.level : Level 1 */ it('TC_050-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-6 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, rotate:-10, - desiredPixelFormat:11, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-6 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-6 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_050-7 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:unsupported pixelformat)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-7 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + rotate:10, + desiredPixelFormat:60, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-7 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-7 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_050-8 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:editable false})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional - * @tc.level : Level 1 + * @tc.level : Level 1 */ it('TC_050-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-8 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: true, - desiredSize:{ width:400, height:400}, + editable: false, + desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-8 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_050-8 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } @@ -2226,18 +2178,18 @@ describe('Image', function () { /** * @tc.number : TC_050-9 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:desiredSize>imagesize)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_050-9', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-9 create image source failed'); expect(false).assertTrue(); done(); @@ -2245,34 +2197,34 @@ describe('Image', function () { let decodingOptions = { sampleSize:1, editable: true, - desiredSize:{ width:1, height:2}, + desiredSize:{ width:500, height:500}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 400, width: 500 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-9 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_050-9 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) - } + } }) - + /** * @tc.number : TC_050-10 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:desiredRegion>imagesize)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_050-10', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-10 create image source failed'); expect(false).assertTrue(); done(); @@ -2282,112 +2234,176 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 500, width: 500 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-10 createPixelMap'); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-10 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) - + /** * @tc.number : TC_050-11 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMapdecodingOptions:x -1 y -1)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_050-11', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_050-11 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.createPixelMap().then(pixelmap => { - console.info('TC_050-11 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); - done(); - }).catch(error => { - console.log('TC_050-11 error: ' + error); - expect().assertFail(); - done(); - }) - } + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:10, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-11 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } }) - /** + /** * @tc.number : TC_050-12 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:x > image.height y > image.width)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_050-12', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { - console.info('TC_050-12 create image source failed'); - expect(false).assertTrue(); - done(); - } else { - imageSourceApi.createPixelMap(pixelmap => { - console.info('TC_050-12 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + it('TC_050-12', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { + console.info('TC_050-12 create image source failed'); + expect(false).assertTrue(); done(); - }) - } - }) + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:10, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 500, y: 500 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-12 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) + + /** + * @tc.number : TC_050-13 + * @tc.name : createPixelMap(decodingOptions:rotate>360)-jpg + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_050-13', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { + console.info('TC_050-13 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:500, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 1, y: 2 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_050-13 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) /** - * @tc.number : TC_050-13 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_050-14 + * @tc.name : createPixelMap-promise-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_050-13', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { - console.info('TC_050-13 create image source failed'); + it('TC_050-14', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { + console.info('TC_050-14 create image source failed'); expect(false).assertTrue(); done(); } else { - let decodingOptions = { - sampleSize:1, - editable: true, - desiredSize:{ width:1, height:2}, - rotate:10, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 400, y: 400 }, - index:0 - }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-13 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap().then(pixelmap => { + console.info('TC_050-14 success '); + expect(pixelmap != undefined ).assertTrue(); + done(); + }).catch(error => { + console.log('TC_050-14 error: ' + error); + expect().assertFail(); done(); }) } }) /** - * @tc.number : TC_050-14 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_050-15 + * @tc.name : createPixelMap-callback-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -2396,25 +2412,16 @@ describe('Image', function () { * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_050-14', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { - console.info('TC_050-14 create image source failed'); + it('TC_050-15', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { + console.info('TC_050-15 create image source failed'); expect(false).assertTrue(); done(); } else { - let decodingOptions = { - sampleSize:1, - editable: true, - desiredSize:{ width:1, height:2}, - rotate:500, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 400, y: 400 }, - index:0 - }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_050-14 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap((err, pixelmap) => { + console.info('TC_050-15 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } @@ -2422,7 +2429,7 @@ describe('Image', function () { /** * @tc.number : TC_053 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createIncrementalSource-updateData-png * @tc.desc : 1.create imagesource * 2.update data * 3.create pixelmap @@ -2461,13 +2468,12 @@ describe('Image', function () { }; incSouce.createPixelMap(decodingOptions, (err, pixelmap) => { console.info('TC_053 0014' + pixelmap); - expect(pixelmap !== undefined ).assertTrue(); + expect(pixelmap != undefined ).assertTrue(); done(); }) } else { done(); } - done(); } catch (error) { console.info('TC_053 updateData failed ' + error); } @@ -2475,7 +2481,7 @@ describe('Image', function () { /** * @tc.number : TC_053-1 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createIncrementalSource-updateData-jpg * @tc.desc : 1.create imagesource * 2.update data * 3.create pixelmap @@ -2513,13 +2519,12 @@ describe('Image', function () { sampleSize:1 }; incSouce.createPixelMap(decodingOptions, (err, pixelmap) => { - expect(pixelmap !== undefined ).assertTrue(); + expect(pixelmap != undefined ).assertTrue(); done(); }) } else { done(); } - done(); } catch (error) { console.info('TC_053-1 updateData failed ' + error); } @@ -2527,68 +2532,71 @@ describe('Image', function () { /** * @tc.number : TC_062 - * @tc.name : packing + * @tc.name : packing ImageSource - promise * @tc.desc : 1.create ImageSource * 2.call packing * 3.return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_062', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + it('TC_062', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_062 create image source failed'); expect(false).assertTrue(); done(); } else { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_062 create image packer failed'); expect(false).assertTrue(); done(); } else { - let packOpts = { format:["image/jpeg"], quality:98 } + let packOpts = { format:["image/jpeg"], quality:99 } imagePackerApi.packing(imageSourceApi, packOpts) .then( data => { - console.info('TC_062 finished'); - expect(data !== null).assertTrue(); + console.info('TC_062 success'); + expect(data != undefined).assertTrue(); + done(); + }).catch(error => { + console.log('TC_062 error: ' + error); + expect(false).assertFail(); done(); }) - } } }) /** * @tc.number : TC_062-1 - * @tc.name : packing + * @tc.name : packing ImageSource - callback * @tc.desc : 1.create ImageSource * 2.call packing * 3.return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_062-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_062-1 create image source failed'); expect(false).assertTrue(); done(); } else { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_062-1 create image packer failed'); expect(false).assertTrue(); done(); } else { - let packOpts = { format:["image/jpeg"], quality:98 } - imagePackerApi.packing(imageSourceApi, packOpts, data => { - console.info('TC_062-1 finished'); - expect(data !== null).assertTrue(); + let packOpts = { format:["image/jpeg"], quality:1 } + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-1 success'); + expect(data != undefined).assertTrue(); done(); }) } @@ -2597,32 +2605,32 @@ describe('Image', function () { /** * @tc.number : TC_062-2 - * @tc.name : packing ImageSource + * @tc.name : packing ImageSource - callback - wrong format * @tc.desc : 1.create ImageSource * 2.call packing * 3.return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_062-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_062-2 create image source failed'); expect(false).assertTrue(); done(); } else { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_062-2 create image packer failed'); expect(false).assertTrue(); done(); } else { let packOpts = { format:["image/gif"], quality:98 } - imagePackerApi.packing(imageSourceApi, packOpts, data => { - console.info('TC_062-2 finished'); - expect(data == null).assertTrue(); + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-2 success'); + expect(data == undefined).assertTrue(); console.info(data); done(); }) @@ -2632,32 +2640,32 @@ describe('Image', function () { /** * @tc.number : TC_062-3 - * @tc.name : packing ImageSource + * @tc.name : packing ImageSource - callback - wrong quality * @tc.desc : 1.create ImageSource * 2.call packing * 3.call return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_062-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_062-3 create image source failed'); expect(false).assertTrue(); done(); } else { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_062-3 create image packer failed'); expect(false).assertTrue(); done(); } else { let packOpts = { format:["image/jpg"], quality:101 } - imagePackerApi.packing(imageSourceApi, packOpts, data => { - console.info('TC_062-3 finished'); - expect(data == null).assertTrue(); + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-3 success'); + expect(data == undefined).assertTrue(); console.info(data); done(); }) @@ -2667,24 +2675,24 @@ describe('Image', function () { /** * @tc.number : TC_062-4 - * @tc.name : packing + * @tc.name : createImagePacker * @tc.desc : 1.create ImageSource * 2.call packing * 3.return array - * 4.callbackcall return null + * 4.callbackcall return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_062-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_062-4 create image source failed'); expect(false).assertTrue(); done(); } else { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_062-4 create image packer failed'); expect(false).assertTrue(); done(); @@ -2695,26 +2703,208 @@ describe('Image', function () { } } }) + + /** + * @tc.number : TC_062-5 + * @tc.name : packing ImageSource - promise - no quality + * @tc.desc : 1.create ImageSource + * 2.call packing + * 3.call return array + * 4.callbackcall return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_062-5', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_062-5 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + const imagePackerApi = image.createImagePacker(); + if (imagePackerApi == undefined) { + console.info('TC_062-5 create image packer failed'); + expect(false).assertTrue(); + done(); + } else { + let packOpts = { format:["image/jpg"] } + imagePackerApi.packing(imageSourceApi, packOpts) + .then( data => { + console.info('TC_062-5 failed'); + expect(data == undefined).assertTrue(); + done(); + }).catch(error => { + console.log('TC_062-5 error: ' + error); + console.log('TC_062-5 success'); + expect(true).assertTrue(); + done(); + }) + } + } + }) + + /** + * @tc.number : TC_062-6 + * @tc.name : packing ImageSource - promise - no format + * @tc.desc : 1.create ImageSource + * 2.call packing + * 3.call return array + * 4.callbackcall return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_062-6', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_062-6 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + const imagePackerApi = image.createImagePacker(); + if (imagePackerApi == undefined) { + console.info('TC_062-6 create image packer failed'); + expect(false).assertTrue(); + done(); + } else { + let packOpts = { quality:50 } + imagePackerApi.packing(imageSourceApi, packOpts) + .then( data => { + console.info('TC_062-6 failed'); + expect(data == undefined).assertTrue(); + done(); + }).catch(error => { + console.log('TC_062-6 error: ' + error); + console.log('TC_062-6 success'); + expect(true).assertTrue(); + done(); + }) + } + } + }) + + /** + * @tc.number : TC_062-7 + * @tc.name : packing ImageSource - callback - quality 100 + * @tc.desc : 1.create ImageSource + * 2.call packing + * 3.return array + * 4.callbackcall return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_062-7', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_062-7 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + const imagePackerApi = image.createImagePacker(); + if (imagePackerApi == undefined) { + console.info('TC_062-7 create image packer failed'); + expect(false).assertTrue(); + done(); + } else { + let packOpts = { format:["image/jpeg"], quality:100 } + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-7 success'); + expect(data != undefined).assertTrue(); + done(); + }) + } + } + }) + + /** + * @tc.number : TC_062-8 + * @tc.name : packing ImageSource - callback - quality 0 + * @tc.desc : 1.create ImageSource + * 2.call packing + * 3.return array + * 4.callbackcall return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_062-8', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_062-8 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + const imagePackerApi = image.createImagePacker(); + if (imagePackerApi == undefined) { + console.info('TC_062-8 create image packer failed'); + expect(false).assertTrue(); + done(); + } else { + let packOpts = { format:["image/jpeg"], quality:0 } + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-8 success'); + expect(data != undefined).assertTrue(); + done(); + }) + } + } + }) + + /** + * @tc.number : TC_062-9 + * @tc.name : packing ImageSource - callback - quality -1 + * @tc.desc : 1.create ImageSource + * 2.call packing + * 3.return array + * 4.callbackcall return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_062-9', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_062-9 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + const imagePackerApi = image.createImagePacker(); + if (imagePackerApi == undefined) { + console.info('TC_062-9 create image packer failed'); + expect(false).assertTrue(); + done(); + } else { + let packOpts = { format:["image/jpeg"], quality:-1 } + imagePackerApi.packing(imageSourceApi, packOpts, (err, data) => { + console.info('TC_062-9 success'); + expect(data == undefined).assertTrue(); + done(); + }) + } + } + }) /** * @tc.number : TC_063 - * @tc.name : release ImagePacker + * @tc.name : release ImagePacker - promise * @tc.desc : 1.create ImagePacker * 2.call release - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_063', 0, async function (done) { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_063 create image packer failed'); expect(false).assertTrue(); done(); } else { imagePackerApi.release().then(()=>{ - console.info('TC_063 release'); + console.info('TC_063 success'); expect(true).assertTrue(); done(); }).catch(()=>{ @@ -2727,23 +2917,23 @@ describe('Image', function () { /** * @tc.number : TC_063-1 - * @tc.name : release ImagePacker + * @tc.name : release ImagePacker - callback * @tc.desc : 1.create ImagePacker * 2.call release - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_063-1', 0, async function (done) { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_063-1 create image packer failed'); expect(false).assertTrue(); done(); } else { imagePackerApi.release(()=>{ - console.info('TC_063-1 release'); + console.info('TC_063-1 success'); expect(true).assertTrue(); done(); }) @@ -2752,23 +2942,23 @@ describe('Image', function () { /** * @tc.number : TC_064 - * @tc.name : release() + * @tc.name : release ImageSource - promise - png * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_064', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_064 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.release().then(()=>{ - console.info('TC_064 release'); + console.info('TC_064 success'); expect(true).assertTrue(); done(); }).catch(error => { @@ -2781,17 +2971,17 @@ describe('Image', function () { /** * @tc.number : TC_064-1 - * @tc.name : release() + * @tc.name : release ImageSource - callback - png * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_064-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { console.info('TC_064-1 create image source failed'); expect(false).assertTrue(); done(); @@ -2806,23 +2996,23 @@ describe('Image', function () { /** * @tc.number : TC_065 - * @tc.name : release() + * @tc.name : release ImageSource - promise - bmp * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_065', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { console.info('TC_065 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.release().then(()=>{ - console.info('TC_065 release'); + console.info('TC_065 success'); expect(true).assertTrue(); done(); }).catch(error => { @@ -2835,17 +3025,17 @@ describe('Image', function () { /** * @tc.number : TC_065-1 - * @tc.name : release() + * @tc.name : release ImageSource - callback - bmp * @tc.desc : 1.create ImageSource * 2.create SourceStream - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_065-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { console.info('TC_065-1 create image source failed'); expect(false).assertTrue(); done(); @@ -2860,27 +3050,27 @@ describe('Image', function () { /** * @tc.number : TC_066 - * @tc.name : release() + * @tc.name : release ImageSource - promise - gif * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_066', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_066 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.release().then(()=>{ - console.info('TC_065 release'); + console.info('TC_066 success'); expect(true).assertTrue(); done(); }).catch(error => { - console.log('TC_065 error: ' + error); + console.log('TC_066 error: ' + error); expect().assertFail(); done(); }) @@ -2889,17 +3079,17 @@ describe('Image', function () { /** * @tc.number : TC_066-1 - * @tc.name : release() + * @tc.name : release ImageSource - callback - gif * @tc.desc : 1.create ImageSource * 2.call release() - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_066-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.gif'); + if (imageSourceApi == undefined) { console.info('TC_066-1 create image source failed'); expect(false).assertTrue(); done(); @@ -2908,28 +3098,24 @@ describe('Image', function () { console.info('TC_066-1 Success'); expect(true).assertTrue(); done(); - }).catch(()=>{ - console.info('TC_066-1 release'); - expect(false).assertTrue(); - done(); }) } }) /** * @tc.number : TC_067 - * @tc.name : Decode the image to generate a bitmap gif + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGBA_8888-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_067', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067 create image source failed'); expect(false).assertTrue(); done(); @@ -2939,21 +3125,20 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, + desiredPixelFormat:3, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { + imageSourceApi.createPixelMap(decodingOptions, (err,pixelmap) => { console.info('TC_067 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** * @tc.number : TC_067-1 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGBA_565-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -2962,9 +3147,9 @@ describe('Image', function () { * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + it('TC_067-1', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-1 create image source failed'); expect(false).assertTrue(); done(); @@ -2976,30 +3161,29 @@ describe('Image', function () { rotate:10, desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-1 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err,pixelmap) => { + console.info('TC_067-1 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** * @tc.number : TC_067-2 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions)-pixelformat:unkonwn-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + it('TC_067-2', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-2 create image source failed'); expect(false).assertTrue(); done(); @@ -3011,19 +3195,18 @@ describe('Image', function () { rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-2 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err,pixelmap) => { + console.info('TC_067-2 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** * @tc.number : TC_067-3 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:index 1})-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -3031,34 +3214,34 @@ describe('Image', function () { * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_067-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-3 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { - sampleSize:-1, + sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-3 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_067-3 success '); + expect(pixelmap != undefined ).assertTrue(); + done(); }) } }) /** * @tc.number : TC_067-4 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:index -1})-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -3066,10 +3249,10 @@ describe('Image', function () { * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_067-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-4 create image source failed'); expect(false).assertTrue(); done(); @@ -3078,173 +3261,192 @@ describe('Image', function () { sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:2, + rotate:10, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:-1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-4 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-4 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_067-5 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:sampleSize -1})-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_067-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-5 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { - sampleSize:1, - editable: false, + sampleSize:-1, + editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-5 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-5 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** * @tc.number : TC_067-6 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:rotate -10})-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_067-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-6 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, rotate:-10, - desiredPixelFormat:11, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-6 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-6 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } - }) + }) /** * @tc.number : TC_067-7 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:unsupported pixelformat)-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_067-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-7 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + rotate:10, + desiredPixelFormat:60, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-7 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-7 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) - /** * @tc.number : TC_067-8 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:editable false})-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_067-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info(' TC_067-8 create image source failed'); + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-8 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: true, - desiredSize:{ width:400, height:400}, + editable: false, + desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info(' TC_067-8 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_067-8 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } - }) + }) /** * @tc.number : TC_067-9 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:desiredSize>imagesize)-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 - */ + */ it('TC_067-9', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { console.info('TC_067-9 create image source failed'); expect(false).assertTrue(); done(); @@ -3252,35 +3454,75 @@ describe('Image', function () { let decodingOptions = { sampleSize:1, editable: true, - desiredSize:{ width:1, height:2}, + desiredSize:{ width:500, height:500}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 400, width: 500 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-9 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_067-9 success '); + expect(pixelmap != undefined ).assertTrue(); + done(); }) } - }) + }) /** * @tc.number : TC_067-10 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap(decodingOptions:desiredRegion>imagesize)-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_067-10', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_067-10 create image source failed'); + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info(' TC_067-10 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:10, + desiredPixelFormat:2, + desiredRegion: { size: { height: 500, width: 500 }, x: 0, y: 0 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-10 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) + + /** + * @tc.number : TC_067-11 + * @tc.name : createPixelMapdecodingOptions:x -1 y -1)-gif + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_067-11', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-11 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3289,42 +3531,127 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-10 createPixelMap'); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-11 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) + + /** + * @tc.number : TC_067-12 + * @tc.name : createPixelMap(decodingOptions:x > image.height y > image.width)-gif + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_067-12', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-12 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:10, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 500, y: 500 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-12 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) + + /** + * @tc.number : TC_067-13 + * @tc.name : createPixelMap(decodingOptions:rotate>360)-gif + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_067-13', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-13 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:500, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 1, y: 2 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_067-13 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) /** - * @tc.number : TC_067-11 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_067-14 + * @tc.name : createPixelMap-promise-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-11', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_067-11 create image source failed'); + it('TC_067-14', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-14 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.createPixelMap().then(pixelmap => { - console.info('TC_067-11 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + console.info('TC_067-14 success '); + expect(pixelmap !== undefined ).assertTrue(); done(); }).catch(error => { - console.log('TC_067-11 error: ' + error); + console.log('TC_067-14 error: ' + error); expect().assertFail(); done(); }) @@ -3332,8 +3659,8 @@ describe('Image', function () { }) /** - * @tc.number : TC_067-12 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_067-15 + * @tc.name : createPixelMap-pcallback-gif * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -3342,36 +3669,37 @@ describe('Image', function () { * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-12', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_067-12 create image source failed'); + it('TC_067-15', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/moving_test.gif'); + if (imageSourceApi == undefined) { + console.info('TC_067-15 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.createPixelMap(pixelmap => { - console.info('TC_067-12 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap((err, pixelmap) => { + console.info('TC_067-15 success '); + expect(pixelmap !== undefined ).assertTrue(); done(); }) } }) + /** - * @tc.number : TC_067-13 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGBA_8888-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-13', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_067-13 create image source failed'); + it('TC_068', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3380,33 +3708,32 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 400, y: 400 }, - index:0 + desiredPixelFormat:3, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-13 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_068 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_067-14 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-1 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGB_565-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_067-14', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_067-14 create image source failed'); + it('TC_068-1', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-1 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3414,34 +3741,33 @@ describe('Image', function () { sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, - rotate:500, + rotate:10, desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 400, y: 400 }, - index:0 + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_067-14 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_068-1 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_068 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-2 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:unkonwn-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068 create image source failed'); + it('TC_068-2', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-2 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3450,33 +3776,32 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_068-2 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_068-1 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-3 + * @tc.name : createPixelMap(decodingOptions: index 1})-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-1 create image source failed'); + it('TC_068-3', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-3 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3485,33 +3810,38 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-1 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-3 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-2 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-4 + * @tc.name : createPixelMap(decodingOptions:index -1})-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-2 create image source failed'); + it('TC_068-4', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-4 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3524,29 +3854,34 @@ describe('Image', function () { desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:-1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-2 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-4 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-3 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-5 + * @tc.name : createPixelMap(decodingOptions:sampleSize -1})-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-3 create image source failed'); + it('TC_068-5', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-5 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3557,31 +3892,36 @@ describe('Image', function () { rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-3 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-5 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-4 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-6 + * @tc.name : createPixelMap(decodingOptions:rotate -10})-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-4 create image source failed'); + it('TC_068-6', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-6 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3592,66 +3932,76 @@ describe('Image', function () { rotate:-10, desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-4 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-6 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-5 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-7 + * @tc.name : createPixelMap(decodingOptions:unsupported pixelformat)-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-5 create image source failed'); + it('TC_068-7', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-7 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:60, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-5 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-7 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-6 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-8 + * @tc.name : createPixelMap(decodingOptions:editable false})-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-6 create image source failed'); + it('TC_068-8', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-8 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3659,104 +4009,109 @@ describe('Image', function () { sampleSize:1, editable: false, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + rotate:10, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-6 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_068-8 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) /** - * @tc.number : TC_068-7 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-9 + * @tc.name : createPixelMap(decodingOptions:desiredSize>imagesize)-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.gif'); - if (imageSourceApi == null) { - console.info('TC_068-7 create image source failed'); + it('TC_068-9', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-9 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, - desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + editable: true, + desiredSize:{ width:500, height:500}, + rotate:10, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-7 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_068-9 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) /** - * @tc.number : TC_068-8 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-10 + * @tc.name : createPixelMap(decodingOptions:desiredRegion>imagesize)-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info(' TC_068-8 create image source failed'); + it('TC_068-10', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info(' TC_068-10 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, editable: true, - desiredSize:{ width:400, height:400}, + desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 500, width: 500 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info(' TC_068-8 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-10 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-9 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-11 + * @tc.name : createPixelMapdecodingOptions:x -1 y -1)-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-9', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-9 create image source failed'); + it('TC_068-11', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-11 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3765,33 +4120,38 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 400, width: 500 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-9 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-11 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_068-10 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-12 + * @tc.name : createPixelMap(decodingOptions:x > image.height y > image.width)-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-10', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-10 create image source failed'); + it('TC_068-12', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-12 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3800,42 +4160,85 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 500, y: 500 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-10 createPixelMap'); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-12 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) - /** - * @tc.number : TC_068-11 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-13 + * @tc.name : createPixelMap(decodingOptions:rotate>360)-jpg * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-11', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-11 create image source failed'); + it('TC_068-13', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-13 create image source failed'); + expect(false).assertTrue(); + done(); + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:500, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 1, y: 2 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_068-13 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } + }) + /** + * @tc.number : TC_068-14 + * @tc.name : createPixelMap-promise-bmp + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_068-14', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-14 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.createPixelMap().then(pixelmap => { - console.info('TC_068-11 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + console.info('TC_068-14 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }).catch(error => { - console.log('TC_068-11 error: ' + error); + console.log('TC_068-14 error: ' + error); expect().assertFail(); done(); }) @@ -3843,116 +4246,113 @@ describe('Image', function () { }) /** - * @tc.number : TC_068-12 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_068-15 + * @tc.name : createPixelMap-callback-bmp * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-12', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-12 create image source failed'); + it('TC_068-15', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.bmp'); + if (imageSourceApi == undefined) { + console.info('TC_068-15 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.createPixelMap(pixelmap => { - console.info('TC_068-12 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap((err, pixelmap) => { + console.info('TC_068-15 success '); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_068-13 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGBA_8888-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-13', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-13 create image source failed'); + it('TC_163', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163 create image source failed'); expect(false).assertTrue(); done(); - } else { + } else { let decodingOptions = { sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 440, y:440 }, - index:0 + desiredPixelFormat:3, + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-13 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_163 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_068-14 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-1 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:RGB_565-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_068-14', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.bmp'); - if (imageSourceApi == null) { - console.info('TC_068-14 create image source failed'); + it('TC_163-1', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-1 create image source failed'); expect(false).assertTrue(); done(); - } else { + } else { let decodingOptions = { sampleSize:1, editable: true, desiredSize:{ width:1, height:2}, - rotate:550, + rotate:10, desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 440, y:440 }, - index:0 + desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_068-14 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_163-1 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_163 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-2 + * @tc.name : createPixelMap(decodingOptions)-pixelformat:unkonwn-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163 create image source failed'); + it('TC_163-2', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-2 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -3961,33 +4361,32 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:2, + desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163 createPixelMap'); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_163-2 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) - /** - * @tc.number : TC_163-1 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-3 + * @tc.name : createPixelMap(decodingOptions: index 1})-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-1 create image source failed'); + it('TC_163-3', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-3 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4000,30 +4399,35 @@ describe('Image', function () { desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-1 createPixelMap '); - expect(pixelmap !== null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-3 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-2 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-4 + * @tc.name : createPixelMap(decodingOptions:index -1})-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-2 create image source failed'); + it('TC_163-4', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-4 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4036,30 +4440,35 @@ describe('Image', function () { desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:-1 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-2 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-4 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-3 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-5 + * @tc.name : createPixelMap(decodingOptions:sampleSize -1})-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-3 create image source failed'); + it('TC_163-5', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-5 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4070,32 +4479,37 @@ describe('Image', function () { rotate:10, desiredPixelFormat:0, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-3 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-5 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-4 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-6 + * @tc.name : createPixelMap(decodingOptions:rotate -10})-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-4 create image source failed'); + it('TC_163-6', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-6 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4106,68 +4520,78 @@ describe('Image', function () { rotate:-10, desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-4 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-6 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-5 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-7 + * @tc.name : createPixelMap(decodingOptions:unsupported pixelformat)-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-5 create image source failed'); + it('TC_163-7', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-7 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, + editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, + desiredPixelFormat:60, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-5 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-7 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-6 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-8 + * @tc.name : createPixelMap(decodingOptions:editable false})-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-6 create image source failed'); + it('TC_163-8', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-8 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4175,107 +4599,112 @@ describe('Image', function () { sampleSize:1, editable: false, desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + rotate:10, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-6 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_163-8 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) /** - * @tc.number : TC_163-7 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-9 + * @tc.name : createPixelMap(decodingOptions:desiredSize>imagesize)-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-7 create image source failed'); + it('TC_163-9', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-9 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, - editable: false, - desiredSize:{ width:1, height:2}, - rotate:-10, - desiredPixelFormat:11, + editable: true, + desiredSize:{ width:500, height:500}, + rotate:10, + desiredPixelFormat:2, desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, - index:-1 + index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-7 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + console.info('TC_163-9 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } }) /** - * @tc.number : TC_163-8 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-10 + * @tc.name : createPixelMap(decodingOptions:desiredRegion>imagesize)-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info(' TC_163-8 create image source failed'); + it('TC_163-10', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info(' TC_163-10 create image source failed'); expect(false).assertTrue(); done(); } else { let decodingOptions = { sampleSize:1, editable: true, - desiredSize:{ width:400, height:400}, + desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 500, width: 500 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info(' TC_163-8 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-10 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-9 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-11 + * @tc.name : createPixelMapdecodingOptions:x -1 y -1)-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-9', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-9 create image source failed'); + it('TC_163-11', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-11 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4284,34 +4713,39 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 400, width: 500 }, x: 0, y: 0 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-9 createPixelMap '); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-11 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) /** - * @tc.number : TC_163-10 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-12 + * @tc.name : createPixelMap(decodingOptions:x > image.height y > image.width)-png * @tc.desc : 1.create imagesource * 2.set decodingOptions * 3.call createPixelMap * 4.set index=-1,options - * 5.return null + * 5.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-10', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-10 create image source failed'); + it('TC_163-12', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-12 create image source failed'); expect(false).assertTrue(); done(); } else { @@ -4320,112 +4754,94 @@ describe('Image', function () { editable: true, desiredSize:{ width:1, height:2}, rotate:10, - desiredPixelFormat:1, - desiredRegion: { size: { height: 1, width: 2 }, x: -1, y: -1 }, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 500, y: 500 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-10 createPixelMap'); - expect(pixelmap == null ).assertTrue(); - done(); - }) + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-12 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) } }) - /** - * @tc.number : TC_163-11 - * @tc.name : Decode the image to generate a bitmap - * @tc.desc : 1.create imagesource - * 2.set index and DecodeOptions - * 3.create PixelMap - * 4.callback return null - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 1 - */ - it('TC_163-11', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-11 create image source failed'); + * @tc.number : TC_163-13 + * @tc.name : createPixelMap(decodingOptions:rotate>360)-png + * @tc.desc : 1.create imagesource + * 2.set index and DecodeOptions + * 3.create PixelMap + * 4.callback return undefined + * @tc.size : MEDIUM + * @tc.type : Functional + * @tc.level : Level 1 + */ + it('TC_163-13', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-13 create image source failed'); expect(false).assertTrue(); done(); - } else { - imageSourceApi.createPixelMap().then(pixelmap => { - console.info('TC_163-11 createPixelMap'); - expect(pixelmap !== null ).assertTrue(); - done(); - }).catch(error => { - console.log('TC_163-11 error: ' + error); - expect().assertFail(); - done(); - }) - } + } else { + let decodingOptions = { + sampleSize:1, + editable: true, + desiredSize:{ width:1, height:2}, + rotate:500, + desiredPixelFormat:2, + desiredRegion: { size: { height: 1, width: 2 }, x: 1, y: 2 }, + index:0 + }; + imageSourceApi.createPixelMap(decodingOptions,(err,pixelmap) => { + if(pixelmap == undefined){ + console.info('TC_163-13 success '); + expect(true).assertTrue(); + done(); + }else{ + expect(false).assertTrue(); + done(); + } + }) + } }) - /** - * @tc.number : TC_163-12 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-14 + * @tc.name : createPixelMap-promise-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-12', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-12 create image source failed'); + it('TC_163-14', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-14 create image source failed'); expect(false).assertTrue(); done(); } else { - imageSourceApi.createPixelMap(pixelmap => { - console.info('TC_163-12 createPixelMap'); - expect(pixelmap !== null ).assertTrue(); + imageSourceApi.createPixelMap().then(pixelmap => { + console.info('TC_163-14 success'); + expect(pixelmap != undefined ).assertTrue(); done(); - }) - } - }) - - /** - * @tc.number : TC_163-13 - * @tc.name : Decode the image to generate a bitmap - * @tc.desc : 1.create imagesource - * 2.set index and DecodeOptions - * 3.create PixelMap - * 4.callback return null - * @tc.size : MEDIUM - * @tc.type : Functional - * @tc.level : Level 1 - */ - it('TC_163-13', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-13 create image source failed'); - expect(false).assertTrue(); - done(); - } else { - let decodingOptions = { - sampleSize:1, - editable: true, - desiredSize:{ width:1, height:2}, - rotate:10, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 500, y:500 }, - index:0 - }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-13 createPixelMap'); - expect(pixelmap == null ).assertTrue(); + }).catch(error => { + console.log('TC_163-14 error: ' + error); + expect().assertFail(); done(); }) } }) /** - * @tc.number : TC_163-14 - * @tc.name : Decode the image to generate a bitmap + * @tc.number : TC_163-15 + * @tc.name : createPixelMap-callback-png * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap @@ -4434,33 +4850,23 @@ describe('Image', function () { * @tc.type : Functional * @tc.level : Level 1 */ - it('TC_163-14', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.png'); - if (imageSourceApi == null) { - console.info('TC_163-14 create image source failed'); + it('TC_163-15', 0, async function (done) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.png'); + if (imageSourceApi == undefined) { + console.info('TC_163-15 create image source failed'); expect(false).assertTrue(); done(); } else { - let decodingOptions = { - sampleSize:1, - editable: true, - desiredSize:{ width:1, height:2}, - rotate:400, - desiredPixelFormat:2, - desiredRegion: { size: { height: 1, width: 2 }, x: 500, y:500 }, - index:0 - }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_163-14 createPixelMap'); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap((err, pixelmap) => { + console.info('TC_163-15 success'); + expect(pixelmap != undefined ).assertTrue(); done(); }) } - }) - + }) /** * @tc.number : TC_164 - * @tc.name : supportedFormats + * @tc.name : imagesource supportedFormats * @tc.desc : 1.create imagesource * 2.call supportedFormats * @tc.size : MEDIUM @@ -4468,22 +4874,22 @@ describe('Image', function () { * @tc.level : Level 0 */ it('TC_164', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_164 create image source failed'); expect(false).assertTrue(); done(); } else { - expect(imageSourceApi.supportedFormats != null).assertTrue(); + expect(imageSourceApi.supportedFormats != undefined).assertTrue(); console.info(imageSourceApi.supportedFormats); - console.info('TC_164 suc '); + console.info('TC_164 success '); done(); } }) /** * @tc.number : TC_166 - * @tc.name : supportedFormats + * @tc.name : imagepacker supportedFormats * @tc.desc : 1.create imagepacker * 2.call supportedFormats * @tc.size : MEDIUM @@ -4492,12 +4898,12 @@ describe('Image', function () { */ it('TC_166', 0, async function (done) { const imagePackerApi = image.createImagePacker(); - if (imagePackerApi == null) { + if (imagePackerApi == undefined) { console.info('TC_166 create image packer failed'); expect(false).assertTrue(); done(); } else { - expect(imagePackerApi.supportedFormats != null).assertTrue(); + expect(imagePackerApi.supportedFormats != undefined).assertTrue(); console.info(imagePackerApi.supportedFormats); console.info('TC_166 success '); done(); @@ -4506,17 +4912,17 @@ describe('Image', function () { /** * @tc.number : TC_167 - * @tc.name : Decode the image to generate a bitmap + * @tc.name : createPixelMap-unsupported image format * @tc.desc : 1.create imagesource * 2.set index and DecodeOptions * 3.create PixelMap - * 4.callback return null + * 4.callback return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_167', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.arw'); + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.arw'); let decodingOptions = { sampleSize:1, editable: true, @@ -4526,9 +4932,9 @@ describe('Image', function () { desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, index:0 }; - imageSourceApi.createPixelMap(decodingOptions, pixelmap => { - console.info('TC_167 createPixelMap '); - expect(pixelmap == null ).assertTrue(); + imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { + console.info('TC_167 success '); + expect(pixelmap == undefined ).assertTrue(); done(); }) }) @@ -4545,9 +4951,9 @@ describe('Image', function () { */ it('TC_168', 0, async function (done) { const Color = new ArrayBuffer(96); - let opts = { alphaType: 0, editable: true, pixelFormat: 3, scaleMode: 1, size: { height: 2, width: 3 } } + let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } image.createPixelMap(Color, opts, (error,pixelmap) => { - if(pixelmap == null){ + if(pixelmap == undefined){ console.info('TC_168 create pixelmap failed'); expect(false).assertTrue(); done(); @@ -4571,8 +4977,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_169', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test.jpg'); + if (imageSourceApi == undefined) { console.info('TC_169 create image source failed'); expect(false).assertTrue(); done(); @@ -4587,10 +4993,9 @@ describe('Image', function () { index:0 }; imageSourceApi.createPixelMap(decodingOptions, (err, pixelmap) => { - console.info('TC_169 createPixelMap '); pixelmap.getImageInfo( (err,imageInfo) => { - if (imageInfo !== null) { - console.info('TC_169 imageInfo is ready'); + if (imageInfo != undefined) { + console.info('TC_169 success'); expect(imageInfo.size.height == 2).assertTrue(); expect(imageInfo.size.width == 1).assertTrue(); done(); @@ -4606,17 +5011,17 @@ describe('Image', function () { /** * @tc.number : TC_174 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(BitsPerSample)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174 create image source failed'); expect(false).assertTrue(); done(); @@ -4644,17 +5049,17 @@ describe('Image', function () { /** * @tc.number : TC_174-1 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(Orientation)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-1 create image source failed'); expect(false).assertTrue(); done(); @@ -4680,17 +5085,17 @@ describe('Image', function () { /** * @tc.number : TC_174-2 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageLength)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-2 create image source failed'); expect(false).assertTrue(); done(); @@ -4716,17 +5121,17 @@ describe('Image', function () { /** * @tc.number : TC_174-3 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageWidth)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-3 create image source failed'); expect(false).assertTrue(); done(); @@ -4752,17 +5157,17 @@ describe('Image', function () { /** * @tc.number : TC_174-4 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitude)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-4 create image source failed'); expect(false).assertTrue(); done(); @@ -4787,17 +5192,17 @@ describe('Image', function () { /** * @tc.number : TC_174-5 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitude)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-5 create image source failed'); expect(false).assertTrue(); done(); @@ -4823,22 +5228,22 @@ describe('Image', function () { /** * @tc.number : TC_174-6 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitudeRef)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-6 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'}; + let property = {index:0,defaultValue:'1'}; imageSourceApi.modifyImageProperty("GPSLatitudeRef","N",property).then(() => { imageSourceApi.getImageProperty("GPSLatitudeRef",property).then((value) => { console.info('TC_174-6 GPSLatitudeRef ' + value); @@ -4859,25 +5264,25 @@ describe('Image', function () { /** * @tc.number : TC_174-7 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitudeRef)-promise * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_174-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_174-7 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'}; - imageSourceApi.modifyImageProperty("GPSLatitudeRef","W",property).then(() => { - imageSourceApi.getImageProperty("GPSLatitudeRef",property).then((value) => { - console.info('TC_174-7 GPSLatitudeRef ' + value); + let property = {index:0,defaultValue:'1'}; + imageSourceApi.modifyImageProperty("GPSLongitudeRef","W",property).then(() => { + imageSourceApi.getImageProperty("GPSLongitudeRef",property).then((value) => { + console.info('TC_174-7 GPSLongitudeRef ' + value); expect(value == 'W').assertTrue(); done(); }).catch((err)=>{ @@ -4895,17 +5300,17 @@ describe('Image', function () { /** * @tc.number : TC_175 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(BitsPerSample)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175 create image source failed'); expect(false).assertTrue(); done(); @@ -4922,17 +5327,17 @@ describe('Image', function () { /** * @tc.number : TC_175-1 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(Orientation)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-1 create image source failed'); expect(false).assertTrue(); done(); @@ -4949,17 +5354,17 @@ describe('Image', function () { /** * @tc.number : TC_175-2 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageLength)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-2 create image source failed'); expect(false).assertTrue(); done(); @@ -4976,17 +5381,17 @@ describe('Image', function () { /** * @tc.number : TC_175-3 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageWidth)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-3 create image source failed'); expect(false).assertTrue(); done(); @@ -5003,17 +5408,17 @@ describe('Image', function () { /** * @tc.number : TC_175-4 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitude)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-4 create image source failed'); expect(false).assertTrue(); done(); @@ -5030,17 +5435,17 @@ describe('Image', function () { /** * @tc.number : TC_175-5 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitude)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-5 create image source failed'); expect(false).assertTrue(); done(); @@ -5057,17 +5462,17 @@ describe('Image', function () { /** * @tc.number : TC_175-6 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitudeRef)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-6 create image source failed'); expect(false).assertTrue(); done(); @@ -5084,17 +5489,17 @@ describe('Image', function () { /** * @tc.number : TC_175-7 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitudeRef)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_175-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_175-7 create image source failed'); expect(false).assertTrue(); done(); @@ -5111,22 +5516,22 @@ describe('Image', function () { /** * @tc.number : TC_176 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(BitsPerSample,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("BitsPerSample","4",property,() => { imageSourceApi.getImageProperty("BitsPerSample",property,(error,value) => { console.info('TC_176 BitsPerSample ' + value); @@ -5139,22 +5544,22 @@ describe('Image', function () { /** * @tc.number : TC_176-1 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(Orientation,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-1 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("Orientation","2",property,() => { imageSourceApi.getImageProperty("Orientation",property,(error,value) => { console.info('TC_176-1 Orientation ' + value); @@ -5167,22 +5572,22 @@ describe('Image', function () { /** * @tc.number : TC_176-2 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageLength,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-2 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("ImageLength","200",property,() => { imageSourceApi.getImageProperty("ImageLength",property,(error,value) => { console.info('TC_176-2 ImageLength ' + value); @@ -5195,22 +5600,22 @@ describe('Image', function () { /** * @tc.number : TC_176-3 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(ImageWidth,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-3 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("ImageWidth","200",property,() => { imageSourceApi.getImageProperty("ImageWidth",property,(error,value) => { console.info('TC_176-3 ImageWidth ' + value); @@ -5223,22 +5628,22 @@ describe('Image', function () { /** * @tc.number : TC_176-4 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitude,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-4 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("GPSLatitude","114,3",property,() => { imageSourceApi.getImageProperty("GPSLatitude",property,(error,value) => { console.info('TC_176-4 GPSLatitude ' + value); @@ -5251,22 +5656,22 @@ describe('Image', function () { /** * @tc.number : TC_176-5 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitude,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-5 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("GPSLongitude","18,2",property,() => { imageSourceApi.getImageProperty("GPSLongitude",property,(error,value) => { console.info('TC_176-5 GPSLongitude ' + value); @@ -5279,22 +5684,22 @@ describe('Image', function () { /** * @tc.number : TC_176-6 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLatitudeRef,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-6 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("GPSLatitudeRef","N",property,() => { imageSourceApi.getImageProperty("GPSLatitudeRef",property,(error,value) => { console.info('TC_176-6 GPSLatitudeRef ' + value); @@ -5307,22 +5712,22 @@ describe('Image', function () { /** * @tc.number : TC_176-7 - * @tc.name : modifyImageProperty + * @tc.name : modifyImageProperty(GPSLongitudeRef,property)-callback * @tc.desc : 1.create imagesource * 2.call modifyImageProperty(key,value,options) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_176-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_176-7 create image source failed'); expect(false).assertTrue(); done(); } else { - let property = {index:1,defaultValue:'1'} + let property = {index:0,defaultValue:'1'} imageSourceApi.modifyImageProperty("GPSLongitudeRef","W",property,() => { imageSourceApi.getImageProperty("GPSLongitudeRef",property,(error,value) => { console.info('TC_176-7 GPSLongitudeRef ' + value); @@ -5335,7 +5740,7 @@ describe('Image', function () { /** * @tc.number : TC_171 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(BitsPerSample)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(BitsPerSample) @@ -5345,8 +5750,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171 create image source failed'); expect(false).assertTrue(); done(); @@ -5354,7 +5759,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("BitsPerSample") .then(data => { console.info('TC_171 BitsPerSample ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5367,7 +5772,7 @@ describe('Image', function () { /** * @tc.number : TC_171-1 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(Orientation)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(Orientation) @@ -5377,8 +5782,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-1 create image source failed'); expect(false).assertTrue(); done(); @@ -5386,7 +5791,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("Orientation") .then(data => { console.info('TC_171-1 Orientation ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5399,7 +5804,7 @@ describe('Image', function () { /** * @tc.number : TC_171-2 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageLength)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(ImageLength) @@ -5409,8 +5814,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-2 create image source failed'); expect(false).assertTrue(); done(); @@ -5418,7 +5823,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("ImageLength") .then(data => { console.info('TC_171-2 ImageLength ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5431,7 +5836,7 @@ describe('Image', function () { /** * @tc.number : TC_171-3 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageWidth)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(ImageWidth) @@ -5441,8 +5846,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-3 create image source failed'); expect(false).assertTrue(); done(); @@ -5450,7 +5855,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("ImageWidth") .then(data => { console.info('TC_171-3 ImageWidth ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5463,7 +5868,7 @@ describe('Image', function () { /** * @tc.number : TC_171-4 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitude)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLatitude) @@ -5473,8 +5878,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-4 create image source failed'); expect(false).assertTrue(); done(); @@ -5482,7 +5887,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("GPSLatitude") .then(data => { console.info('TC_171-4 GPSLatitude ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5495,7 +5900,7 @@ describe('Image', function () { /** * @tc.number : TC_171-5 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitude)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLongitude) @@ -5505,8 +5910,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-5 create image source failed'); expect(false).assertTrue(); done(); @@ -5514,7 +5919,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("GPSLongitude") .then(data => { console.info('TC_171-5 GPSLongitude ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5527,7 +5932,7 @@ describe('Image', function () { /** * @tc.number : TC_171-6 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitudeRef)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLatitudeRef) @@ -5537,8 +5942,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-6 create image source failed'); expect(false).assertTrue(); done(); @@ -5546,7 +5951,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("GPSLatitudeRef") .then(data => { console.info('TC_171-6 GPSLatitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5559,7 +5964,7 @@ describe('Image', function () { /** * @tc.number : TC_171-7 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitudeRef)-promise * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLongitudeRef) @@ -5569,8 +5974,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-7 create image source failed'); expect(false).assertTrue(); done(); @@ -5578,7 +5983,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("GPSLongitudeRef") .then(data => { console.info('TC_171-7 GPSLongitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5591,7 +5996,7 @@ describe('Image', function () { /** * @tc.number : TC_171-8 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(DateTimeOriginal) * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(ImageLength) @@ -5601,8 +6006,8 @@ describe('Image', function () { * @tc.level : Level 1 */ it('TC_171-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_171-8 create image source failed'); expect(false).assertTrue(); done(); @@ -5610,7 +6015,7 @@ describe('Image', function () { imageSourceApi.getImageProperty("DateTimeOriginal") .then(data => { console.info('TC_171-8 DateTimeOriginal ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) .catch(error => { @@ -5623,24 +6028,24 @@ describe('Image', function () { /** * @tc.number : TC_172 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(BitsPerSample)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(BitsPerSample) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("BitsPerSample",(error,data) => { console.info('TC_172 BitsPerSample ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5648,24 +6053,24 @@ describe('Image', function () { /** * @tc.number : TC_172-1 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(Orientation)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(Orientation) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-1 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("Orientation",(error,data) => { console.info('TC_172-1 Orientation ' + data); - expect(data !== undefined && data !== null && data !== '').assertTrue(); + expect(data != undefined && data != '').assertTrue(); done(); }) } @@ -5673,24 +6078,24 @@ describe('Image', function () { /** * @tc.number : TC_172-2 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageLength)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(ImageLength) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-2 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("ImageLength",(error,data) => { console.info('TC_172-2 ImageLength ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5698,24 +6103,24 @@ describe('Image', function () { /** * @tc.number : TC_172-3 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageWidth)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(ImageWidth) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-3 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("ImageWidth",(error,data) => { console.info('TC_172-3 ImageWidth ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5723,24 +6128,24 @@ describe('Image', function () { /** * @tc.number : TC_172-4 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitude)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(GPSLatitude) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-4 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("GPSLatitude",(error,data) => { console.info('TC_172-4 GPSLatitude ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5748,24 +6153,24 @@ describe('Image', function () { /** * @tc.number : TC_172-5 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitude)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(GPSLongitude) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-5 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("GPSLongitude",(error,data) => { console.info('TC_172-5 GPSLongitude ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5773,24 +6178,24 @@ describe('Image', function () { /** * @tc.number : TC_172-6 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitudeRef)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(GPSLatitudeRef) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-6 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("GPSLatitudeRef",(error,data) => { console.info('TC_172-6 GPSLatitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5798,24 +6203,24 @@ describe('Image', function () { /** * @tc.number : TC_172-7 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitudeRef)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(GPSLongitudeRef) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-7 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("GPSLongitudeRef",(error,data) => { console.info('TC_172-7 GPSLongitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5823,24 +6228,24 @@ describe('Image', function () { /** * @tc.number : TC_172-8 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(DateTimeOriginal)-callback * @tc.desc : 1.create imagesource * 2.call getImageProperty(DateTimeOriginal) - * 3.return null + * 3.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_172-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_172-8 create image source failed'); expect(false).assertTrue(); done(); } else { imageSourceApi.getImageProperty("DateTimeOriginal",(error,data) => { console.info('TC_172-8 DateTimeOriginal ' + data); - expect(data !== null && data !== undefined && data !== '' ).assertTrue(); + expect(data != undefined && data != '' ).assertTrue(); done(); }) } @@ -5848,18 +6253,18 @@ describe('Image', function () { /** * @tc.number : TC_173 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(BitsPerSample,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(BitsPerSample,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173 create image source failed'); expect(false).assertTrue(); done(); @@ -5867,8 +6272,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("BitsPerSample",property,(error,data) => { console.info('TC_173 BitsPerSample ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -5876,18 +6280,18 @@ describe('Image', function () { /** * @tc.number : TC_173-1 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(Orientation,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(Orientation,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-1', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-1 create image source failed'); expect(false).assertTrue(); done(); @@ -5895,8 +6299,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("Orientation",property,(error,data) => { console.info('TC_173-1 Orientation ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -5904,18 +6307,18 @@ describe('Image', function () { /** * @tc.number : TC_173-2 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageLength,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(ImageLength,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-2', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-2 create image source failed'); expect(false).assertTrue(); done(); @@ -5923,8 +6326,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("ImageLength",property,(error,data) => { console.info('TC_173-2 ImageLength ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -5932,18 +6334,18 @@ describe('Image', function () { /** * @tc.number : TC_173-3 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(ImageWidth,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(ImageWidth,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-3', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-3 create image source failed'); expect(false).assertTrue(); done(); @@ -5951,8 +6353,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("ImageWidth",property,(error,data) => { console.info('TC_173-3 ImageWidth ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -5960,18 +6361,18 @@ describe('Image', function () { /** * @tc.number : TC_173-4 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitude,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLatitude,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-4', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-4 create image source failed'); expect(false).assertTrue(); done(); @@ -5979,8 +6380,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("GPSLatitude",property,(error,data) => { console.info('TC_173-4 GPSLatitude ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -5988,18 +6388,18 @@ describe('Image', function () { /** * @tc.number : TC_173-5 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitude,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLongitude,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-5', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-5 create image source failed'); expect(false).assertTrue(); done(); @@ -6007,8 +6407,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("GPSLongitude",property,(error,data) => { console.info('TC_173-5 GPSLongitude ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -6016,18 +6415,18 @@ describe('Image', function () { /** * @tc.number : TC_173-6 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLatitudeRef,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLatitudeRef,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-6', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-6 create image source failed'); expect(false).assertTrue(); done(); @@ -6035,8 +6434,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("GPSLatitudeRef",property,(error,data) => { console.info('TC_173-6 GPSLatitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -6044,18 +6442,18 @@ describe('Image', function () { /** * @tc.number : TC_173-7 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(GPSLongitudeRef,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(GPSLongitudeRef,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-7', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-7 create image source failed'); expect(false).assertTrue(); done(); @@ -6063,8 +6461,7 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("GPSLongitudeRef",property,(error,data) => { console.info('TC_173-7 GPSLongitudeRef ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } @@ -6072,18 +6469,18 @@ describe('Image', function () { /** * @tc.number : TC_173-8 - * @tc.name : getImageProperty + * @tc.name : getImageProperty(DateTimeOriginal,property)-callback * @tc.desc : 1.create imagesource * 2.set property * 3.call getImageProperty(DateTimeOriginal,property) - * 4.return null + * 4.return undefined * @tc.size : MEDIUM * @tc.type : Functional * @tc.level : Level 1 */ it('TC_173-8', 0, async function (done) { - const imageSourceApi = image.createImageSource('/data/local/tmp/test_exif.jpg'); - if (imageSourceApi == null) { + const imageSourceApi = image.createImageSource('file:///data/local/tmp/test_exif.jpg'); + if (imageSourceApi == undefined) { console.info('TC_173-8 create image source failed'); expect(false).assertTrue(); done(); @@ -6091,10 +6488,9 @@ describe('Image', function () { let property = {index:0,defaultValue:'9999'} imageSourceApi.getImageProperty("DateTimeOriginal",property,(error,data) => { console.info('TC_173-8 DateTimeOriginal ' + data); - expect(data !== null && data !== undefined && data !== '').assertTrue(); - expect(data !== '9999').assertTrue(); + expect(data != '9999' && data != undefined && data != '').assertTrue(); done(); }) } }) -}) \ No newline at end of file +}) diff --git a/multimedia/image/image_js_standard/src/main/js/test/testImg.js b/multimedia/image/image_js_standard/src/main/js/test/testImg.js index 8cd8157aaba1de6a4203332b4ff6f403f057076a..7527cec4bbb6adb1b3ecc4d1af4267ea8abc2ae4 100644 --- a/multimedia/image/image_js_standard/src/main/js/test/testImg.js +++ b/multimedia/image/image_js_standard/src/main/js/test/testImg.js @@ -1,742 +1,615 @@ -/* - * Copyright (C) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -let testPng = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 100, 0, 0, 0, 100, 8, 6, 0, 0, 0, 112, 226, 149, - 84, 0, 0, 32, 0, 73, 68, 65, 84, 120, 1, 212, 193, 123, 176, 231, 247, 93, 223, 247, 231, 251, 253, 249, 254, 126, 231, 156, 61, 123, 191, 105, - 37, 173, 180, 186, 95, 173, 187, 228, 43, 166, 182, 133, 109, 44, 108, 160, 6, 154, 105, 157, 116, 104, 50, 64, 72, 155, 41, 195, 64, 167, 13, 80, - 218, 73, 166, 76, 254, 104, 254, 104, 167, 51, 253, 39, 51, 45, 52, 77, 161, 36, 29, 19, 2, 24, 98, 140, 28, 91, 24, 91, 150, 44, 164, 213, - 93, 187, 146, 86, 123, 95, 237, 253, 156, 243, 251, 253, 190, 223, 247, 235, 213, 253, 237, 34, 220, 106, 86, 182, 105, 160, 99, 30, 143, 224, 175, 177, - 31, 251, 145, 31, 102, 101, 109, 133, 133, 241, 194, 174, 42, 253, 224, 108, 54, 123, 100, 24, 250, 235, 135, 161, 178, 239, 251, 67, 17, 241, 149, 42, - 253, 238, 100, 50, 121, 178, 117, 76, 207, 31, 221, 194, 243, 7, 30, 229, 187, 89, 240, 215, 212, 15, 253, 208, 167, 24, 47, 108, 98, 186, 118, 242, - 253, 165, 250, 135, 150, 62, 176, 178, 178, 186, 208, 247, 61, 146, 232, 103, 61, 173, 235, 4, 62, 106, 243, 175, 165, 250, 159, 108, 61, 149, 153, 126, - 252, 235, 79, 241, 221, 42, 248, 107, 232, 83, 159, 252, 126, 90, 27, 1, 250, 158, 217, 172, 255, 167, 171, 107, 43, 183, 204, 102, 61, 179, 233, 140, - 201, 100, 66, 149, 176, 4, 1, 173, 53, 70, 163, 17, 173, 181, 87, 128, 255, 102, 54, 27, 254, 143, 214, 114, 248, 198, 83, 79, 243, 221, 168, 241, - 215, 208, 237, 183, 221, 66, 102, 94, 93, 195, 240, 63, 207, 102, 211, 251, 214, 86, 39, 172, 156, 91, 101, 101, 117, 194, 249, 149, 53, 250, 97, 96, - 50, 157, 113, 254, 252, 10, 67, 153, 201, 116, 74, 149, 182, 70, 196, 71, 50, 242, 108, 102, 62, 177, 107, 231, 14, 31, 57, 122, 140, 239, 54, 141, - 191, 160, 237, 91, 55, 51, 30, 141, 216, 182, 109, 235, 120, 211, 198, 13, 235, 150, 214, 45, 141, 186, 46, 180, 113, 227, 6, 175, 174, 174, 241, 87, - 237, 83, 159, 122, 132, 79, 127, 252, 251, 121, 97, 223, 190, 191, 63, 235, 251, 31, 95, 91, 155, 196, 233, 211, 167, 89, 93, 153, 176, 54, 153, 48, - 212, 192, 80, 66, 18, 85, 98, 54, 155, 49, 157, 78, 137, 8, 76, 44, 142, 70, 221, 123, 35, 120, 153, 244, 179, 87, 238, 216, 195, 145, 99, 135, - 248, 110, 210, 241, 29, 186, 239, 190, 123, 233, 103, 253, 226, 120, 220, 30, 176, 253, 48, 196, 93, 147, 201, 100, 199, 80, 53, 93, 92, 92, 124, 117, - 109, 109, 237, 209, 141, 27, 55, 254, 193, 245, 215, 95, 127, 124, 239, 222, 189, 12, 195, 192, 95, 133, 8, 248, 151, 127, 240, 185, 235, 134, 161, 255, - 143, 38, 147, 181, 56, 123, 246, 12, 179, 217, 140, 201, 108, 74, 169, 232, 135, 129, 140, 4, 155, 204, 100, 174, 170, 88, 93, 93, 69, 18, 227, 81, - 183, 117, 97, 60, 254, 197, 136, 120, 146, 54, 125, 133, 239, 50, 29, 223, 198, 189, 247, 220, 197, 179, 207, 189, 196, 226, 194, 232, 254, 229, 117, 139, - 63, 11, 60, 50, 244, 195, 150, 217, 48, 208, 186, 14, 19, 100, 22, 227, 241, 194, 143, 75, 254, 234, 139, 47, 190, 248, 143, 134, 97, 248, 131, 204, - 212, 5, 252, 101, 75, 155, 176, 63, 58, 153, 206, 110, 155, 76, 166, 172, 172, 174, 49, 153, 206, 24, 134, 1, 99, 144, 113, 136, 204, 196, 54, 153, - 201, 92, 85, 49, 157, 78, 89, 89, 93, 163, 181, 188, 167, 139, 246, 31, 63, 249, 141, 39, 126, 249, 129, 251, 31, 224, 137, 39, 159, 230, 187, 69, - 242, 45, 188, 255, 125, 239, 37, 91, 151, 239, 125, 207, 253, 63, 178, 180, 180, 244, 235, 227, 209, 232, 51, 150, 183, 204, 102, 51, 214, 214, 86, 89, - 91, 155, 176, 178, 178, 198, 116, 58, 163, 239, 135, 113, 149, 190, 39, 34, 254, 151, 174, 235, 62, 35, 41, 248, 75, 246, 233, 79, 125, 146, 197, 241, - 186, 5, 75, 223, 95, 67, 181, 233, 116, 202, 116, 50, 101, 24, 6, 108, 97, 153, 214, 26, 17, 193, 91, 108, 51, 215, 90, 35, 34, 152, 205, 102, - 72, 34, 51, 31, 121, 224, 254, 7, 183, 65, 240, 221, 164, 227, 29, 124, 240, 131, 239, 103, 113, 221, 152, 209, 180, 251, 248, 226, 120, 252, 63, 88, - 190, 106, 101, 117, 149, 181, 181, 53, 86, 86, 87, 153, 245, 51, 250, 190, 152, 78, 103, 72, 98, 24, 6, 134, 97, 32, 34, 118, 117, 93, 247, 43, - 85, 117, 40, 51, 63, 95, 85, 252, 165, 137, 160, 52, 236, 138, 200, 123, 38, 211, 9, 125, 223, 51, 87, 85, 64, 144, 25, 204, 69, 4, 146, 200, - 76, 230, 36, 49, 55, 12, 3, 17, 48, 12, 3, 195, 208, 174, 109, 173, 93, 11, 188, 201, 119, 145, 142, 119, 176, 184, 48, 198, 131, 239, 88, 183, - 184, 244, 143, 9, 174, 90, 89, 91, 97, 50, 153, 178, 58, 153, 50, 157, 245, 204, 102, 61, 85, 98, 78, 18, 195, 48, 48, 23, 17, 116, 93, 119, - 181, 164, 95, 152, 205, 102, 79, 3, 199, 184, 140, 255, 226, 231, 126, 158, 151, 95, 126, 153, 135, 191, 239, 225, 118, 195, 13, 215, 143, 55, 109, 222, - 180, 28, 17, 203, 4, 75, 24, 108, 97, 27, 75, 171, 42, 77, 215, 38, 107, 43, 215, 93, 119, 195, 228, 23, 254, 193, 127, 185, 222, 25, 155, 185, - 96, 54, 155, 209, 15, 3, 85, 34, 51, 177, 185, 40, 34, 152, 179, 205, 219, 169, 68, 63, 155, 49, 30, 143, 151, 34, 189, 17, 155, 239, 38, 29, - 151, 241, 177, 143, 62, 76, 223, 15, 227, 117, 235, 22, 255, 243, 209, 168, 187, 107, 229, 252, 10, 125, 223, 51, 157, 245, 12, 67, 49, 157, 245, 244, - 179, 30, 219, 204, 101, 38, 173, 53, 102, 179, 25, 17, 65, 215, 117, 116, 93, 247, 189, 125, 223, 255, 141, 241, 120, 252, 63, 78, 167, 83, 126, 255, - 115, 191, 203, 71, 63, 246, 253, 60, 250, 232, 23, 214, 173, 91, 183, 124, 205, 194, 120, 124, 71, 55, 234, 238, 24, 141, 186, 155, 33, 174, 109, 45, - 183, 69, 198, 186, 140, 88, 144, 205, 156, 36, 106, 24, 214, 84, 53, 147, 106, 165, 239, 215, 142, 255, 237, 191, 243, 183, 103, 191, 246, 107, 255, 219, - 50, 113, 2, 8, 44, 19, 209, 184, 28, 219, 188, 197, 54, 195, 48, 48, 26, 141, 48, 38, 34, 107, 227, 198, 205, 62, 124, 248, 48, 255, 221, 63, - 250, 21, 254, 193, 47, 254, 87, 124, 55, 232, 120, 155, 77, 159, 249, 40, 221, 73, 104, 109, 116, 111, 215, 181, 31, 150, 204, 116, 54, 99, 58, 157, - 49, 155, 205, 152, 205, 102, 212, 48, 80, 85, 100, 38, 85, 69, 85, 49, 215, 90, 35, 51, 145, 68, 187, 228, 111, 76, 167, 211, 127, 246, 244, 51, - 79, 158, 95, 89, 89, 187, 243, 217, 103, 159, 126, 248, 154, 107, 118, 127, 100, 52, 30, 223, 213, 117, 221, 14, 240, 66, 107, 13, 73, 16, 96, 155, - 0, 100, 19, 128, 36, 172, 17, 86, 97, 25, 89, 220, 112, 195, 117, 220, 121, 231, 237, 28, 56, 112, 128, 204, 36, 91, 226, 161, 199, 134, 136, 96, - 46, 34, 136, 8, 36, 17, 17, 100, 38, 146, 200, 76, 50, 131, 42, 113, 197, 21, 59, 151, 127, 241, 151, 126, 241, 31, 110, 221, 182, 245, 137, 243, - 231, 206, 125, 227, 87, 255, 215, 127, 122, 240, 153, 167, 159, 62, 182, 119, 239, 222, 67, 207, 61, 255, 210, 217, 67, 135, 143, 206, 214, 173, 91, 226, - 228, 201, 147, 252, 255, 169, 227, 109, 62, 112, 2, 214, 111, 88, 100, 50, 233, 63, 156, 25, 59, 167, 211, 158, 97, 24, 24, 134, 1, 169, 24, 106, - 192, 54, 17, 129, 109, 170, 10, 73, 216, 166, 181, 70, 102, 98, 67, 102, 50, 26, 141, 238, 254, 91, 127, 235, 51, 127, 127, 58, 153, 221, 186, 121, - 243, 166, 143, 108, 216, 176, 113, 231, 120, 52, 138, 11, 32, 192, 54, 24, 162, 5, 146, 136, 72, 230, 194, 5, 1, 68, 16, 145, 68, 66, 89, 96, - 179, 176, 176, 192, 35, 143, 124, 130, 190, 239, 249, 220, 231, 254, 128, 51, 103, 206, 48, 244, 61, 217, 26, 93, 215, 17, 17, 216, 102, 46, 34, 152, - 155, 205, 102, 84, 21, 17, 1, 4, 216, 220, 127, 255, 125, 163, 235, 174, 223, 243, 189, 182, 190, 119, 221, 226, 130, 55, 172, 95, 158, 94, 123, 237, - 53, 167, 239, 190, 231, 174, 35, 251, 247, 237, 123, 229, 200, 161, 67, 207, 156, 59, 119, 246, 107, 131, 227, 233, 126, 82, 135, 178, 197, 240, 235, 191, - 249, 47, 249, 171, 214, 120, 155, 219, 111, 185, 153, 67, 175, 29, 203, 205, 91, 55, 252, 116, 73, 119, 77, 38, 83, 38, 147, 9, 147, 201, 132, 201, - 108, 74, 85, 81, 37, 170, 138, 97, 24, 136, 8, 50, 147, 185, 136, 192, 54, 182, 129, 196, 214, 194, 35, 143, 124, 226, 131, 119, 222, 121, 199, 221, - 235, 214, 173, 91, 191, 110, 105, 41, 50, 27, 115, 153, 73, 70, 227, 146, 32, 35, 9, 130, 224, 146, 8, 200, 76, 8, 192, 129, 205, 69, 182, 88, - 183, 110, 29, 119, 220, 113, 7, 119, 221, 117, 23, 235, 215, 47, 115, 228, 240, 97, 222, 60, 121, 18, 201, 64, 48, 103, 27, 73, 84, 21, 146, 176, - 77, 102, 178, 48, 30, 179, 107, 215, 21, 252, 196, 79, 254, 36, 187, 174, 184, 2, 213, 64, 215, 90, 100, 102, 183, 254, 130, 43, 175, 188, 114, 215, - 158, 61, 187, 239, 216, 182, 125, 219, 135, 218, 104, 244, 239, 163, 250, 161, 104, 220, 23, 65, 222, 114, 203, 205, 39, 206, 157, 247, 234, 67, 15, 220, - 195, 254, 253, 251, 249, 171, 208, 120, 155, 219, 110, 185, 153, 174, 235, 218, 120, 113, 244, 119, 74, 190, 233, 252, 202, 10, 147, 201, 148, 201, 116, 194, - 116, 58, 101, 58, 235, 25, 250, 1, 73, 84, 21, 182, 153, 147, 132, 109, 34, 130, 204, 96, 46, 51, 248, 208, 135, 62, 148, 55, 223, 124, 51, 219, - 182, 109, 103, 52, 26, 17, 17, 68, 64, 102, 99, 46, 34, 200, 76, 34, 32, 51, 177, 77, 107, 13, 99, 36, 147, 145, 32, 99, 204, 92, 4, 23, - 101, 6, 59, 118, 236, 224, 190, 251, 238, 225, 193, 119, 63, 200, 116, 54, 227, 229, 151, 94, 102, 50, 153, 50, 30, 143, 176, 77, 85, 81, 85, 84, - 21, 153, 73, 215, 53, 150, 151, 215, 241, 31, 252, 216, 143, 242, 177, 143, 125, 148, 57, 169, 192, 198, 54, 17, 129, 44, 70, 227, 17, 59, 118, 238, - 224, 154, 107, 174, 25, 109, 221, 190, 117, 219, 116, 50, 185, 119, 229, 252, 202, 15, 73, 254, 200, 85, 87, 109, 95, 159, 45, 14, 62, 255, 252, 139, - 103, 127, 247, 243, 191, 207, 193, 215, 223, 224, 47, 83, 227, 109, 110, 186, 233, 6, 206, 158, 95, 99, 105, 221, 248, 135, 250, 26, 238, 152, 78, 167, - 172, 173, 173, 49, 157, 205, 232, 251, 129, 201, 100, 74, 13, 133, 109, 108, 83, 85, 204, 117, 221, 136, 136, 96, 110, 54, 155, 97, 155, 135, 30, 122, - 128, 31, 251, 177, 31, 229, 166, 155, 110, 98, 97, 97, 76, 102, 35, 51, 201, 76, 32, 120, 75, 102, 146, 25, 204, 101, 6, 178, 201, 76, 46, 49, - 17, 1, 17, 68, 4, 17, 129, 109, 36, 33, 21, 17, 176, 109, 251, 22, 222, 253, 238, 7, 185, 118, 247, 110, 94, 124, 241, 69, 78, 157, 58, 141, - 109, 50, 19, 12, 17, 65, 215, 53, 70, 163, 17, 215, 93, 183, 135, 159, 248, 201, 159, 96, 231, 206, 157, 72, 133, 106, 160, 170, 176, 141, 109, 140, - 177, 133, 100, 108, 179, 101, 235, 22, 246, 92, 183, 135, 133, 165, 133, 238, 244, 169, 83, 187, 39, 147, 181, 143, 102, 196, 71, 126, 253, 127, 255, 103, - 53, 38, 247, 221, 117, 231, 237, 147, 231, 94, 124, 137, 191, 44, 141, 183, 185, 241, 198, 235, 89, 191, 97, 209, 67, 213, 13, 195, 48, 124, 223, 100, - 50, 101, 232, 7, 166, 179, 25, 211, 217, 12, 201, 88, 38, 51, 105, 173, 33, 137, 136, 96, 52, 26, 33, 153, 190, 239, 217, 180, 105, 19, 63, 250, - 163, 159, 230, 231, 126, 238, 103, 185, 251, 238, 187, 89, 88, 24, 3, 65, 4, 23, 101, 38, 17, 129, 109, 34, 130, 8, 200, 108, 92, 18, 68, 4, - 16, 16, 92, 18, 16, 17, 68, 38, 193, 5, 22, 223, 148, 168, 68, 215, 37, 183, 220, 122, 51, 119, 220, 126, 27, 123, 247, 62, 203, 177, 99, 199, - 200, 72, 90, 235, 232, 90, 99, 52, 234, 88, 90, 28, 211, 247, 61, 207, 61, 247, 28, 235, 55, 172, 103, 215, 174, 157, 180, 214, 144, 196, 156, 36, - 164, 66, 22, 82, 17, 128, 109, 90, 107, 236, 220, 185, 157, 171, 174, 186, 138, 243, 231, 207, 230, 233, 211, 167, 174, 12, 226, 227, 209, 229, 157, 147, - 89, 191, 111, 251, 142, 157, 135, 111, 191, 237, 86, 246, 237, 219, 207, 191, 171, 198, 219, 188, 252, 202, 62, 174, 191, 238, 58, 192, 107, 54, 159, 236, - 251, 217, 198, 217, 108, 198, 80, 133, 36, 230, 84, 98, 206, 54, 153, 73, 102, 50, 153, 76, 168, 42, 62, 240, 129, 247, 243, 203, 191, 252, 75, 252, - 248, 143, 255, 56, 187, 119, 95, 67, 102, 0, 65, 107, 73, 102, 35, 34, 152, 203, 12, 50, 147, 204, 4, 76, 68, 2, 6, 2, 219, 68, 4, 17, - 96, 155, 57, 27, 108, 17, 4, 145, 129, 101, 8, 136, 224, 34, 203, 216, 102, 215, 174, 157, 220, 118, 199, 109, 28, 56, 112, 128, 55, 79, 158, 100, - 212, 37, 59, 118, 108, 227, 193, 135, 238, 103, 195, 134, 245, 156, 58, 117, 134, 55, 222, 56, 200, 151, 191, 252, 37, 206, 157, 59, 207, 205, 183, 220, - 194, 242, 242, 50, 150, 152, 179, 5, 97, 36, 3, 193, 220, 48, 244, 68, 152, 165, 229, 101, 174, 187, 126, 15, 37, 113, 232, 240, 209, 110, 24, 234, - 182, 136, 252, 216, 104, 212, 206, 175, 77, 39, 207, 222, 120, 227, 245, 195, 171, 251, 95, 227, 223, 69, 227, 50, 174, 191, 238, 90, 52, 232, 168, 131, - 205, 217, 242, 123, 134, 126, 136, 42, 49, 155, 206, 232, 135, 162, 159, 13, 204, 101, 38, 146, 153, 78, 39, 44, 175, 95, 230, 239, 254, 244, 79, 241, - 75, 191, 244, 11, 220, 123, 223, 189, 116, 221, 136, 136, 32, 51, 128, 36, 179, 49, 23, 17, 100, 38, 54, 68, 4, 151, 4, 223, 20, 68, 4, 23, - 5, 216, 38, 34, 137, 224, 162, 0, 36, 1, 6, 2, 219, 72, 194, 6, 35, 170, 6, 182, 111, 223, 202, 189, 247, 222, 195, 174, 93, 59, 185, 250, - 170, 43, 121, 224, 129, 123, 185, 247, 190, 187, 216, 115, 221, 53, 28, 120, 253, 0, 231, 206, 157, 103, 214, 207, 120, 234, 169, 63, 101, 255, 171, 175, - 114, 251, 109, 183, 178, 188, 188, 76, 213, 128, 109, 36, 17, 201, 69, 85, 69, 85, 1, 102, 168, 129, 214, 117, 92, 117, 213, 46, 22, 23, 23, 56, - 240, 218, 27, 244, 125, 191, 57, 91, 126, 95, 215, 229, 122, 13, 122, 252, 198, 27, 175, 155, 236, 219, 255, 26, 255, 95, 53, 46, 99, 223, 254, 215, - 216, 189, 231, 106, 151, 244, 188, 237, 123, 250, 126, 184, 81, 85, 24, 51, 244, 3, 17, 65, 107, 141, 214, 26, 125, 223, 179, 105, 211, 70, 254, 235, - 95, 250, 69, 126, 234, 167, 126, 130, 141, 27, 54, 98, 65, 68, 16, 193, 5, 65, 102, 71, 68, 2, 65, 68, 146, 217, 128, 32, 34, 137, 72, 90, - 235, 136, 8, 230, 34, 2, 219, 204, 5, 193, 156, 13, 216, 4, 193, 156, 13, 118, 96, 23, 150, 33, 184, 32, 48, 34, 2, 108, 179, 97, 253, 50, - 183, 220, 114, 51, 123, 246, 92, 67, 235, 26, 163, 81, 199, 246, 237, 219, 216, 178, 121, 51, 47, 60, 255, 34, 253, 48, 96, 155, 125, 175, 236, 231, - 165, 23, 95, 226, 214, 91, 111, 101, 243, 150, 77, 88, 96, 27, 169, 144, 10, 187, 176, 141, 109, 176, 177, 12, 152, 93, 187, 174, 96, 113, 105, 145, - 87, 247, 191, 74, 223, 207, 70, 153, 249, 158, 204, 184, 186, 134, 225, 177, 155, 111, 190, 126, 101, 180, 48, 226, 196, 137, 147, 252, 69, 53, 222, 193, - 85, 187, 175, 68, 131, 206, 75, 250, 211, 174, 181, 251, 193, 87, 151, 69, 16, 64, 96, 155, 217, 108, 198, 194, 194, 152, 159, 255, 249, 159, 227, 111, - 254, 205, 207, 48, 26, 143, 136, 8, 34, 130, 136, 32, 51, 137, 8, 50, 27, 17, 65, 68, 144, 153, 68, 4, 153, 73, 102, 18, 17, 204, 69, 152, - 136, 224, 45, 17, 65, 68, 96, 131, 45, 140, 177, 141, 101, 100, 17, 17, 128, 145, 69, 68, 32, 9, 171, 176, 141, 109, 108, 99, 139, 165, 165, 37, - 54, 108, 88, 79, 102, 208, 90, 227, 202, 171, 174, 224, 220, 249, 243, 188, 254, 218, 27, 68, 36, 115, 7, 15, 30, 228, 197, 23, 95, 226, 206, 119, - 189, 139, 205, 155, 55, 33, 9, 91, 84, 21, 17, 193, 91, 36, 35, 21, 115, 182, 216, 177, 99, 59, 75, 75, 75, 188, 252, 242, 126, 250, 126, 200, - 150, 121, 87, 100, 187, 106, 58, 12, 95, 218, 184, 97, 227, 234, 171, 251, 95, 227, 47, 170, 241, 14, 222, 56, 112, 144, 173, 155, 183, 48, 30, 181, - 163, 150, 190, 38, 124, 147, 97, 79, 215, 186, 28, 134, 129, 217, 108, 198, 250, 245, 235, 249, 217, 159, 253, 25, 62, 243, 153, 255, 144, 209, 104, 4, - 17, 180, 76, 50, 147, 204, 36, 34, 200, 12, 32, 153, 203, 76, 34, 130, 136, 32, 51, 137, 8, 222, 98, 155, 75, 204, 156, 109, 108, 115, 73, 96, - 155, 136, 192, 54, 115, 17, 96, 27, 8, 230, 108, 48, 38, 194, 72, 102, 24, 10, 48, 96, 90, 107, 44, 45, 45, 50, 30, 143, 24, 47, 140, 217, - 190, 109, 59, 207, 62, 251, 60, 103, 207, 157, 7, 76, 68, 114, 232, 208, 97, 14, 29, 60, 200, 61, 247, 220, 205, 242, 242, 50, 182, 136, 48, 182, - 168, 26, 176, 141, 109, 36, 17, 17, 216, 98, 110, 231, 206, 157, 200, 197, 171, 251, 95, 165, 74, 145, 173, 189, 43, 35, 54, 206, 166, 179, 71, 175, - 191, 110, 207, 236, 181, 215, 14, 240, 23, 209, 248, 22, 142, 30, 59, 198, 198, 13, 203, 196, 168, 29, 173, 97, 248, 125, 219, 71, 183, 108, 218, 116, - 237, 21, 59, 119, 236, 184, 249, 230, 155, 248, 233, 191, 247, 119, 249, 244, 143, 124, 154, 241, 194, 136, 204, 32, 72, 34, 130, 204, 36, 34, 136, 8, - 50, 147, 204, 36, 34, 137, 8, 34, 130, 204, 36, 34, 176, 77, 68, 96, 27, 155, 11, 2, 169, 0, 19, 145, 128, 177, 185, 36, 192, 64, 96, 34, - 130, 32, 144, 10, 108, 100, 35, 21, 198, 204, 73, 5, 24, 16, 54, 23, 24, 48, 182, 176, 204, 250, 245, 203, 156, 61, 115, 150, 23, 94, 120, 9, - 99, 48, 100, 118, 28, 56, 112, 144, 147, 39, 79, 241, 192, 253, 247, 50, 26, 53, 108, 83, 85, 216, 2, 2, 73, 100, 114, 145, 36, 108, 176, 205, - 206, 157, 59, 56, 117, 242, 36, 135, 14, 29, 37, 35, 35, 91, 222, 29, 48, 153, 76, 214, 30, 187, 238, 186, 61, 126, 253, 192, 27, 124, 167, 26, - 223, 198, 241, 19, 39, 57, 124, 232, 40, 191, 250, 107, 191, 186, 242, 145, 143, 124, 100, 239, 39, 63, 249, 3, 31, 249, 129, 71, 30, 185, 229, 147, - 159, 250, 36, 119, 190, 235, 93, 100, 75, 178, 53, 130, 32, 35, 200, 76, 230, 34, 160, 181, 198, 92, 102, 146, 153, 180, 214, 176, 77, 68, 48, 23, - 17, 204, 73, 34, 34, 184, 196, 68, 128, 109, 222, 34, 21, 127, 78, 198, 128, 45, 100, 97, 132, 108, 2, 144, 4, 8, 201, 128, 1, 99, 131, 84, - 72, 66, 18, 17, 73, 68, 176, 113, 211, 70, 158, 123, 246, 121, 206, 159, 95, 37, 162, 17, 17, 24, 216, 191, 111, 63, 227, 209, 136, 119, 189, 235, - 14, 108, 99, 11, 219, 204, 217, 194, 54, 182, 128, 192, 22, 96, 50, 147, 29, 59, 182, 179, 111, 223, 126, 206, 157, 59, 79, 16, 173, 107, 237, 222, - 214, 186, 231, 118, 108, 223, 250, 194, 166, 205, 155, 121, 227, 141, 131, 124, 39, 146, 239, 208, 149, 87, 94, 193, 246, 237, 91, 127, 96, 215, 174, 157, - 31, 222, 185, 115, 7, 203, 203, 235, 80, 21, 216, 96, 46, 138, 72, 164, 194, 54, 115, 182, 153, 139, 72, 34, 130, 203, 145, 68, 102, 146, 153, 128, - 153, 139, 8, 254, 159, 108, 176, 13, 54, 68, 32, 9, 73, 24, 227, 8, 8, 254, 156, 36, 34, 130, 136, 196, 54, 182, 0, 19, 1, 17, 9, 24, - 73, 92, 113, 197, 14, 238, 124, 215, 237, 100, 54, 90, 107, 216, 38, 35, 176, 204, 111, 252, 250, 191, 224, 241, 175, 61, 65, 132, 145, 140, 36, 36, - 1, 129, 109, 108, 83, 85, 216, 198, 54, 132, 216, 177, 115, 27, 239, 123, 223, 131, 216, 102, 24, 122, 100, 109, 203, 204, 255, 246, 232, 241, 55, 111, - 24, 143, 70, 124, 167, 26, 223, 129, 47, 252, 225, 239, 115, 246, 244, 233, 77, 155, 55, 111, 254, 149, 165, 165, 117, 183, 102, 36, 68, 210, 90, 66, - 4, 217, 146, 140, 196, 230, 162, 214, 146, 136, 192, 134, 204, 36, 34, 176, 33, 34, 136, 8, 50, 147, 214, 26, 182, 249, 127, 51, 118, 17, 145, 216, - 6, 204, 156, 36, 108, 17, 128, 36, 28, 38, 8, 176, 40, 21, 24, 44, 35, 21, 145, 96, 11, 169, 144, 138, 57, 219, 84, 21, 182, 144, 140, 100, - 2, 51, 234, 70, 60, 245, 141, 167, 233, 251, 129, 42, 97, 27, 34, 56, 191, 178, 202, 225, 35, 135, 121, 240, 161, 7, 88, 94, 183, 12, 24, 169, - 176, 69, 4, 84, 137, 170, 1, 219, 72, 2, 11, 89, 108, 218, 188, 145, 67, 7, 143, 112, 236, 232, 9, 32, 232, 186, 182, 43, 35, 125, 246, 236, - 217, 63, 188, 238, 218, 107, 244, 198, 193, 67, 124, 59, 141, 111, 227, 119, 126, 251, 179, 108, 218, 180, 145, 174, 235, 62, 182, 126, 253, 250, 159, 233, - 90, 55, 142, 76, 8, 46, 138, 8, 34, 147, 136, 4, 67, 215, 117, 68, 4, 16, 180, 214, 0, 19, 209, 200, 76, 34, 130, 185, 136, 192, 54, 115, - 182, 121, 139, 109, 108, 51, 103, 27, 73, 204, 217, 134, 0, 89, 4, 1, 6, 169, 48, 198, 50, 82, 17, 128, 45, 108, 99, 27, 73, 128, 145, 140, - 36, 108, 99, 11, 219, 204, 73, 197, 186, 165, 37, 94, 122, 121, 31, 39, 142, 191, 73, 73, 188, 37, 51, 56, 116, 232, 48, 155, 54, 109, 228, 206, - 59, 111, 71, 18, 182, 144, 4, 4, 96, 230, 108, 99, 155, 108, 129, 84, 140, 186, 17, 93, 55, 226, 249, 231, 95, 64, 50, 153, 73, 102, 222, 212, - 186, 246, 39, 227, 241, 248, 213, 173, 219, 182, 112, 248, 240, 81, 190, 149, 228, 219, 24, 141, 70, 124, 245, 79, 30, 111, 11, 11, 11, 63, 220, 186, - 92, 150, 141, 100, 34, 146, 204, 4, 2, 149, 80, 21, 17, 96, 27, 219, 68, 112, 129, 137, 72, 108, 97, 27, 73, 204, 217, 70, 18, 182, 105, 173, - 49, 103, 155, 185, 204, 64, 18, 96, 50, 147, 185, 214, 26, 173, 37, 115, 146, 192, 64, 4, 24, 146, 32, 34, 33, 76, 68, 128, 3, 27, 34, 130, - 136, 0, 140, 13, 17, 193, 55, 153, 185, 165, 165, 69, 110, 187, 245, 102, 50, 147, 204, 68, 18, 96, 108, 3, 201, 231, 126, 239, 243, 28, 58, 120, - 24, 48, 182, 153, 147, 10, 219, 68, 4, 111, 145, 140, 13, 170, 226, 198, 27, 246, 176, 123, 247, 213, 244, 179, 25, 179, 217, 20, 169, 182, 183, 214, - 254, 211, 217, 172, 95, 94, 90, 90, 226, 219, 73, 190, 141, 108, 112, 219, 237, 55, 95, 51, 234, 186, 15, 102, 36, 17, 144, 105, 112, 97, 27, 91, - 24, 51, 103, 155, 8, 136, 0, 27, 36, 3, 198, 22, 118, 97, 23, 146, 176, 141, 36, 108, 83, 85, 84, 21, 85, 3, 32, 108, 176, 141, 109, 108, - 19, 1, 146, 80, 153, 57, 89, 148, 197, 69, 6, 99, 176, 145, 140, 109, 34, 32, 2, 108, 115, 73, 16, 17, 216, 38, 34, 176, 141, 84, 128, 32, - 204, 77, 55, 94, 199, 104, 220, 97, 23, 173, 5, 17, 92, 96, 198, 227, 17, 111, 28, 56, 200, 23, 190, 240, 40, 96, 36, 243, 150, 170, 162, 74, - 24, 99, 138, 26, 122, 40, 225, 18, 227, 81, 227, 93, 119, 220, 138, 129, 26, 196, 48, 12, 4, 254, 104, 102, 124, 111, 215, 26, 223, 78, 242, 109, - 44, 45, 45, 49, 30, 47, 220, 215, 186, 182, 199, 54, 182, 144, 132, 44, 170, 6, 108, 131, 65, 18, 85, 66, 50, 16, 188, 165, 74, 84, 21, 85, - 133, 109, 164, 162, 170, 136, 224, 2, 35, 21, 182, 200, 12, 192, 216, 102, 174, 74, 216, 66, 50, 85, 3, 165, 66, 50, 153, 137, 45, 84, 194, 54, - 182, 145, 4, 2, 99, 74, 133, 36, 230, 170, 4, 4, 17, 96, 27, 201, 216, 226, 45, 42, 177, 243, 138, 237, 92, 121, 229, 14, 50, 131, 136, 0, - 76, 102, 163, 181, 198, 220, 163, 143, 126, 137, 19, 39, 78, 146, 13, 36, 33, 137, 136, 192, 22, 150, 176, 5, 54, 17, 65, 112, 201, 245, 55, 92, - 203, 134, 245, 203, 76, 166, 19, 250, 126, 64, 210, 198, 204, 248, 204, 217, 243, 231, 199, 239, 126, 207, 3, 124, 43, 201, 183, 240, 220, 115, 207, 114, - 195, 13, 123, 232, 186, 238, 193, 136, 24, 219, 198, 54, 146, 176, 77, 68, 18, 17, 128, 201, 76, 50, 19, 91, 72, 162, 170, 152, 139, 128, 214, 146, - 136, 96, 206, 22, 32, 134, 161, 167, 170, 7, 132, 45, 164, 66, 50, 182, 137, 8, 50, 131, 136, 224, 146, 32, 34, 136, 0, 3, 153, 13, 2, 108, - 33, 137, 57, 99, 108, 99, 155, 57, 219, 216, 70, 18, 182, 153, 179, 69, 68, 48, 103, 153, 185, 229, 229, 37, 174, 185, 230, 106, 108, 211, 90, 3, - 130, 57, 73, 116, 221, 136, 3, 175, 31, 228, 79, 159, 122, 6, 219, 72, 162, 170, 168, 42, 170, 10, 219, 216, 252, 185, 136, 192, 18, 155, 55, 109, - 228, 202, 171, 175, 96, 24, 6, 134, 97, 96, 24, 138, 11, 30, 94, 88, 24, 223, 213, 90, 227, 91, 73, 190, 133, 87, 246, 189, 196, 231, 191, 240, - 229, 133, 209, 104, 116, 71, 102, 98, 155, 32, 136, 8, 144, 209, 48, 96, 153, 32, 176, 133, 93, 12, 53, 96, 139, 57, 73, 204, 217, 6, 140, 109, - 34, 2, 91, 72, 66, 18, 54, 68, 4, 182, 145, 10, 91, 72, 194, 6, 219, 216, 34, 18, 108, 99, 131, 101, 84, 3, 168, 176, 184, 32, 176, 193, - 22, 96, 230, 108, 144, 4, 24, 16, 146, 1, 51, 103, 27, 99, 108, 131, 69, 6, 92, 187, 251, 106, 70, 93, 135, 109, 90, 107, 204, 217, 6, 204, - 172, 31, 248, 202, 87, 191, 206, 172, 47, 36, 17, 17, 72, 34, 49, 137, 73, 192, 50, 150, 40, 137, 185, 214, 53, 174, 189, 230, 106, 230, 170, 68, - 213, 128, 228, 93, 45, 242, 145, 43, 175, 220, 193, 67, 15, 222, 207, 59, 73, 190, 5, 73, 44, 173, 91, 220, 16, 25, 187, 249, 51, 178, 176, 141, - 13, 198, 204, 73, 194, 54, 102, 206, 148, 6, 108, 35, 137, 97, 24, 24, 134, 162, 170, 144, 132, 84, 216, 96, 27, 201, 216, 194, 54, 146, 145, 140, - 100, 108, 35, 139, 170, 66, 18, 85, 3, 82, 97, 11, 108, 2, 19, 54, 145, 208, 50, 1, 99, 132, 109, 108, 3, 193, 156, 205, 159, 49, 54, 23, - 25, 3, 102, 78, 42, 84, 3, 187, 118, 237, 100, 121, 121, 153, 136, 32, 2, 50, 147, 136, 128, 8, 34, 147, 103, 159, 125, 158, 147, 39, 79, 49, - 103, 131, 109, 192, 96, 99, 137, 136, 192, 64, 4, 216, 66, 42, 118, 94, 177, 157, 174, 107, 12, 195, 192, 48, 20, 82, 113, 193, 199, 95, 127, 245, - 208, 102, 219, 188, 147, 228, 91, 24, 141, 58, 22, 198, 11, 75, 192, 14, 219, 216, 198, 50, 146, 176, 133, 109, 36, 97, 27, 12, 182, 49, 96, 115, - 129, 137, 8, 170, 132, 109, 36, 3, 198, 6, 169, 136, 8, 108, 51, 12, 133, 36, 164, 34, 2, 108, 35, 23, 118, 225, 48, 229, 226, 146, 192, 54, - 210, 192, 225, 195, 135, 120, 230, 153, 167, 121, 225, 133, 231, 57, 118, 252, 24, 114, 145, 17, 216, 66, 42, 108, 17, 1, 17, 32, 25, 73, 72, 133, - 109, 130, 96, 206, 24, 12, 178, 217, 188, 121, 35, 203, 203, 75, 64, 0, 65, 107, 141, 214, 26, 151, 152, 227, 199, 79, 240, 250, 107, 175, 147, 153, - 72, 194, 54, 16, 148, 132, 13, 182, 177, 4, 4, 82, 97, 196, 230, 45, 155, 88, 92, 92, 64, 85, 84, 13, 12, 195, 128, 237, 59, 51, 243, 142, - 204, 224, 157, 116, 124, 11, 163, 174, 195, 242, 250, 8, 22, 165, 129, 200, 14, 34, 176, 205, 156, 109, 170, 6, 130, 70, 89, 180, 174, 35, 72, 44, - 81, 12, 200, 34, 34, 176, 141, 109, 34, 184, 32, 201, 12, 170, 10, 201, 204, 101, 6, 146, 1, 35, 9, 219, 148, 138, 136, 196, 18, 24, 130, 11, - 100, 158, 254, 198, 55, 248, 173, 223, 254, 44, 71, 14, 31, 165, 4, 91, 54, 109, 230, 246, 59, 110, 229, 193, 135, 30, 228, 202, 171, 174, 36, 34, - 168, 42, 36, 81, 85, 128, 1, 243, 22, 169, 168, 42, 108, 99, 140, 37, 70, 227, 17, 155, 54, 111, 228, 240, 145, 227, 16, 102, 46, 34, 136, 8, - 34, 146, 26, 6, 246, 237, 123, 141, 123, 239, 126, 23, 184, 8, 11, 243, 103, 108, 50, 130, 146, 168, 42, 48, 80, 98, 121, 105, 137, 197, 165, 5, - 78, 159, 62, 75, 14, 73, 215, 4, 205, 155, 51, 121, 223, 194, 194, 226, 99, 239, 126, 232, 94, 190, 250, 181, 111, 240, 118, 29, 239, 224, 7, 30, - 249, 56, 88, 188, 242, 202, 43, 55, 222, 183, 241, 238, 245, 94, 24, 97, 11, 57, 104, 36, 146, 201, 228, 2, 33, 65, 107, 13, 11, 8, 99, 12, - 134, 48, 36, 137, 84, 68, 4, 32, 106, 16, 163, 241, 8, 2, 108, 17, 17, 92, 20, 70, 26, 144, 141, 109, 108, 3, 6, 131, 74, 204, 157, 124, - 243, 77, 126, 231, 119, 254, 53, 127, 250, 212, 94, 206, 157, 95, 101, 24, 6, 146, 198, 222, 103, 159, 227, 235, 143, 127, 157, 135, 31, 254, 48, 247, - 63, 120, 31, 163, 241, 2, 146, 177, 3, 91, 216, 102, 78, 18, 54, 216, 198, 18, 150, 49, 166, 181, 198, 120, 60, 38, 2, 186, 236, 152, 14, 61, - 115, 54, 100, 38, 195, 96, 94, 123, 245, 0, 53, 244, 128, 1, 19, 17, 72, 166, 170, 104, 173, 97, 46, 176, 177, 141, 92, 68, 4, 75, 139, 11, - 84, 137, 42, 161, 18, 170, 66, 248, 125, 199, 79, 188, 185, 48, 234, 186, 41, 151, 209, 241, 14, 178, 5, 63, 253, 247, 254, 179, 117, 63, 242, 233, - 31, 254, 79, 238, 190, 231, 206, 101, 73, 100, 38, 216, 24, 131, 133, 20, 68, 4, 151, 4, 32, 108, 209, 90, 67, 18, 9, 84, 152, 32, 56, 115, - 234, 20, 79, 61, 249, 4, 47, 189, 242, 10, 235, 214, 45, 243, 61, 223, 243, 65, 246, 236, 185, 14, 147, 12, 85, 204, 25, 99, 137, 57, 219, 148, - 6, 194, 32, 137, 140, 224, 141, 131, 7, 121, 225, 165, 87, 56, 125, 230, 28, 147, 217, 12, 167, 32, 130, 213, 179, 107, 156, 223, 187, 194, 177, 227, - 39, 56, 118, 252, 56, 15, 127, 223, 135, 25, 47, 44, 0, 198, 54, 146, 169, 42, 36, 97, 11, 217, 4, 96, 46, 48, 100, 4, 11, 139, 11, 4, - 1, 152, 214, 26, 195, 48, 144, 25, 64, 80, 85, 28, 63, 118, 130, 233, 100, 202, 226, 210, 24, 8, 108, 192, 134, 8, 74, 66, 85, 16, 193, 92, - 56, 104, 153, 44, 44, 44, 82, 85, 216, 66, 54, 146, 136, 204, 59, 22, 198, 227, 45, 16, 71, 184, 140, 142, 119, 48, 110, 141, 219, 110, 190, 233, - 190, 233, 116, 242, 33, 219, 216, 66, 18, 17, 1, 81, 32, 200, 108, 132, 131, 204, 164, 170, 128, 36, 34, 176, 1, 131, 109, 144, 56, 124, 248, 16, - 159, 253, 236, 255, 197, 147, 95, 127, 130, 147, 167, 78, 209, 151, 248, 218, 227, 95, 231, 103, 126, 230, 103, 184, 254, 250, 235, 81, 9, 115, 65, 128, - 36, 108, 176, 69, 73, 132, 185, 192, 148, 138, 35, 71, 15, 115, 238, 220, 121, 102, 195, 140, 133, 205, 29, 59, 174, 217, 201, 120, 97, 204, 137, 163, - 39, 56, 125, 240, 44, 7, 15, 31, 229, 247, 62, 247, 111, 200, 22, 124, 232, 195, 255, 30, 173, 107, 84, 21, 182, 128, 128, 0, 91, 96, 99, 9, - 91, 216, 166, 36, 250, 217, 64, 169, 144, 76, 102, 71, 102, 34, 9, 219, 100, 54, 78, 158, 60, 197, 100, 50, 101, 97, 113, 140, 84, 216, 92, 96, - 34, 192, 18, 182, 152, 179, 140, 44, 140, 137, 12, 84, 69, 149, 168, 42, 134, 128, 110, 60, 222, 158, 153, 87, 3, 71, 184, 140, 228, 50, 126, 240, - 83, 159, 96, 235, 230, 141, 140, 23, 198, 31, 30, 250, 126, 107, 213, 0, 4, 146, 144, 10, 187, 176, 11, 91, 204, 85, 21, 182, 169, 234, 177, 6, - 108, 33, 21, 200, 28, 57, 116, 144, 95, 255, 231, 255, 156, 47, 124, 225, 139, 236, 59, 240, 58, 167, 166, 167, 89, 141, 21, 190, 241, 220, 147, 252, - 198, 111, 254, 6, 171, 171, 171, 88, 198, 18, 150, 128, 32, 50, 104, 93, 71, 102, 98, 27, 91, 216, 197, 234, 234, 121, 134, 26, 136, 81, 114, 199, - 125, 119, 242, 209, 135, 63, 198, 13, 55, 220, 194, 109, 247, 220, 206, 134, 157, 235, 25, 106, 224, 248, 137, 147, 252, 209, 23, 190, 200, 222, 189, 123, - 177, 140, 84, 216, 198, 54, 82, 97, 21, 150, 168, 18, 146, 32, 2, 108, 102, 179, 25, 173, 53, 34, 130, 170, 66, 18, 153, 137, 109, 90, 75, 86, - 86, 86, 153, 76, 103, 128, 177, 132, 85, 84, 21, 118, 81, 26, 48, 2, 12, 22, 152, 139, 102, 211, 41, 6, 36, 49, 235, 123, 6, 9, 73, 27, - 171, 106, 183, 36, 46, 39, 185, 12, 219, 188, 126, 248, 248, 82, 68, 190, 123, 54, 155, 49, 157, 78, 121, 139, 109, 170, 10, 219, 72, 194, 54, 16, - 128, 33, 12, 97, 164, 30, 44, 206, 156, 62, 197, 191, 250, 173, 207, 242, 229, 199, 190, 194, 145, 19, 199, 89, 220, 182, 196, 109, 15, 189, 139, 59, - 31, 186, 135, 93, 55, 93, 201, 87, 158, 248, 99, 246, 238, 125, 22, 34, 144, 196, 48, 12, 16, 208, 181, 70, 70, 50, 234, 58, 186, 174, 67, 18, - 182, 105, 173, 209, 117, 29, 163, 197, 17, 91, 55, 110, 99, 247, 230, 107, 57, 245, 250, 73, 22, 218, 2, 155, 182, 110, 196, 36, 125, 63, 112, 232, - 232, 81, 30, 251, 242, 99, 156, 57, 125, 138, 57, 73, 72, 133, 36, 108, 35, 137, 57, 27, 176, 233, 251, 129, 149, 213, 21, 130, 160, 235, 58, 34, - 2, 219, 68, 4, 182, 177, 205, 48, 12, 172, 172, 172, 128, 193, 22, 178, 80, 21, 85, 198, 6, 219, 72, 194, 152, 204, 196, 130, 149, 149, 85, 44, - 97, 9, 219, 216, 198, 246, 66, 68, 236, 204, 12, 238, 184, 253, 86, 222, 46, 185, 140, 22, 201, 66, 215, 109, 25, 117, 163, 91, 170, 138, 213, 149, - 85, 134, 161, 71, 42, 170, 10, 73, 216, 32, 137, 170, 98, 24, 122, 164, 194, 22, 146, 24, 106, 96, 152, 205, 248, 234, 87, 190, 204, 99, 143, 125, - 133, 227, 111, 158, 34, 70, 112, 195, 237, 55, 241, 137, 135, 63, 201, 117, 219, 111, 96, 195, 120, 19, 238, 204, 87, 190, 242, 37, 166, 147, 53, 164, - 98, 46, 51, 105, 109, 68, 215, 117, 100, 54, 34, 130, 185, 42, 177, 115, 199, 118, 182, 109, 221, 68, 20, 60, 245, 196, 83, 252, 247, 255, 228, 159, - 240, 248, 19, 95, 231, 141, 131, 7, 56, 127, 102, 5, 44, 108, 51, 89, 235, 217, 183, 239, 85, 94, 126, 233, 101, 192, 96, 97, 21, 72, 216, 6, - 11, 169, 8, 32, 34, 56, 123, 238, 28, 43, 231, 87, 137, 12, 50, 147, 204, 32, 34, 136, 8, 70, 163, 17, 17, 129, 108, 134, 190, 71, 18, 230, - 2, 155, 136, 0, 12, 152, 32, 152, 179, 77, 4, 204, 102, 61, 231, 206, 173, 80, 18, 37, 1, 70, 50, 146, 136, 136, 45, 139, 139, 75, 128, 121, - 187, 228, 50, 50, 147, 214, 186, 43, 91, 230, 214, 201, 218, 132, 179, 231, 206, 97, 23, 85, 61, 85, 3, 182, 169, 42, 84, 133, 36, 36, 161, 18, - 42, 83, 37, 112, 112, 228, 216, 17, 254, 237, 151, 31, 227, 240, 145, 99, 244, 253, 64, 118, 29, 145, 240, 252, 222, 23, 57, 248, 202, 33, 78, 188, - 113, 2, 15, 226, 245, 215, 95, 229, 220, 217, 211, 168, 138, 136, 0, 130, 136, 32, 72, 130, 164, 101, 71, 70, 99, 24, 6, 110, 190, 229, 22, 30, - 254, 190, 135, 89, 236, 22, 57, 119, 234, 44, 125, 78, 217, 184, 115, 153, 55, 143, 188, 201, 153, 35, 103, 120, 75, 73, 156, 61, 187, 194, 190, 125, - 251, 25, 102, 83, 194, 194, 26, 176, 132, 101, 176, 176, 197, 92, 100, 114, 234, 228, 105, 166, 147, 25, 173, 117, 216, 32, 153, 204, 36, 34, 136, 8, - 50, 147, 140, 128, 0, 169, 176, 5, 1, 132, 137, 0, 12, 4, 151, 68, 16, 145, 156, 59, 191, 194, 202, 234, 20, 3, 178, 40, 11, 169, 168, 42, - 134, 161, 182, 92, 125, 213, 46, 170, 196, 219, 117, 92, 86, 96, 188, 35, 34, 150, 135, 26, 56, 126, 236, 56, 183, 220, 114, 35, 153, 73, 4, 12, - 67, 79, 102, 16, 209, 48, 102, 212, 141, 48, 194, 6, 27, 236, 224, 185, 189, 207, 240, 210, 43, 175, 176, 186, 54, 1, 139, 217, 234, 148, 253, 47, - 191, 202, 243, 123, 95, 228, 232, 254, 35, 140, 23, 199, 108, 221, 180, 153, 171, 175, 186, 134, 241, 226, 34, 165, 129, 116, 71, 70, 48, 151, 153, 216, - 6, 76, 182, 196, 54, 24, 62, 240, 190, 247, 243, 218, 254, 3, 252, 206, 231, 126, 159, 129, 162, 95, 233, 169, 89, 193, 192, 5, 1, 8, 28, 244, - 125, 241, 230, 137, 147, 172, 173, 173, 177, 184, 184, 136, 205, 69, 182, 144, 204, 37, 6, 7, 135, 14, 29, 161, 170, 176, 133, 84, 204, 217, 38, 34, - 152, 107, 173, 163, 27, 117, 188, 69, 18, 115, 182, 129, 192, 54, 182, 201, 72, 140, 48, 230, 212, 201, 83, 172, 156, 95, 193, 6, 73, 72, 66, 18, - 150, 32, 98, 116, 231, 29, 215, 243, 228, 55, 158, 230, 237, 146, 203, 48, 6, 123, 83, 85, 45, 16, 193, 241, 227, 199, 25, 134, 162, 170, 144, 10, - 169, 176, 65, 18, 146, 40, 21, 146, 40, 21, 178, 88, 89, 89, 225, 185, 103, 159, 227, 212, 169, 51, 148, 4, 4, 158, 193, 155, 7, 78, 226, 126, - 96, 231, 238, 109, 44, 46, 45, 178, 97, 113, 35, 31, 250, 208, 135, 25, 141, 58, 36, 129, 33, 34, 136, 8, 34, 130, 174, 235, 152, 179, 13, 152, - 89, 63, 37, 187, 224, 227, 159, 120, 152, 59, 239, 184, 149, 24, 96, 88, 27, 176, 192, 24, 48, 16, 204, 5, 48, 235, 167, 76, 167, 83, 84, 133, - 37, 84, 3, 85, 133, 45, 108, 97, 204, 234, 218, 132, 3, 7, 14, 146, 153, 216, 102, 46, 2, 36, 81, 85, 12, 195, 128, 36, 48, 96, 99, 192, - 50, 54, 68, 4, 96, 34, 130, 140, 68, 18, 17, 65, 68, 112, 228, 232, 113, 166, 179, 25, 115, 54, 88, 198, 54, 54, 248, 130, 233, 84, 216, 230, - 237, 146, 203, 49, 16, 44, 218, 110, 92, 112, 242, 228, 105, 206, 157, 91, 193, 134, 97, 24, 144, 140, 45, 192, 72, 162, 170, 24, 106, 160, 159, 13, - 212, 32, 206, 156, 57, 195, 129, 55, 14, 49, 153, 204, 128, 192, 4, 118, 160, 85, 56, 119, 104, 149, 115, 135, 87, 153, 157, 238, 185, 255, 158, 251, - 216, 189, 251, 106, 134, 217, 0, 6, 219, 216, 38, 35, 136, 8, 192, 68, 4, 17, 80, 26, 168, 26, 232, 251, 158, 205, 155, 55, 241, 131, 63, 248, - 8, 123, 246, 92, 205, 120, 212, 8, 243, 103, 204, 92, 182, 100, 97, 97, 204, 210, 210, 34, 45, 27, 37, 81, 42, 228, 194, 42, 130, 32, 8, 50, - 147, 195, 71, 143, 113, 224, 141, 35, 188, 37, 51, 201, 108, 100, 38, 223, 100, 250, 190, 71, 50, 146, 48, 6, 140, 100, 44, 19, 17, 200, 66, 22, - 65, 82, 130, 3, 7, 14, 33, 25, 8, 230, 36, 83, 37, 100, 35, 41, 86, 87, 2, 91, 188, 93, 114, 25, 14, 99, 46, 8, 192, 112, 250, 244, - 105, 14, 31, 62, 140, 84, 216, 92, 96, 134, 97, 160, 170, 176, 11, 187, 176, 11, 185, 48, 197, 233, 51, 167, 57, 123, 230, 44, 85, 133, 13, 182, - 177, 205, 156, 21, 184, 96, 121, 121, 29, 239, 125, 223, 187, 105, 45, 24, 212, 51, 212, 0, 54, 182, 169, 18, 85, 133, 108, 130, 192, 54, 17, 129, - 45, 250, 126, 198, 116, 58, 225, 218, 107, 119, 243, 3, 159, 248, 40, 215, 237, 217, 205, 198, 13, 203, 44, 140, 71, 116, 173, 49, 30, 117, 172, 95, - 183, 196, 230, 77, 235, 217, 185, 99, 27, 163, 209, 152, 42, 33, 9, 201, 24, 48, 38, 34, 176, 205, 179, 123, 95, 100, 50, 153, 162, 18, 153, 13, - 155, 139, 34, 130, 57, 219, 216, 198, 54, 198, 204, 89, 102, 206, 22, 145, 129, 44, 50, 146, 204, 68, 50, 43, 231, 215, 120, 227, 141, 67, 72, 66, - 18, 182, 193, 198, 54, 182, 176, 209, 234, 116, 130, 109, 222, 174, 227, 114, 12, 97, 144, 68, 107, 73, 245, 197, 171, 251, 95, 229, 250, 235, 247, 208, - 117, 141, 8, 144, 76, 215, 113, 129, 145, 68, 102, 146, 153, 72, 48, 157, 174, 49, 155, 205, 176, 205, 37, 193, 156, 109, 230, 108, 115, 195, 13, 215, - 115, 195, 13, 215, 209, 15, 61, 182, 201, 12, 140, 1, 67, 0, 1, 65, 64, 152, 136, 96, 78, 18, 85, 3, 195, 208, 35, 137, 219, 239, 184, 141, - 8, 248, 250, 227, 79, 112, 236, 248, 9, 38, 107, 83, 34, 96, 221, 210, 18, 187, 118, 109, 231, 198, 27, 111, 32, 2, 36, 161, 42, 164, 98, 206, - 152, 108, 201, 177, 99, 111, 242, 252, 243, 47, 19, 36, 173, 5, 174, 129, 8, 144, 132, 109, 108, 19, 17, 216, 134, 224, 207, 152, 136, 192, 134, 136, - 224, 34, 131, 49, 17, 65, 100, 227, 196, 137, 55, 57, 122, 244, 4, 153, 9, 24, 219, 204, 101, 6, 182, 177, 125, 230, 137, 39, 255, 4, 203, 188, - 93, 199, 101, 132, 184, 72, 37, 164, 194, 14, 246, 239, 127, 141, 123, 78, 158, 100, 219, 182, 45, 216, 38, 2, 164, 192, 54, 153, 137, 13, 146, 1, - 179, 176, 176, 64, 107, 73, 70, 80, 46, 32, 136, 8, 230, 194, 176, 176, 48, 230, 221, 15, 221, 207, 186, 117, 235, 24, 134, 129, 139, 28, 212, 208, - 83, 53, 166, 181, 129, 140, 6, 153, 72, 194, 54, 115, 153, 73, 85, 49, 212, 128, 52, 144, 4, 183, 223, 118, 11, 219, 183, 109, 225, 181, 87, 95, - 227, 212, 169, 147, 148, 196, 250, 245, 235, 185, 118, 207, 53, 92, 125, 205, 85, 72, 61, 182, 136, 4, 156, 96, 46, 16, 67, 153, 175, 125, 253, 105, - 206, 156, 57, 71, 4, 32, 8, 131, 37, 108, 19, 17, 68, 4, 17, 65, 102, 146, 153, 88, 98, 46, 50, 80, 137, 200, 192, 134, 200, 192, 54, 150, - 201, 113, 240, 210, 43, 251, 57, 119, 126, 133, 136, 68, 50, 173, 129, 109, 170, 68, 132, 80, 213, 217, 51, 167, 207, 98, 155, 183, 235, 184, 44, 99, - 3, 1, 25, 193, 80, 197, 241, 227, 39, 121, 118, 239, 243, 124, 207, 7, 223, 139, 84, 124, 83, 210, 154, 169, 42, 90, 107, 216, 102, 211, 198, 141, - 108, 219, 190, 149, 215, 14, 28, 164, 175, 1, 108, 36, 136, 128, 209, 168, 113, 195, 13, 123, 120, 224, 254, 251, 1, 35, 9, 219, 68, 4, 82, 33, - 21, 195, 80, 100, 152, 200, 100, 46, 34, 136, 8, 50, 19, 219, 168, 138, 161, 6, 40, 211, 50, 217, 190, 99, 59, 219, 183, 111, 99, 168, 1, 219, - 180, 214, 145, 25, 88, 133, 36, 108, 99, 27, 155, 139, 50, 130, 151, 247, 189, 206, 51, 79, 63, 135, 109, 8, 232, 85, 72, 98, 46, 34, 152, 139, - 8, 108, 115, 145, 161, 36, 36, 33, 153, 200, 32, 8, 100, 1, 193, 69, 1, 179, 89, 207, 222, 189, 47, 32, 153, 174, 131, 204, 64, 18, 182, 177, - 132, 36, 151, 244, 166, 44, 94, 125, 253, 13, 222, 46, 185, 12, 217, 216, 194, 50, 17, 129, 36, 50, 131, 103, 158, 121, 150, 163, 71, 143, 99, 27, - 73, 84, 9, 169, 24, 134, 1, 91, 72, 98, 24, 138, 165, 165, 37, 222, 243, 158, 247, 176, 121, 243, 38, 90, 38, 4, 180, 46, 89, 92, 90, 96, - 215, 149, 59, 249, 232, 199, 30, 102, 215, 149, 87, 48, 12, 3, 85, 3, 195, 48, 80, 53, 32, 23, 170, 194, 22, 146, 81, 9, 201, 24, 147, 145, - 72, 34, 34, 176, 141, 74, 12, 195, 64, 63, 12, 12, 195, 64, 97, 218, 104, 196, 104, 97, 129, 236, 26, 146, 40, 21, 182, 193, 32, 153, 8, 147, - 25, 156, 58, 117, 150, 127, 251, 197, 175, 194, 196, 203, 222, 0, 0, 32, 0, 73, 68, 65, 84, 48, 153, 204, 192, 129, 10, 178, 53, 200, 32, 91, - 35, 34, 168, 42, 190, 41, 144, 68, 63, 155, 17, 4, 216, 216, 134, 128, 32, 192, 96, 155, 214, 26, 135, 14, 29, 101, 255, 190, 215, 201, 72, 34, - 130, 185, 136, 64, 18, 6, 50, 98, 5, 124, 156, 119, 208, 113, 25, 150, 145, 189, 58, 194, 131, 236, 142, 11, 50, 147, 179, 103, 207, 243, 199, 127, - 252, 85, 62, 254, 241, 135, 89, 92, 92, 4, 140, 36, 34, 2, 48, 54, 23, 4, 153, 201, 3, 15, 61, 64, 180, 228, 171, 127, 242, 56, 7, 222, - 56, 192, 208, 247, 236, 220, 185, 131, 247, 127, 224, 189, 188, 251, 221, 15, 32, 13, 216, 198, 54, 17, 193, 48, 64, 63, 43, 70, 157, 104, 77, 68, - 64, 102, 34, 9, 149, 32, 160, 181, 164, 69, 16, 54, 97, 46, 178, 132, 128, 4, 108, 48, 16, 97, 108, 161, 18, 178, 137, 8, 34, 128, 8, 206, - 173, 174, 242, 249, 63, 250, 18, 135, 14, 31, 35, 34, 32, 32, 19, 100, 147, 17, 244, 85, 216, 69, 132, 0, 49, 39, 21, 195, 32, 250, 161, 144, - 5, 17, 68, 128, 36, 50, 18, 27, 50, 3, 8, 158, 120, 226, 25, 78, 159, 57, 71, 107, 13, 27, 36, 17, 209, 32, 184, 168, 164, 21, 201, 71, - 9, 115, 57, 29, 151, 97, 11, 236, 73, 16, 195, 208, 247, 157, 36, 136, 100, 238, 133, 231, 95, 226, 170, 43, 175, 224, 129, 7, 239, 67, 226, 162, - 136, 192, 54, 146, 200, 76, 32, 137, 8, 30, 122, 247, 131, 220, 115, 207, 221, 156, 58, 121, 146, 126, 232, 89, 183, 110, 29, 219, 182, 109, 165, 181, - 198, 48, 20, 96, 108, 19, 17, 128, 169, 234, 169, 234, 169, 161, 145, 217, 40, 21, 150, 176, 197, 92, 70, 35, 51, 201, 76, 50, 2, 1, 6, 74, - 194, 24, 59, 200, 108, 88, 162, 84, 216, 230, 18, 19, 1, 231, 206, 175, 241, 232, 23, 255, 152, 151, 95, 218, 71, 68, 32, 21, 85, 3, 146, 128, - 64, 18, 153, 9, 85, 100, 54, 36, 19, 17, 100, 38, 4, 96, 46, 138, 128, 32, 152, 51, 16, 1, 153, 201, 137, 55, 79, 243, 248, 227, 79, 98, - 27, 219, 204, 101, 6, 115, 54, 72, 2, 251, 84, 223, 247, 199, 34, 184, 172, 142, 203, 176, 141, 237, 53, 225, 33, 91, 35, 29, 24, 136, 8, 250, - 94, 60, 246, 216, 87, 89, 94, 191, 142, 91, 110, 185, 153, 136, 96, 206, 22, 6, 44, 33, 7, 65, 195, 54, 173, 5, 59, 175, 216, 78, 68, 96, - 7, 85, 162, 74, 100, 6, 182, 121, 75, 132, 25, 106, 160, 52, 80, 53, 96, 139, 104, 201, 48, 12, 244, 179, 158, 190, 31, 144, 0, 7, 56, 48, - 23, 68, 128, 141, 37, 132, 177, 19, 48, 182, 145, 196, 92, 4, 16, 201, 177, 99, 111, 242, 232, 23, 255, 152, 87, 95, 61, 8, 52, 170, 122, 108, - 147, 153, 64, 32, 9, 219, 24, 51, 87, 85, 188, 69, 18, 227, 81, 71, 100, 16, 17, 216, 38, 51, 144, 64, 22, 38, 176, 197, 215, 30, 127, 146, - 131, 7, 143, 16, 17, 216, 38, 34, 136, 8, 32, 152, 139, 8, 100, 191, 90, 85, 231, 50, 147, 203, 233, 184, 140, 194, 24, 175, 150, 220, 119, 93, - 7, 97, 134, 190, 199, 230, 2, 115, 238, 236, 10, 159, 251, 189, 63, 164, 74, 220, 118, 219, 45, 24, 145, 110, 4, 16, 153, 68, 4, 25, 32, 21, - 115, 17, 65, 68, 48, 103, 155, 136, 64, 10, 34, 130, 57, 219, 68, 36, 85, 197, 202, 249, 21, 78, 245, 103, 57, 191, 178, 202, 249, 243, 231, 89, - 89, 89, 101, 58, 153, 34, 137, 204, 100, 212, 53, 198, 227, 96, 52, 78, 34, 6, 108, 97, 10, 28, 128, 169, 18, 96, 34, 146, 136, 100, 117, 50, - 229, 229, 151, 94, 228, 169, 111, 236, 229, 216, 241, 147, 212, 32, 100, 83, 37, 36, 19, 145, 192, 128, 36, 136, 0, 67, 102, 3, 68, 213, 128, 109, - 230, 100, 131, 33, 2, 236, 160, 100, 34, 0, 65, 100, 112, 226, 196, 105, 30, 125, 244, 49, 134, 161, 232, 186, 17, 111, 169, 18, 173, 5, 184, 17, - 36, 114, 61, 127, 227, 181, 55, 173, 236, 123, 99, 31, 151, 211, 113, 25, 178, 177, 125, 182, 164, 105, 200, 12, 253, 64, 149, 176, 197, 48, 12, 216, - 112, 252, 248, 73, 126, 235, 179, 191, 203, 185, 115, 231, 185, 251, 158, 59, 24, 141, 70, 204, 133, 130, 204, 134, 195, 204, 69, 36, 32, 34, 130, 185, - 136, 192, 134, 8, 243, 22, 201, 128, 120, 243, 196, 97, 14, 31, 62, 206, 155, 39, 79, 113, 230, 204, 89, 214, 214, 214, 152, 205, 102, 72, 34, 51, - 25, 143, 199, 44, 46, 45, 177, 113, 253, 50, 187, 119, 111, 99, 243, 166, 69, 2, 136, 8, 46, 49, 17, 9, 209, 88, 89, 89, 227, 224, 27, 135, - 120, 102, 239, 11, 28, 58, 124, 148, 26, 138, 97, 40, 8, 192, 38, 51, 145, 138, 185, 190, 31, 176, 69, 16, 152, 192, 54, 153, 137, 36, 108, 99, - 155, 170, 194, 54, 24, 164, 34, 8, 34, 147, 108, 13, 1, 127, 248, 135, 95, 226, 245, 215, 14, 67, 36, 182, 137, 8, 46, 49, 182, 137, 8, 36, - 203, 142, 103, 143, 28, 63, 202, 209, 163, 199, 185, 156, 142, 203, 144, 10, 73, 103, 236, 209, 164, 170, 40, 137, 170, 129, 136, 36, 34, 8, 32, 51, - 56, 119, 110, 133, 223, 251, 189, 207, 115, 244, 232, 49, 222, 243, 158, 7, 217, 186, 109, 11, 182, 176, 193, 97, 230, 34, 132, 13, 17, 16, 17, 68, - 4, 17, 193, 156, 13, 182, 152, 59, 117, 250, 60, 123, 159, 121, 153, 227, 199, 223, 228, 204, 153, 83, 156, 59, 119, 158, 213, 213, 85, 250, 190, 199, - 54, 151, 4, 27, 54, 108, 96, 219, 150, 205, 172, 223, 208, 177, 101, 243, 18, 198, 204, 69, 36, 231, 207, 175, 113, 252, 216, 155, 188, 113, 248, 8, - 175, 189, 250, 58, 167, 78, 157, 161, 202, 116, 93, 135, 29, 100, 38, 150, 17, 66, 18, 96, 44, 97, 11, 8, 34, 2, 169, 176, 185, 40, 51, 177, - 205, 92, 70, 64, 0, 17, 64, 16, 153, 148, 138, 209, 104, 204, 51, 207, 60, 207, 31, 253, 209, 151, 33, 18, 34, 152, 139, 8, 230, 34, 146, 204, - 100, 78, 82, 95, 85, 175, 172, 13, 3, 239, 164, 227, 50, 60, 8, 171, 86, 145, 78, 87, 137, 214, 18, 169, 97, 139, 57, 89, 180, 214, 33, 153, - 97, 86, 60, 246, 229, 175, 241, 242, 75, 251, 121, 255, 251, 30, 226, 182, 219, 111, 102, 253, 250, 117, 148, 5, 1, 4, 23, 152, 185, 204, 164, 69, - 195, 54, 182, 113, 128, 129, 32, 56, 123, 246, 44, 175, 31, 120, 157, 195, 135, 142, 114, 232, 208, 65, 250, 126, 32, 2, 140, 152, 77, 123, 78, 156, - 56, 65, 75, 184, 239, 222, 187, 185, 246, 158, 155, 185, 98, 199, 22, 44, 19, 17, 180, 214, 120, 241, 165, 215, 248, 252, 191, 249, 34, 167, 78, 157, - 166, 4, 153, 73, 107, 73, 68, 146, 145, 200, 34, 34, 24, 84, 188, 165, 101, 67, 37, 186, 110, 68, 85, 81, 42, 36, 49, 12, 34, 34, 200, 76, - 134, 97, 64, 50, 221, 66, 199, 210, 226, 24, 91, 100, 4, 115, 153, 141, 195, 71, 79, 240, 155, 255, 231, 191, 226, 236, 217, 85, 50, 19, 219, 204, - 217, 38, 51, 185, 196, 68, 6, 17, 76, 92, 58, 103, 204, 59, 233, 184, 12, 169, 168, 170, 169, 170, 142, 141, 198, 99, 196, 55, 85, 21, 125, 223, - 19, 17, 68, 4, 198, 84, 137, 3, 7, 14, 241, 47, 14, 255, 54, 187, 119, 95, 201, 61, 247, 220, 193, 173, 183, 220, 204, 150, 173, 155, 232, 186, - 134, 44, 34, 18, 75, 252, 223, 213, 193, 91, 240, 231, 247, 125, 223, 245, 231, 235, 253, 254, 252, 254, 199, 213, 238, 234, 96, 157, 173, 147, 79, 137, - 92, 199, 78, 161, 101, 154, 50, 147, 146, 25, 66, 153, 41, 229, 152, 97, 114, 65, 153, 97, 166, 189, 229, 146, 43, 110, 24, 46, 152, 1, 238, 128, - 14, 195, 5, 164, 153, 0, 197, 197, 83, 26, 55, 208, 184, 57, 214, 137, 237, 38, 150, 101, 71, 138, 117, 176, 180, 90, 89, 210, 106, 87, 218, 243, - 254, 79, 191, 239, 231, 253, 126, 177, 63, 41, 10, 30, 198, 146, 108, 147, 148, 244, 241, 88, 92, 72, 194, 221, 72, 66, 136, 182, 185, 251, 206, 59, - 120, 226, 177, 135, 184, 117, 227, 58, 135, 7, 55, 184, 120, 233, 45, 118, 118, 246, 56, 123, 246, 12, 203, 178, 240, 224, 67, 31, 225, 95, 249, 233, - 191, 196, 103, 62, 253, 41, 238, 190, 231, 110, 70, 6, 221, 69, 100, 112, 245, 234, 77, 190, 244, 171, 191, 197, 235, 111, 92, 100, 123, 123, 133, 36, - 64, 72, 193, 200, 4, 9, 33, 108, 3, 166, 102, 177, 209, 110, 218, 6, 140, 221, 204, 57, 217, 144, 68, 85, 81, 85, 188, 39, 34, 216, 221, 219, - 5, 27, 99, 66, 201, 173, 131, 35, 254, 247, 191, 247, 69, 94, 120, 241, 28, 82, 34, 9, 73, 188, 199, 54, 146, 216, 176, 27, 155, 19, 211, 39, - 182, 121, 63, 131, 247, 113, 243, 230, 225, 209, 222, 222, 238, 69, 4, 53, 27, 108, 64, 68, 4, 153, 73, 85, 1, 162, 170, 145, 132, 109, 142, 79, - 78, 120, 241, 197, 115, 188, 248, 226, 75, 220, 117, 247, 157, 60, 242, 200, 195, 60, 246, 216, 35, 60, 112, 223, 125, 220, 121, 215, 89, 118, 118, 86, - 172, 198, 32, 51, 201, 76, 66, 162, 108, 108, 179, 26, 193, 103, 63, 251, 41, 62, 246, 177, 135, 249, 169, 191, 244, 19, 60, 255, 194, 139, 124, 243, - 155, 207, 241, 246, 229, 235, 220, 127, 255, 93, 252, 244, 79, 255, 11, 60, 252, 224, 253, 40, 205, 156, 107, 114, 236, 160, 16, 54, 60, 253, 141, 103, - 120, 243, 205, 75, 140, 76, 108, 147, 153, 72, 162, 187, 209, 106, 240, 46, 209, 221, 72, 65, 68, 96, 160, 187, 17, 208, 109, 48, 216, 38, 51, 233, - 158, 72, 98, 163, 187, 137, 16, 123, 123, 187, 236, 237, 238, 210, 109, 20, 226, 120, 61, 249, 194, 23, 126, 133, 175, 124, 245, 235, 68, 36, 27, 221, - 77, 68, 176, 33, 137, 119, 137, 238, 166, 91, 140, 49, 144, 132, 109, 222, 207, 224, 125, 60, 244, 209, 251, 234, 228, 120, 253, 90, 85, 209, 213, 68, - 6, 85, 133, 16, 32, 64, 188, 203, 128, 137, 16, 115, 26, 133, 168, 130, 75, 23, 223, 230, 194, 27, 151, 248, 234, 87, 190, 206, 246, 246, 54, 219, - 219, 43, 78, 157, 222, 231, 212, 222, 62, 35, 7, 247, 220, 115, 55, 255, 242, 95, 254, 139, 220, 255, 192, 71, 0, 179, 49, 107, 178, 44, 199, 236, - 238, 38, 31, 255, 216, 131, 156, 218, 31, 60, 243, 204, 243, 220, 243, 145, 59, 217, 221, 9, 14, 15, 111, 161, 16, 85, 133, 27, 132, 185, 114, 237, - 58, 223, 120, 250, 15, 88, 102, 177, 181, 21, 136, 160, 219, 128, 201, 4, 204, 109, 166, 170, 168, 106, 196, 109, 130, 174, 162, 13, 8, 20, 66, 36, - 217, 201, 156, 197, 156, 133, 109, 36, 145, 153, 116, 55, 119, 222, 121, 150, 221, 189, 29, 114, 12, 110, 221, 58, 228, 239, 125, 225, 87, 248, 245, 95, - 255, 50, 221, 38, 34, 216, 176, 205, 134, 36, 254, 31, 70, 18, 54, 216, 2, 2, 73, 188, 159, 193, 247, 241, 235, 191, 253, 59, 252, 107, 63, 251, - 51, 148, 253, 138, 219, 29, 82, 148, 27, 73, 84, 55, 85, 19, 219, 72, 65, 183, 177, 65, 10, 4, 184, 77, 42, 32, 204, 156, 19, 12, 135, 71, - 39, 220, 188, 117, 200, 197, 75, 87, 216, 168, 42, 108, 243, 135, 223, 126, 158, 159, 255, 249, 127, 155, 143, 127, 236, 81, 170, 38, 115, 46, 204, 229, - 132, 147, 245, 49, 235, 245, 154, 213, 74, 124, 226, 19, 15, 33, 193, 250, 228, 132, 145, 43, 150, 165, 56, 58, 58, 38, 115, 197, 214, 106, 197, 243, - 207, 189, 196, 197, 75, 111, 99, 139, 110, 19, 1, 2, 186, 27, 9, 102, 21, 18, 84, 21, 96, 64, 84, 53, 179, 138, 141, 170, 194, 109, 170, 10, - 219, 108, 100, 38, 85, 69, 119, 227, 110, 78, 214, 107, 238, 190, 231, 46, 118, 119, 118, 185, 116, 233, 10, 255, 219, 231, 255, 1, 95, 253, 218, 83, - 116, 155, 136, 192, 54, 17, 129, 36, 108, 99, 27, 73, 72, 2, 68, 102, 18, 145, 216, 148, 77, 217, 226, 253, 12, 222, 199, 178, 94, 48, 188, 92, - 85, 107, 208, 78, 117, 33, 5, 115, 46, 216, 166, 219, 216, 147, 170, 34, 36, 26, 48, 208, 93, 8, 49, 103, 97, 243, 142, 136, 160, 187, 145, 68, - 68, 176, 81, 85, 156, 123, 229, 85, 126, 225, 239, 252, 93, 254, 195, 191, 241, 239, 243, 177, 39, 62, 74, 119, 115, 116, 124, 204, 141, 27, 55, 185, - 114, 229, 42, 151, 47, 95, 225, 230, 205, 27, 44, 203, 100, 181, 218, 102, 103, 123, 155, 179, 103, 239, 228, 145, 71, 30, 225, 244, 233, 51, 28, 28, - 28, 243, 244, 55, 158, 97, 89, 79, 198, 24, 116, 21, 206, 32, 98, 133, 16, 99, 12, 220, 205, 106, 123, 11, 27, 214, 235, 53, 17, 73, 183, 17, - 194, 54, 115, 22, 182, 89, 150, 133, 238, 198, 54, 18, 239, 152, 115, 98, 155, 173, 213, 138, 71, 30, 125, 152, 103, 190, 253, 34, 159, 255, 252, 63, - 224, 197, 23, 207, 33, 9, 73, 216, 70, 18, 221, 77, 68, 16, 17, 116, 55, 146, 176, 141, 36, 170, 10, 41, 144, 116, 36, 233, 8, 204, 251, 73, - 222, 199, 195, 15, 63, 68, 119, 239, 68, 232, 231, 16, 119, 180, 193, 221, 84, 23, 93, 13, 24, 119, 99, 140, 13, 203, 178, 96, 27, 219, 216, 96, - 55, 118, 99, 131, 219, 84, 55, 182, 145, 132, 109, 108, 99, 224, 250, 245, 155, 188, 114, 254, 187, 60, 242, 200, 67, 220, 115, 207, 93, 172, 215, 199, - 92, 185, 114, 133, 215, 94, 191, 192, 133, 11, 111, 241, 246, 219, 215, 184, 121, 243, 144, 245, 201, 194, 206, 206, 54, 15, 61, 120, 63, 15, 63, 252, - 16, 251, 251, 167, 248, 218, 215, 158, 226, 235, 95, 255, 38, 153, 43, 114, 12, 144, 176, 27, 183, 81, 136, 136, 96, 35, 51, 177, 161, 170, 153, 115, - 34, 192, 54, 146, 152, 53, 169, 106, 16, 116, 155, 170, 162, 202, 84, 21, 221, 13, 8, 219, 68, 4, 191, 246, 143, 127, 139, 215, 95, 127, 147, 136, - 64, 18, 239, 145, 68, 68, 176, 33, 9, 219, 72, 34, 51, 201, 76, 192, 128, 136, 136, 55, 109, 255, 79, 146, 110, 28, 28, 28, 240, 253, 12, 62, - 64, 87, 95, 4, 93, 168, 238, 7, 187, 27, 219, 100, 14, 108, 179, 177, 120, 66, 55, 85, 133, 221, 216, 198, 54, 110, 35, 132, 16, 229, 162, 91, - 216, 102, 163, 187, 145, 132, 36, 82, 73, 35, 206, 157, 251, 46, 191, 240, 119, 62, 207, 127, 240, 55, 254, 61, 30, 126, 240, 35, 60, 248, 224, 3, - 108, 111, 111, 241, 224, 3, 247, 113, 116, 120, 4, 152, 221, 189, 93, 206, 158, 61, 195, 153, 59, 78, 179, 179, 189, 197, 235, 175, 95, 228, 119, 191, - 242, 251, 44, 179, 136, 48, 138, 193, 24, 131, 170, 66, 17, 108, 116, 155, 204, 192, 54, 221, 141, 109, 192, 180, 205, 70, 117, 19, 145, 40, 26, 181, - 144, 64, 18, 17, 98, 189, 94, 179, 209, 93, 172, 215, 39, 124, 235, 155, 207, 18, 17, 140, 49, 248, 94, 182, 177, 141, 36, 54, 108, 35, 137, 136, - 0, 68, 85, 49, 70, 16, 17, 216, 190, 105, 251, 150, 36, 222, 79, 242, 62, 62, 250, 208, 131, 92, 189, 118, 125, 189, 183, 191, 247, 87, 36, 253, - 57, 219, 96, 110, 51, 54, 116, 23, 115, 78, 34, 130, 238, 166, 170, 217, 48, 198, 24, 219, 216, 70, 10, 186, 141, 36, 222, 83, 85, 216, 102, 195, - 54, 182, 185, 126, 253, 38, 231, 206, 189, 202, 71, 31, 126, 136, 187, 238, 60, 139, 4, 91, 219, 43, 246, 246, 119, 216, 223, 223, 229, 212, 169, 83, - 236, 237, 237, 177, 187, 183, 207, 193, 193, 49, 191, 252, 203, 95, 226, 252, 171, 111, 144, 25, 216, 38, 35, 177, 205, 198, 106, 12, 54, 50, 147, 204, - 164, 187, 232, 54, 27, 17, 73, 85, 81, 53, 193, 80, 221, 116, 55, 179, 138, 170, 137, 36, 230, 44, 186, 155, 238, 166, 170, 144, 196, 24, 3, 73, - 116, 55, 27, 221, 205, 134, 36, 222, 35, 9, 73, 108, 72, 66, 2, 73, 68, 136, 49, 18, 41, 158, 94, 175, 215, 191, 152, 153, 125, 112, 112, 192, - 247, 147, 188, 143, 143, 126, 244, 33, 238, 187, 239, 94, 47, 203, 242, 99, 153, 227, 103, 170, 138, 57, 39, 221, 205, 70, 87, 211, 221, 216, 208, 221, - 216, 77, 85, 99, 155, 119, 24, 12, 216, 198, 136, 141, 170, 162, 187, 233, 110, 54, 108, 51, 231, 68, 18, 27, 87, 175, 222, 224, 249, 231, 191, 195, - 238, 222, 46, 31, 249, 200, 221, 172, 182, 86, 100, 14, 182, 183, 118, 216, 218, 222, 1, 39, 175, 191, 246, 22, 255, 215, 255, 249, 155, 60, 255, 252, - 75, 40, 196, 70, 230, 64, 33, 16, 140, 49, 104, 155, 80, 96, 67, 102, 130, 1, 1, 54, 221, 141, 219, 216, 166, 170, 17, 48, 171, 88, 47, 107, - 170, 154, 13, 155, 119, 84, 21, 221, 77, 102, 34, 9, 73, 108, 216, 70, 18, 182, 249, 94, 17, 129, 109, 36, 177, 33, 9, 73, 216, 38, 34, 1, - 125, 233, 210, 165, 75, 255, 112, 127, 127, 159, 131, 131, 3, 190, 159, 228, 125, 124, 247, 181, 215, 121, 224, 254, 251, 232, 246, 61, 171, 213, 248, 183, - 128, 49, 70, 82, 213, 204, 185, 176, 209, 213, 108, 216, 96, 155, 119, 25, 119, 99, 27, 187, 193, 6, 137, 110, 211, 221, 116, 55, 182, 121, 143, 109, - 54, 36, 1, 230, 224, 224, 144, 231, 158, 251, 14, 175, 189, 246, 38, 235, 165, 88, 102, 115, 229, 234, 77, 190, 243, 226, 119, 249, 202, 239, 126, 131, - 223, 253, 202, 239, 115, 249, 242, 85, 20, 65, 230, 224, 61, 54, 100, 4, 57, 6, 27, 145, 73, 68, 16, 18, 109, 35, 137, 57, 139, 234, 6, 137, - 147, 147, 53, 85, 147, 89, 69, 119, 209, 54, 32, 230, 156, 128, 88, 150, 133, 57, 39, 182, 89, 173, 86, 124, 175, 136, 192, 54, 146, 136, 8, 54, - 108, 179, 33, 137, 136, 96, 35, 66, 68, 136, 136, 96, 140, 193, 109, 191, 116, 230, 204, 153, 175, 85, 21, 7, 7, 7, 124, 63, 131, 15, 96, 27, - 219, 207, 117, 251, 114, 68, 62, 184, 44, 107, 34, 68, 102, 82, 85, 204, 57, 65, 98, 206, 194, 110, 54, 108, 110, 19, 118, 97, 155, 101, 78, 20, - 73, 85, 209, 221, 216, 70, 18, 182, 169, 42, 50, 147, 170, 162, 187, 217, 144, 130, 101, 22, 207, 254, 225, 119, 120, 238, 249, 151, 89, 173, 2, 41, - 49, 224, 134, 72, 145, 17, 68, 4, 138, 6, 195, 200, 32, 199, 0, 137, 170, 98, 181, 90, 33, 9, 219, 108, 68, 136, 245, 122, 193, 109, 170, 38, - 110, 35, 241, 142, 49, 6, 179, 38, 27, 221, 133, 109, 192, 72, 194, 54, 99, 12, 54, 50, 147, 238, 230, 61, 17, 193, 123, 36, 97, 155, 238, 102, - 140, 129, 109, 36, 33, 5, 182, 217, 144, 226, 150, 221, 223, 182, 205, 165, 75, 151, 120, 63, 131, 15, 48, 231, 194, 156, 245, 250, 24, 227, 249, 49, - 242, 193, 57, 11, 219, 8, 17, 10, 222, 147, 25, 204, 217, 72, 252, 49, 41, 80, 192, 24, 131, 101, 54, 146, 136, 8, 54, 108, 179, 209, 221, 68, - 4, 146, 88, 150, 197, 85, 245, 150, 237, 206, 204, 123, 51, 51, 186, 77, 21, 183, 53, 118, 147, 153, 96, 176, 141, 109, 236, 38, 35, 105, 55, 234, - 194, 134, 213, 24, 72, 162, 187, 193, 70, 219, 91, 128, 145, 192, 128, 20, 156, 44, 199, 8, 144, 68, 119, 131, 65, 10, 64, 216, 32, 129, 36, 108, - 19, 17, 108, 216, 70, 18, 182, 217, 144, 132, 109, 170, 138, 204, 68, 18, 146, 216, 136, 72, 192, 216, 77, 166, 0, 211, 61, 223, 236, 230, 5, 219, - 124, 144, 224, 3, 44, 179, 249, 115, 159, 254, 228, 141, 170, 249, 7, 85, 133, 221, 108, 204, 42, 102, 53, 57, 6, 82, 16, 145, 216, 166, 219, 108, - 216, 166, 186, 233, 110, 20, 129, 36, 108, 99, 27, 219, 116, 55, 203, 178, 176, 81, 85, 172, 215, 107, 159, 156, 156, 252, 175, 221, 253, 87, 151, 101, - 249, 217, 101, 89, 254, 251, 170, 90, 115, 219, 156, 69, 85, 209, 109, 54, 50, 131, 119, 216, 132, 18, 73, 108, 84, 53, 96, 12, 204, 101, 193, 54, - 17, 129, 36, 108, 35, 5, 237, 198, 110, 34, 130, 234, 102, 163, 186, 152, 85, 44, 75, 209, 13, 17, 201, 156, 147, 245, 122, 189, 72, 42, 254, 72, - 85, 97, 155, 13, 219, 116, 55, 182, 249, 127, 179, 161, 219, 216, 16, 17, 68, 4, 153, 201, 109, 79, 207, 89, 23, 108, 243, 65, 146, 15, 112, 225, - 194, 155, 156, 58, 117, 138, 110, 223, 3, 250, 55, 193, 17, 18, 27, 85, 141, 13, 221, 133, 128, 57, 11, 219, 116, 55, 118, 35, 9, 27, 108, 3, - 98, 195, 54, 203, 178, 176, 145, 153, 100, 38, 221, 205, 241, 241, 241, 83, 221, 253, 183, 186, 251, 57, 73, 151, 186, 251, 183, 129, 251, 199, 24, 127, - 62, 51, 177, 141, 13, 99, 36, 96, 36, 145, 99, 96, 192, 109, 16, 100, 36, 25, 129, 34, 64, 16, 17, 100, 36, 17, 65, 119, 99, 155, 245, 122, - 205, 198, 156, 147, 141, 170, 194, 109, 204, 134, 168, 42, 186, 155, 170, 98, 206, 249, 173, 204, 140, 219, 78, 69, 4, 146, 176, 205, 134, 36, 34, 130, - 13, 73, 108, 72, 66, 18, 27, 17, 66, 18, 99, 36, 153, 1, 8, 219, 127, 123, 140, 252, 202, 155, 111, 94, 228, 131, 4, 31, 98, 189, 94, 152, - 115, 126, 203, 246, 91, 99, 12, 218, 102, 206, 201, 134, 36, 164, 160, 109, 192, 108, 216, 141, 13, 221, 102, 195, 54, 115, 78, 108, 99, 155, 49, 6, - 146, 168, 42, 150, 101, 97, 89, 22, 108, 255, 221, 204, 60, 47, 9, 219, 68, 196, 205, 170, 250, 47, 215, 203, 250, 133, 170, 66, 18, 99, 36, 54, - 216, 220, 38, 36, 177, 97, 160, 102, 33, 137, 182, 169, 154, 116, 27, 12, 109, 51, 231, 100, 206, 73, 85, 147, 145, 116, 55, 17, 65, 102, 82, 213, - 28, 31, 31, 83, 213, 216, 166, 187, 169, 42, 186, 251, 0, 248, 98, 132, 150, 204, 68, 18, 153, 137, 36, 36, 33, 9, 219, 72, 34, 34, 200, 76, - 34, 130, 204, 100, 181, 74, 50, 69, 166, 200, 12, 64, 68, 196, 5, 219, 191, 93, 85, 124, 152, 224, 67, 216, 80, 213, 175, 116, 247, 75, 199, 71, - 199, 204, 57, 201, 28, 72, 66, 2, 219, 204, 57, 233, 54, 221, 77, 183, 233, 110, 186, 139, 170, 162, 187, 137, 16, 115, 78, 230, 156, 72, 194, 54, - 146, 216, 168, 170, 235, 192, 151, 185, 205, 54, 27, 22, 216, 126, 177, 170, 254, 143, 238, 102, 67, 18, 221, 13, 4, 82, 178, 94, 79, 92, 32, 5, - 17, 194, 54, 146, 48, 48, 198, 32, 50, 201, 76, 186, 155, 185, 20, 235, 245, 194, 122, 89, 232, 106, 220, 102, 206, 137, 109, 36, 192, 102, 206, 201, - 187, 68, 151, 191, 177, 202, 124, 54, 34, 238, 144, 196, 134, 109, 34, 130, 136, 32, 34, 144, 132, 109, 34, 130, 136, 32, 66, 216, 133, 4, 146, 200, - 12, 64, 100, 174, 144, 242, 203, 115, 214, 243, 32, 62, 76, 240, 33, 186, 155, 175, 63, 245, 244, 77, 219, 79, 101, 38, 182, 177, 77, 205, 133, 101, - 89, 176, 141, 36, 54, 236, 70, 18, 221, 141, 36, 54, 34, 196, 156, 133, 36, 36, 209, 221, 72, 66, 18, 182, 185, 237, 130, 237, 215, 248, 30, 174, - 102, 140, 97, 204, 175, 74, 58, 144, 196, 134, 36, 186, 155, 182, 17, 2, 9, 187, 81, 4, 237, 38, 51, 201, 76, 186, 155, 174, 162, 187, 168, 106, - 34, 19, 108, 186, 139, 182, 169, 46, 108, 112, 55, 182, 105, 55, 138, 96, 140, 193, 109, 221, 230, 239, 175, 86, 91, 91, 224, 59, 248, 35, 146, 120, - 143, 36, 34, 130, 204, 228, 93, 198, 54, 17, 137, 20, 72, 34, 34, 1, 35, 105, 13, 124, 97, 127, 255, 212, 73, 55, 31, 42, 248, 16, 221, 205, - 191, 244, 23, 255, 188, 171, 230, 87, 21, 90, 86, 171, 65, 8, 20, 129, 36, 170, 38, 27, 182, 145, 132, 109, 108, 99, 243, 142, 101, 153, 116, 55, - 27, 17, 129, 36, 36, 97, 27, 219, 84, 213, 53, 219, 87, 186, 155, 199, 31, 251, 24, 143, 63, 250, 24, 143, 63, 250, 152, 94, 125, 234, 89, 34, - 226, 5, 219, 175, 74, 66, 18, 146, 216, 112, 55, 10, 97, 55, 180, 145, 130, 136, 100, 206, 137, 219, 84, 21, 203, 156, 84, 53, 96, 186, 27, 219, - 140, 49, 176, 77, 119, 51, 231, 164, 109, 186, 77, 87, 51, 151, 133, 245, 122, 205, 178, 44, 47, 111, 111, 109, 125, 25, 241, 241, 188, 45, 66, 68, - 4, 153, 73, 102, 146, 153, 72, 66, 18, 239, 145, 32, 51, 136, 72, 108, 144, 68, 119, 3, 194, 237, 111, 206, 57, 127, 227, 228, 228, 132, 183, 222, - 186, 196, 135, 9, 62, 196, 55, 158, 254, 22, 115, 22, 115, 246, 83, 115, 214, 155, 110, 83, 221, 128, 144, 130, 136, 68, 18, 171, 213, 138, 213, 88, - 177, 33, 137, 170, 162, 187, 17, 16, 17, 116, 55, 221, 77, 119, 211, 221, 116, 55, 2, 36, 85, 68, 244, 103, 126, 236, 211, 82, 207, 196, 94, 185, - 123, 235, 167, 254, 218, 207, 238, 158, 57, 117, 199, 173, 174, 122, 163, 187, 145, 132, 109, 36, 17, 17, 72, 66, 1, 229, 166, 170, 232, 42, 150, 101, - 97, 35, 51, 201, 76, 192, 216, 102, 206, 201, 172, 162, 102, 97, 27, 219, 116, 155, 89, 141, 9, 20, 73, 102, 98, 27, 236, 95, 191, 99, 127, 239, - 138, 228, 79, 70, 4, 82, 176, 97, 155, 141, 170, 162, 187, 145, 68, 68, 32, 9, 16, 27, 146, 201, 12, 34, 2, 99, 66, 242, 106, 140, 207, 239, - 140, 173, 139, 221, 205, 15, 34, 248, 1, 116, 55, 115, 206, 87, 109, 255, 65, 85, 97, 155, 238, 194, 54, 153, 129, 109, 108, 83, 221, 100, 38, 99, - 12, 70, 38, 238, 34, 34, 136, 16, 27, 182, 217, 176, 141, 36, 102, 21, 6, 237, 239, 237, 143, 91, 7, 183, 182, 218, 222, 118, 247, 142, 237, 157, - 238, 222, 221, 222, 222, 201, 136, 184, 32, 137, 238, 102, 195, 54, 223, 43, 51, 8, 137, 141, 144, 216, 144, 32, 66, 116, 53, 85, 13, 54, 17, 193, - 172, 162, 187, 176, 65, 17, 100, 14, 108, 51, 231, 164, 187, 89, 150, 229, 237, 49, 198, 111, 218, 125, 151, 34, 158, 224, 29, 6, 76, 119, 19, 33, - 50, 19, 219, 188, 71, 18, 18, 68, 8, 73, 188, 103, 100, 146, 153, 207, 85, 213, 23, 14, 79, 142, 216, 223, 221, 231, 137, 199, 158, 224, 195, 4, - 63, 128, 111, 60, 253, 7, 236, 237, 237, 28, 86, 213, 111, 42, 2, 219, 116, 27, 48, 235, 245, 194, 156, 147, 238, 98, 206, 133, 8, 97, 155, 234, - 162, 219, 116, 55, 182, 145, 132, 36, 54, 36, 241, 14, 9, 68, 108, 175, 86, 59, 221, 181, 211, 221, 187, 213, 189, 219, 221, 123, 93, 189, 7, 236, - 72, 186, 213, 221, 116, 55, 221, 205, 70, 85, 81, 53, 89, 150, 53, 27, 145, 73, 132, 136, 8, 186, 138, 170, 166, 170, 49, 32, 137, 118, 51, 231, - 66, 119, 179, 94, 175, 169, 154, 184, 155, 238, 166, 187, 169, 42, 214, 235, 53, 182, 127, 127, 103, 103, 231, 181, 234, 122, 56, 20, 143, 100, 38, 153, - 34, 51, 136, 0, 27, 108, 147, 153, 100, 38, 153, 137, 36, 34, 2, 73, 72, 34, 34, 136, 8, 86, 171, 45, 219, 253, 63, 175, 74, 231, 239, 216, - 63, 21, 1, 162, 139, 39, 30, 125, 156, 15, 50, 248, 1, 29, 159, 172, 177, 249, 39, 171, 149, 46, 71, 232, 110, 48, 115, 153, 84, 21, 85, 69, - 132, 144, 196, 178, 76, 170, 154, 57, 27, 69, 96, 68, 119, 1, 98, 195, 54, 221, 205, 70, 132, 88, 229, 216, 157, 85, 103, 203, 190, 233, 246, 176, - 157, 224, 180, 73, 64, 183, 29, 75, 162, 187, 89, 173, 86, 100, 38, 153, 9, 152, 110, 211, 109, 186, 155, 28, 3, 100, 54, 50, 147, 57, 39, 153, - 65, 68, 224, 54, 203, 178, 96, 64, 145, 116, 23, 221, 147, 110, 19, 17, 116, 21, 174, 62, 92, 229, 248, 178, 32, 192, 159, 24, 35, 239, 228, 54, - 219, 128, 145, 2, 137, 219, 154, 136, 68, 130, 8, 209, 13, 18, 72, 16, 17, 68, 136, 140, 68, 248, 27, 224, 255, 101, 108, 15, 149, 59, 64, 213, - 10, 132, 249, 32, 193, 15, 168, 219, 204, 89, 207, 44, 203, 242, 251, 85, 69, 119, 211, 54, 146, 200, 76, 34, 130, 80, 80, 93, 40, 68, 102, 50, - 198, 138, 13, 41, 176, 141, 36, 36, 33, 9, 219, 140, 28, 8, 206, 84, 213, 71, 220, 222, 177, 123, 215, 238, 221, 238, 222, 107, 247, 94, 119, 239, - 131, 182, 184, 77, 18, 153, 137, 36, 36, 81, 213, 8, 8, 9, 108, 150, 101, 97, 206, 66, 18, 221, 133, 109, 164, 96, 89, 47, 84, 55, 146, 176, - 161, 187, 169, 106, 230, 44, 230, 156, 84, 21, 115, 22, 221, 253, 252, 214, 106, 245, 74, 87, 239, 71, 198, 147, 153, 177, 189, 90, 37, 138, 32, 51, - 200, 12, 34, 130, 213, 106, 69, 132, 176, 27, 219, 100, 6, 146, 200, 76, 36, 200, 72, 34, 226, 176, 187, 255, 219, 17, 171, 215, 203, 29, 128, 16, - 18, 230, 195, 4, 63, 160, 170, 102, 127, 119, 235, 86, 119, 253, 67, 80, 71, 4, 171, 213, 138, 213, 24, 216, 166, 187, 105, 27, 41, 248, 94, 82, - 96, 27, 219, 108, 216, 198, 54, 239, 177, 57, 235, 246, 125, 118, 111, 87, 247, 110, 117, 239, 181, 189, 219, 221, 123, 213, 181, 111, 247, 25, 73, 68, - 4, 221, 77, 85, 81, 85, 68, 4, 57, 6, 198, 68, 136, 238, 162, 187, 1, 97, 131, 36, 106, 78, 102, 21, 33, 17, 145, 96, 179, 44, 11, 27, - 17, 129, 109, 54, 236, 94, 34, 226, 107, 72, 13, 156, 14, 197, 143, 75, 65, 230, 64, 130, 136, 96, 140, 65, 102, 32, 37, 17, 65, 102, 34, 137, - 8, 145, 153, 68, 36, 82, 16, 17, 216, 254, 130, 237, 47, 74, 4, 32, 254, 152, 0, 241, 65, 130, 31, 208, 179, 207, 254, 33, 199, 39, 107, 230, - 236, 95, 5, 206, 71, 4, 221, 77, 219, 100, 38, 54, 116, 55, 35, 19, 119, 35, 65, 132, 176, 139, 136, 32, 34, 168, 42, 108, 19, 17, 68, 4, - 182, 81, 232, 84, 211, 31, 45, 123, 167, 187, 119, 186, 189, 227, 238, 93, 119, 239, 85, 213, 190, 225, 78, 254, 72, 119, 35, 9, 73, 216, 166, 187, - 9, 5, 17, 193, 214, 214, 54, 91, 91, 91, 68, 136, 174, 98, 46, 11, 85, 69, 102, 98, 160, 187, 104, 27, 27, 170, 76, 85, 97, 155, 170, 194, - 246, 43, 91, 91, 91, 47, 218, 30, 202, 184, 127, 107, 103, 247, 209, 49, 182, 168, 134, 49, 182, 128, 4, 68, 68, 18, 33, 34, 146, 136, 224, 93, - 98, 53, 6, 35, 147, 145, 137, 224, 235, 180, 255, 235, 85, 172, 14, 176, 184, 205, 128, 217, 144, 248, 48, 193, 15, 161, 38, 220, 188, 113, 244, 98, - 85, 255, 74, 119, 51, 231, 68, 130, 238, 6, 76, 102, 0, 70, 226, 29, 221, 69, 102, 242, 30, 73, 68, 4, 27, 17, 65, 102, 18, 17, 163, 237, - 143, 119, 247, 142, 237, 29, 187, 119, 186, 122, 183, 187, 119, 186, 123, 223, 246, 221, 220, 38, 137, 136, 192, 54, 182, 145, 32, 4, 146, 168, 42, 236, - 6, 76, 85, 35, 9, 99, 12, 116, 55, 203, 178, 80, 85, 132, 2, 27, 36, 97, 131, 36, 230, 156, 5, 122, 42, 34, 142, 5, 219, 33, 61, 250, - 137, 79, 124, 226, 236, 125, 247, 63, 192, 131, 15, 62, 196, 24, 43, 238, 191, 255, 126, 246, 246, 246, 57, 125, 250, 12, 99, 172, 200, 76, 36, 17, - 17, 100, 38, 182, 1, 3, 62, 95, 213, 255, 77, 106, 188, 37, 148, 2, 27, 12, 24, 227, 173, 154, 216, 205, 7, 9, 126, 8, 221, 197, 233, 51, - 123, 93, 85, 191, 4, 92, 138, 8, 36, 129, 141, 219, 72, 194, 230, 29, 153, 9, 136, 238, 166, 187, 137, 8, 50, 147, 238, 102, 195, 54, 27, 153, - 73, 102, 126, 188, 230, 220, 119, 123, 203, 221, 219, 118, 111, 219, 222, 110, 247, 105, 73, 119, 74, 98, 67, 18, 153, 137, 36, 36, 33, 5, 221, 69, - 85, 99, 67, 68, 16, 17, 40, 2, 33, 186, 139, 154, 147, 170, 194, 134, 101, 153, 72, 162, 187, 177, 77, 85, 97, 251, 149, 213, 106, 245, 135, 64, - 70, 228, 174, 164, 211, 23, 46, 92, 200, 245, 250, 132, 157, 157, 29, 246, 246, 246, 184, 247, 222, 123, 57, 125, 250, 52, 247, 222, 123, 47, 71, 71, - 71, 204, 89, 68, 4, 171, 213, 138, 13, 73, 220, 246, 70, 205, 250, 69, 183, 223, 104, 247, 221, 192, 54, 82, 27, 186, 81, 163, 240, 58, 146, 115, - 175, 158, 231, 131, 36, 63, 132, 183, 47, 95, 230, 238, 187, 239, 98, 89, 47, 23, 115, 228, 227, 17, 241, 47, 118, 155, 28, 3, 69, 128, 33, 199, - 96, 86, 209, 93, 8, 48, 70, 10, 34, 130, 170, 34, 51, 169, 42, 222, 35, 137, 238, 118, 72, 191, 43, 81, 109, 111, 217, 94, 25, 70, 117, 223, - 135, 248, 87, 51, 115, 63, 51, 137, 8, 34, 2, 219, 100, 36, 153, 66, 18, 146, 144, 4, 134, 145, 9, 18, 216, 116, 155, 165, 38, 27, 85, 69, - 119, 19, 145, 116, 55, 238, 166, 103, 45, 192, 151, 86, 171, 213, 75, 66, 139, 4, 15, 62, 248, 208, 195, 183, 110, 222, 252, 204, 193, 193, 173, 184, - 118, 245, 42, 115, 78, 46, 95, 190, 204, 209, 209, 17, 87, 174, 92, 225, 228, 228, 4, 73, 140, 28, 8, 17, 138, 217, 246, 183, 215, 235, 229, 239, - 183, 121, 46, 20, 7, 138, 184, 21, 210, 77, 164, 99, 164, 6, 219, 152, 115, 175, 190, 194, 135, 73, 126, 72, 111, 189, 125, 153, 251, 30, 184, 175, - 221, 253, 122, 100, 254, 213, 64, 103, 109, 35, 160, 221, 84, 53, 203, 156, 132, 4, 152, 110, 131, 2, 219, 84, 21, 17, 129, 109, 186, 155, 204, 68, - 18, 85, 165, 219, 126, 39, 34, 14, 128, 149, 97, 24, 71, 187, 31, 31, 99, 252, 149, 213, 106, 53, 248, 35, 146, 144, 68, 102, 48, 198, 32, 51, - 145, 68, 68, 144, 17, 84, 55, 118, 83, 213, 72, 208, 109, 140, 233, 110, 218, 208, 109, 170, 138, 185, 44, 244, 236, 231, 182, 183, 183, 127, 45, 20, - 7, 130, 67, 164, 163, 204, 188, 188, 179, 189, 115, 243, 240, 224, 224, 12, 104, 107, 189, 94, 198, 178, 172, 181, 172, 23, 186, 155, 237, 237, 109, 86, - 171, 213, 146, 138, 91, 192, 185, 154, 243, 55, 150, 245, 252, 146, 164, 239, 100, 230, 91, 25, 113, 49, 35, 222, 82, 196, 117, 41, 22, 103, 88, 136, - 147, 48, 55, 175, 93, 231, 195, 12, 126, 4, 181, 76, 94, 120, 245, 252, 211, 79, 62, 241, 196, 223, 150, 244, 159, 27, 143, 57, 39, 109, 211, 110, - 50, 147, 141, 42, 131, 68, 40, 176, 77, 102, 82, 85, 100, 38, 221, 141, 109, 50, 19, 73, 219, 221, 125, 150, 228, 117, 64, 108, 152, 141, 135, 35, - 98, 123, 206, 73, 102, 18, 17, 100, 38, 146, 0, 209, 54, 33, 80, 4, 182, 81, 8, 170, 153, 101, 36, 81, 221, 44, 115, 98, 55, 221, 141, 20, - 72, 98, 163, 171, 15, 50, 243, 183, 71, 142, 171, 224, 35, 224, 8, 116, 120, 237, 234, 181, 183, 35, 116, 126, 172, 86, 95, 202, 200, 143, 2, 119, - 67, 110, 129, 19, 36, 33, 187, 250, 96, 218, 111, 185, 251, 34, 112, 101, 172, 198, 141, 80, 92, 85, 232, 74, 70, 92, 27, 210, 65, 75, 19, 133, - 163, 154, 151, 206, 159, 227, 7, 53, 248, 17, 92, 60, 127, 157, 79, 61, 246, 168, 151, 101, 249, 31, 86, 57, 254, 66, 142, 252, 119, 157, 1, 221, - 156, 172, 139, 8, 209, 221, 128, 200, 8, 20, 193, 178, 76, 108, 19, 17, 116, 55, 146, 136, 8, 186, 27, 73, 43, 236, 125, 65, 27, 10, 16, 144, - 146, 30, 1, 97, 55, 221, 77, 102, 82, 53, 137, 8, 198, 24, 96, 19, 49, 232, 46, 50, 18, 73, 68, 36, 166, 153, 115, 97, 89, 22, 54, 164, - 100, 195, 134, 101, 89, 179, 44, 11, 22, 95, 219, 217, 217, 121, 86, 161, 67, 208, 33, 112, 8, 28, 73, 58, 1, 234, 182, 55, 187, 251, 91, 66, - 72, 10, 133, 36, 48, 182, 5, 51, 34, 22, 101, 158, 32, 29, 11, 142, 20, 113, 28, 210, 90, 168, 44, 250, 47, 124, 234, 113, 254, 233, 115, 47, - 115, 238, 252, 43, 252, 48, 6, 63, 130, 123, 238, 63, 69, 157, 52, 63, 243, 115, 159, 188, 242, 91, 95, 120, 225, 63, 149, 185, 127, 53, 198, 95, - 70, 77, 196, 130, 0, 41, 16, 5, 18, 115, 22, 27, 146, 168, 42, 108, 19, 17, 140, 49, 144, 68, 85, 33, 41, 35, 2, 119, 79, 192, 183, 157, - 150, 244, 88, 102, 0, 38, 51, 129, 166, 187, 145, 192, 110, 148, 3, 48, 93, 197, 136, 100, 86, 209, 109, 186, 155, 101, 153, 44, 203, 66, 230, 138, - 136, 64, 50, 39, 39, 199, 44, 203, 66, 85, 189, 188, 183, 187, 247, 143, 34, 227, 26, 112, 44, 233, 16, 56, 4, 142, 129, 69, 82, 73, 154, 192, - 20, 154, 10, 77, 161, 10, 81, 146, 166, 164, 10, 152, 72, 37, 169, 128, 146, 84, 141, 220, 96, 117, 243, 181, 239, 92, 224, 149, 243, 175, 240, 195, - 74, 126, 4, 119, 157, 189, 19, 4, 231, 158, 125, 59, 14, 15, 214, 151, 35, 245, 117, 227, 79, 43, 244, 104, 68, 48, 171, 168, 154, 72, 65, 87, - 113, 199, 233, 51, 156, 57, 115, 134, 101, 89, 120, 228, 145, 71, 56, 58, 58, 226, 201, 39, 159, 228, 214, 173, 91, 252, 228, 79, 254, 36, 175, 191, - 254, 250, 113, 70, 252, 222, 24, 227, 138, 224, 4, 180, 238, 238, 79, 41, 227, 95, 143, 136, 149, 36, 50, 69, 102, 32, 137, 136, 32, 51, 16, 2, - 243, 142, 145, 131, 101, 153, 156, 172, 79, 0, 1, 166, 219, 204, 217, 204, 57, 145, 68, 119, 179, 44, 203, 173, 213, 106, 245, 75, 123, 187, 123, 207, - 6, 28, 41, 226, 86, 72, 7, 146, 14, 37, 29, 41, 98, 29, 138, 147, 144, 214, 82, 172, 35, 99, 137, 136, 69, 210, 58, 165, 69, 210, 18, 210, - 130, 52, 37, 77, 80, 129, 74, 33, 55, 197, 208, 224, 165, 243, 231, 184, 118, 245, 109, 126, 20, 131, 31, 153, 48, 246, 246, 206, 86, 156, 28, 215, - 51, 217, 245, 55, 35, 243, 63, 137, 204, 159, 3, 157, 18, 1, 134, 136, 100, 119, 119, 135, 199, 31, 127, 130, 91, 183, 110, 241, 227, 63, 254, 227, - 92, 186, 116, 137, 123, 239, 189, 151, 87, 207, 191, 202, 197, 55, 47, 50, 114, 220, 112, 247, 137, 164, 221, 200, 60, 176, 122, 161, 253, 185, 204, 177, - 27, 25, 224, 102, 140, 164, 170, 217, 144, 132, 13, 166, 129, 96, 140, 21, 179, 138, 200, 96, 197, 138, 170, 70, 10, 164, 192, 158, 116, 55, 182, 153, - 203, 82, 17, 241, 197, 83, 251, 251, 191, 19, 210, 145, 164, 35, 208, 145, 196, 17, 112, 2, 44, 66, 133, 84, 18, 133, 84, 192, 148, 212, 130, 146, - 84, 130, 66, 42, 65, 11, 25, 201, 220, 246, 157, 87, 206, 241, 39, 33, 249, 17, 156, 61, 123, 39, 33, 129, 4, 88, 10, 228, 230, 234, 156, 253, - 27, 93, 253, 124, 40, 238, 207, 200, 7, 164, 72, 110, 59, 58, 58, 164, 170, 185, 124, 249, 45, 230, 156, 92, 187, 118, 157, 27, 55, 110, 112, 116, - 120, 200, 229, 203, 151, 233, 234, 175, 142, 49, 158, 202, 136, 107, 146, 174, 172, 151, 245, 67, 18, 127, 51, 51, 239, 16, 38, 115, 176, 97, 131, 36, - 198, 72, 4, 140, 145, 116, 55, 182, 89, 150, 133, 89, 147, 238, 166, 219, 204, 89, 84, 21, 27, 221, 205, 122, 189, 118, 119, 255, 218, 233, 253, 83, - 191, 176, 26, 227, 154, 20, 7, 146, 110, 69, 198, 129, 164, 195, 144, 142, 36, 173, 35, 98, 157, 210, 146, 17, 235, 144, 214, 138, 152, 33, 45, 138, - 88, 80, 76, 164, 137, 212, 142, 52, 136, 151, 206, 159, 227, 202, 245, 107, 252, 73, 17, 63, 162, 187, 31, 122, 132, 51, 41, 12, 132, 20, 216, 1, - 72, 110, 150, 246, 67, 109, 255, 27, 134, 127, 39, 34, 126, 114, 246, 114, 186, 27, 173, 215, 39, 236, 238, 238, 114, 120, 116, 140, 128, 174, 238, 154, - 243, 247, 182, 183, 183, 127, 97, 123, 107, 251, 21, 227, 43, 93, 117, 180, 244, 252, 143, 87, 171, 213, 127, 180, 94, 175, 137, 8, 50, 19, 73, 128, - 217, 216, 218, 218, 194, 110, 50, 130, 110, 35, 137, 234, 102, 89, 22, 192, 84, 65, 119, 179, 81, 85, 156, 156, 156, 208, 221, 191, 115, 199, 254, 169, - 255, 106, 119, 119, 247, 2, 102, 65, 58, 150, 56, 1, 142, 5, 107, 73, 19, 104, 65, 133, 212, 64, 73, 106, 67, 11, 44, 100, 11, 115, 219, 75, - 231, 95, 225, 79, 139, 248, 255, 224, 241, 199, 158, 32, 49, 141, 144, 91, 216, 97, 8, 1, 182, 115, 153, 243, 158, 118, 127, 118, 186, 127, 234, 228, - 100, 253, 185, 49, 242, 225, 101, 153, 187, 64, 217, 190, 132, 249, 202, 222, 238, 238, 63, 94, 141, 241, 166, 205, 9, 176, 92, 189, 118, 245, 161, 159, - 248, 236, 79, 252, 143, 171, 173, 173, 79, 188, 250, 234, 121, 50, 147, 155, 55, 111, 145, 25, 116, 23, 146, 216, 222, 222, 38, 34, 16, 198, 134, 182, - 89, 150, 133, 170, 162, 170, 17, 162, 109, 132, 56, 62, 62, 242, 178, 204, 47, 239, 237, 237, 253, 23, 167, 246, 247, 95, 5, 166, 96, 45, 233, 4, - 233, 4, 88, 11, 166, 160, 5, 109, 169, 3, 89, 162, 185, 173, 52, 124, 237, 244, 3, 156, 190, 117, 137, 243, 47, 63, 207, 159, 54, 241, 39, 224, - 137, 71, 31, 167, 99, 69, 244, 130, 109, 9, 75, 16, 186, 109, 100, 82, 85, 99, 233, 222, 61, 62, 57, 57, 211, 213, 123, 17, 234, 49, 198, 173, - 213, 106, 117, 212, 221, 216, 14, 131, 70, 68, 95, 186, 114, 249, 167, 158, 120, 226, 137, 95, 60, 60, 60, 188, 227, 51, 159, 249, 12, 111, 188, 241, - 6, 27, 103, 207, 158, 229, 249, 231, 159, 231, 129, 7, 30, 224, 245, 215, 95, 35, 51, 176, 77, 85, 97, 155, 57, 155, 170, 162, 230, 36, 16, 182, - 89, 230, 156, 213, 245, 155, 251, 123, 251, 255, 221, 254, 222, 222, 183, 109, 31, 2, 235, 148, 22, 96, 45, 105, 1, 38, 96, 192, 128, 21, 233, 188, - 126, 139, 186, 243, 14, 190, 243, 242, 75, 252, 179, 54, 248, 19, 240, 242, 249, 115, 108, 124, 252, 177, 199, 177, 100, 57, 12, 182, 49, 235, 57, 5, - 56, 165, 121, 199, 222, 222, 77, 221, 102, 59, 170, 42, 220, 173, 128, 64, 82, 131, 70, 142, 14, 233, 198, 133, 11, 23, 214, 146, 184, 120, 241, 34, - 175, 190, 250, 42, 79, 62, 249, 36, 111, 189, 245, 22, 103, 206, 156, 225, 190, 251, 238, 227, 141, 55, 94, 163, 170, 144, 68, 119, 211, 93, 128, 136, - 8, 10, 49, 171, 152, 115, 94, 147, 244, 143, 78, 157, 186, 227, 151, 183, 183, 182, 222, 182, 221, 33, 221, 2, 142, 145, 166, 208, 148, 100, 41, 124, - 112, 120, 145, 83, 251, 15, 240, 194, 185, 23, 249, 99, 87, 47, 241, 255, 7, 241, 167, 232, 241, 71, 159, 224, 93, 6, 91, 41, 176, 45, 144, 192, - 226, 93, 178, 45, 64, 25, 193, 213, 27, 55, 118, 151, 154, 255, 153, 34, 254, 214, 169, 253, 253, 237, 131, 195, 67, 30, 120, 224, 1, 174, 95, 191, - 206, 238, 238, 46, 25, 201, 193, 225, 45, 186, 139, 238, 166, 109, 220, 13, 4, 85, 197, 92, 150, 195, 174, 126, 118, 140, 241, 27, 219, 219, 219, 223, - 202, 204, 75, 145, 121, 41, 35, 46, 14, 233, 42, 104, 177, 228, 163, 213, 142, 199, 92, 243, 221, 87, 94, 226, 207, 18, 241, 207, 208, 39, 31, 255, - 56, 118, 19, 26, 204, 94, 99, 54, 36, 113, 155, 13, 152, 207, 253, 216, 147, 254, 39, 95, 255, 189, 59, 142, 79, 78, 254, 58, 240, 243, 57, 198, - 231, 20, 186, 43, 51, 119, 186, 91, 171, 28, 108, 111, 111, 179, 94, 214, 172, 151, 5, 139, 118, 247, 81, 47, 117, 177, 219, 207, 103, 196, 211, 171, - 213, 234, 133, 28, 249, 86, 68, 92, 141, 136, 203, 17, 113, 57, 34, 174, 167, 98, 145, 18, 187, 121, 233, 252, 203, 252, 89, 36, 254, 140, 250, 220, - 103, 63, 199, 119, 95, 251, 238, 30, 240, 216, 241, 241, 241, 39, 247, 246, 246, 158, 152, 203, 124, 48, 35, 246, 70, 142, 81, 93, 89, 221, 199, 118, - 95, 150, 116, 33, 35, 223, 204, 204, 43, 17, 113, 32, 116, 168, 208, 77, 73, 183, 34, 226, 48, 164, 117, 219, 30, 17, 188, 116, 254, 21, 254, 44, - 19, 255, 28, 240, 23, 223, 64, 127, 237, 65, 62, 251, 233, 207, 228, 181, 27, 215, 87, 115, 206, 40, 125, 211, 16, 0, 0, 0, 35, 73, 68, 65, - 84, 149, 164, 204, 8, 133, 132, 13, 22, 190, 173, 132, 22, 133, 166, 164, 186, 251, 158, 143, 248, 248, 248, 136, 103, 158, 125, 134, 127, 94, 252, 223, - 160, 16, 125, 12, 251, 15, 241, 139, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]) -let testJpg = new Uint8Array([255, 216, 255, 224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 255, 219, 0, 67, 0, 6, 4, 4, 5, 4, 4, 6, - 5, 5, 5, 6, 6, 6, 7, 9, 14, 9, 9, 8, 8, 9, 18, 13, 13, 10, 14, 21, 18, 22, 22, 21, 18, 20, 20, 23, 26, 33, 28, 23, - 24, 31, 25, 20, 20, 29, 39, 29, 31, 34, 35, 37, 37, 37, 22, 28, 41, 44, 40, 36, 43, 33, 36, 37, 36, 255, 219, 0, 67, 1, 6, 6, - 6, 9, 8, 9, 17, 9, 9, 17, 36, 24, 20, 24, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 255, 194, - 0, 17, 8, 0, 134, 0, 200, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1, 255, 196, 0, 27, 0, 0, 2, 3, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 5, 0, 2, 4, 6, 1, 7, 255, 196, 0, 25, 1, 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 2, 3, 0, 4, 5, 255, 218, 0, 12, 3, 1, 0, 2, 16, 3, 16, 0, 0, 1, 228, 9, 152, 145, 134, 173, 24, 72, 155, - 105, 215, 68, 13, 44, 184, 169, 181, 80, 198, 145, 166, 191, 14, 53, 115, 16, 9, 170, 96, 157, 183, 164, 243, 213, 54, 23, 158, 46, 129, 56, 219, - 15, 57, 234, 91, 12, 97, 24, 172, 209, 230, 230, 64, 147, 117, 160, 203, 198, 198, 155, 45, 245, 151, 174, 169, 238, 202, 85, 58, 62, 137, 3, 159, - 82, 218, 134, 75, 131, 207, 162, 239, 7, 1, 242, 208, 244, 60, 223, 60, 71, 66, 251, 148, 53, 208, 185, 205, 232, 2, 49, 215, 48, 197, 111, 116, - 187, 242, 44, 167, 113, 172, 128, 215, 205, 153, 51, 58, 47, 62, 7, 222, 70, 222, 128, 78, 201, 53, 58, 171, 216, 237, 64, 226, 111, 167, 22, 22, - 232, 220, 106, 77, 229, 243, 185, 150, 141, 149, 20, 43, 207, 183, 29, 215, 33, 243, 218, 186, 210, 147, 51, 227, 128, 190, 125, 182, 219, 41, 100, 187, - 47, 82, 147, 227, 200, 79, 122, 126, 47, 222, 191, 163, 40, 216, 21, 113, 167, 116, 203, 228, 253, 218, 217, 207, 58, 215, 149, 132, 146, 49, 19, 190, - 38, 245, 43, 60, 16, 170, 239, 42, 14, 158, 45, 35, 200, 19, 180, 204, 49, 180, 38, 109, 238, 54, 31, 63, 144, 47, 95, 167, 97, 234, 141, 158, - 230, 149, 125, 21, 206, 197, 25, 118, 78, 128, 112, 175, 40, 197, 216, 209, 142, 137, 138, 95, 54, 66, 45, 183, 205, 243, 166, 239, 56, 197, 162, 172, - 236, 112, 219, 143, 24, 24, 202, 133, 113, 164, 99, 207, 106, 84, 126, 208, 205, 194, 110, 205, 199, 167, 38, 158, 166, 206, 3, 97, 147, 235, 115, 202, - 244, 232, 206, 83, 187, 28, 107, 151, 78, 67, 1, 207, 98, 176, 188, 121, 21, 146, 38, 181, 235, 114, 133, 207, 187, 112, 249, 246, 46, 110, 11, 143, - 56, 42, 61, 129, 151, 202, 29, 134, 116, 110, 164, 124, 205, 122, 119, 209, 93, 252, 239, 187, 133, 239, 201, 245, 220, 102, 39, 235, 56, 126, 156, 30, - 149, 59, 110, 9, 79, 64, 175, 74, 25, 200, 70, 244, 62, 124, 252, 218, 187, 59, 247, 116, 236, 80, 189, 133, 80, 34, 32, 59, 60, 236, 66, 109, - 229, 10, 57, 182, 85, 41, 175, 159, 98, 165, 145, 113, 109, 142, 245, 202, 98, 102, 103, 100, 222, 80, 108, 119, 200, 176, 166, 250, 63, 6, 193, 89, - 110, 135, 132, 48, 166, 158, 87, 223, 2, 24, 135, 195, 62, 190, 172, 188, 246, 24, 22, 121, 242, 26, 156, 250, 151, 90, 174, 190, 204, 241, 202, 93, - 146, 117, 109, 38, 146, 67, 219, 201, 36, 220, 89, 34, 254, 138, 65, 149, 201, 59, 20, 30, 200, 194, 90, 69, 215, 52, 147, 108, 217, 36, 161, 53, - 164, 109, 81, 201, 133, 164, 138, 127, 255, 196, 0, 36, 16, 0, 2, 2, 3, 0, 2, 2, 3, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0, - 3, 4, 17, 18, 19, 33, 5, 34, 16, 20, 49, 65, 21, 50, 255, 218, 0, 8, 1, 1, 0, 1, 5, 2, 128, 192, 243, 201, 3, 78, 160, 51, - 251, 60, 123, 158, 50, 37, 100, 136, 46, 158, 93, 199, 34, 15, 115, 153, 238, 111, 242, 125, 194, 39, 27, 30, 56, 213, 206, 76, 209, 128, 24, 55, - 54, 103, 70, 7, 48, 89, 22, 217, 216, 48, 115, 63, 93, 200, 240, 180, 106, 204, 85, 34, 117, 3, 66, 194, 121, 4, 236, 77, 136, 88, 78, 245, - 5, 131, 109, 163, 22, 184, 41, 130, 129, 161, 72, 158, 37, 135, 28, 79, 4, 52, 79, 25, 149, 212, 206, 216, 127, 28, 181, 65, 194, 128, 4, 124, - 122, 172, 23, 124, 58, 153, 149, 129, 126, 50, 247, 25, 225, 99, 59, 51, 202, 103, 154, 53, 176, 89, 18, 239, 117, 184, 210, 48, 51, 212, 90, 250, - 134, 173, 19, 177, 1, 16, 232, 205, 8, 159, 87, 163, 34, 38, 154, 15, 198, 230, 210, 241, 242, 191, 28, 184, 231, 137, 196, 230, 20, 18, 193, 169, - 206, 231, 132, 194, 141, 176, 26, 7, 97, 6, 67, 74, 242, 204, 92, 173, 195, 122, 153, 245, 63, 141, 76, 74, 125, 216, 126, 244, 230, 42, 138, 178, - 67, 128, 211, 184, 87, 195, 111, 202, 229, 126, 213, 250, 51, 80, 172, 212, 116, 159, 195, 229, 158, 65, 181, 160, 9, 250, 224, 145, 134, 39, 234, 129, - 63, 90, 26, 88, 16, 27, 124, 60, 196, 195, 119, 54, 128, 20, 167, 223, 51, 26, 243, 71, 195, 99, 92, 49, 179, 25, 177, 241, 112, 30, 220, 154, - 242, 25, 69, 35, 68, 241, 56, 140, 178, 197, 135, 168, 202, 219, 10, 97, 26, 139, 105, 137, 100, 13, 63, 221, 137, 164, 97, 94, 39, 108, 152, 245, - 36, 99, 233, 142, 229, 227, 83, 30, 209, 170, 242, 107, 172, 87, 98, 90, 150, 30, 79, 203, 19, 226, 251, 44, 160, 249, 34, 209, 77, 139, 112, 241, - 63, 67, 103, 152, 120, 135, 136, 200, 166, 122, 34, 176, 12, 224, 193, 181, 158, 165, 117, 246, 202, 56, 4, 195, 44, 73, 106, 157, 35, 154, 142, 101, - 182, 217, 62, 58, 245, 76, 52, 126, 230, 109, 205, 109, 138, 173, 115, 46, 48, 165, 22, 149, 75, 51, 143, 118, 232, 71, 254, 15, 176, 113, 14, 196, - 91, 14, 150, 215, 137, 144, 218, 92, 158, 134, 57, 243, 26, 209, 107, 27, 132, 205, 207, 236, 106, 183, 31, 7, 215, 235, 148, 56, 244, 251, 36, 87, - 93, 129, 33, 175, 71, 91, 11, 143, 101, 53, 218, 157, 66, 162, 29, 111, 159, 187, 110, 55, 240, 87, 234, 133, 212, 41, 27, 28, 129, 138, 139, 85, - 97, 230, 224, 121, 254, 167, 45, 8, 155, 159, 173, 184, 181, 242, 217, 219, 0, 158, 32, 121, 74, 78, 67, 165, 203, 195, 178, 253, 77, 115, 128, 176, - 0, 65, 68, 103, 15, 233, 108, 58, 91, 73, 92, 94, 238, 134, 178, 34, 127, 58, 133, 226, 60, 164, 29, 241, 181, 43, 197, 189, 20, 0, 125, 110, - 201, 107, 91, 76, 239, 175, 120, 238, 52, 140, 117, 157, 81, 239, 135, 105, 239, 76, 158, 220, 21, 135, 108, 255, 0, 194, 187, 216, 162, 195, 40, 11, - 74, 1, 212, 21, 9, 98, 199, 149, 123, 152, 219, 128, 250, 40, 53, 115, 123, 186, 225, 85, 22, 88, 11, 22, 48, 95, 185, 79, 38, 177, 233, 89, - 5, 233, 144, 77, 86, 91, 146, 166, 53, 187, 158, 114, 99, 48, 105, 173, 204, 76, 186, 170, 85, 204, 12, 149, 223, 163, 139, 111, 81, 16, 52, 190, - 189, 45, 214, 114, 113, 14, 218, 159, 75, 95, 243, 254, 128, 149, 185, 51, 228, 108, 46, 254, 86, 22, 11, 8, 150, 183, 39, 15, 35, 69, 178, 91, - 164, 184, 214, 115, 244, 47, 113, 160, 227, 150, 68, 112, 124, 186, 42, 131, 167, 199, 246, 234, 213, 15, 59, 210, 112, 242, 186, 152, 89, 10, 201, 155, - 96, 226, 234, 124, 166, 176, 244, 54, 53, 222, 170, 97, 206, 37, 158, 82, 246, 248, 213, 242, 149, 229, 36, 52, 183, 110, 108, 255, 0, 198, 249, 152, - 148, 51, 139, 23, 245, 241, 110, 181, 172, 35, 178, 109, 94, 154, 191, 114, 234, 23, 172, 123, 64, 43, 113, 217, 11, 226, 241, 41, 93, 40, 148, 221, - 192, 108, 214, 118, 243, 9, 102, 65, 222, 43, 135, 149, 167, 85, 96, 238, 149, 201, 8, 113, 202, 146, 197, 248, 2, 221, 30, 153, 199, 46, 7, 198, - 222, 58, 202, 201, 108, 169, 101, 97, 154, 218, 252, 131, 86, 106, 194, 117, 99, 175, 73, 17, 249, 139, 246, 110, 248, 10, 224, 214, 24, 168, 98, 82, - 43, 177, 119, 115, 188, 108, 179, 73, 31, 49, 171, 50, 50, 133, 142, 114, 29, 167, 94, 144, 108, 145, 165, 248, 242, 58, 183, 161, 18, 210, 49, 171, - 179, 74, 110, 32, 187, 243, 22, 208, 90, 199, 216, 224, 105, 190, 178, 151, 38, 121, 72, 30, 126, 151, 161, 3, 237, 84, 232, 143, 69, 151, 112, 208, - 21, 44, 232, 203, 24, 232, 55, 115, 126, 188, 154, 125, 232, 37, 155, 159, 103, 133, 206, 187, 36, 163, 115, 1, 47, 18, 223, 185, 59, 179, 201, 220, - 255, 196, 0, 34, 17, 0, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 17, 16, 18, 3, 33, 4, 32, 49, - 65, 34, 48, 97, 255, 218, 0, 8, 1, 3, 1, 1, 63, 1, 253, 106, 172, 148, 41, 136, 172, 208, 162, 177, 165, 142, 214, 47, 27, 26, 179, 178, - 217, 121, 72, 95, 136, 251, 43, 210, 203, 46, 179, 86, 36, 181, 254, 147, 125, 30, 63, 22, 210, 239, 224, 242, 56, 210, 87, 139, 47, 29, 151, 120, - 72, 138, 44, 108, 225, 141, 179, 201, 119, 138, 53, 44, 100, 81, 66, 19, 30, 56, 225, 71, 36, 118, 62, 11, 44, 163, 82, 8, 174, 232, 146, 213, - 137, 147, 120, 82, 251, 54, 234, 217, 46, 217, 161, 69, 209, 98, 102, 204, 115, 127, 102, 200, 150, 54, 214, 8, 230, 228, 180, 151, 186, 31, 165, 225, - 231, 255, 196, 0, 36, 17, 0, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 17, 3, 33, 18, 19, 16, 49, - 4, 65, 34, 97, 20, 50, 81, 255, 218, 0, 8, 1, 2, 1, 1, 63, 1, 161, 164, 112, 177, 193, 143, 146, 56, 242, 250, 35, 142, 134, 135, 18, - 159, 135, 98, 200, 78, 114, 71, 115, 59, 153, 222, 200, 100, 183, 178, 171, 72, 100, 176, 192, 113, 173, 26, 34, 147, 56, 196, 120, 162, 206, 248, 191, - 100, 167, 137, 157, 112, 126, 142, 186, 62, 54, 6, 191, 41, 30, 199, 100, 157, 146, 201, 189, 156, 136, 50, 172, 164, 73, 35, 137, 24, 74, 114, 227, - 19, 15, 199, 88, 215, 239, 195, 149, 50, 79, 102, 89, 241, 67, 77, 198, 209, 13, 177, 81, 95, 178, 159, 250, 73, 35, 132, 89, 131, 227, 199, 18, - 253, 248, 114, 38, 236, 226, 124, 182, 220, 232, 221, 104, 198, 154, 217, 22, 118, 29, 201, 14, 22, 99, 248, 202, 95, 216, 145, 100, 137, 196, 244, 182, - 74, 219, 178, 184, 196, 175, 196, 161, 65, 138, 36, 115, 241, 103, 242, 20, 137, 207, 101, 234, 200, 190, 72, 145, 159, 81, 162, 144, 163, 170, 36, 183, - 72, 138, 59, 53, 161, 56, 178, 112, 26, 104, 228, 208, 178, 73, 35, 12, 184, 251, 50, 63, 184, 142, 77, 251, 41, 125, 158, 221, 35, 174, 94, 208, - 163, 36, 69, 81, 68, 137, 33, 146, 35, 39, 117, 229, 161, 162, 62, 43, 199, 255, 196, 0, 46, 16, 0, 2, 2, 1, 3, 2, 4, 5, 4, 3, - 1, 0, 0, 0, 0, 0, 0, 1, 2, 17, 33, 16, 18, 49, 65, 81, 32, 34, 50, 97, 3, 19, 48, 66, 113, 35, 64, 129, 145, 80, 82, 161, - 177, 255, 218, 0, 8, 1, 1, 0, 6, 63, 2, 255, 0, 9, 123, 93, 28, 63, 219, 40, 174, 75, 248, 143, 115, 41, 81, 193, 82, 130, 63, 74, - 123, 127, 38, 233, 37, 37, 221, 125, 26, 127, 73, 52, 84, 185, 47, 192, 224, 243, 221, 51, 124, 61, 47, 167, 213, 207, 135, 230, 75, 132, 90, 178, - 158, 11, 90, 252, 229, 233, 251, 143, 211, 126, 72, 175, 216, 238, 154, 168, 155, 82, 165, 166, 239, 129, 47, 48, 190, 127, 36, 231, 240, 224, 231, 40, - 174, 17, 25, 207, 225, 74, 23, 209, 146, 82, 244, 215, 135, 5, 125, 37, 140, 30, 157, 119, 104, 148, 164, 144, 167, 6, 165, 23, 212, 84, 84, 101, - 94, 218, 103, 8, 195, 169, 14, 18, 231, 199, 90, 94, 148, 138, 240, 215, 65, 56, 244, 35, 190, 94, 106, 200, 230, 123, 35, 108, 99, 147, 60, 146, - 146, 245, 51, 248, 241, 114, 96, 182, 100, 162, 151, 138, 244, 206, 184, 47, 116, 183, 27, 220, 155, 47, 195, 76, 178, 216, 145, 104, 93, 252, 23, 122, - 237, 44, 170, 35, 219, 75, 44, 161, 199, 91, 179, 36, 78, 116, 228, 218, 188, 87, 174, 77, 213, 145, 197, 255, 0, 26, 126, 53, 221, 209, 142, 184, - 70, 112, 197, 108, 119, 208, 230, 180, 242, 171, 23, 145, 164, 40, 196, 246, 250, 17, 28, 191, 161, 119, 209, 246, 49, 201, 200, 224, 108, 226, 139, 22, - 74, 122, 113, 193, 232, 167, 213, 235, 206, 180, 86, 179, 133, 102, 232, 201, 8, 110, 170, 40, 207, 246, 96, 218, 202, 68, 95, 36, 155, 61, 28, 158, - 231, 158, 243, 167, 177, 229, 87, 100, 148, 126, 215, 84, 126, 162, 228, 221, 173, 46, 74, 150, 12, 189, 37, 62, 236, 177, 62, 172, 221, 46, 16, 231, - 107, 103, 72, 136, 178, 199, 57, 126, 17, 207, 2, 146, 88, 35, 186, 57, 226, 201, 91, 199, 75, 45, 116, 16, 159, 247, 68, 182, 230, 242, 40, 203, - 43, 255, 0, 48, 74, 73, 116, 73, 22, 143, 51, 201, 113, 121, 171, 60, 221, 202, 37, 20, 234, 213, 27, 90, 219, 202, 162, 110, 253, 74, 149, 27, - 107, 40, 165, 252, 153, 26, 138, 193, 116, 232, 217, 60, 81, 73, 212, 107, 132, 200, 205, 127, 194, 254, 227, 253, 177, 86, 39, 213, 228, 181, 195, 187, - 215, 210, 209, 152, 212, 87, 99, 60, 123, 10, 75, 210, 94, 215, 125, 253, 138, 172, 25, 113, 166, 109, 172, 80, 171, 133, 255, 0, 79, 155, 12, 78, - 89, 145, 234, 224, 106, 185, 230, 141, 207, 29, 206, 125, 198, 231, 229, 139, 85, 108, 105, 122, 172, 248, 178, 226, 110, 145, 234, 228, 174, 190, 197, 243, - 252, 143, 191, 68, 52, 232, 189, 213, 236, 39, 220, 252, 119, 43, 177, 179, 237, 54, 113, 101, 46, 4, 229, 212, 149, 231, 105, 185, 215, 153, 95, 227, - 6, 222, 183, 201, 134, 149, 17, 86, 241, 219, 68, 215, 81, 71, 143, 198, 159, 129, 103, 135, 67, 254, 180, 199, 82, 228, 242, 81, 146, 154, 63, 255, - 196, 0, 38, 16, 1, 0, 2, 2, 2, 1, 3, 5, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 17, 33, 49, 65, 81, 97, 16, 113, 161, 129, - 145, 177, 225, 240, 193, 209, 241, 255, 218, 0, 8, 1, 1, 0, 1, 63, 33, 61, 231, 146, 57, 204, 61, 62, 187, 151, 68, 33, 147, 163, 232, 232, - 68, 8, 168, 98, 198, 161, 7, 120, 212, 113, 168, 33, 229, 33, 104, 195, 5, 132, 193, 196, 29, 32, 28, 74, 157, 122, 70, 24, 80, 153, 34, 96, - 126, 101, 71, 244, 83, 181, 19, 150, 33, 115, 9, 24, 11, 204, 243, 122, 68, 250, 6, 143, 16, 94, 32, 117, 51, 147, 155, 40, 226, 51, 33, 7, - 212, 168, 149, 106, 5, 57, 67, 131, 47, 28, 67, 72, 7, 81, 134, 149, 237, 47, 207, 244, 153, 52, 195, 89, 78, 215, 15, 12, 101, 30, 103, 98, - 87, 41, 230, 46, 43, 204, 85, 220, 218, 32, 242, 101, 84, 182, 86, 37, 173, 226, 107, 39, 66, 115, 161, 244, 26, 109, 67, 44, 12, 98, 47, 113, - 28, 184, 192, 103, 56, 68, 25, 233, 107, 199, 208, 197, 34, 141, 75, 80, 110, 83, 152, 72, 47, 113, 90, 204, 7, 44, 60, 56, 116, 112, 167, 113, - 1, 195, 22, 243, 44, 94, 20, 243, 40, 109, 150, 233, 131, 109, 68, 216, 130, 42, 92, 3, 204, 110, 187, 20, 22, 53, 15, 47, 44, 57, 9, 151, - 166, 173, 92, 183, 47, 164, 97, 22, 210, 12, 98, 94, 181, 21, 114, 165, 84, 88, 96, 154, 19, 48, 69, 194, 206, 97, 122, 79, 124, 204, 19, 17, - 177, 186, 243, 15, 137, 14, 74, 217, 53, 165, 174, 38, 48, 168, 220, 250, 65, 185, 135, 45, 158, 129, 84, 212, 0, 192, 234, 32, 220, 52, 225, 11, - 172, 51, 73, 13, 106, 84, 111, 136, 59, 130, 131, 2, 241, 129, 97, 35, 161, 132, 143, 113, 153, 48, 223, 153, 86, 19, 51, 18, 209, 211, 113, 21, - 226, 38, 225, 47, 115, 66, 16, 28, 202, 112, 220, 174, 216, 103, 180, 47, 182, 51, 109, 71, 204, 166, 167, 101, 196, 35, 66, 51, 90, 140, 193, 109, - 76, 156, 68, 172, 131, 141, 54, 184, 221, 67, 168, 212, 80, 206, 222, 103, 92, 115, 8, 4, 178, 82, 166, 107, 150, 3, 146, 41, 94, 199, 168, 176, - 213, 209, 149, 181, 76, 23, 204, 84, 230, 127, 4, 88, 215, 1, 10, 92, 129, 167, 157, 97, 115, 116, 14, 120, 33, 89, 208, 34, 196, 195, 8, 28, - 140, 80, 220, 237, 226, 97, 13, 32, 242, 243, 112, 204, 114, 204, 4, 99, 166, 185, 244, 217, 182, 230, 13, 206, 188, 199, 12, 199, 30, 35, 178, 49, - 18, 193, 9, 77, 89, 152, 173, 6, 102, 106, 227, 226, 44, 174, 106, 102, 229, 166, 142, 236, 150, 212, 231, 113, 86, 241, 15, 183, 21, 163, 136, 93, - 169, 129, 150, 247, 145, 113, 48, 169, 146, 93, 70, 152, 53, 165, 8, 151, 50, 203, 185, 154, 230, 16, 245, 51, 212, 132, 12, 18, 190, 49, 11, 94, - 18, 130, 213, 22, 178, 133, 62, 69, 87, 152, 187, 22, 241, 49, 88, 204, 181, 30, 247, 22, 95, 36, 183, 161, 49, 180, 89, 222, 153, 109, 199, 51, - 4, 107, 44, 121, 18, 203, 178, 89, 184, 51, 186, 134, 222, 165, 39, 137, 98, 138, 178, 193, 57, 162, 174, 91, 185, 72, 8, 216, 178, 48, 57, 196, - 79, 218, 225, 139, 53, 110, 18, 54, 12, 110, 48, 17, 56, 144, 199, 105, 115, 148, 133, 62, 37, 199, 40, 33, 77, 18, 152, 92, 18, 241, 166, 145, - 113, 44, 125, 98, 213, 156, 117, 26, 54, 70, 93, 121, 186, 159, 86, 55, 184, 202, 226, 165, 217, 16, 117, 137, 163, 56, 188, 238, 99, 27, 196, 190, - 51, 76, 36, 205, 12, 183, 133, 213, 14, 216, 168, 25, 117, 46, 97, 222, 24, 24, 185, 87, 188, 1, 119, 202, 149, 228, 71, 227, 158, 39, 48, 148, - 108, 25, 173, 195, 116, 162, 57, 142, 123, 239, 10, 173, 33, 118, 66, 149, 178, 40, 112, 8, 144, 193, 147, 209, 5, 254, 21, 50, 129, 137, 122, 253, - 101, 173, 183, 9, 147, 0, 21, 50, 135, 50, 144, 197, 76, 146, 184, 40, 67, 42, 59, 128, 40, 114, 75, 194, 137, 119, 21, 142, 140, 202, 158, 211, - 34, 220, 229, 32, 166, 100, 94, 105, 153, 106, 229, 189, 198, 173, 253, 165, 168, 82, 216, 130, 208, 91, 248, 133, 176, 90, 227, 226, 107, 166, 75, 198, - 9, 195, 176, 3, 247, 128, 22, 236, 149, 20, 81, 164, 202, 64, 153, 204, 168, 7, 113, 185, 70, 166, 222, 34, 53, 37, 185, 144, 226, 165, 3, 165, - 126, 101, 166, 148, 92, 173, 67, 114, 243, 22, 196, 193, 24, 196, 161, 198, 101, 104, 193, 138, 221, 204, 89, 219, 232, 25, 4, 183, 238, 49, 133, 167, - 74, 230, 90, 33, 165, 44, 27, 93, 237, 3, 146, 100, 164, 128, 19, 238, 103, 61, 128, 59, 153, 30, 135, 79, 79, 254, 196, 80, 166, 191, 143, 136, - 192, 193, 219, 147, 204, 52, 82, 107, 234, 126, 162, 194, 10, 0, 198, 10, 251, 254, 225, 181, 166, 106, 199, 23, 42, 54, 120, 74, 248, 216, 33, 216, - 174, 199, 82, 164, 69, 68, 78, 30, 172, 137, 8, 66, 8, 205, 141, 69, 131, 201, 202, 190, 165, 212, 128, 183, 60, 70, 176, 193, 242, 139, 157, 132, - 169, 119, 149, 201, 91, 153, 15, 50, 226, 13, 244, 43, 209, 93, 195, 22, 103, 30, 70, 229, 41, 99, 90, 91, 137, 184, 32, 198, 161, 102, 168, 87, - 143, 39, 51, 17, 58, 222, 223, 195, 50, 38, 71, 247, 39, 226, 114, 221, 117, 5, 241, 147, 108, 96, 86, 53, 87, 198, 33, 100, 80, 35, 176, 222, - 9, 97, 246, 15, 47, 226, 35, 118, 30, 90, 246, 175, 180, 210, 214, 89, 75, 174, 223, 26, 139, 251, 23, 124, 149, 5, 75, 214, 23, 79, 215, 233, - 1, 55, 179, 59, 187, 254, 251, 65, 22, 230, 87, 20, 238, 36, 219, 50, 115, 30, 112, 118, 47, 241, 52, 7, 44, 34, 202, 138, 103, 203, 29, 125, - 166, 35, 135, 178, 229, 29, 178, 255, 0, 36, 230, 19, 100, 28, 188, 115, 29, 78, 54, 235, 27, 127, 200, 167, 207, 6, 191, 189, 226, 227, 195, 107, - 36, 183, 108, 158, 63, 196, 181, 26, 20, 66, 245, 49, 174, 55, 226, 22, 154, 166, 82, 68, 208, 113, 148, 185, 40, 93, 56, 124, 65, 10, 21, 161, - 239, 11, 0, 170, 85, 84, 0, 72, 129, 60, 96, 197, 236, 150, 14, 211, 66, 25, 196, 92, 224, 54, 249, 117, 83, 28, 16, 4, 213, 33, 174, 73, - 194, 218, 150, 155, 14, 132, 21, 50, 219, 228, 212, 189, 146, 191, 236, 243, 133, 139, 234, 42, 166, 137, 129, 69, 96, 113, 46, 208, 121, 12, 91, 87, - 62, 166, 40, 220, 134, 30, 51, 12, 18, 224, 248, 155, 43, 60, 191, 189, 226, 109, 128, 149, 247, 148, 92, 103, 18, 192, 181, 248, 252, 70, 211, 168, - 79, 255, 218, 0, 12, 3, 1, 0, 2, 0, 3, 0, 0, 0, 16, 0, 11, 95, 201, 21, 11, 241, 117, 198, 54, 242, 102, 37, 18, 160, 46, 55, - 232, 31, 26, 46, 94, 202, 104, 93, 30, 207, 237, 127, 160, 44, 90, 233, 186, 230, 116, 172, 158, 127, 75, 184, 98, 203, 56, 43, 0, 199, 29, 10, - 105, 68, 54, 85, 245, 33, 248, 48, 20, 196, 66, 91, 122, 46, 42, 238, 241, 113, 12, 247, 110, 32, 121, 215, 215, 96, 159, 76, 126, 14, 0, 195, - 254, 24, 66, 13, 232, 125, 247, 255, 196, 0, 28, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 17, 33, - 49, 65, 16, 81, 97, 255, 218, 0, 8, 1, 3, 1, 1, 63, 16, 187, 118, 237, 131, 121, 228, 171, 9, 246, 221, 182, 27, 64, 62, 69, 129, 216, - 17, 143, 39, 126, 217, 191, 146, 26, 88, 78, 28, 130, 99, 118, 212, 48, 167, 110, 88, 100, 79, 46, 201, 239, 145, 230, 64, 242, 93, 50, 214, 205, - 72, 50, 201, 7, 75, 185, 30, 165, 215, 127, 12, 167, 232, 120, 178, 197, 132, 198, 20, 99, 58, 95, 213, 139, 27, 68, 40, 13, 173, 132, 195, 243, - 38, 247, 228, 185, 254, 19, 106, 19, 58, 150, 121, 114, 252, 114, 217, 251, 32, 54, 81, 114, 211, 151, 65, 61, 99, 52, 174, 200, 204, 41, 150, 81, - 56, 140, 94, 55, 198, 28, 233, 115, 4, 116, 174, 196, 143, 133, 177, 11, 196, 247, 57, 210, 237, 178, 59, 52, 251, 33, 118, 72, 255, 0, 85, 219, - 138, 124, 237, 159, 63, 53, 249, 6, 147, 47, 47, 23, 152, 80, 159, 111, 164, 44, 159, 111, 59, 108, 95, 255, 196, 0, 29, 17, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 17, 33, 49, 65, 81, 16, 129, 161, 255, 218, 0, 8, 1, 2, 1, 1, 63, 16, - 98, 164, 79, 138, 92, 27, 125, 144, 22, 188, 149, 121, 49, 242, 3, 228, 104, 242, 71, 201, 51, 191, 192, 253, 99, 110, 54, 45, 140, 30, 64, 24, - 97, 1, 227, 51, 185, 140, 111, 81, 126, 20, 135, 36, 52, 103, 200, 184, 137, 29, 234, 202, 193, 177, 63, 204, 186, 182, 65, 176, 231, 228, 202, 131, - 222, 73, 236, 129, 172, 124, 172, 79, 32, 122, 70, 189, 88, 248, 247, 245, 62, 67, 219, 200, 254, 161, 213, 251, 228, 200, 37, 195, 116, 180, 230, 222, - 242, 20, 41, 230, 218, 255, 0, 54, 212, 103, 95, 101, 44, 161, 225, 176, 118, 211, 159, 39, 166, 188, 134, 211, 237, 244, 91, 7, 78, 216, 186, 95, - 20, 134, 142, 19, 14, 31, 199, 71, 45, 58, 123, 46, 138, 224, 75, 125, 214, 10, 103, 108, 7, 35, 120, 5, 201, 200, 51, 177, 240, 32, 220, 227, - 252, 91, 28, 238, 17, 84, 9, 113, 29, 109, 156, 62, 91, 40, 96, 174, 86, 188, 34, 54, 235, 165, 224, 64, 144, 255, 0, 178, 193, 204, 177, 103, - 135, 179, 157, 33, 204, 71, 193, 61, 79, 37, 149, 58, 89, 75, 236, 171, 18, 207, 166, 195, 144, 196, 200, 114, 96, 79, 32, 57, 100, 64, 64, 48, - 1, 128, 235, 99, 22, 243, 203, 255, 196, 0, 37, 16, 1, 0, 3, 0, 2, 2, 2, 2, 3, 1, 1, 1, 0, 0, 0, 0, 1, 0, 17, 33, - 49, 65, 81, 97, 113, 129, 145, 161, 177, 193, 240, 209, 241, 16, 255, 218, 0, 8, 1, 1, 0, 1, 63, 16, 168, 15, 41, 81, 118, 184, 149, 10, - 48, 123, 138, 188, 228, 56, 160, 52, 236, 194, 39, 42, 152, 197, 218, 83, 221, 146, 184, 86, 109, 18, 90, 84, 183, 141, 64, 119, 103, 238, 50, 240, - 228, 187, 2, 75, 139, 156, 148, 37, 47, 16, 143, 57, 30, 2, 40, 160, 113, 45, 237, 212, 106, 203, 156, 77, 129, 99, 185, 203, 92, 43, 156, 239, - 145, 101, 182, 74, 178, 228, 169, 169, 18, 46, 174, 16, 40, 155, 117, 140, 90, 48, 80, 3, 46, 211, 172, 174, 106, 27, 134, 52, 142, 52, 74, 106, - 169, 97, 26, 200, 15, 72, 95, 130, 19, 190, 32, 244, 37, 67, 89, 74, 101, 167, 148, 227, 34, 143, 9, 168, 43, 198, 65, 24, 25, 214, 18, 230, - 11, 20, 64, 113, 83, 17, 42, 98, 84, 86, 139, 114, 24, 114, 224, 88, 134, 74, 14, 145, 168, 90, 218, 225, 31, 131, 123, 194, 125, 159, 44, 162, - 77, 107, 204, 187, 91, 215, 83, 204, 129, 11, 247, 132, 114, 212, 180, 168, 31, 120, 142, 197, 133, 203, 80, 173, 44, 224, 38, 137, 104, 84, 79, 230, - 90, 1, 185, 102, 83, 204, 168, 12, 10, 63, 178, 58, 54, 119, 137, 193, 97, 134, 42, 9, 118, 74, 172, 106, 92, 254, 113, 81, 210, 171, 167, 187, - 231, 127, 21, 0, 167, 134, 249, 130, 21, 112, 50, 130, 206, 161, 187, 194, 128, 127, 80, 205, 243, 38, 191, 94, 178, 44, 219, 98, 66, 176, 66, 47, - 197, 197, 64, 243, 41, 135, 152, 83, 23, 45, 192, 217, 43, 185, 3, 76, 60, 244, 70, 199, 131, 168, 29, 43, 81, 171, 81, 106, 177, 29, 160, 95, - 204, 254, 248, 206, 58, 40, 117, 224, 156, 48, 96, 110, 6, 171, 61, 194, 0, 138, 27, 230, 94, 64, 60, 67, 96, 106, 22, 137, 139, 114, 85, 6, - 169, 228, 246, 74, 136, 90, 210, 135, 218, 63, 7, 212, 51, 180, 11, 74, 102, 185, 100, 218, 33, 2, 158, 225, 119, 244, 64, 46, 133, 29, 127, 243, - 83, 10, 249, 99, 85, 175, 137, 112, 66, 217, 139, 215, 169, 184, 47, 212, 113, 192, 119, 15, 131, 0, 110, 215, 20, 23, 67, 47, 198, 84, 208, 40, - 2, 37, 222, 188, 32, 130, 173, 131, 67, 249, 137, 42, 208, 243, 203, 205, 252, 70, 255, 0, 4, 215, 254, 57, 130, 217, 209, 205, 87, 205, 117, 124, - 192, 80, 6, 55, 188, 224, 150, 96, 99, 117, 18, 18, 31, 88, 64, 151, 73, 84, 51, 170, 142, 218, 217, 79, 90, 62, 160, 245, 211, 228, 130, 14, - 76, 58, 159, 88, 11, 125, 185, 2, 73, 177, 42, 163, 230, 5, 200, 57, 156, 75, 111, 117, 48, 102, 246, 16, 17, 243, 216, 184, 120, 80, 58, 33, - 19, 207, 203, 16, 219, 45, 129, 142, 109, 106, 185, 149, 197, 210, 199, 21, 119, 8, 24, 218, 108, 213, 127, 80, 70, 47, 161, 41, 249, 107, 60, 196, - 2, 101, 209, 83, 22, 181, 120, 35, 10, 187, 21, 173, 246, 75, 253, 159, 164, 243, 21, 84, 178, 225, 2, 3, 5, 65, 111, 113, 176, 220, 93, 35, - 32, 197, 5, 242, 69, 154, 41, 114, 29, 239, 217, 238, 121, 224, 166, 4, 23, 142, 65, 189, 163, 170, 20, 120, 16, 57, 31, 185, 99, 2, 92, 244, - 30, 73, 88, 20, 38, 222, 90, 12, 140, 217, 91, 98, 85, 103, 95, 36, 19, 165, 20, 211, 78, 140, 173, 234, 112, 112, 119, 209, 212, 97, 232, 160, - 236, 185, 114, 43, 235, 35, 218, 129, 160, 208, 46, 53, 232, 35, 122, 34, 174, 233, 153, 116, 115, 47, 166, 214, 31, 117, 46, 130, 89, 9, 175, 111, - 168, 228, 91, 30, 217, 205, 60, 202, 26, 236, 121, 149, 41, 190, 79, 152, 133, 138, 71, 76, 74, 92, 151, 60, 50, 141, 8, 119, 194, 32, 181, 189, - 87, 152, 2, 214, 32, 56, 164, 201, 11, 212, 70, 229, 6, 181, 212, 69, 148, 231, 37, 6, 198, 198, 67, 93, 153, 84, 85, 111, 137, 156, 199, 210, - 114, 158, 237, 211, 8, 192, 28, 132, 63, 115, 93, 61, 33, 158, 32, 35, 186, 94, 96, 28, 2, 4, 15, 34, 48, 228, 174, 143, 48, 69, 48, 126, - 229, 232, 42, 134, 199, 186, 165, 240, 75, 91, 224, 158, 37, 2, 2, 63, 185, 119, 178, 244, 62, 101, 68, 140, 151, 113, 117, 111, 146, 9, 77, 159, - 135, 153, 76, 110, 198, 67, 42, 31, 19, 184, 244, 39, 155, 54, 49, 175, 130, 201, 88, 80, 133, 167, 136, 85, 22, 241, 46, 96, 114, 81, 13, 106, - 41, 210, 177, 13, 182, 232, 71, 69, 143, 22, 0, 224, 176, 179, 137, 178, 162, 12, 220, 186, 191, 81, 118, 133, 20, 84, 27, 207, 52, 182, 36, 60, - 96, 44, 26, 160, 112, 64, 36, 90, 211, 143, 81, 238, 149, 87, 7, 153, 171, 6, 21, 55, 17, 230, 241, 26, 150, 111, 126, 32, 16, 42, 30, 72, - 109, 16, 35, 103, 117, 94, 94, 98, 11, 106, 220, 245, 4, 101, 64, 3, 204, 191, 32, 121, 20, 134, 64, 186, 148, 109, 217, 233, 238, 52, 20, 50, - 170, 31, 40, 49, 111, 234, 95, 154, 147, 92, 122, 141, 1, 171, 74, 205, 1, 121, 47, 82, 158, 92, 129, 238, 0, 0, 84, 198, 55, 12, 240, 233, - 150, 17, 104, 110, 177, 185, 64, 14, 248, 148, 16, 188, 83, 203, 24, 96, 144, 250, 57, 8, 134, 207, 241, 247, 5, 5, 151, 229, 40, 83, 92, 2, - 227, 205, 57, 27, 104, 191, 48, 177, 46, 135, 200, 242, 203, 32, 117, 75, 231, 238, 49, 31, 248, 71, 192, 253, 227, 193, 115, 136, 149, 108, 10, 106, - 61, 5, 10, 45, 128, 23, 78, 71, 215, 26, 221, 143, 215, 161, 197, 81, 59, 48, 81, 228, 224, 132, 160, 185, 124, 24, 96, 123, 207, 62, 216, 77, - 104, 104, 94, 107, 25, 21, 90, 111, 163, 48, 255, 0, 119, 42, 161, 224, 33, 218, 176, 169, 233, 158, 50, 85, 59, 8, 165, 91, 30, 89, 146, 150, - 16, 108, 241, 156, 74, 148, 35, 124, 113, 222, 162, 123, 216, 63, 71, 19, 82, 14, 147, 130, 185, 148, 96, 50, 22, 165, 213, 254, 226, 117, 2, 78, - 222, 203, 177, 184, 252, 115, 122, 174, 203, 12, 34, 234, 171, 243, 9, 114, 168, 96, 149, 224, 203, 243, 16, 195, 182, 108, 114, 92, 85, 238, 194, 216, - 177, 195, 71, 190, 6, 11, 248, 253, 192, 69, 1, 203, 232, 133, 60, 84, 151, 233, 144, 237, 91, 6, 176, 247, 18, 210, 2, 252, 122, 249, 137, 140, - 61, 72, 203, 65, 45, 43, 91, 43, 132, 46, 144, 120, 128, 49, 12, 39, 82, 182, 88, 211, 126, 184, 252, 164, 122, 156, 144, 15, 164, 100, 96, 21, - 5, 212, 243, 55, 137, 83, 134, 18, 244, 133, 192, 61, 64, 42, 133, 114, 45, 134, 11, 243, 103, 231, 238, 51, 182, 5, 6, 130, 214, 103, 191, 196, - 64, 237, 58, 122, 22, 253, 93, 149, 246, 248, 158, 75, 67, 19, 1, 119, 178, 145, 179, 54, 89, 81, 52, 104, 85, 220, 61, 77, 175, 124, 190, 224, - 121, 250, 146, 107, 219, 175, 93, 203, 166, 171, 117, 200, 195, 213, 129, 54, 178, 13, 219, 22, 126, 33, 158, 42, 64, 112, 91, 39, 27, 132, 119, 224, - 148, 52, 228, 7, 209, 190, 35, 211, 68, 199, 42, 247, 115, 143, 196, 3, 205, 244, 94, 104, 113, 85, 171, 0, 89, 69, 0, 40, 158, 201, 99, 0, - 26, 43, 166, 106, 122, 249, 238, 80, 201, 40, 53, 76, 35, 181, 130, 137, 191, 74, 94, 123, 143, 128, 205, 72, 187, 13, 190, 170, 47, 56, 232, 106, - 181, 223, 2, 86, 241, 196, 64, 119, 144, 86, 45, 175, 121, 81, 74, 162, 77, 222, 173, 254, 18, 50, 60, 250, 184, 197, 141, 252, 1, 62, 101, 48, - 153, 5, 245, 11, 227, 139, 31, 200, 25, 81, 20, 65, 79, 224, 216, 183, 126, 235, 136, 24, 165, 184, 29, 37, 143, 92, 2, 178, 185, 128, 184, 4, - 182, 98, 219, 219, 221, 94, 185, 201, 64, 98, 9, 155, 19, 128, 228, 47, 247, 76, 87, 122, 164, 228, 35, 123, 94, 255, 0, 184, 224, 185, 138, 149, - 191, 251, 251, 140, 76, 177, 109, 21, 195, 94, 171, 235, 38, 181, 167, 134, 171, 247, 45, 251, 41, 212, 128, 253, 78, 19, 195, 145, 17, 188, 134, 241, - 31, 105, 49, 68, 142, 1, 229, 95, 227, 196, 174, 129, 10, 50, 216, 189, 105, 89, 238, 52, 221, 80, 235, 233, 221, 85, 125, 205, 228, 218, 53, 125, - 232, 16, 14, 75, 105, 180, 246, 191, 238, 227, 236, 218, 148, 59, 92, 255, 0, 184, 151, 109, 51, 31, 107, 246, 253, 67, 120, 192, 130, 158, 22, 174, - 129, 92, 154, 139, 77, 45, 77, 1, 240, 143, 203, 17, 1, 175, 16, 124, 133, 83, 238, 4, 238, 18, 212, 4, 118, 251, 137, 203, 14, 171, 86, 161, - 71, 213, 30, 111, 196, 187, 10, 181, 94, 76, 255, 0, 47, 77, 121, 137, 81, 155, 87, 179, 206, 71, 202, 59, 57, 157, 79, 60, 93, 215, 252, 171, - 137, 5, 21, 149, 16, 166, 152, 243, 126, 105, 189, 89, 184, 186, 192, 22, 12, 166, 130, 185, 245, 232, 129, 213, 64, 242, 130, 128, 221, 186, 216, 250, - 209, 194, 60, 6, 75, 188, 62, 7, 171, 91, 224, 247, 173, 169, 129, 32, 6, 140, 206, 177, 224, 57, 186, 192, 228, 73, 173, 9, 104, 59, 56, 175, - 99, 206, 195, 106, 212, 101, 162, 55, 163, 27, 250, 94, 228, 167, 247, 101, 192, 180, 175, 214, 25, 14, 189, 179, 105, 176, 64, 3, 180, 3, 227, 113, - 142, 178, 12, 42, 186, 93, 103, 20, 241, 21, 171, 35, 178, 160, 0, 28, 247, 127, 221, 75, 39, 218, 220, 175, 55, 99, 250, 236, 151, 44, 5, 233, - 109, 18, 86, 43, 105, 191, 246, 26, 242, 1, 89, 113, 92, 80, 229, 102, 92, 165, 198, 91, 59, 165, 31, 207, 252, 139, 89, 112, 36, 66, 219, 202, - 183, 143, 168, 94, 47, 176, 0, 160, 136, 22, 149, 154, 227, 54, 224, 209, 178, 235, 88, 45, 13, 127, 234, 216, 131, 8, 65, 134, 190, 2, 232, 104, - 174, 119, 122, 156, 248, 30, 107, 16, 180, 242, 107, 124, 225, 223, 4, 0, 209, 26, 247, 93, 243, 182, 239, 7, 218, 59, 30, 138, 84, 41, 30, 141, - 77, 255, 0, 177, 26, 211, 119, 82, 155, 229, 27, 176, 227, 191, 204, 37, 128, 0, 29, 96, 212, 60, 116, 129, 39, 110, 108, 47, 230, 102, 236, 112, - 178, 181, 222, 159, 223, 113, 237, 178, 158, 142, 236, 222, 110, 98, 138, 212, 222, 237, 243, 198, 100, 118, 5, 86, 88, 1, 162, 171, 226, 108, 182, 90, - 69, 22, 214, 199, 201, 71, 153, 191, 170, 54, 26, 21, 43, 174, 155, 178, 253, 192, 33, 200, 10, 0, 66, 138, 186, 110, 139, 173, 30, 136, 193, 176, - 222, 214, 237, 32, 165, 213, 237, 110, 252, 74, 3, 227, 102, 43, 85, 207, 61, 65, 224, 84, 178, 176, 43, 85, 71, 113, 44, 1, 192, 30, 151, 248, - 139, 22, 111, 83, 129, 106, 231, 167, 243, 59, 201, 32, 171, 247, 246, 126, 137, 92, 71, 131, 127, 123, 26, 197, 76, 56, 28, 58, 59, 229, 134, 1, - 106, 39, 179, 195, 215, 44, 215, 211, 74, 217, 217, 254, 246, 202, 198, 182, 182, 168, 28, 103, 204, 190, 32, 52, 105, 201, 66, 222, 243, 141, 249, 151, - 64, 21, 155, 165, 71, 63, 67, 4, 30, 225, 197, 148, 117, 0, 157, 45, 138, 162, 146, 158, 25, 207, 60, 202, 196, 55, 200, 8, 156, 122, 227, 241, - 63, 255, 217]) - - export default {testPng, testJpg} \ No newline at end of file +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +let tc_020buf = new Uint8Array([0,0,0,4,0,0,0,8,1,0,0,12,1,1,1,16,1,1,1,20,2,2,2,24,3,3,3,28,4,4,4,32,5,5,5,36,6,6,6,40,7,7,7,44,9,9,8,48,10,10,10,52,12,12,12,56,14,14,13,60,16,16,15,64,18,18,17,68,20,20,19,72,22,22,22,76,25,24,24,80,27,27,27,84,30,30,29,88,33,32,32,92,36,35,35,96]) +let tc_020_1buf = new Uint8Array([0,0,0,4,0,0,0,8,1,0,0,12,1,1,1,16,1,1,1,20,2,2,2,24,3,3,3,28,4,4,4,32,5,5,5,36,6,6,6,40,7,7,7,44,9,9,8,48,10,10,10,52,12,12,12,56,14,14,13,60,16,16,15,64,18,18,17,68,20,20,19,72,22,22,22,76,25,24,24,80,27,27,27,84,30,30,29,88,33,32,32,92,36,35,35,96]) +let tc_021buf = new Uint8Array([0,0,0,4,0,0,0,8]) +let tc_021_1buf = new Uint8Array([0,0,0,4,0,0,0,8]) +let tc_022buf = new Uint8Array([0,0,0,4,0,0,0,8]) + +let testJpg = new Uint8Array([255, 216, 255, 224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 96, 0, 96, 0, 0, 255, 219, 0, 67, 0, 2, 1, 1, 2, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 5, 3, 3, 3, 3, 3, 6, 4, 4, 3, 5, 7, 6, 7, 7, 7, 6, 7, 7, 8, 9, 11, 9, 8, + 8, 10, 8, 7, 7, 10, 13, 10, 10, 11, 12, 12, 12, 12, 7, 9, 14, 15, 13, 12, 14, 11, 12, 12, 12, 255, 219, 0, 67, 1, 2, 2, + 2, 3, 3, 3, 6, 3, 3, 6, 12, 8, 7, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 255, 192, + 0, 17, 8, 0, 226, 1, 216, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1, 255, 196, 0, 31, 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 255, 196, 0, 181, 16, 0, 2, 1, 3, 3, 2, 4, 3, 5, + 5, 4, 4, 0, 0, 1, 125, 1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, + 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, + 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, + 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 255, 196, 0, 31, 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 255, 196, 0, 181, 17, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119, 0, + 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, + 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, + 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 255, 218, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0, 253, 16, 162, 138, 43, 252, 99, 63, 170, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, + 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 2, 138, 40, 160, 15, 255, 217]) +let testPng = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 100, 0, 0, 0, 100, 8, 6, 0, 0, 0, 112, 226, 149, + 84, 0, 0, 32, 0, 73, 68, 65, 84, 120, 1, 212, 193, 123, 176, 231, 247, 93, 223, 247, 231, 251, 253, 249, 254, 126, 231, 156, 61, 123, 191, 105, + 37, 173, 180, 186, 95, 173, 187, 228, 43, 166, 182, 133, 109, 44, 108, 160, 6, 154, 105, 157, 116, 104, 50, 64, 72, 155, 41, 195, 64, 167, 13, 80, + 218, 73, 166, 76, 254, 104, 254, 104, 167, 51, 253, 39, 51, 45, 52, 77, 161, 36, 29, 19, 2, 24, 98, 140, 28, 91, 24, 91, 150, 44, 164, 213, + 93, 187, 146, 86, 123, 95, 237, 253, 156, 243, 251, 253, 190, 223, 247, 235, 213, 253, 237, 34, 220, 106, 86, 182, 105, 160, 99, 30, 143, 224, 175, 177, + 31, 251, 145, 31, 102, 101, 109, 133, 133, 241, 194, 174, 42, 253, 224, 108, 54, 123, 100, 24, 250, 235, 135, 161, 178, 239, 251, 67, 17, 241, 149, 42, + 253, 238, 100, 50, 121, 178, 117, 76, 207, 31, 221, 194, 243, 7, 30, 229, 187, 89, 240, 215, 212, 15, 253, 208, 167, 24, 47, 108, 98, 186, 118, 242, + 253, 165, 250, 135, 150, 62, 176, 178, 178, 186, 208, 247, 61, 146, 232, 103, 61, 173, 235, 4, 62, 106, 243, 175, 165, 250, 159, 108, 61, 149, 153, 126, + 252, 235, 79, 241, 221, 42, 248, 107, 232, 83, 159, 252, 126, 90, 27, 1, 250, 158, 217, 172, 255, 167, 171, 107, 43, 183, 204, 102, 61, 179, 233, 140, + 201, 100, 66, 149, 176, 4, 1, 173, 53, 70, 163, 17, 173, 181, 87, 128, 255, 102, 54, 27, 254, 143, 214, 114, 248, 198, 83, 79, 243, 221, 168, 241, + 215, 208, 237, 183, 221, 66, 102, 94, 93, 195, 240, 63, 207, 102, 211, 251, 214, 86, 39, 172, 156, 91, 101, 101, 117, 194, 249, 149, 53, 250, 97, 96, + 50, 157, 113, 254, 252, 10, 67, 153, 201, 116, 74, 149, 182, 70, 196, 71, 50, 242, 108, 102, 62, 177, 107, 231, 14, 31, 57, 122, 140, 239, 54, 141, + 191, 160, 237, 91, 55, 51, 30, 141, 216, 182, 109, 235, 120, 211, 198, 13, 235, 150, 214, 45, 141, 186, 46, 180, 113, 227, 6, 175, 174, 174, 241, 87, + 237, 83, 159, 122, 132, 79, 127, 252, 251, 121, 97, 223, 190, 191, 63, 235, 251, 31, 95, 91, 155, 196, 233, 211, 167, 89, 93, 153, 176, 54, 153, 48, + 212, 192, 80, 66, 18, 85, 98, 54, 155, 49, 157, 78, 137, 8, 76, 44, 142, 70, 221, 123, 35, 120, 153, 244, 179, 87, 238, 216, 195, 145, 99, 135, + 248, 110, 210, 241, 29, 186, 239, 190, 123, 233, 103, 253, 226, 120, 220, 30, 176, 253, 48, 196, 93, 147, 201, 100, 199, 80, 53, 93, 92, 92, 124, 117, + 109, 109, 237, 209, 141, 27, 55, 254, 193, 245, 215, 95, 127, 124, 239, 222, 189, 12, 195, 192, 95, 133, 8, 248, 151, 127, 240, 185, 235, 134, 161, 255, + 143, 38, 147, 181, 56, 123, 246, 12, 179, 217, 140, 201, 108, 74, 169, 232, 135, 129, 140, 4, 155, 204, 100, 174, 170, 88, 93, 93, 69, 18, 227, 81, + 183, 117, 97, 60, 254, 197, 136, 120, 146, 54, 125, 133, 239, 50, 29, 223, 198, 189, 247, 220, 197, 179, 207, 189, 196, 226, 194, 232, 254, 229, 117, 139, + 63, 11, 60, 50, 244, 195, 150, 217, 48, 208, 186, 14, 19, 100, 22, 227, 241, 194, 143, 75, 254, 234, 139, 47, 190, 248, 143, 134, 97, 248, 131, 204, + 212, 5, 252, 101, 75, 155, 176, 63, 58, 153, 206, 110, 155, 76, 166, 172, 172, 174, 49, 153, 206, 24, 134, 1, 99, 144, 113, 136, 204, 196, 54, 153, + 201, 92, 85, 49, 157, 78, 89, 89, 93, 163, 181, 188, 167, 139, 246, 31, 63, 249, 141, 39, 126, 249, 129, 251, 31, 224, 137, 39, 159, 230, 187, 69, + 242, 45, 188, 255, 125, 239, 37, 91, 151, 239, 125, 207, 253, 63, 178, 180, 180, 244, 235, 227, 209, 232, 51, 150, 183, 204, 102, 51, 214, 214, 86, 89, + 91, 155, 176, 178, 178, 198, 116, 58, 163, 239, 135, 113, 149, 190, 39, 34, 254, 151, 174, 235, 62, 35, 41, 248, 75, 246, 233, 79, 125, 146, 197, 241, + 186, 5, 75, 223, 95, 67, 181, 233, 116, 202, 116, 50, 101, 24, 6, 108, 97, 153, 214, 26, 17, 193, 91, 108, 51, 215, 90, 35, 34, 152, 205, 102, + 72, 34, 51, 31, 121, 224, 254, 7, 183, 65, 240, 221, 164, 227, 29, 124, 240, 131, 239, 103, 113, 221, 152, 209, 180, 251, 248, 226, 120, 252, 63, 88, + 190, 106, 101, 117, 149, 181, 181, 53, 86, 86, 87, 153, 245, 51, 250, 190, 152, 78, 103, 72, 98, 24, 6, 134, 97, 32, 34, 118, 117, 93, 247, 43, + 85, 117, 40, 51, 63, 95, 85, 252, 165, 137, 160, 52, 236, 138, 200, 123, 38, 211, 9, 125, 223, 51, 87, 85, 64, 144, 25, 204, 69, 4, 146, 200, + 76, 230, 36, 49, 55, 12, 3, 17, 48, 12, 3, 195, 208, 174, 109, 173, 93, 11, 188, 201, 119, 145, 142, 119, 176, 184, 48, 198, 131, 239, 88, 183, + 184, 244, 143, 9, 174, 90, 89, 91, 97, 50, 153, 178, 58, 153, 50, 157, 245, 204, 102, 61, 85, 98, 78, 18, 195, 48, 48, 23, 17, 116, 93, 119, + 181, 164, 95, 152, 205, 102, 79, 3, 199, 184, 140, 255, 226, 231, 126, 158, 151, 95, 126, 153, 135, 191, 239, 225, 118, 195, 13, 215, 143, 55, 109, 222, + 180, 28, 17, 203, 4, 75, 24, 108, 97, 27, 75, 171, 42, 77, 215, 38, 107, 43, 215, 93, 119, 195, 228, 23, 254, 193, 127, 185, 222, 25, 155, 185, + 96, 54, 155, 209, 15, 3, 85, 34, 51, 177, 185, 40, 34, 152, 179, 205, 219, 169, 68, 63, 155, 49, 30, 143, 151, 34, 189, 17, 155, 239, 38, 29, + 151, 241, 177, 143, 62, 76, 223, 15, 227, 117, 235, 22, 255, 243, 209, 168, 187, 107, 229, 252, 10, 125, 223, 51, 157, 245, 12, 67, 49, 157, 245, 244, + 179, 30, 219, 204, 101, 38, 173, 53, 102, 179, 25, 17, 65, 215, 117, 116, 93, 247, 189, 125, 223, 255, 141, 241, 120, 252, 63, 78, 167, 83, 126, 255, + 115, 191, 203, 71, 63, 246, 253, 60, 250, 232, 23, 214, 173, 91, 183, 124, 205, 194, 120, 124, 71, 55, 234, 238, 24, 141, 186, 155, 33, 174, 109, 45, + 183, 69, 198, 186, 140, 88, 144, 205, 156, 36, 106, 24, 214, 84, 53, 147, 106, 165, 239, 215, 142, 255, 237, 191, 243, 183, 103, 191, 246, 107, 255, 219, + 50, 113, 2, 8, 44, 19, 209, 184, 28, 219, 188, 197, 54, 195, 48, 48, 26, 141, 48, 38, 34, 107, 227, 198, 205, 62, 124, 248, 48, 255, 221, 63, + 250, 21, 254, 193, 47, 254, 87, 124, 55, 232, 120, 155, 77, 159, 249, 40, 221, 73, 104, 109, 116, 111, 215, 181, 31, 150, 204, 116, 54, 99, 58, 157, + 49, 155, 205, 152, 205, 102, 212, 48, 80, 85, 100, 38, 85, 69, 85, 49, 215, 90, 35, 51, 145, 68, 187, 228, 111, 76, 167, 211, 127, 246, 244, 51, + 79, 158, 95, 89, 89, 187, 243, 217, 103, 159, 126, 248, 154, 107, 118, 127, 100, 52, 30, 223, 213, 117, 221, 14, 240, 66, 107, 13, 73, 16, 96, 155, + 0, 100, 19, 128, 36, 172, 17, 86, 97, 25, 89, 220, 112, 195, 117, 220, 121, 231, 237, 28, 56, 112, 128, 204, 36, 91, 226, 161, 199, 134, 136, 96, + 46, 34, 136, 8, 36, 17, 17, 100, 38, 146, 200, 76, 50, 131, 42, 113, 197, 21, 59, 151, 127, 241, 151, 126, 241, 31, 110, 221, 182, 245, 137, 243, + 231, 206, 125, 227, 87, 255, 215, 127, 122, 240, 153, 167, 159, 62, 182, 119, 239, 222, 67, 207, 61, 255, 210, 217, 67, 135, 143, 206, 214, 173, 91, 226, + 228, 201, 147, 252, 255, 169, 227, 109, 62, 112, 2, 214, 111, 88, 100, 50, 233, 63, 156, 25, 59, 167, 211, 158, 97, 24, 24, 134, 1, 169, 24, 106, + 192, 54, 17, 129, 109, 170, 10, 73, 216, 166, 181, 70, 102, 98, 67, 102, 50, 26, 141, 238, 254, 91, 127, 235, 51, 127, 127, 58, 153, 221, 186, 121, + 243, 166, 143, 108, 216, 176, 113, 231, 120, 52, 138, 11, 32, 192, 54, 24, 162, 5, 146, 136, 72, 230, 194, 5, 1, 68, 16, 145, 68, 66, 89, 96, + 179, 176, 176, 192, 35, 143, 124, 130, 190, 239, 249, 220, 231, 254, 128, 51, 103, 206, 48, 244, 61, 217, 26, 93, 215, 17, 17, 216, 102, 46, 34, 152, + 155, 205, 102, 84, 21, 17, 1, 4, 216, 220, 127, 255, 125, 163, 235, 174, 223, 243, 189, 182, 190, 119, 221, 226, 130, 55, 172, 95, 158, 94, 123, 237, + 53, 167, 239, 190, 231, 174, 35, 251, 247, 237, 123, 229, 200, 161, 67, 207, 156, 59, 119, 246, 107, 131, 227, 233, 126, 82, 135, 178, 197, 240, 235, 191, + 249, 47, 249, 171, 214, 120, 155, 219, 111, 185, 153, 67, 175, 29, 203, 205, 91, 55, 252, 116, 73, 119, 77, 38, 83, 38, 147, 9, 147, 201, 132, 201, + 108, 74, 85, 81, 37, 170, 138, 97, 24, 136, 8, 50, 147, 185, 136, 192, 54, 182, 129, 196, 214, 194, 35, 143, 124, 226, 131, 119, 222, 121, 199, 221, + 235, 214, 173, 91, 191, 110, 105, 41, 50, 27, 115, 153, 73, 70, 227, 146, 32, 35, 9, 130, 224, 146, 8, 200, 76, 8, 192, 129, 205, 69, 182, 88, + 183, 110, 29, 119, 220, 113, 7, 119, 221, 117, 23, 235, 215, 47, 115, 228, 240, 97, 222, 60, 121, 18, 201, 64, 48, 103, 27, 73, 84, 21, 146, 176, + 77, 102, 178, 48, 30, 179, 107, 215, 21, 252, 196, 79, 254, 36, 187, 174, 184, 2, 213, 64, 215, 90, 100, 102, 183, 254, 130, 43, 175, 188, 114, 215, + 158, 61, 187, 239, 216, 182, 125, 219, 135, 218, 104, 244, 239, 163, 250, 161, 104, 220, 23, 65, 222, 114, 203, 205, 39, 206, 157, 247, 234, 67, 15, 220, + 195, 254, 253, 251, 249, 171, 208, 120, 155, 219, 110, 185, 153, 174, 235, 218, 120, 113, 244, 119, 74, 190, 233, 252, 202, 10, 147, 201, 148, 201, 116, 194, + 116, 58, 101, 58, 235, 25, 250, 1, 73, 84, 21, 182, 153, 147, 132, 109, 34, 130, 204, 96, 46, 51, 248, 208, 135, 62, 148, 55, 223, 124, 51, 219, + 182, 109, 103, 52, 26, 17, 17, 68, 64, 102, 99, 46, 34, 200, 76, 34, 32, 51, 177, 77, 107, 13, 99, 36, 147, 145, 32, 99, 204, 92, 4, 23, + 101, 6, 59, 118, 236, 224, 190, 251, 238, 225, 193, 119, 63, 200, 116, 54, 227, 229, 151, 94, 102, 50, 153, 50, 30, 143, 176, 77, 85, 81, 85, 84, + 21, 153, 73, 215, 53, 150, 151, 215, 241, 31, 252, 216, 143, 242, 177, 143, 125, 148, 57, 169, 192, 198, 54, 17, 129, 44, 70, 227, 17, 59, 118, 238, + 224, 154, 107, 174, 25, 109, 221, 190, 117, 219, 116, 50, 185, 119, 229, 252, 202, 15, 73, 254, 200, 85, 87, 109, 95, 159, 45, 14, 62, 255, 252, 139, + 103, 127, 247, 243, 191, 207, 193, 215, 223, 224, 47, 83, 227, 109, 110, 186, 233, 6, 206, 158, 95, 99, 105, 221, 248, 135, 250, 26, 238, 152, 78, 167, + 172, 173, 173, 49, 157, 205, 232, 251, 129, 201, 100, 74, 13, 133, 109, 108, 83, 85, 204, 117, 221, 136, 136, 96, 110, 54, 155, 97, 155, 135, 30, 122, + 128, 31, 251, 177, 31, 229, 166, 155, 110, 98, 97, 97, 76, 102, 35, 51, 201, 76, 32, 120, 75, 102, 146, 25, 204, 101, 6, 178, 201, 76, 46, 49, + 17, 1, 17, 68, 4, 17, 129, 109, 36, 33, 21, 17, 176, 109, 251, 22, 222, 253, 238, 7, 185, 118, 247, 110, 94, 124, 241, 69, 78, 157, 58, 141, + 109, 50, 19, 12, 17, 65, 215, 53, 70, 163, 17, 215, 93, 183, 135, 159, 248, 201, 159, 96, 231, 206, 157, 72, 133, 106, 160, 170, 176, 141, 109, 140, + 177, 133, 100, 108, 179, 101, 235, 22, 246, 92, 183, 135, 133, 165, 133, 238, 244, 169, 83, 187, 39, 147, 181, 143, 102, 196, 71, 126, 253, 127, 255, 103, + 53, 38, 247, 221, 117, 231, 237, 147, 231, 94, 124, 137, 191, 44, 141, 183, 185, 241, 198, 235, 89, 191, 97, 209, 67, 213, 13, 195, 48, 124, 223, 100, + 50, 101, 232, 7, 166, 179, 25, 211, 217, 12, 201, 88, 38, 51, 105, 173, 33, 137, 136, 96, 52, 26, 33, 153, 190, 239, 217, 180, 105, 19, 63, 250, + 163, 159, 230, 231, 126, 238, 103, 185, 251, 238, 187, 89, 88, 24, 3, 65, 4, 23, 101, 38, 17, 129, 109, 34, 130, 8, 200, 108, 92, 18, 68, 4, + 16, 16, 92, 18, 16, 17, 68, 38, 193, 5, 22, 223, 148, 168, 68, 215, 37, 183, 220, 122, 51, 119, 220, 126, 27, 123, 247, 62, 203, 177, 99, 199, + 200, 72, 90, 235, 232, 90, 99, 52, 234, 88, 90, 28, 211, 247, 61, 207, 61, 247, 28, 235, 55, 172, 103, 215, 174, 157, 180, 214, 144, 196, 156, 36, + 164, 66, 22, 82, 17, 128, 109, 90, 107, 236, 220, 185, 157, 171, 174, 186, 138, 243, 231, 207, 230, 233, 211, 167, 174, 12, 226, 227, 209, 229, 157, 147, + 89, 191, 111, 251, 142, 157, 135, 111, 191, 237, 86, 246, 237, 219, 207, 191, 171, 198, 219, 188, 252, 202, 62, 174, 191, 238, 58, 192, 107, 54, 159, 236, + 251, 217, 198, 217, 108, 198, 80, 133, 36, 230, 84, 98, 206, 54, 153, 73, 102, 50, 153, 76, 168, 42, 62, 240, 129, 247, 243, 203, 191, 252, 75, 252, + 248, 143, 255, 56, 187, 119, 95, 67, 102, 0, 65, 107, 73, 102, 35, 34, 152, 203, 12, 50, 147, 204, 4, 76, 68, 2, 6, 2, 219, 68, 4, 17, + 96, 155, 57, 27, 108, 17, 4, 145, 129, 101, 8, 136, 224, 34, 203, 216, 102, 215, 174, 157, 220, 118, 199, 109, 28, 56, 112, 128, 55, 79, 158, 100, + 212, 37, 59, 118, 108, 227, 193, 135, 238, 103, 195, 134, 245, 156, 58, 117, 134, 55, 222, 56, 200, 151, 191, 252, 37, 206, 157, 59, 207, 205, 183, 220, + 194, 242, 242, 50, 150, 152, 179, 5, 97, 36, 3, 193, 220, 48, 244, 68, 152, 165, 229, 101, 174, 187, 126, 15, 37, 113, 232, 240, 209, 110, 24, 234, + 182, 136, 252, 216, 104, 212, 206, 175, 77, 39, 207, 222, 120, 227, 245, 195, 171, 251, 95, 227, 223, 69, 227, 50, 174, 191, 238, 90, 52, 232, 168, 131, + 205, 217, 242, 123, 134, 126, 136, 42, 49, 155, 206, 232, 135, 162, 159, 13, 204, 101, 38, 146, 153, 78, 39, 44, 175, 95, 230, 239, 254, 244, 79, 241, + 75, 191, 244, 11, 220, 123, 223, 189, 116, 221, 136, 136, 32, 51, 128, 36, 179, 49, 23, 17, 100, 38, 54, 68, 4, 151, 4, 223, 20, 68, 4, 23, + 5, 216, 38, 34, 137, 224, 162, 0, 36, 1, 6, 2, 219, 72, 194, 6, 35, 170, 6, 182, 111, 223, 202, 189, 247, 222, 195, 174, 93, 59, 185, 250, + 170, 43, 121, 224, 129, 123, 185, 247, 190, 187, 216, 115, 221, 53, 28, 120, 253, 0, 231, 206, 157, 103, 214, 207, 120, 234, 169, 63, 101, 255, 171, 175, + 114, 251, 109, 183, 178, 188, 188, 76, 213, 128, 109, 36, 17, 201, 69, 85, 69, 85, 1, 102, 168, 129, 214, 117, 92, 117, 213, 46, 22, 23, 23, 56, + 240, 218, 27, 244, 125, 191, 57, 91, 126, 95, 215, 229, 122, 13, 122, 252, 198, 27, 175, 155, 236, 219, 255, 26, 255, 95, 53, 46, 99, 223, 254, 215, + 216, 189, 231, 106, 151, 244, 188, 237, 123, 250, 126, 184, 81, 85, 24, 51, 244, 3, 17, 65, 107, 141, 214, 26, 125, 223, 179, 105, 211, 70, 254, 235, + 95, 250, 69, 126, 234, 167, 126, 130, 141, 27, 54, 98, 65, 68, 16, 193, 5, 65, 102, 71, 68, 2, 65, 68, 146, 217, 128, 32, 34, 137, 72, 90, + 235, 136, 8, 230, 34, 2, 219, 204, 5, 193, 156, 13, 216, 4, 193, 156, 13, 118, 96, 23, 150, 33, 184, 32, 48, 34, 2, 108, 179, 97, 253, 50, + 183, 220, 114, 51, 123, 246, 92, 67, 235, 26, 163, 81, 199, 246, 237, 219, 216, 178, 121, 51, 47, 60, 255, 34, 253, 48, 96, 155, 125, 175, 236, 231, + 165, 23, 95, 226, 214, 91, 111, 101, 243, 150, 77, 88, 96, 27, 169, 144, 10, 187, 176, 141, 109, 176, 177, 12, 152, 93, 187, 174, 96, 113, 105, 145, + 87, 247, 191, 74, 223, 207, 70, 153, 249, 158, 204, 184, 186, 134, 225, 177, 155, 111, 190, 126, 101, 180, 48, 226, 196, 137, 147, 252, 69, 53, 222, 193, + 85, 187, 175, 68, 131, 206, 75, 250, 211, 174, 181, 251, 193, 87, 151, 69, 16, 64, 96, 155, 217, 108, 198, 194, 194, 152, 159, 255, 249, 159, 227, 111, + 254, 205, 207, 48, 26, 143, 136, 8, 34, 130, 136, 32, 51, 137, 8, 50, 27, 17, 65, 68, 144, 153, 68, 4, 153, 73, 102, 18, 17, 204, 69, 152, + 136, 224, 45, 17, 65, 68, 96, 131, 45, 140, 177, 141, 101, 100, 17, 17, 128, 145, 69, 68, 32, 9, 171, 176, 141, 109, 108, 99, 139, 165, 165, 37, + 54, 108, 88, 79, 102, 208, 90, 227, 202, 171, 174, 224, 220, 249, 243, 188, 254, 218, 27, 68, 36, 115, 7, 15, 30, 228, 197, 23, 95, 226, 206, 119, + 189, 139, 205, 155, 55, 33, 9, 91, 84, 21, 17, 193, 91, 36, 35, 21, 115, 182, 216, 177, 99, 59, 75, 75, 75, 188, 252, 242, 126, 250, 126, 200, + 150, 121, 87, 100, 187, 106, 58, 12, 95, 218, 184, 97, 227, 234, 171, 251, 95, 227, 47, 170, 241, 14, 222, 56, 112, 144, 173, 155, 183, 48, 30, 181, + 163, 150, 190, 38, 124, 147, 97, 79, 215, 186, 28, 134, 129, 217, 108, 198, 250, 245, 235, 249, 217, 159, 253, 25, 62, 243, 153, 255, 144, 209, 104, 4, + 17, 180, 76, 50, 147, 204, 36, 34, 200, 12, 32, 153, 203, 76, 34, 130, 136, 32, 51, 137, 8, 222, 98, 155, 75, 204, 156, 109, 108, 115, 73, 96, + 155, 136, 192, 54, 115, 17, 96, 27, 8, 230, 108, 48, 38, 194, 72, 102, 24, 10, 48, 96, 90, 107, 44, 45, 45, 50, 30, 143, 24, 47, 140, 217, + 190, 109, 59, 207, 62, 251, 60, 103, 207, 157, 7, 76, 68, 114, 232, 208, 97, 14, 29, 60, 200, 61, 247, 220, 205, 242, 242, 50, 182, 136, 48, 182, + 168, 26, 176, 141, 109, 36, 17, 17, 216, 98, 110, 231, 206, 157, 200, 197, 171, 251, 95, 165, 74, 145, 173, 189, 43, 35, 54, 206, 166, 179, 71, 175, + 191, 110, 207, 236, 181, 215, 14, 240, 23, 209, 248, 22, 142, 30, 59, 198, 198, 13, 203, 196, 168, 29, 173, 97, 248, 125, 219, 71, 183, 108, 218, 116, + 237, 21, 59, 119, 236, 184, 249, 230, 155, 248, 233, 191, 247, 119, 249, 244, 143, 124, 154, 241, 194, 136, 204, 32, 72, 34, 130, 204, 36, 34, 136, 8, + 50, 147, 204, 36, 34, 137, 8, 34, 130, 204, 36, 34, 176, 77, 68, 96, 27, 155, 11, 2, 169, 0, 19, 145, 128, 177, 185, 36, 192, 64, 96, 34, + 130, 32, 144, 10, 108, 100, 35, 21, 198, 204, 73, 5, 24, 16, 54, 23, 24, 48, 182, 176, 204, 250, 245, 203, 156, 61, 115, 150, 23, 94, 120, 9, + 99, 48, 100, 118, 28, 56, 112, 144, 147, 39, 79, 241, 192, 253, 247, 50, 26, 53, 108, 83, 85, 216, 2, 2, 73, 100, 114, 145, 36, 108, 176, 205, + 206, 157, 59, 56, 117, 242, 36, 135, 14, 29, 37, 35, 35, 91, 222, 29, 48, 153, 76, 214, 30, 187, 238, 186, 61, 126, 253, 192, 27, 124, 167, 26, + 223, 198, 241, 19, 39, 57, 124, 232, 40, 191, 250, 107, 191, 186, 242, 145, 143, 124, 100, 239, 39, 63, 249, 3, 31, 249, 129, 71, 30, 185, 229, 147, + 159, 250, 36, 119, 190, 235, 93, 100, 75, 178, 53, 130, 32, 35, 200, 76, 230, 34, 160, 181, 198, 92, 102, 146, 153, 180, 214, 176, 77, 68, 48, 23, + 17, 204, 73, 34, 34, 184, 196, 68, 128, 109, 222, 34, 21, 127, 78, 198, 128, 45, 100, 97, 132, 108, 2, 144, 4, 8, 201, 128, 1, 99, 131, 84, + 72, 66, 18, 17, 73, 68, 176, 113, 211, 70, 158, 123, 246, 121, 206, 159, 95, 37, 162, 17, 17, 24, 216, 191, 111, 63, 227, 209, 136, 119, 189, 235, + 14, 108, 99, 11, 219, 204, 217, 194, 54, 182, 128, 192, 22, 96, 50, 147, 29, 59, 182, 179, 111, 223, 126, 206, 157, 59, 79, 16, 173, 107, 237, 222, + 214, 186, 231, 118, 108, 223, 250, 194, 166, 205, 155, 121, 227, 141, 131, 124, 39, 146, 239, 208, 149, 87, 94, 193, 246, 237, 91, 127, 96, 215, 174, 157, + 31, 222, 185, 115, 7, 203, 203, 235, 80, 21, 216, 96, 46, 138, 72, 164, 194, 54, 115, 182, 153, 139, 72, 34, 130, 203, 145, 68, 102, 146, 153, 128, + 153, 139, 8, 254, 159, 108, 176, 13, 54, 68, 32, 9, 73, 24, 227, 8, 8, 254, 156, 36, 34, 130, 136, 196, 54, 182, 0, 19, 1, 17, 9, 24, + 73, 92, 113, 197, 14, 238, 124, 215, 237, 100, 54, 90, 107, 216, 38, 35, 176, 204, 111, 252, 250, 191, 224, 241, 175, 61, 65, 132, 145, 140, 36, 36, + 1, 129, 109, 108, 83, 85, 216, 198, 54, 132, 216, 177, 115, 27, 239, 123, 223, 131, 216, 102, 24, 122, 100, 109, 203, 204, 255, 246, 232, 241, 55, 111, + 24, 143, 70, 124, 167, 26, 223, 129, 47, 252, 225, 239, 115, 246, 244, 233, 77, 155, 55, 111, 254, 149, 165, 165, 117, 183, 102, 36, 68, 210, 90, 66, + 4, 217, 146, 140, 196, 230, 162, 214, 146, 136, 192, 134, 204, 36, 34, 176, 33, 34, 136, 8, 50, 147, 214, 26, 182, 249, 127, 51, 118, 17, 145, 216, + 6, 204, 156, 36, 108, 17, 128, 36, 28, 38, 8, 176, 40, 21, 24, 44, 35, 21, 145, 96, 11, 169, 144, 138, 57, 219, 84, 21, 182, 144, 140, 100, + 2, 51, 234, 70, 60, 245, 141, 167, 233, 251, 129, 42, 97, 27, 34, 56, 191, 178, 202, 225, 35, 135, 121, 240, 161, 7, 88, 94, 183, 12, 24, 169, + 176, 69, 4, 84, 137, 170, 1, 219, 72, 2, 11, 89, 108, 218, 188, 145, 67, 7, 143, 112, 236, 232, 9, 32, 232, 186, 182, 43, 35, 125, 246, 236, + 217, 63, 188, 238, 218, 107, 244, 198, 193, 67, 124, 59, 141, 111, 227, 119, 126, 251, 179, 108, 218, 180, 145, 174, 235, 62, 182, 126, 253, 250, 159, 233, + 90, 55, 142, 76, 8, 46, 138, 8, 34, 147, 136, 4, 67, 215, 117, 68, 4, 16, 180, 214, 0, 19, 209, 200, 76, 34, 130, 185, 136, 192, 54, 115, + 182, 121, 139, 109, 108, 51, 103, 27, 73, 204, 217, 134, 0, 89, 4, 1, 6, 169, 48, 198, 50, 82, 17, 128, 45, 108, 99, 27, 73, 128, 145, 140, + 36, 108, 99, 11, 219, 204, 73, 197, 186, 165, 37, 94, 122, 121, 31, 39, 142, 191, 73, 73, 188, 37, 51, 56, 116, 232, 48, 155, 54, 109, 228, 206, + 59, 111, 71, 18, 182, 144, 4, 4, 96, 230, 108, 99, 155, 108, 129, 84, 140, 186, 17, 93, 55, 226, 249, 231, 95, 64, 50, 153, 73, 102, 222, 212, + 186, 246, 39, 227, 241, 248, 213, 173, 219, 182, 112, 248, 240, 81, 190, 149, 228, 219, 24, 141, 70, 124, 245, 79, 30, 111, 11, 11, 11, 63, 220, 186, + 92, 150, 141, 100, 34, 146, 204, 4, 2, 149, 80, 21, 17, 96, 27, 219, 68, 112, 129, 137, 72, 108, 97, 27, 73, 204, 217, 70, 18, 182, 105, 173, + 49, 103, 155, 185, 204, 64, 18, 96, 50, 147, 185, 214, 26, 173, 37, 115, 146, 192, 64, 4, 24, 146, 32, 34, 33, 76, 68, 128, 3, 27, 34, 130, + 136, 0, 140, 13, 17, 193, 55, 153, 185, 165, 165, 69, 110, 187, 245, 102, 50, 147, 204, 68, 18, 96, 108, 3, 201, 231, 126, 239, 243, 28, 58, 120, + 24, 48, 182, 153, 147, 10, 219, 68, 4, 111, 145, 140, 13, 170, 226, 198, 27, 246, 176, 123, 247, 213, 244, 179, 25, 179, 217, 20, 169, 182, 183, 214, + 254, 211, 217, 172, 95, 94, 90, 90, 226, 219, 73, 190, 141, 108, 112, 219, 237, 55, 95, 51, 234, 186, 15, 102, 36, 17, 144, 105, 112, 97, 27, 91, + 24, 51, 103, 155, 8, 136, 0, 27, 36, 3, 198, 22, 118, 97, 23, 146, 176, 141, 36, 108, 83, 85, 84, 21, 85, 3, 32, 108, 176, 141, 109, 108, + 19, 1, 146, 80, 153, 57, 89, 148, 197, 69, 6, 99, 176, 145, 140, 109, 34, 32, 2, 108, 115, 73, 16, 17, 216, 38, 34, 176, 141, 84, 128, 32, + 204, 77, 55, 94, 199, 104, 220, 97, 23, 173, 5, 17, 92, 96, 198, 227, 17, 111, 28, 56, 200, 23, 190, 240, 40, 96, 36, 243, 150, 170, 162, 74, + 24, 99, 138, 26, 122, 40, 225, 18, 227, 81, 227, 93, 119, 220, 138, 129, 26, 196, 48, 12, 4, 254, 104, 102, 124, 111, 215, 26, 223, 78, 242, 109, + 44, 45, 45, 49, 30, 47, 220, 215, 186, 182, 199, 54, 182, 144, 132, 44, 170, 6, 108, 131, 65, 18, 85, 66, 50, 16, 188, 165, 74, 84, 21, 85, + 133, 109, 164, 162, 170, 136, 224, 2, 35, 21, 182, 200, 12, 192, 216, 102, 174, 74, 216, 66, 50, 85, 3, 165, 66, 50, 153, 137, 45, 84, 194, 54, + 182, 145, 4, 2, 99, 74, 133, 36, 230, 170, 4, 4, 17, 96, 27, 201, 216, 226, 45, 42, 177, 243, 138, 237, 92, 121, 229, 14, 50, 131, 136, 0, + 76, 102, 163, 181, 198, 220, 163, 143, 126, 137, 19, 39, 78, 146, 13, 36, 33, 137, 136, 192, 22, 150, 176, 5, 54, 17, 65, 112, 201, 245, 55, 92, + 203, 134, 245, 203, 76, 166, 19, 250, 126, 64, 210, 198, 204, 248, 204, 217, 243, 231, 199, 239, 126, 207, 3, 124, 43, 201, 183, 240, 220, 115, 207, 114, + 195, 13, 123, 232, 186, 238, 193, 136, 24, 219, 198, 54, 146, 176, 77, 68, 18, 17, 128, 201, 76, 50, 19, 91, 72, 162, 170, 152, 139, 128, 214, 146, + 136, 96, 206, 22, 32, 134, 161, 167, 170, 7, 132, 45, 164, 66, 50, 182, 137, 8, 50, 131, 136, 224, 146, 32, 34, 136, 0, 3, 153, 13, 2, 108, + 33, 137, 57, 99, 108, 99, 155, 57, 219, 216, 70, 18, 182, 153, 179, 69, 68, 48, 103, 153, 185, 229, 229, 37, 174, 185, 230, 106, 108, 211, 90, 3, + 130, 57, 73, 116, 221, 136, 3, 175, 31, 228, 79, 159, 122, 6, 219, 72, 162, 170, 168, 42, 170, 10, 219, 216, 252, 185, 136, 192, 18, 155, 55, 109, + 228, 202, 171, 175, 96, 24, 6, 134, 97, 96, 24, 138, 11, 30, 94, 88, 24, 223, 213, 90, 227, 91, 73, 190, 133, 87, 246, 189, 196, 231, 191, 240, + 229, 133, 209, 104, 116, 71, 102, 98, 155, 32, 136, 8, 144, 209, 48, 96, 153, 32, 176, 133, 93, 12, 53, 96, 139, 57, 73, 204, 217, 6, 140, 109, + 34, 2, 91, 72, 66, 18, 54, 68, 4, 182, 145, 10, 91, 72, 194, 6, 219, 216, 34, 18, 108, 99, 131, 101, 84, 3, 168, 176, 184, 32, 176, 193, + 22, 96, 230, 108, 144, 4, 24, 16, 146, 1, 51, 103, 27, 99, 108, 131, 69, 6, 92, 187, 251, 106, 70, 93, 135, 109, 90, 107, 204, 217, 6, 204, + 172, 31, 248, 202, 87, 191, 206, 172, 47, 36, 17, 17, 72, 34, 49, 137, 73, 192, 50, 150, 40, 137, 185, 214, 53, 174, 189, 230, 106, 230, 170, 68, + 213, 128, 228, 93, 45, 242, 145, 43, 175, 220, 193, 67, 15, 222, 207, 59, 73, 190, 5, 73, 44, 173, 91, 220, 16, 25, 187, 249, 51, 178, 176, 141, + 13, 198, 204, 73, 194, 54, 102, 206, 148, 6, 108, 35, 137, 97, 24, 24, 134, 162, 170, 144, 132, 84, 216, 96, 27, 201, 216, 194, 54, 146, 145, 140, + 100, 108, 35, 139, 170, 66, 18, 85, 3, 82, 97, 11, 108, 2, 19, 54, 145, 208, 50, 1, 99, 132, 109, 108, 3, 193, 156, 205, 159, 49, 54, 23, + 25, 3, 102, 78, 42, 84, 3, 187, 118, 237, 100, 121, 121, 153, 136, 32, 2, 50, 147, 136, 128, 8, 34, 147, 103, 159, 125, 158, 147, 39, 79, 49, + 103, 131, 109, 192, 96, 99, 137, 136, 192, 64, 4, 216, 66, 42, 118, 94, 177, 157, 174, 107, 12, 195, 192, 48, 20, 82, 113, 193, 199, 95, 127, 245, + 208, 102, 219, 188, 147, 228, 91, 24, 141, 58, 22, 198, 11, 75, 192, 14, 219, 216, 198, 50, 146, 176, 133, 109, 36, 97, 27, 12, 182, 49, 96, 115, + 129, 137, 8, 170, 132, 109, 36, 3, 198, 6, 169, 136, 8, 108, 51, 12, 133, 36, 164, 34, 2, 108, 35, 23, 118, 225, 48, 229, 226, 146, 192, 54, + 210, 192, 225, 195, 135, 120, 230, 153, 167, 121, 225, 133, 231, 57, 118, 252, 24, 114, 145, 17, 216, 66, 42, 108, 17, 1, 17, 32, 25, 73, 72, 133, + 109, 130, 96, 206, 24, 12, 178, 217, 188, 121, 35, 203, 203, 75, 64, 0, 65, 107, 141, 214, 26, 151, 152, 227, 199, 79, 240, 250, 107, 175, 147, 153, + 72, 194, 54, 16, 148, 132, 13, 182, 177, 4, 4, 82, 97, 196, 230, 45, 155, 88, 92, 92, 64, 85, 84, 13, 12, 195, 128, 237, 59, 51, 243, 142, + 204, 224, 157, 116, 124, 11, 163, 174, 195, 242, 250, 8, 22, 165, 129, 200, 14, 34, 176, 205, 156, 109, 170, 6, 130, 70, 89, 180, 174, 35, 72, 44, + 81, 12, 200, 34, 34, 176, 141, 109, 34, 184, 32, 201, 12, 170, 10, 201, 204, 101, 6, 146, 1, 35, 9, 219, 148, 138, 136, 196, 18, 24, 130, 11, + 100, 158, 254, 198, 55, 248, 173, 223, 254, 44, 71, 14, 31, 165, 4, 91, 54, 109, 230, 246, 59, 110, 229, 193, 135, 30, 228, 202, 171, 174, 36, 34, + 168, 42, 36, 81, 85, 128, 1, 243, 22, 169, 168, 42, 108, 99, 140, 37, 70, 227, 17, 155, 54, 111, 228, 240, 145, 227, 16, 102, 46, 34, 136, 8, + 34, 146, 26, 6, 246, 237, 123, 141, 123, 239, 126, 23, 184, 8, 11, 243, 103, 108, 50, 130, 146, 168, 42, 48, 80, 98, 121, 105, 137, 197, 165, 5, + 78, 159, 62, 75, 14, 73, 215, 4, 205, 155, 51, 121, 223, 194, 194, 226, 99, 239, 126, 232, 94, 190, 250, 181, 111, 240, 118, 29, 239, 224, 7, 30, + 249, 56, 88, 188, 242, 202, 43, 55, 222, 183, 241, 238, 245, 94, 24, 97, 11, 57, 104, 36, 146, 201, 228, 2, 33, 65, 107, 13, 11, 8, 99, 12, + 134, 48, 36, 137, 84, 68, 4, 32, 106, 16, 163, 241, 8, 2, 108, 17, 17, 92, 20, 70, 26, 144, 141, 109, 108, 3, 6, 131, 74, 204, 157, 124, + 243, 77, 126, 231, 119, 254, 53, 127, 250, 212, 94, 206, 157, 95, 101, 24, 6, 146, 198, 222, 103, 159, 227, 235, 143, 127, 157, 135, 31, 254, 48, 247, + 63, 120, 31, 163, 241, 2, 146, 177, 3, 91, 216, 102, 78, 18, 54, 216, 198, 18, 150, 49, 166, 181, 198, 120, 60, 38, 2, 186, 236, 152, 14, 61, + 115, 54, 100, 38, 195, 96, 94, 123, 245, 0, 53, 244, 128, 1, 19, 17, 72, 166, 170, 104, 173, 97, 46, 176, 177, 141, 92, 68, 4, 75, 139, 11, + 84, 137, 42, 161, 18, 170, 66, 248, 125, 199, 79, 188, 185, 48, 234, 186, 41, 151, 209, 241, 14, 178, 5, 63, 253, 247, 254, 179, 117, 63, 242, 233, + 31, 254, 79, 238, 190, 231, 206, 101, 73, 100, 38, 216, 24, 131, 133, 20, 68, 4, 151, 4, 32, 108, 209, 90, 67, 18, 9, 84, 152, 32, 56, 115, + 234, 20, 79, 61, 249, 4, 47, 189, 242, 10, 235, 214, 45, 243, 61, 223, 243, 65, 246, 236, 185, 14, 147, 12, 85, 204, 25, 99, 137, 57, 219, 148, + 6, 194, 32, 137, 140, 224, 141, 131, 7, 121, 225, 165, 87, 56, 125, 230, 28, 147, 217, 12, 167, 32, 130, 213, 179, 107, 156, 223, 187, 194, 177, 227, + 39, 56, 118, 252, 56, 15, 127, 223, 135, 25, 47, 44, 0, 198, 54, 146, 169, 42, 36, 97, 11, 217, 4, 96, 46, 48, 100, 4, 11, 139, 11, 4, + 1, 152, 214, 26, 195, 48, 144, 25, 64, 80, 85, 28, 63, 118, 130, 233, 100, 202, 226, 210, 24, 8, 108, 192, 134, 8, 74, 66, 85, 16, 193, 92, + 56, 104, 153, 44, 44, 44, 82, 85, 216, 66, 54, 146, 136, 204, 59, 22, 198, 227, 45, 16, 71, 184, 140, 142, 119, 48, 110, 141, 219, 110, 190, 233, + 190, 233, 116, 242, 33, 219, 216, 66, 18, 17, 1, 81, 32, 200, 108, 132, 131, 204, 164, 170, 128, 36, 34, 176, 1, 131, 109, 144, 56, 124, 248, 16, + 159, 253, 236, 255, 197, 147, 95, 127, 130, 147, 167, 78, 209, 151, 248, 218, 227, 95, 231, 103, 126, 230, 103, 184, 254, 250, 235, 81, 9, 115, 65, 128, + 36, 108, 176, 69, 73, 132, 185, 192, 148, 138, 35, 71, 15, 115, 238, 220, 121, 102, 195, 140, 133, 205, 29, 59, 174, 217, 201, 120, 97, 204, 137, 163, + 39, 56, 125, 240, 44, 7, 15, 31, 229, 247, 62, 247, 111, 200, 22, 124, 232, 195, 255, 30, 173, 107, 84, 21, 182, 128, 128, 0, 91, 96, 99, 9, + 91, 216, 166, 36, 250, 217, 64, 169, 144, 76, 102, 71, 102, 34, 9, 219, 100, 54, 78, 158, 60, 197, 100, 50, 101, 97, 113, 140, 84, 216, 92, 96, + 34, 192, 18, 182, 152, 179, 140, 44, 140, 137, 12, 84, 69, 149, 168, 42, 134, 128, 110, 60, 222, 158, 153, 87, 3, 71, 184, 140, 228, 50, 126, 240, + 83, 159, 96, 235, 230, 141, 140, 23, 198, 31, 30, 250, 126, 107, 213, 0, 4, 146, 144, 10, 187, 176, 11, 91, 204, 85, 21, 182, 169, 234, 177, 6, + 108, 33, 21, 200, 28, 57, 116, 144, 95, 255, 231, 255, 156, 47, 124, 225, 139, 236, 59, 240, 58, 167, 166, 167, 89, 141, 21, 190, 241, 220, 147, 252, + 198, 111, 254, 6, 171, 171, 171, 88, 198, 18, 150, 128, 32, 50, 104, 93, 71, 102, 98, 27, 91, 216, 197, 234, 234, 121, 134, 26, 136, 81, 114, 199, + 125, 119, 242, 209, 135, 63, 198, 13, 55, 220, 194, 109, 247, 220, 206, 134, 157, 235, 25, 106, 224, 248, 137, 147, 252, 209, 23, 190, 200, 222, 189, 123, + 177, 140, 84, 216, 198, 54, 82, 97, 21, 150, 168, 18, 146, 32, 2, 108, 102, 179, 25, 173, 53, 34, 130, 170, 66, 18, 153, 137, 109, 90, 75, 86, + 86, 86, 153, 76, 103, 128, 177, 132, 85, 84, 21, 118, 81, 26, 48, 2, 12, 22, 152, 139, 102, 211, 41, 6, 36, 49, 235, 123, 6, 9, 73, 27, + 171, 106, 183, 36, 46, 39, 185, 12, 219, 188, 126, 248, 248, 82, 68, 190, 123, 54, 155, 49, 157, 78, 121, 139, 109, 170, 10, 219, 72, 194, 54, 16, + 128, 33, 12, 97, 164, 30, 44, 206, 156, 62, 197, 191, 250, 173, 207, 242, 229, 199, 190, 194, 145, 19, 199, 89, 220, 182, 196, 109, 15, 189, 139, 59, + 31, 186, 135, 93, 55, 93, 201, 87, 158, 248, 99, 246, 238, 125, 22, 34, 144, 196, 48, 12, 16, 208, 181, 70, 70, 50, 234, 58, 186, 174, 67, 18, + 182, 105, 173, 209, 117, 29, 163, 197, 17, 91, 55, 110, 99, 247, 230, 107, 57, 245, 250, 73, 22, 218, 2, 155, 182, 110, 196, 36, 125, 63, 112, 232, + 232, 81, 30, 251, 242, 99, 156, 57, 125, 138, 57, 73, 72, 133, 36, 108, 35, 137, 57, 27, 176, 233, 251, 129, 149, 213, 21, 130, 160, 235, 58, 34, + 2, 219, 68, 4, 182, 177, 205, 48, 12, 172, 172, 172, 128, 193, 22, 178, 80, 21, 85, 198, 6, 219, 72, 194, 152, 204, 196, 130, 149, 149, 85, 44, + 97, 9, 219, 216, 198, 246, 66, 68, 236, 204, 12, 238, 184, 253, 86, 222, 46, 185, 140, 22, 201, 66, 215, 109, 25, 117, 163, 91, 170, 138, 213, 149, + 85, 134, 161, 71, 42, 170, 10, 73, 216, 32, 137, 170, 98, 24, 122, 164, 194, 22, 146, 24, 106, 96, 152, 205, 248, 234, 87, 190, 204, 99, 143, 125, + 133, 227, 111, 158, 34, 70, 112, 195, 237, 55, 241, 137, 135, 63, 201, 117, 219, 111, 96, 195, 120, 19, 238, 204, 87, 190, 242, 37, 166, 147, 53, 164, + 98, 46, 51, 105, 109, 68, 215, 117, 100, 54, 34, 130, 185, 42, 177, 115, 199, 118, 182, 109, 221, 68, 20, 60, 245, 196, 83, 252, 247, 255, 228, 159, + 240, 248, 19, 95, 231, 141, 131, 7, 56, 127, 102, 5, 44, 108, 51, 89, 235, 217, 183, 239, 85, 94, 126, 233, 101, 192, 96, 97, 21, 72, 216, 6, + 11, 169, 8, 32, 34, 56, 123, 238, 28, 43, 231, 87, 137, 12, 50, 147, 204, 32, 34, 136, 8, 70, 163, 17, 17, 129, 108, 134, 190, 71, 18, 230, + 2, 155, 136, 0, 12, 152, 32, 152, 179, 77, 4, 204, 102, 61, 231, 206, 173, 80, 18, 37, 1, 70, 50, 146, 136, 136, 45, 139, 139, 75, 128, 121, + 187, 228, 50, 50, 147, 214, 186, 43, 91, 230, 214, 201, 218, 132, 179, 231, 206, 97, 23, 85, 61, 85, 3, 182, 169, 42, 84, 133, 36, 36, 161, 18, + 42, 83, 37, 112, 112, 228, 216, 17, 254, 237, 151, 31, 227, 240, 145, 99, 244, 253, 64, 118, 29, 145, 240, 252, 222, 23, 57, 248, 202, 33, 78, 188, + 113, 2, 15, 226, 245, 215, 95, 229, 220, 217, 211, 168, 138, 136, 0, 130, 136, 32, 72, 130, 164, 101, 71, 70, 99, 24, 6, 110, 190, 229, 22, 30, + 254, 190, 135, 89, 236, 22, 57, 119, 234, 44, 125, 78, 217, 184, 115, 153, 55, 143, 188, 201, 153, 35, 103, 120, 75, 73, 156, 61, 187, 194, 190, 125, + 251, 25, 102, 83, 194, 194, 26, 176, 132, 101, 176, 176, 197, 92, 100, 114, 234, 228, 105, 166, 147, 25, 173, 117, 216, 32, 153, 204, 36, 34, 136, 8, + 50, 147, 140, 128, 0, 169, 176, 5, 1, 132, 137, 0, 12, 4, 151, 68, 16, 145, 156, 59, 191, 194, 202, 234, 20, 3, 178, 40, 11, 169, 168, 42, + 134, 161, 182, 92, 125, 213, 46, 170, 196, 219, 117, 92, 86, 96, 188, 35, 34, 150, 135, 26, 56, 126, 236, 56, 183, 220, 114, 35, 153, 73, 4, 12, + 67, 79, 102, 16, 209, 48, 102, 212, 141, 48, 194, 6, 27, 236, 224, 185, 189, 207, 240, 210, 43, 175, 176, 186, 54, 1, 139, 217, 234, 148, 253, 47, + 191, 202, 243, 123, 95, 228, 232, 254, 35, 140, 23, 199, 108, 221, 180, 153, 171, 175, 186, 134, 241, 226, 34, 165, 129, 116, 71, 70, 48, 151, 153, 216, + 6, 76, 182, 196, 54, 24, 62, 240, 190, 247, 243, 218, 254, 3, 252, 206, 231, 126, 159, 129, 162, 95, 233, 169, 89, 193, 192, 5, 1, 8, 28, 244, + 125, 241, 230, 137, 147, 172, 173, 173, 177, 184, 184, 136, 205, 69, 182, 144, 204, 37, 6, 7, 135, 14, 29, 161, 170, 176, 133, 84, 204, 217, 38, 34, + 152, 107, 173, 163, 27, 117, 188, 69, 18, 115, 182, 129, 192, 54, 182, 201, 72, 140, 48, 230, 212, 201, 83, 172, 156, 95, 193, 6, 73, 72, 66, 18, + 150, 32, 98, 116, 231, 29, 215, 243, 228, 55, 158, 230, 237, 146, 203, 48, 6, 123, 83, 85, 45, 16, 193, 241, 227, 199, 25, 134, 162, 170, 144, 10, + 169, 176, 65, 18, 146, 40, 21, 146, 40, 21, 178, 88, 89, 89, 225, 185, 103, 159, 227, 212, 169, 51, 148, 4, 4, 158, 193, 155, 7, 78, 226, 126, + 96, 231, 238, 109, 44, 46, 45, 178, 97, 113, 35, 31, 250, 208, 135, 25, 141, 58, 36, 129, 33, 34, 136, 8, 34, 130, 174, 235, 152, 179, 13, 152, + 89, 63, 37, 187, 224, 227, 159, 120, 152, 59, 239, 184, 149, 24, 96, 88, 27, 176, 192, 24, 48, 16, 204, 5, 48, 235, 167, 76, 167, 83, 84, 133, + 37, 84, 3, 85, 133, 45, 108, 97, 204, 234, 218, 132, 3, 7, 14, 146, 153, 216, 102, 46, 2, 36, 81, 85, 12, 195, 128, 36, 48, 96, 99, 192, + 50, 54, 68, 4, 96, 34, 130, 140, 68, 18, 17, 65, 68, 112, 228, 232, 113, 166, 179, 25, 115, 54, 88, 198, 54, 54, 248, 130, 233, 84, 216, 230, + 237, 146, 203, 49, 16, 44, 218, 110, 92, 112, 242, 228, 105, 206, 157, 91, 193, 134, 97, 24, 144, 140, 45, 192, 72, 162, 170, 24, 106, 160, 159, 13, + 212, 32, 206, 156, 57, 195, 129, 55, 14, 49, 153, 204, 128, 192, 4, 118, 160, 85, 56, 119, 104, 149, 115, 135, 87, 153, 157, 238, 185, 255, 158, 251, + 216, 189, 251, 106, 134, 217, 0, 6, 219, 216, 38, 35, 136, 8, 192, 68, 4, 17, 80, 26, 168, 26, 232, 251, 158, 205, 155, 55, 241, 131, 63, 248, + 8, 123, 246, 92, 205, 120, 212, 8, 243, 103, 204, 92, 182, 100, 97, 97, 204, 210, 210, 34, 45, 27, 37, 81, 42, 228, 194, 42, 130, 32, 8, 50, + 147, 195, 71, 143, 113, 224, 141, 35, 188, 37, 51, 201, 108, 100, 38, 223, 100, 250, 190, 71, 50, 146, 48, 6, 140, 100, 44, 19, 17, 200, 66, 22, + 65, 82, 130, 3, 7, 14, 33, 25, 8, 230, 36, 83, 37, 100, 35, 41, 86, 87, 2, 91, 188, 93, 114, 25, 14, 99, 46, 8, 192, 112, 250, 244, + 105, 14, 31, 62, 140, 84, 216, 92, 96, 134, 97, 160, 170, 176, 11, 187, 176, 11, 185, 48, 197, 233, 51, 167, 57, 123, 230, 44, 85, 133, 13, 182, + 177, 205, 156, 21, 184, 96, 121, 121, 29, 239, 125, 223, 187, 105, 45, 24, 212, 51, 212, 0, 54, 182, 169, 18, 85, 133, 108, 130, 192, 54, 17, 129, + 45, 250, 126, 198, 116, 58, 225, 218, 107, 119, 243, 3, 159, 248, 40, 215, 237, 217, 205, 198, 13, 203, 44, 140, 71, 116, 173, 49, 30, 117, 172, 95, + 183, 196, 230, 77, 235, 217, 185, 99, 27, 163, 209, 152, 42, 33, 9, 201, 24, 48, 38, 34, 176, 205, 179, 123, 95, 100, 50, 153, 162, 18, 153, 13, + 155, 139, 34, 130, 57, 219, 216, 198, 54, 198, 204, 89, 102, 206, 22, 145, 129, 44, 50, 146, 204, 68, 50, 43, 231, 215, 120, 227, 141, 67, 72, 66, + 18, 182, 193, 198, 54, 182, 176, 209, 234, 116, 130, 109, 222, 174, 227, 114, 12, 97, 144, 68, 107, 73, 245, 197, 171, 251, 95, 229, 250, 235, 247, 208, + 117, 141, 8, 144, 76, 215, 113, 129, 145, 68, 102, 146, 153, 72, 48, 157, 174, 49, 155, 205, 176, 205, 37, 193, 156, 109, 230, 108, 115, 195, 13, 215, + 115, 195, 13, 215, 209, 15, 61, 182, 201, 12, 140, 1, 67, 0, 1, 65, 64, 152, 136, 96, 78, 18, 85, 3, 195, 208, 35, 137, 219, 239, 184, 141, + 8, 248, 250, 227, 79, 112, 236, 248, 9, 38, 107, 83, 34, 96, 221, 210, 18, 187, 118, 109, 231, 198, 27, 111, 32, 2, 36, 161, 42, 164, 98, 206, + 152, 108, 201, 177, 99, 111, 242, 252, 243, 47, 19, 36, 173, 5, 174, 129, 8, 144, 132, 109, 108, 19, 17, 216, 134, 224, 207, 152, 136, 192, 134, 136, + 224, 34, 131, 49, 17, 65, 100, 227, 196, 137, 55, 57, 122, 244, 4, 153, 9, 24, 219, 204, 101, 6, 182, 177, 125, 230, 137, 39, 255, 4, 203, 188, + 93, 199, 101, 132, 184, 72, 37, 164, 194, 14, 246, 239, 127, 141, 123, 78, 158, 100, 219, 182, 45, 216, 38, 2, 164, 192, 54, 153, 137, 13, 146, 1, + 179, 176, 176, 64, 107, 73, 70, 80, 46, 32, 136, 8, 230, 194, 176, 176, 48, 230, 221, 15, 221, 207, 186, 117, 235, 24, 134, 129, 139, 28, 212, 208, + 83, 53, 166, 181, 129, 140, 6, 153, 72, 194, 54, 115, 153, 73, 85, 49, 212, 128, 52, 144, 4, 183, 223, 118, 11, 219, 183, 109, 225, 181, 87, 95, + 227, 212, 169, 147, 148, 196, 250, 245, 235, 185, 118, 207, 53, 92, 125, 205, 85, 72, 61, 182, 136, 4, 156, 96, 46, 16, 67, 153, 175, 125, 253, 105, + 206, 156, 57, 71, 4, 32, 8, 131, 37, 108, 19, 17, 68, 4, 17, 65, 102, 146, 153, 88, 98, 46, 50, 80, 137, 200, 192, 134, 200, 192, 54, 150, + 201, 113, 240, 210, 43, 251, 57, 119, 126, 133, 136, 68, 50, 173, 129, 109, 170, 68, 132, 80, 213, 217, 51, 167, 207, 98, 155, 183, 235, 184, 44, 99, + 3, 1, 25, 193, 80, 197, 241, 227, 39, 121, 118, 239, 243, 124, 207, 7, 223, 139, 84, 124, 83, 210, 154, 169, 42, 90, 107, 216, 102, 211, 198, 141, + 108, 219, 190, 149, 215, 14, 28, 164, 175, 1, 108, 36, 136, 128, 209, 168, 113, 195, 13, 123, 120, 224, 254, 251, 1, 35, 9, 219, 68, 4, 82, 33, + 21, 195, 80, 100, 152, 200, 100, 46, 34, 136, 8, 50, 19, 219, 168, 138, 161, 6, 40, 211, 50, 217, 190, 99, 59, 219, 183, 111, 99, 168, 1, 219, + 180, 214, 145, 25, 88, 133, 36, 108, 99, 27, 155, 139, 50, 130, 151, 247, 189, 206, 51, 79, 63, 135, 109, 8, 232, 85, 72, 98, 46, 34, 152, 139, + 8, 108, 115, 145, 161, 36, 36, 33, 153, 200, 32, 8, 100, 1, 193, 69, 1, 179, 89, 207, 222, 189, 47, 32, 153, 174, 131, 204, 64, 18, 182, 177, + 132, 36, 151, 244, 166, 44, 94, 125, 253, 13, 222, 46, 185, 12, 217, 216, 194, 50, 17, 129, 36, 50, 131, 103, 158, 121, 150, 163, 71, 143, 99, 27, + 73, 84, 9, 169, 24, 134, 1, 91, 72, 98, 24, 138, 165, 165, 37, 222, 243, 158, 247, 176, 121, 243, 38, 90, 38, 4, 180, 46, 89, 92, 90, 96, + 215, 149, 59, 249, 232, 199, 30, 102, 215, 149, 87, 48, 12, 3, 85, 3, 195, 48, 80, 53, 32, 23, 170, 194, 22, 146, 81, 9, 201, 24, 147, 145, + 72, 34, 34, 176, 141, 74, 12, 195, 64, 63, 12, 12, 195, 64, 97, 218, 104, 196, 104, 97, 129, 236, 26, 146, 40, 21, 182, 193, 32, 153, 8, 147, + 25, 156, 58, 117, 150, 127, 251, 197, 175, 194, 196, 203, 222, 0, 0, 32, 0, 73, 68, 65, 84, 48, 153, 204, 192, 129, 10, 178, 53, 200, 32, 91, + 35, 34, 168, 42, 190, 41, 144, 68, 63, 155, 17, 4, 216, 216, 134, 128, 32, 192, 96, 155, 214, 26, 135, 14, 29, 101, 255, 190, 215, 201, 72, 34, + 130, 185, 136, 64, 18, 6, 50, 98, 5, 124, 156, 119, 208, 113, 25, 150, 145, 189, 58, 194, 131, 236, 142, 11, 50, 147, 179, 103, 207, 243, 199, 127, + 252, 85, 62, 254, 241, 135, 89, 92, 92, 4, 140, 36, 34, 2, 48, 54, 23, 4, 153, 201, 3, 15, 61, 64, 180, 228, 171, 127, 242, 56, 7, 222, + 56, 192, 208, 247, 236, 220, 185, 131, 247, 127, 224, 189, 188, 251, 221, 15, 32, 13, 216, 198, 54, 17, 193, 48, 64, 63, 43, 70, 157, 104, 77, 68, + 64, 102, 34, 9, 149, 32, 160, 181, 164, 69, 16, 54, 97, 46, 178, 132, 128, 4, 108, 48, 16, 97, 108, 161, 18, 178, 137, 8, 34, 128, 8, 206, + 173, 174, 242, 249, 63, 250, 18, 135, 14, 31, 35, 34, 32, 32, 19, 100, 147, 17, 244, 85, 216, 69, 132, 0, 49, 39, 21, 195, 32, 250, 161, 144, + 5, 17, 68, 128, 36, 50, 18, 27, 50, 3, 8, 158, 120, 226, 25, 78, 159, 57, 71, 107, 13, 27, 36, 17, 209, 32, 184, 168, 164, 21, 201, 71, + 9, 115, 57, 29, 151, 97, 11, 236, 73, 16, 195, 208, 247, 157, 36, 136, 100, 238, 133, 231, 95, 226, 170, 43, 175, 224, 129, 7, 239, 67, 226, 162, + 136, 192, 54, 146, 200, 76, 32, 137, 8, 30, 122, 247, 131, 220, 115, 207, 221, 156, 58, 121, 146, 126, 232, 89, 183, 110, 29, 219, 182, 109, 165, 181, + 198, 48, 20, 96, 108, 19, 17, 128, 169, 234, 169, 234, 169, 161, 145, 217, 40, 21, 150, 176, 197, 92, 70, 35, 51, 201, 76, 50, 2, 1, 6, 74, + 194, 24, 59, 200, 108, 88, 162, 84, 216, 230, 18, 19, 1, 231, 206, 175, 241, 232, 23, 255, 152, 151, 95, 218, 71, 68, 32, 21, 85, 3, 146, 128, + 64, 18, 153, 9, 85, 100, 54, 36, 19, 17, 100, 38, 4, 96, 46, 138, 128, 32, 152, 51, 16, 1, 153, 201, 137, 55, 79, 243, 248, 227, 79, 98, + 27, 219, 204, 101, 6, 115, 54, 72, 2, 251, 84, 223, 247, 199, 34, 184, 172, 142, 203, 176, 141, 237, 53, 225, 33, 91, 35, 29, 24, 136, 8, 250, + 94, 60, 246, 216, 87, 89, 94, 191, 142, 91, 110, 185, 153, 136, 96, 206, 22, 6, 44, 33, 7, 65, 195, 54, 173, 5, 59, 175, 216, 78, 68, 96, + 7, 85, 162, 74, 100, 6, 182, 121, 75, 132, 25, 106, 160, 52, 80, 53, 96, 139, 104, 201, 48, 12, 244, 179, 158, 190, 31, 144, 0, 7, 56, 48, + 23, 68, 128, 141, 37, 132, 177, 19, 48, 182, 145, 196, 92, 4, 16, 201, 177, 99, 111, 242, 232, 23, 255, 152, 87, 95, 61, 8, 52, 170, 122, 108, + 147, 153, 64, 32, 9, 219, 24, 51, 87, 85, 188, 69, 18, 227, 81, 71, 100, 16, 17, 216, 38, 51, 144, 64, 22, 38, 176, 197, 215, 30, 127, 146, + 131, 7, 143, 16, 17, 216, 38, 34, 136, 8, 32, 152, 139, 8, 100, 191, 90, 85, 231, 50, 147, 203, 233, 184, 140, 194, 24, 175, 150, 220, 119, 93, + 7, 97, 134, 190, 199, 230, 2, 115, 238, 236, 10, 159, 251, 189, 63, 164, 74, 220, 118, 219, 45, 24, 145, 110, 4, 16, 153, 68, 4, 25, 32, 21, + 115, 17, 65, 68, 48, 103, 155, 136, 64, 10, 34, 130, 57, 219, 68, 36, 85, 197, 202, 249, 21, 78, 245, 103, 57, 191, 178, 202, 249, 243, 231, 89, + 89, 89, 101, 58, 153, 34, 137, 204, 100, 212, 53, 198, 227, 96, 52, 78, 34, 6, 108, 97, 10, 28, 128, 169, 18, 96, 34, 146, 136, 100, 117, 50, + 229, 229, 151, 94, 228, 169, 111, 236, 229, 216, 241, 147, 212, 32, 100, 83, 37, 36, 19, 145, 192, 128, 36, 136, 0, 67, 102, 3, 68, 213, 128, 109, + 230, 100, 131, 33, 2, 236, 160, 100, 34, 0, 65, 100, 112, 226, 196, 105, 30, 125, 244, 49, 134, 161, 232, 186, 17, 111, 169, 18, 173, 5, 184, 17, + 36, 114, 61, 127, 227, 181, 55, 173, 236, 123, 99, 31, 151, 211, 113, 25, 178, 177, 125, 182, 164, 105, 200, 12, 253, 64, 149, 176, 197, 48, 12, 216, + 112, 252, 248, 73, 126, 235, 179, 191, 203, 185, 115, 231, 185, 251, 158, 59, 24, 141, 70, 204, 133, 130, 204, 134, 195, 204, 69, 36, 32, 34, 130, 185, + 136, 192, 134, 8, 243, 22, 201, 128, 120, 243, 196, 97, 14, 31, 62, 206, 155, 39, 79, 113, 230, 204, 89, 214, 214, 214, 152, 205, 102, 72, 34, 51, + 25, 143, 199, 44, 46, 45, 177, 113, 253, 50, 187, 119, 111, 99, 243, 166, 69, 2, 136, 8, 46, 49, 17, 9, 209, 88, 89, 89, 227, 224, 27, 135, + 120, 102, 239, 11, 28, 58, 124, 148, 26, 138, 97, 40, 8, 192, 38, 51, 145, 138, 185, 190, 31, 176, 69, 16, 152, 192, 54, 153, 137, 36, 108, 99, + 155, 170, 194, 54, 24, 164, 34, 8, 34, 147, 108, 13, 1, 127, 248, 135, 95, 226, 245, 215, 14, 67, 36, 182, 137, 8, 46, 49, 182, 137, 8, 36, + 203, 142, 103, 143, 28, 63, 202, 209, 163, 199, 185, 156, 142, 203, 144, 10, 73, 103, 236, 209, 164, 170, 40, 137, 170, 129, 136, 36, 34, 8, 32, 51, + 56, 119, 110, 133, 223, 251, 189, 207, 115, 244, 232, 49, 222, 243, 158, 7, 217, 186, 109, 11, 182, 176, 193, 97, 230, 34, 132, 13, 17, 16, 17, 68, + 4, 17, 193, 156, 13, 182, 152, 59, 117, 250, 60, 123, 159, 121, 153, 227, 199, 223, 228, 204, 153, 83, 156, 59, 119, 158, 213, 213, 85, 250, 190, 199, + 54, 151, 4, 27, 54, 108, 96, 219, 150, 205, 172, 223, 208, 177, 101, 243, 18, 198, 204, 69, 36, 231, 207, 175, 113, 252, 216, 155, 188, 113, 248, 8, + 175, 189, 250, 58, 167, 78, 157, 161, 202, 116, 93, 135, 29, 100, 38, 150, 17, 66, 18, 96, 44, 97, 11, 8, 34, 2, 169, 176, 185, 40, 51, 177, + 205, 92, 70, 64, 0, 17, 64, 16, 153, 148, 138, 209, 104, 204, 51, 207, 60, 207, 31, 253, 209, 151, 33, 18, 34, 152, 139, 8, 230, 34, 146, 204, + 100, 78, 82, 95, 85, 175, 172, 13, 3, 239, 164, 227, 50, 60, 8, 171, 86, 145, 78, 87, 137, 214, 18, 169, 97, 139, 57, 89, 180, 214, 33, 153, + 97, 86, 60, 246, 229, 175, 241, 242, 75, 251, 121, 255, 251, 30, 226, 182, 219, 111, 102, 253, 250, 117, 148, 5, 1, 4, 23, 152, 185, 204, 164, 69, + 195, 54, 182, 113, 128, 129, 32, 56, 123, 246, 44, 175, 31, 120, 157, 195, 135, 142, 114, 232, 208, 65, 250, 126, 32, 2, 140, 152, 77, 123, 78, 156, + 56, 65, 75, 184, 239, 222, 187, 185, 246, 158, 155, 185, 98, 199, 22, 44, 19, 17, 180, 214, 120, 241, 165, 215, 248, 252, 191, 249, 34, 167, 78, 157, + 166, 4, 153, 73, 107, 73, 68, 146, 145, 200, 34, 34, 24, 84, 188, 165, 101, 67, 37, 186, 110, 68, 85, 81, 42, 36, 49, 12, 34, 34, 200, 76, + 134, 97, 64, 50, 221, 66, 199, 210, 226, 24, 91, 100, 4, 115, 153, 141, 195, 71, 79, 240, 155, 255, 231, 191, 226, 236, 217, 85, 50, 19, 219, 204, + 217, 38, 51, 185, 196, 68, 6, 17, 76, 92, 58, 103, 204, 59, 233, 184, 12, 169, 168, 170, 169, 170, 142, 141, 198, 99, 196, 55, 85, 21, 125, 223, + 19, 17, 68, 4, 198, 84, 137, 3, 7, 14, 241, 47, 14, 255, 54, 187, 119, 95, 201, 61, 247, 220, 193, 173, 183, 220, 204, 150, 173, 155, 232, 186, + 134, 44, 34, 18, 75, 252, 223, 213, 193, 91, 240, 231, 247, 125, 223, 245, 231, 235, 253, 254, 252, 254, 199, 213, 238, 234, 96, 157, 173, 147, 79, 137, + 92, 199, 78, 161, 101, 154, 50, 147, 146, 25, 66, 153, 41, 229, 152, 97, 114, 65, 153, 97, 166, 189, 229, 146, 43, 110, 24, 46, 152, 1, 238, 128, + 14, 195, 5, 164, 153, 0, 197, 197, 83, 26, 55, 208, 184, 57, 214, 137, 237, 38, 150, 101, 71, 138, 117, 176, 180, 90, 89, 210, 106, 87, 218, 243, + 254, 79, 191, 239, 231, 253, 126, 177, 63, 41, 10, 30, 198, 146, 108, 147, 148, 244, 241, 88, 92, 72, 194, 221, 72, 66, 136, 182, 185, 251, 206, 59, + 120, 226, 177, 135, 184, 117, 227, 58, 135, 7, 55, 184, 120, 233, 45, 118, 118, 246, 56, 123, 246, 12, 203, 178, 240, 224, 67, 31, 225, 95, 249, 233, + 191, 196, 103, 62, 253, 41, 238, 190, 231, 110, 70, 6, 221, 69, 100, 112, 245, 234, 77, 190, 244, 171, 191, 197, 235, 111, 92, 100, 123, 123, 133, 36, + 64, 72, 193, 200, 4, 9, 33, 108, 3, 166, 102, 177, 209, 110, 218, 6, 140, 221, 204, 57, 217, 144, 68, 85, 81, 85, 188, 39, 34, 216, 221, 219, + 5, 27, 99, 66, 201, 173, 131, 35, 254, 247, 191, 247, 69, 94, 120, 241, 28, 82, 34, 9, 73, 188, 199, 54, 146, 216, 176, 27, 155, 19, 211, 39, + 182, 121, 63, 131, 247, 113, 243, 230, 225, 209, 222, 222, 238, 69, 4, 53, 27, 108, 64, 68, 4, 153, 73, 85, 1, 162, 170, 145, 132, 109, 142, 79, + 78, 120, 241, 197, 115, 188, 248, 226, 75, 220, 117, 247, 157, 60, 242, 200, 195, 60, 246, 216, 35, 60, 112, 223, 125, 220, 121, 215, 89, 118, 118, 86, + 172, 198, 32, 51, 201, 76, 66, 162, 108, 108, 179, 26, 193, 103, 63, 251, 41, 62, 246, 177, 135, 249, 169, 191, 244, 19, 60, 255, 194, 139, 124, 243, + 155, 207, 241, 246, 229, 235, 220, 127, 255, 93, 252, 244, 79, 255, 11, 60, 252, 224, 253, 40, 205, 156, 107, 114, 236, 160, 16, 54, 60, 253, 141, 103, + 120, 243, 205, 75, 140, 76, 108, 147, 153, 72, 162, 187, 209, 106, 240, 46, 209, 221, 72, 65, 68, 96, 160, 187, 17, 208, 109, 48, 216, 38, 51, 233, + 158, 72, 98, 163, 187, 137, 16, 123, 123, 187, 236, 237, 238, 210, 109, 20, 226, 120, 61, 249, 194, 23, 126, 133, 175, 124, 245, 235, 68, 36, 27, 221, + 77, 68, 176, 33, 137, 119, 137, 238, 166, 91, 140, 49, 144, 132, 109, 222, 207, 224, 125, 60, 244, 209, 251, 234, 228, 120, 253, 90, 85, 209, 213, 68, + 6, 85, 133, 16, 32, 64, 188, 203, 128, 137, 16, 115, 26, 133, 168, 130, 75, 23, 223, 230, 194, 27, 151, 248, 234, 87, 190, 206, 246, 246, 54, 219, + 219, 43, 78, 157, 222, 231, 212, 222, 62, 35, 7, 247, 220, 115, 55, 255, 242, 95, 254, 139, 220, 255, 192, 71, 0, 179, 49, 107, 178, 44, 199, 236, + 238, 38, 31, 255, 216, 131, 156, 218, 31, 60, 243, 204, 243, 220, 243, 145, 59, 217, 221, 9, 14, 15, 111, 161, 16, 85, 133, 27, 132, 185, 114, 237, + 58, 223, 120, 250, 15, 88, 102, 177, 181, 21, 136, 160, 219, 128, 201, 4, 204, 109, 166, 170, 168, 106, 196, 109, 130, 174, 162, 13, 8, 20, 66, 36, + 217, 201, 156, 197, 156, 133, 109, 36, 145, 153, 116, 55, 119, 222, 121, 150, 221, 189, 29, 114, 12, 110, 221, 58, 228, 239, 125, 225, 87, 248, 245, 95, + 255, 50, 221, 38, 34, 216, 176, 205, 134, 36, 254, 31, 70, 18, 54, 216, 2, 2, 73, 188, 159, 193, 247, 241, 235, 191, 253, 59, 252, 107, 63, 251, + 51, 148, 253, 138, 219, 29, 82, 148, 27, 73, 84, 55, 85, 19, 219, 72, 65, 183, 177, 65, 10, 4, 184, 77, 42, 32, 204, 156, 19, 12, 135, 71, + 39, 220, 188, 117, 200, 197, 75, 87, 216, 168, 42, 108, 243, 135, 223, 126, 158, 159, 255, 249, 127, 155, 143, 127, 236, 81, 170, 38, 115, 46, 204, 229, + 132, 147, 245, 49, 235, 245, 154, 213, 74, 124, 226, 19, 15, 33, 193, 250, 228, 132, 145, 43, 150, 165, 56, 58, 58, 38, 115, 197, 214, 106, 197, 243, + 207, 189, 196, 197, 75, 111, 99, 139, 110, 19, 1, 2, 186, 27, 9, 102, 21, 18, 84, 21, 96, 64, 84, 53, 179, 138, 141, 170, 194, 109, 170, 10, + 219, 108, 100, 38, 85, 69, 119, 227, 110, 78, 214, 107, 238, 190, 231, 46, 118, 119, 118, 185, 116, 233, 10, 255, 219, 231, 255, 1, 95, 253, 218, 83, + 116, 155, 136, 192, 54, 17, 129, 36, 108, 99, 27, 73, 72, 2, 68, 102, 18, 145, 216, 148, 77, 217, 226, 253, 12, 222, 199, 178, 94, 48, 188, 92, + 85, 107, 208, 78, 117, 33, 5, 115, 46, 216, 166, 219, 216, 147, 170, 34, 36, 26, 48, 208, 93, 8, 49, 103, 97, 243, 142, 136, 160, 187, 145, 68, + 68, 176, 81, 85, 156, 123, 229, 85, 126, 225, 239, 252, 93, 254, 195, 191, 241, 239, 243, 177, 39, 62, 74, 119, 115, 116, 124, 204, 141, 27, 55, 185, + 114, 229, 42, 151, 47, 95, 225, 230, 205, 27, 44, 203, 100, 181, 218, 102, 103, 123, 155, 179, 103, 239, 228, 145, 71, 30, 225, 244, 233, 51, 28, 28, + 28, 243, 244, 55, 158, 97, 89, 79, 198, 24, 116, 21, 206, 32, 98, 133, 16, 99, 12, 220, 205, 106, 123, 11, 27, 214, 235, 53, 17, 73, 183, 17, + 194, 54, 115, 22, 182, 89, 150, 133, 238, 198, 54, 18, 239, 152, 115, 98, 155, 173, 213, 138, 71, 30, 125, 152, 103, 190, 253, 34, 159, 255, 252, 63, + 224, 197, 23, 207, 33, 9, 73, 216, 70, 18, 221, 77, 68, 16, 17, 116, 55, 146, 176, 141, 36, 170, 10, 41, 144, 116, 36, 233, 8, 204, 251, 73, + 222, 199, 195, 15, 63, 68, 119, 239, 68, 232, 231, 16, 119, 180, 193, 221, 84, 23, 93, 13, 24, 119, 99, 140, 13, 203, 178, 96, 27, 219, 216, 96, + 55, 118, 99, 131, 219, 84, 55, 182, 145, 132, 109, 108, 99, 224, 250, 245, 155, 188, 114, 254, 187, 60, 242, 200, 67, 220, 115, 207, 93, 172, 215, 199, + 92, 185, 114, 133, 215, 94, 191, 192, 133, 11, 111, 241, 246, 219, 215, 184, 121, 243, 144, 245, 201, 194, 206, 206, 54, 15, 61, 120, 63, 15, 63, 252, + 16, 251, 251, 167, 248, 218, 215, 158, 226, 235, 95, 255, 38, 153, 43, 114, 12, 144, 176, 27, 183, 81, 136, 136, 96, 35, 51, 177, 161, 170, 153, 115, + 34, 192, 54, 146, 152, 53, 169, 106, 16, 116, 155, 170, 162, 202, 84, 21, 221, 13, 8, 219, 68, 4, 191, 246, 143, 127, 139, 215, 95, 127, 147, 136, + 64, 18, 239, 145, 68, 68, 176, 33, 9, 219, 72, 34, 51, 201, 76, 192, 128, 136, 136, 55, 109, 255, 79, 146, 110, 28, 28, 28, 240, 253, 12, 62, + 64, 87, 95, 4, 93, 168, 238, 7, 187, 27, 219, 100, 14, 108, 179, 177, 120, 66, 55, 85, 133, 221, 216, 198, 54, 110, 35, 132, 16, 229, 162, 91, + 216, 102, 163, 187, 145, 132, 36, 82, 73, 35, 206, 157, 251, 46, 191, 240, 119, 62, 207, 127, 240, 55, 254, 61, 30, 126, 240, 35, 60, 248, 224, 3, + 108, 111, 111, 241, 224, 3, 247, 113, 116, 120, 4, 152, 221, 189, 93, 206, 158, 61, 195, 153, 59, 78, 179, 179, 189, 197, 235, 175, 95, 228, 119, 191, + 242, 251, 44, 179, 136, 48, 138, 193, 24, 131, 170, 66, 17, 108, 116, 155, 204, 192, 54, 221, 141, 109, 192, 180, 205, 70, 117, 19, 145, 40, 26, 181, + 144, 64, 18, 17, 98, 189, 94, 179, 209, 93, 172, 215, 39, 124, 235, 155, 207, 18, 17, 140, 49, 248, 94, 182, 177, 141, 36, 54, 108, 35, 137, 136, + 0, 68, 85, 49, 70, 16, 17, 216, 190, 105, 251, 150, 36, 222, 79, 242, 62, 62, 250, 208, 131, 92, 189, 118, 125, 189, 183, 191, 247, 87, 36, 253, + 57, 219, 96, 110, 51, 54, 116, 23, 115, 78, 34, 130, 238, 166, 170, 217, 48, 198, 24, 219, 216, 70, 10, 186, 141, 36, 222, 83, 85, 216, 102, 195, + 54, 182, 185, 126, 253, 38, 231, 206, 189, 202, 71, 31, 126, 136, 187, 238, 60, 139, 4, 91, 219, 43, 246, 246, 119, 216, 223, 223, 229, 212, 169, 83, + 236, 237, 237, 177, 187, 183, 207, 193, 193, 49, 191, 252, 203, 95, 226, 252, 171, 111, 144, 25, 216, 38, 35, 177, 205, 198, 106, 12, 54, 50, 147, 204, + 164, 187, 232, 54, 27, 17, 73, 85, 81, 53, 193, 80, 221, 116, 55, 179, 138, 170, 137, 36, 230, 44, 186, 155, 238, 166, 170, 144, 196, 24, 3, 73, + 116, 55, 27, 221, 205, 134, 36, 222, 35, 9, 73, 108, 72, 66, 2, 73, 68, 136, 49, 18, 41, 158, 94, 175, 215, 191, 152, 153, 125, 112, 112, 192, + 247, 147, 188, 143, 143, 126, 244, 33, 238, 187, 239, 94, 47, 203, 242, 99, 153, 227, 103, 170, 138, 57, 39, 221, 205, 70, 87, 211, 221, 216, 208, 221, + 216, 77, 85, 99, 155, 119, 24, 12, 216, 198, 136, 141, 170, 162, 187, 233, 110, 54, 108, 51, 231, 68, 18, 27, 87, 175, 222, 224, 249, 231, 191, 195, + 238, 222, 46, 31, 249, 200, 221, 172, 182, 86, 100, 14, 182, 183, 118, 216, 218, 222, 1, 39, 175, 191, 246, 22, 255, 215, 255, 249, 155, 60, 255, 252, + 75, 40, 196, 70, 230, 64, 33, 16, 140, 49, 104, 155, 80, 96, 67, 102, 130, 1, 1, 54, 221, 141, 219, 216, 166, 170, 17, 48, 171, 88, 47, 107, + 170, 154, 13, 155, 119, 84, 21, 221, 77, 102, 34, 9, 73, 108, 216, 70, 18, 182, 249, 94, 17, 129, 109, 36, 177, 33, 9, 73, 216, 38, 34, 1, + 125, 233, 210, 165, 75, 255, 112, 127, 127, 159, 131, 131, 3, 190, 159, 228, 125, 124, 247, 181, 215, 121, 224, 254, 251, 232, 246, 61, 171, 213, 248, 183, + 128, 49, 70, 82, 213, 204, 185, 176, 209, 213, 108, 216, 96, 155, 119, 25, 119, 99, 27, 187, 193, 6, 137, 110, 211, 221, 116, 55, 182, 121, 143, 109, + 54, 36, 1, 230, 224, 224, 144, 231, 158, 251, 14, 175, 189, 246, 38, 235, 165, 88, 102, 115, 229, 234, 77, 190, 243, 226, 119, 249, 202, 239, 126, 131, + 223, 253, 202, 239, 115, 249, 242, 85, 20, 65, 230, 224, 61, 54, 100, 4, 57, 6, 27, 145, 73, 68, 16, 18, 109, 35, 137, 57, 139, 234, 6, 137, + 147, 147, 53, 85, 147, 89, 69, 119, 209, 54, 32, 230, 156, 128, 88, 150, 133, 57, 39, 182, 89, 173, 86, 124, 175, 136, 192, 54, 146, 136, 8, 54, + 108, 179, 33, 137, 136, 96, 35, 66, 68, 136, 136, 96, 140, 193, 109, 191, 116, 230, 204, 153, 175, 85, 21, 7, 7, 7, 124, 63, 131, 15, 96, 27, + 219, 207, 117, 251, 114, 68, 62, 184, 44, 107, 34, 68, 102, 82, 85, 204, 57, 65, 98, 206, 194, 110, 54, 108, 110, 19, 118, 97, 155, 101, 78, 20, + 73, 85, 209, 221, 216, 70, 18, 182, 169, 42, 50, 147, 170, 162, 187, 217, 144, 130, 101, 22, 207, 254, 225, 119, 120, 238, 249, 151, 89, 173, 2, 41, + 49, 224, 134, 72, 145, 17, 68, 4, 138, 6, 195, 200, 32, 199, 0, 137, 170, 98, 181, 90, 33, 9, 219, 108, 68, 136, 245, 122, 193, 109, 170, 38, + 110, 35, 241, 142, 49, 6, 179, 38, 27, 221, 133, 109, 192, 72, 194, 54, 99, 12, 54, 50, 147, 238, 230, 61, 17, 193, 123, 36, 97, 155, 238, 102, + 140, 129, 109, 36, 33, 5, 182, 217, 144, 226, 150, 221, 223, 182, 205, 165, 75, 151, 120, 63, 131, 15, 48, 231, 194, 156, 245, 250, 24, 227, 249, 49, + 242, 193, 57, 11, 219, 8, 17, 10, 222, 147, 25, 204, 217, 72, 252, 49, 41, 80, 192, 24, 131, 101, 54, 146, 136, 8, 54, 108, 179, 209, 221, 68, + 4, 146, 88, 150, 197, 85, 245, 150, 237, 206, 204, 123, 51, 51, 186, 77, 21, 183, 53, 118, 147, 153, 96, 176, 141, 109, 236, 38, 35, 105, 55, 234, + 194, 134, 213, 24, 72, 162, 187, 193, 70, 219, 91, 128, 145, 192, 128, 20, 156, 44, 199, 8, 144, 68, 119, 131, 65, 10, 64, 216, 32, 129, 36, 108, + 19, 17, 108, 216, 70, 18, 182, 217, 144, 132, 109, 170, 138, 204, 68, 18, 146, 216, 136, 72, 192, 216, 77, 166, 0, 211, 61, 223, 236, 230, 5, 219, + 124, 144, 224, 3, 44, 179, 249, 115, 159, 254, 228, 141, 170, 249, 7, 85, 133, 221, 108, 204, 42, 102, 53, 57, 6, 82, 16, 145, 216, 166, 219, 108, + 216, 166, 186, 233, 110, 20, 129, 36, 108, 99, 27, 219, 116, 55, 203, 178, 176, 81, 85, 172, 215, 107, 159, 156, 156, 252, 175, 221, 253, 87, 151, 101, + 249, 217, 101, 89, 254, 251, 170, 90, 115, 219, 156, 69, 85, 209, 109, 54, 50, 131, 119, 216, 132, 18, 73, 108, 84, 53, 96, 12, 204, 101, 193, 54, + 17, 129, 36, 108, 35, 5, 237, 198, 110, 34, 130, 234, 102, 163, 186, 152, 85, 44, 75, 209, 13, 17, 201, 156, 147, 245, 122, 189, 72, 42, 254, 72, + 85, 97, 155, 13, 219, 116, 55, 182, 249, 127, 179, 161, 219, 216, 16, 17, 68, 4, 153, 201, 109, 79, 207, 89, 23, 108, 243, 65, 146, 15, 112, 225, + 194, 155, 156, 58, 117, 138, 110, 223, 3, 250, 55, 193, 17, 18, 27, 85, 141, 13, 221, 133, 128, 57, 11, 219, 116, 55, 118, 35, 9, 27, 108, 3, + 98, 195, 54, 203, 178, 176, 145, 153, 100, 38, 221, 205, 241, 241, 241, 83, 221, 253, 183, 186, 251, 57, 73, 151, 186, 251, 183, 129, 251, 199, 24, 127, + 62, 51, 177, 141, 13, 99, 36, 96, 36, 145, 99, 96, 192, 109, 16, 100, 36, 25, 129, 34, 64, 16, 17, 100, 36, 17, 65, 119, 99, 155, 245, 122, + 205, 198, 156, 147, 141, 170, 194, 109, 204, 134, 168, 42, 186, 155, 170, 98, 206, 249, 173, 204, 140, 219, 78, 69, 4, 146, 176, 205, 134, 36, 34, 130, + 13, 73, 108, 72, 66, 18, 27, 17, 66, 18, 99, 36, 153, 1, 8, 219, 127, 123, 140, 252, 202, 155, 111, 94, 228, 131, 4, 31, 98, 189, 94, 152, + 115, 126, 203, 246, 91, 99, 12, 218, 102, 206, 201, 134, 36, 164, 160, 109, 192, 108, 216, 141, 13, 221, 102, 195, 54, 115, 78, 108, 99, 155, 49, 6, + 146, 168, 42, 150, 101, 97, 89, 22, 108, 255, 221, 204, 60, 47, 9, 219, 68, 196, 205, 170, 250, 47, 215, 203, 250, 133, 170, 66, 18, 99, 36, 54, + 216, 220, 38, 36, 177, 97, 160, 102, 33, 137, 182, 169, 154, 116, 27, 12, 109, 51, 231, 100, 206, 73, 85, 147, 145, 116, 55, 17, 65, 102, 82, 213, + 28, 31, 31, 83, 213, 216, 166, 187, 169, 42, 186, 251, 0, 248, 98, 132, 150, 204, 68, 18, 153, 137, 36, 36, 33, 9, 219, 72, 34, 34, 200, 76, + 34, 130, 204, 100, 181, 74, 50, 69, 166, 200, 12, 64, 68, 196, 5, 219, 191, 93, 85, 124, 152, 224, 67, 216, 80, 213, 175, 116, 247, 75, 199, 71, + 199, 204, 57, 201, 28, 72, 66, 2, 219, 204, 57, 233, 54, 221, 77, 183, 233, 110, 186, 139, 170, 162, 187, 137, 16, 115, 78, 230, 156, 72, 194, 54, + 146, 216, 168, 170, 235, 192, 151, 185, 205, 54, 27, 22, 216, 126, 177, 170, 254, 143, 238, 102, 67, 18, 221, 13, 4, 82, 178, 94, 79, 92, 32, 5, + 17, 194, 54, 146, 48, 48, 198, 32, 50, 201, 76, 186, 155, 185, 20, 235, 245, 194, 122, 89, 232, 106, 220, 102, 206, 137, 109, 36, 192, 102, 206, 201, + 187, 68, 151, 191, 177, 202, 124, 54, 34, 238, 144, 196, 134, 109, 34, 130, 136, 32, 34, 144, 132, 109, 34, 130, 136, 32, 66, 216, 133, 4, 146, 200, + 12, 64, 100, 174, 144, 242, 203, 115, 214, 243, 32, 62, 76, 240, 33, 186, 155, 175, 63, 245, 244, 77, 219, 79, 101, 38, 182, 177, 77, 205, 133, 101, + 89, 176, 141, 36, 54, 236, 70, 18, 221, 141, 36, 54, 34, 196, 156, 133, 36, 36, 209, 221, 72, 66, 18, 182, 185, 237, 130, 237, 215, 248, 30, 174, + 102, 140, 97, 204, 175, 74, 58, 144, 196, 134, 36, 186, 155, 182, 17, 2, 9, 187, 81, 4, 237, 38, 51, 201, 76, 186, 155, 174, 162, 187, 168, 106, + 34, 19, 108, 186, 139, 182, 169, 46, 108, 112, 55, 182, 105, 55, 138, 96, 140, 193, 109, 221, 230, 239, 175, 86, 91, 91, 224, 59, 248, 35, 146, 120, + 143, 36, 34, 130, 204, 228, 93, 198, 54, 17, 137, 20, 72, 34, 34, 1, 35, 105, 13, 124, 97, 127, 255, 212, 73, 55, 31, 42, 248, 16, 221, 205, + 191, 244, 23, 255, 188, 171, 230, 87, 21, 90, 86, 171, 65, 8, 20, 129, 36, 170, 38, 27, 182, 145, 132, 109, 108, 99, 243, 142, 101, 153, 116, 55, + 27, 17, 129, 36, 36, 97, 27, 219, 84, 213, 53, 219, 87, 186, 155, 199, 31, 251, 24, 143, 63, 250, 24, 143, 63, 250, 152, 94, 125, 234, 89, 34, + 226, 5, 219, 175, 74, 66, 18, 146, 216, 112, 55, 10, 97, 55, 180, 145, 130, 136, 100, 206, 137, 219, 84, 21, 203, 156, 84, 53, 96, 186, 27, 219, + 140, 49, 176, 77, 119, 51, 231, 164, 109, 186, 77, 87, 51, 151, 133, 245, 122, 205, 178, 44, 47, 111, 111, 109, 125, 25, 241, 241, 188, 45, 66, 68, + 4, 153, 73, 102, 146, 153, 72, 66, 18, 239, 145, 32, 51, 136, 72, 108, 144, 68, 119, 3, 194, 237, 111, 206, 57, 127, 227, 228, 228, 132, 183, 222, + 186, 196, 135, 9, 62, 196, 55, 158, 254, 22, 115, 22, 115, 246, 83, 115, 214, 155, 110, 83, 221, 128, 144, 130, 136, 68, 18, 171, 213, 138, 213, 88, + 177, 33, 137, 170, 162, 187, 17, 16, 17, 116, 55, 221, 77, 119, 211, 221, 116, 55, 2, 36, 85, 68, 244, 103, 126, 236, 211, 82, 207, 196, 94, 185, + 123, 235, 167, 254, 218, 207, 238, 158, 57, 117, 199, 173, 174, 122, 163, 187, 145, 132, 109, 36, 17, 17, 72, 66, 1, 229, 166, 170, 232, 42, 150, 101, + 97, 35, 51, 201, 76, 192, 216, 102, 206, 201, 172, 162, 102, 97, 27, 219, 116, 155, 89, 141, 9, 20, 73, 102, 98, 27, 236, 95, 191, 99, 127, 239, + 138, 228, 79, 70, 4, 82, 176, 97, 155, 141, 170, 162, 187, 145, 68, 68, 32, 9, 16, 27, 146, 201, 12, 34, 2, 99, 66, 242, 106, 140, 207, 239, + 140, 173, 139, 221, 205, 15, 34, 248, 1, 116, 55, 115, 206, 87, 109, 255, 65, 85, 97, 155, 238, 194, 54, 153, 129, 109, 108, 83, 221, 100, 38, 99, + 12, 70, 38, 238, 34, 34, 136, 16, 27, 182, 217, 176, 141, 36, 102, 21, 6, 237, 239, 237, 143, 91, 7, 183, 182, 218, 222, 118, 247, 142, 237, 157, + 238, 222, 221, 222, 222, 201, 136, 184, 32, 137, 238, 102, 195, 54, 223, 43, 51, 8, 137, 141, 144, 216, 144, 32, 66, 116, 53, 85, 13, 54, 17, 193, + 172, 162, 187, 176, 65, 17, 100, 14, 108, 51, 231, 164, 187, 89, 150, 229, 237, 49, 198, 111, 218, 125, 151, 34, 158, 224, 29, 6, 76, 119, 19, 33, + 50, 19, 219, 188, 71, 18, 18, 68, 8, 73, 188, 103, 100, 146, 153, 207, 85, 213, 23, 14, 79, 142, 216, 223, 221, 231, 137, 199, 158, 224, 195, 4, + 63, 128, 111, 60, 253, 7, 236, 237, 237, 28, 86, 213, 111, 42, 2, 219, 116, 27, 48, 235, 245, 194, 156, 147, 238, 98, 206, 133, 8, 97, 155, 234, + 162, 219, 116, 55, 182, 145, 132, 36, 54, 36, 241, 14, 9, 68, 108, 175, 86, 59, 221, 181, 211, 221, 187, 213, 189, 219, 221, 123, 93, 189, 7, 236, + 72, 186, 213, 221, 116, 55, 221, 205, 70, 85, 81, 53, 89, 150, 53, 27, 145, 73, 132, 136, 8, 186, 138, 170, 166, 170, 49, 32, 137, 118, 51, 231, + 66, 119, 179, 94, 175, 169, 154, 184, 155, 238, 166, 187, 169, 42, 214, 235, 53, 182, 127, 127, 103, 103, 231, 181, 234, 122, 56, 20, 143, 100, 38, 153, + 34, 51, 136, 0, 27, 108, 147, 153, 100, 38, 153, 137, 36, 34, 2, 73, 72, 34, 34, 136, 8, 86, 171, 45, 219, 253, 63, 175, 74, 231, 239, 216, + 63, 21, 1, 162, 139, 39, 30, 125, 156, 15, 50, 248, 1, 29, 159, 172, 177, 249, 39, 171, 149, 46, 71, 232, 110, 48, 115, 153, 84, 21, 85, 69, + 132, 144, 196, 178, 76, 170, 154, 57, 27, 69, 96, 68, 119, 1, 98, 195, 54, 221, 205, 70, 132, 88, 229, 216, 157, 85, 103, 203, 190, 233, 246, 176, + 157, 224, 180, 73, 64, 183, 29, 75, 162, 187, 89, 173, 86, 100, 38, 153, 9, 152, 110, 211, 109, 186, 155, 28, 3, 100, 54, 50, 147, 57, 39, 153, + 65, 68, 224, 54, 203, 178, 96, 64, 145, 116, 23, 221, 147, 110, 19, 17, 116, 21, 174, 62, 92, 229, 248, 178, 32, 192, 159, 24, 35, 239, 228, 54, + 219, 128, 145, 2, 137, 219, 154, 136, 68, 130, 8, 209, 13, 18, 72, 16, 17, 68, 136, 140, 68, 248, 27, 224, 255, 101, 108, 15, 149, 59, 64, 213, + 10, 132, 249, 32, 193, 15, 168, 219, 204, 89, 207, 44, 203, 242, 251, 85, 69, 119, 211, 54, 146, 200, 76, 34, 130, 80, 80, 93, 40, 68, 102, 50, + 198, 138, 13, 41, 176, 141, 36, 36, 33, 9, 219, 140, 28, 8, 206, 84, 213, 71, 220, 222, 177, 123, 215, 238, 221, 238, 222, 107, 247, 94, 119, 239, + 131, 182, 184, 77, 18, 153, 137, 36, 36, 81, 213, 8, 8, 9, 108, 150, 101, 97, 206, 66, 18, 221, 133, 109, 164, 96, 89, 47, 84, 55, 146, 176, + 161, 187, 169, 106, 230, 44, 230, 156, 84, 21, 115, 22, 221, 253, 252, 214, 106, 245, 74, 87, 239, 71, 198, 147, 153, 177, 189, 90, 37, 138, 32, 51, + 200, 12, 34, 130, 213, 106, 69, 132, 176, 27, 219, 100, 6, 146, 200, 76, 36, 200, 72, 34, 226, 176, 187, 255, 219, 17, 171, 215, 203, 29, 128, 16, + 18, 230, 195, 4, 63, 160, 170, 102, 127, 119, 235, 86, 119, 253, 67, 80, 71, 4, 171, 213, 138, 213, 24, 216, 166, 187, 105, 27, 41, 248, 94, 82, + 96, 27, 219, 108, 216, 198, 54, 239, 177, 57, 235, 246, 125, 118, 111, 87, 247, 110, 117, 239, 181, 189, 219, 221, 123, 213, 181, 111, 247, 25, 73, 68, + 4, 221, 77, 85, 81, 85, 68, 4, 57, 6, 198, 68, 136, 238, 162, 187, 1, 97, 131, 36, 106, 78, 102, 21, 33, 17, 145, 96, 179, 44, 11, 27, + 17, 129, 109, 54, 236, 94, 34, 226, 107, 72, 13, 156, 14, 197, 143, 75, 65, 230, 64, 130, 136, 96, 140, 65, 102, 32, 37, 17, 65, 102, 34, 137, + 8, 145, 153, 68, 36, 82, 16, 17, 216, 254, 130, 237, 47, 74, 4, 32, 254, 152, 0, 241, 65, 130, 31, 208, 179, 207, 254, 33, 199, 39, 107, 230, + 236, 95, 5, 206, 71, 4, 221, 77, 219, 100, 38, 54, 116, 55, 35, 19, 119, 35, 65, 132, 176, 139, 136, 32, 34, 168, 42, 108, 19, 17, 68, 4, + 182, 81, 232, 84, 211, 31, 45, 123, 167, 187, 119, 186, 189, 227, 238, 93, 119, 239, 85, 213, 190, 225, 78, 254, 72, 119, 35, 9, 73, 216, 166, 187, + 9, 5, 17, 193, 214, 214, 54, 91, 91, 91, 68, 136, 174, 98, 46, 11, 85, 69, 102, 98, 160, 187, 104, 27, 27, 170, 76, 85, 97, 155, 170, 194, + 246, 43, 91, 91, 91, 47, 218, 30, 202, 184, 127, 107, 103, 247, 209, 49, 182, 168, 134, 49, 182, 128, 4, 68, 68, 18, 33, 34, 146, 136, 224, 93, + 98, 53, 6, 35, 147, 145, 137, 224, 235, 180, 255, 235, 85, 172, 14, 176, 184, 205, 128, 217, 144, 248, 48, 193, 15, 161, 38, 220, 188, 113, 244, 98, + 85, 255, 74, 119, 51, 231, 68, 130, 238, 6, 76, 102, 0, 70, 226, 29, 221, 69, 102, 242, 30, 73, 68, 4, 27, 17, 65, 102, 18, 17, 163, 237, + 143, 119, 247, 142, 237, 29, 187, 119, 186, 122, 183, 187, 119, 186, 123, 223, 246, 221, 220, 38, 137, 136, 192, 54, 182, 145, 32, 4, 146, 168, 42, 236, + 6, 76, 85, 35, 9, 99, 12, 116, 55, 203, 178, 80, 85, 132, 2, 27, 36, 97, 131, 36, 230, 156, 5, 122, 42, 34, 142, 5, 219, 33, 61, 250, + 137, 79, 124, 226, 236, 125, 247, 63, 192, 131, 15, 62, 196, 24, 43, 238, 191, 255, 126, 246, 246, 246, 57, 125, 250, 12, 99, 172, 200, 76, 36, 17, + 17, 100, 38, 182, 1, 3, 62, 95, 213, 255, 77, 106, 188, 37, 148, 2, 27, 12, 24, 227, 173, 154, 216, 205, 7, 9, 126, 8, 221, 197, 233, 51, + 123, 93, 85, 191, 4, 92, 138, 8, 36, 129, 141, 219, 72, 194, 230, 29, 153, 9, 136, 238, 166, 187, 137, 8, 50, 147, 238, 102, 195, 54, 27, 153, + 73, 102, 126, 188, 230, 220, 119, 123, 203, 221, 219, 118, 111, 219, 222, 110, 247, 105, 73, 119, 74, 98, 67, 18, 153, 137, 36, 36, 33, 5, 221, 69, + 85, 99, 67, 68, 16, 17, 40, 2, 33, 186, 139, 154, 147, 170, 194, 134, 101, 153, 72, 162, 187, 177, 77, 85, 97, 251, 149, 213, 106, 245, 135, 64, + 70, 228, 174, 164, 211, 23, 46, 92, 200, 245, 250, 132, 157, 157, 29, 246, 246, 246, 184, 247, 222, 123, 57, 125, 250, 52, 247, 222, 123, 47, 71, 71, + 71, 204, 89, 68, 4, 171, 213, 138, 13, 73, 220, 246, 70, 205, 250, 69, 183, 223, 104, 247, 221, 192, 54, 82, 27, 186, 81, 163, 240, 58, 146, 115, + 175, 158, 231, 131, 36, 63, 132, 183, 47, 95, 230, 238, 187, 239, 98, 89, 47, 23, 115, 228, 227, 17, 241, 47, 118, 155, 28, 3, 69, 128, 33, 199, + 96, 86, 209, 93, 8, 48, 70, 10, 34, 130, 170, 34, 51, 169, 42, 222, 35, 137, 238, 118, 72, 191, 43, 81, 109, 111, 217, 94, 25, 70, 117, 223, + 135, 248, 87, 51, 115, 63, 51, 137, 8, 34, 2, 219, 100, 36, 153, 66, 18, 146, 144, 4, 134, 145, 9, 18, 216, 116, 155, 165, 38, 27, 85, 69, + 119, 19, 145, 116, 55, 238, 166, 103, 45, 192, 151, 86, 171, 213, 75, 66, 139, 4, 15, 62, 248, 208, 195, 183, 110, 222, 252, 204, 193, 193, 173, 184, + 118, 245, 42, 115, 78, 46, 95, 190, 204, 209, 209, 17, 87, 174, 92, 225, 228, 228, 4, 73, 140, 28, 8, 17, 138, 217, 246, 183, 215, 235, 229, 239, + 183, 121, 46, 20, 7, 138, 184, 21, 210, 77, 164, 99, 164, 6, 219, 152, 115, 175, 190, 194, 135, 73, 126, 72, 111, 189, 125, 153, 251, 30, 184, 175, + 221, 253, 122, 100, 254, 213, 64, 103, 109, 35, 160, 221, 84, 53, 203, 156, 132, 4, 152, 110, 131, 2, 219, 84, 21, 17, 129, 109, 186, 155, 204, 68, + 18, 85, 165, 219, 126, 39, 34, 14, 128, 149, 97, 24, 71, 187, 31, 31, 99, 252, 149, 213, 106, 53, 248, 35, 146, 144, 68, 102, 48, 198, 32, 51, + 145, 68, 68, 144, 17, 84, 55, 118, 83, 213, 72, 208, 109, 140, 233, 110, 218, 208, 109, 170, 138, 185, 44, 244, 236, 231, 182, 183, 183, 127, 45, 20, + 7, 130, 67, 164, 163, 204, 188, 188, 179, 189, 115, 243, 240, 224, 224, 12, 104, 107, 189, 94, 198, 178, 172, 181, 172, 23, 186, 155, 237, 237, 109, 86, + 171, 213, 146, 138, 91, 192, 185, 154, 243, 55, 150, 245, 252, 146, 164, 239, 100, 230, 91, 25, 113, 49, 35, 222, 82, 196, 117, 41, 22, 103, 88, 136, + 147, 48, 55, 175, 93, 231, 195, 12, 126, 4, 181, 76, 94, 120, 245, 252, 211, 79, 62, 241, 196, 223, 150, 244, 159, 27, 143, 57, 39, 109, 211, 110, + 50, 147, 141, 42, 131, 68, 40, 176, 77, 102, 82, 85, 100, 38, 221, 141, 109, 50, 19, 73, 219, 221, 125, 150, 228, 117, 64, 108, 152, 141, 135, 35, + 98, 123, 206, 73, 102, 18, 17, 100, 38, 146, 0, 209, 54, 33, 80, 4, 182, 81, 8, 170, 153, 101, 36, 81, 221, 44, 115, 98, 55, 221, 141, 20, + 72, 98, 163, 171, 15, 50, 243, 183, 71, 142, 171, 224, 35, 224, 8, 116, 120, 237, 234, 181, 183, 35, 116, 126, 172, 86, 95, 202, 200, 143, 2, 119, + 67, 110, 129, 19, 36, 33, 187, 250, 96, 218, 111, 185, 251, 34, 112, 101, 172, 198, 141, 80, 92, 85, 232, 74, 70, 92, 27, 210, 65, 75, 19, 133, + 163, 154, 151, 206, 159, 227, 7, 53, 248, 17, 92, 60, 127, 157, 79, 61, 246, 168, 151, 101, 249, 31, 86, 57, 254, 66, 142, 252, 119, 157, 1, 221, + 156, 172, 139, 8, 209, 221, 128, 200, 8, 20, 193, 178, 76, 108, 19, 17, 116, 55, 146, 136, 8, 186, 27, 73, 43, 236, 125, 65, 27, 10, 16, 144, + 146, 30, 1, 97, 55, 221, 77, 102, 82, 53, 137, 8, 198, 24, 96, 19, 49, 232, 46, 50, 18, 73, 68, 36, 166, 153, 115, 97, 89, 22, 54, 164, + 100, 195, 134, 101, 89, 179, 44, 11, 22, 95, 219, 217, 217, 121, 86, 161, 67, 208, 33, 112, 8, 28, 73, 58, 1, 234, 182, 55, 187, 251, 91, 66, + 72, 10, 133, 36, 48, 182, 5, 51, 34, 22, 101, 158, 32, 29, 11, 142, 20, 113, 28, 210, 90, 168, 44, 250, 47, 124, 234, 113, 254, 233, 115, 47, + 115, 238, 252, 43, 252, 48, 6, 63, 130, 123, 238, 63, 69, 157, 52, 63, 243, 115, 159, 188, 242, 91, 95, 120, 225, 63, 149, 185, 127, 53, 198, 95, + 70, 77, 196, 130, 0, 41, 16, 5, 18, 115, 22, 27, 146, 168, 42, 108, 19, 17, 140, 49, 144, 68, 85, 33, 41, 35, 2, 119, 79, 192, 183, 157, + 150, 244, 88, 102, 0, 38, 51, 129, 166, 187, 145, 192, 110, 148, 3, 48, 93, 197, 136, 100, 86, 209, 109, 186, 155, 101, 153, 44, 203, 66, 230, 138, + 136, 64, 50, 39, 39, 199, 44, 203, 66, 85, 189, 188, 183, 187, 247, 143, 34, 227, 26, 112, 44, 233, 16, 56, 4, 142, 129, 69, 82, 73, 154, 192, + 20, 154, 10, 77, 161, 10, 81, 146, 166, 164, 10, 152, 72, 37, 169, 128, 146, 84, 141, 220, 96, 117, 243, 181, 239, 92, 224, 149, 243, 175, 240, 195, + 74, 126, 4, 119, 157, 189, 19, 4, 231, 158, 125, 59, 14, 15, 214, 151, 35, 245, 117, 227, 79, 43, 244, 104, 68, 48, 171, 168, 154, 72, 65, 87, + 113, 199, 233, 51, 156, 57, 115, 134, 101, 89, 120, 228, 145, 71, 56, 58, 58, 226, 201, 39, 159, 228, 214, 173, 91, 252, 228, 79, 254, 36, 175, 191, + 254, 250, 113, 70, 252, 222, 24, 227, 138, 224, 4, 180, 238, 238, 79, 41, 227, 95, 143, 136, 149, 36, 50, 69, 102, 32, 137, 136, 32, 51, 16, 2, + 243, 142, 145, 131, 101, 153, 156, 172, 79, 0, 1, 166, 219, 204, 217, 204, 57, 145, 68, 119, 179, 44, 203, 173, 213, 106, 245, 75, 123, 187, 123, 207, + 6, 28, 41, 226, 86, 72, 7, 146, 14, 37, 29, 41, 98, 29, 138, 147, 144, 214, 82, 172, 35, 99, 137, 136, 69, 210, 58, 165, 69, 210, 18, 210, + 130, 52, 37, 77, 80, 129, 74, 33, 55, 197, 208, 224, 165, 243, 231, 184, 118, 245, 109, 126, 20, 131, 31, 153, 48, 246, 246, 206, 86, 156, 28, 215, + 51, 217, 245, 55, 35, 243, 63, 137, 204, 159, 3, 157, 18, 1, 134, 136, 100, 119, 119, 135, 199, 31, 127, 130, 91, 183, 110, 241, 227, 63, 254, 227, + 92, 186, 116, 137, 123, 239, 189, 151, 87, 207, 191, 202, 197, 55, 47, 50, 114, 220, 112, 247, 137, 164, 221, 200, 60, 176, 122, 161, 253, 185, 204, 177, + 27, 25, 224, 102, 140, 164, 170, 217, 144, 132, 13, 166, 129, 96, 140, 21, 179, 138, 200, 96, 197, 138, 170, 70, 10, 164, 192, 158, 116, 55, 182, 153, + 203, 82, 17, 241, 197, 83, 251, 251, 191, 19, 210, 145, 164, 35, 208, 145, 196, 17, 112, 2, 44, 66, 133, 84, 18, 133, 84, 192, 148, 212, 130, 146, + 84, 130, 66, 42, 65, 11, 25, 201, 220, 246, 157, 87, 206, 241, 39, 33, 249, 17, 156, 61, 123, 39, 33, 129, 4, 88, 10, 228, 230, 234, 156, 253, + 27, 93, 253, 124, 40, 238, 207, 200, 7, 164, 72, 110, 59, 58, 58, 164, 170, 185, 124, 249, 45, 230, 156, 92, 187, 118, 157, 27, 55, 110, 112, 116, + 120, 200, 229, 203, 151, 233, 234, 175, 142, 49, 158, 202, 136, 107, 146, 174, 172, 151, 245, 67, 18, 127, 51, 51, 239, 16, 38, 115, 176, 97, 131, 36, + 198, 72, 4, 140, 145, 116, 55, 182, 89, 150, 133, 89, 147, 238, 166, 219, 204, 89, 84, 21, 27, 221, 205, 122, 189, 118, 119, 255, 218, 233, 253, 83, + 191, 176, 26, 227, 154, 20, 7, 146, 110, 69, 198, 129, 164, 195, 144, 142, 36, 173, 35, 98, 157, 210, 146, 17, 235, 144, 214, 138, 152, 33, 45, 138, + 88, 80, 76, 164, 137, 212, 142, 52, 136, 151, 206, 159, 227, 202, 245, 107, 252, 73, 17, 63, 162, 187, 31, 122, 132, 51, 41, 12, 132, 20, 216, 1, + 72, 110, 150, 246, 67, 109, 255, 27, 134, 127, 39, 34, 126, 114, 246, 114, 186, 27, 173, 215, 39, 236, 238, 238, 114, 120, 116, 140, 128, 174, 238, 154, + 243, 247, 182, 183, 183, 127, 97, 123, 107, 251, 21, 227, 43, 93, 117, 180, 244, 252, 143, 87, 171, 213, 127, 180, 94, 175, 137, 8, 50, 19, 73, 128, + 217, 216, 218, 218, 194, 110, 50, 130, 110, 35, 137, 234, 102, 89, 22, 192, 84, 65, 119, 179, 81, 85, 156, 156, 156, 208, 221, 191, 115, 199, 254, 169, + 255, 106, 119, 119, 247, 2, 102, 65, 58, 150, 56, 1, 142, 5, 107, 73, 19, 104, 65, 133, 212, 64, 73, 106, 67, 11, 44, 100, 11, 115, 219, 75, + 231, 95, 225, 79, 139, 248, 255, 224, 241, 199, 158, 32, 49, 141, 144, 91, 216, 97, 8, 1, 182, 115, 153, 243, 158, 118, 127, 118, 186, 127, 234, 228, + 100, 253, 185, 49, 242, 225, 101, 153, 187, 64, 217, 190, 132, 249, 202, 222, 238, 238, 63, 94, 141, 241, 166, 205, 9, 176, 92, 189, 118, 245, 161, 159, + 248, 236, 79, 252, 143, 171, 173, 173, 79, 188, 250, 234, 121, 50, 147, 155, 55, 111, 145, 25, 116, 23, 146, 216, 222, 222, 38, 34, 16, 198, 134, 182, + 89, 150, 133, 170, 162, 170, 17, 162, 109, 132, 56, 62, 62, 242, 178, 204, 47, 239, 237, 237, 253, 23, 167, 246, 247, 95, 5, 166, 96, 45, 233, 4, + 233, 4, 88, 11, 166, 160, 5, 109, 169, 3, 89, 162, 185, 173, 52, 124, 237, 244, 3, 156, 190, 117, 137, 243, 47, 63, 207, 159, 54, 241, 39, 224, + 137, 71, 31, 167, 99, 69, 244, 130, 109, 9, 75, 16, 186, 109, 100, 82, 85, 99, 233, 222, 61, 62, 57, 57, 211, 213, 123, 17, 234, 49, 198, 173, + 213, 106, 117, 212, 221, 216, 14, 131, 70, 68, 95, 186, 114, 249, 167, 158, 120, 226, 137, 95, 60, 60, 60, 188, 227, 51, 159, 249, 12, 111, 188, 241, + 6, 27, 103, 207, 158, 229, 249, 231, 159, 231, 129, 7, 30, 224, 245, 215, 95, 35, 51, 176, 77, 85, 97, 155, 57, 155, 170, 162, 230, 36, 16, 182, + 89, 230, 156, 213, 245, 155, 251, 123, 251, 255, 221, 254, 222, 222, 183, 109, 31, 2, 235, 148, 22, 96, 45, 105, 1, 38, 96, 192, 128, 21, 233, 188, + 126, 139, 186, 243, 14, 190, 243, 242, 75, 252, 179, 54, 248, 19, 240, 242, 249, 115, 108, 124, 252, 177, 199, 177, 100, 57, 12, 182, 49, 235, 57, 5, + 56, 165, 121, 199, 222, 222, 77, 221, 102, 59, 170, 42, 220, 173, 128, 64, 82, 131, 70, 142, 14, 233, 198, 133, 11, 23, 214, 146, 184, 120, 241, 34, + 175, 190, 250, 42, 79, 62, 249, 36, 111, 189, 245, 22, 103, 206, 156, 225, 190, 251, 238, 227, 141, 55, 94, 163, 170, 144, 68, 119, 211, 93, 128, 136, + 8, 10, 49, 171, 152, 115, 94, 147, 244, 143, 78, 157, 186, 227, 151, 183, 183, 182, 222, 182, 221, 33, 221, 2, 142, 145, 166, 208, 148, 100, 41, 124, + 112, 120, 145, 83, 251, 15, 240, 194, 185, 23, 249, 99, 87, 47, 241, 255, 7, 241, 167, 232, 241, 71, 159, 224, 93, 6, 91, 41, 176, 45, 144, 192, + 226, 93, 178, 45, 64, 25, 193, 213, 27, 55, 118, 151, 154, 255, 153, 34, 254, 214, 169, 253, 253, 237, 131, 195, 67, 30, 120, 224, 1, 174, 95, 191, + 206, 238, 238, 46, 25, 201, 193, 225, 45, 186, 139, 238, 166, 109, 220, 13, 4, 85, 197, 92, 150, 195, 174, 126, 118, 140, 241, 27, 219, 219, 219, 223, + 202, 204, 75, 145, 121, 41, 35, 46, 14, 233, 42, 104, 177, 228, 163, 213, 142, 199, 92, 243, 221, 87, 94, 226, 207, 18, 241, 207, 208, 39, 31, 255, + 56, 118, 19, 26, 204, 94, 99, 54, 36, 113, 155, 13, 152, 207, 253, 216, 147, 254, 39, 95, 255, 189, 59, 142, 79, 78, 254, 58, 240, 243, 57, 198, + 231, 20, 186, 43, 51, 119, 186, 91, 171, 28, 108, 111, 111, 179, 94, 214, 172, 151, 5, 139, 118, 247, 81, 47, 117, 177, 219, 207, 103, 196, 211, 171, + 213, 234, 133, 28, 249, 86, 68, 92, 141, 136, 203, 17, 113, 57, 34, 174, 167, 98, 145, 18, 187, 121, 233, 252, 203, 252, 89, 36, 254, 140, 250, 220, + 103, 63, 199, 119, 95, 251, 238, 30, 240, 216, 241, 241, 241, 39, 247, 246, 246, 158, 152, 203, 124, 48, 35, 246, 70, 142, 81, 93, 89, 221, 199, 118, + 95, 150, 116, 33, 35, 223, 204, 204, 43, 17, 113, 32, 116, 168, 208, 77, 73, 183, 34, 226, 48, 164, 117, 219, 30, 17, 188, 116, 254, 21, 254, 44, + 19, 255, 28, 240, 23, 223, 64, 127, 237, 65, 62, 251, 233, 207, 228, 181, 27, 215, 87, 115, 206, 40, 125, 211, 16, 0, 0, 0, 35, 73, 68, 65, + 84, 149, 164, 204, 8, 133, 132, 13, 22, 190, 173, 132, 22, 133, 166, 164, 186, 251, 158, 143, 248, 248, 248, 136, 103, 158, 125, 134, 127, 94, 252, 223, + 160, 16, 125, 12, 251, 15, 241, 139, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]) + + export {testPng, testJpg, tc_020buf, tc_020_1buf, tc_021buf, tc_021_1buf, tc_022buf} \ No newline at end of file