From e8de1aabc5ac22e5fcf0bae099aed3c74e8a2a1f Mon Sep 17 00:00:00 2001 From: xiaying Date: Fri, 21 Jul 2023 15:47:11 +0800 Subject: [PATCH 1/4] Fix bug for stagemask not fully set --- source/geometry/GeometryComputerUtils.cpp | 5 ++- test/expr/ModuleTest.cpp | 48 +++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/source/geometry/GeometryComputerUtils.cpp b/source/geometry/GeometryComputerUtils.cpp index 37d0aec23..b43fa2954 100644 --- a/source/geometry/GeometryComputerUtils.cpp +++ b/source/geometry/GeometryComputerUtils.cpp @@ -112,11 +112,9 @@ int GeometryComputerUtils::buildConstantTensors(std::vectorusage = Tensor::InsideDescribe::CONSTANT; - TensorUtils::getDescribe(t)->stageMask |= MNN::Tensor::InsideDescribe::StageInfo::GEOMETRY_STAGE; } for (auto t : info.inputs) { TensorUtils::getDescribe(t)->usage = Tensor::InsideDescribe::CONSTANT; - TensorUtils::getDescribe(t)->stageMask |= MNN::Tensor::InsideDescribe::StageInfo::GEOMETRY_STAGE; } info.type = Schedule::CONSTANT; hasConst = true; @@ -126,6 +124,9 @@ int GeometryComputerUtils::buildConstantTensors(std::vectorstageMask |= MNN::Tensor::InsideDescribe::StageInfo::GEOMETRY_STAGE; + } for (auto t : info.outputs) { TensorUtils::getDescribe(t)->usage = Tensor::InsideDescribe::CONSTANT; } diff --git a/test/expr/ModuleTest.cpp b/test/expr/ModuleTest.cpp index 5e3b84384..e695b9673 100644 --- a/test/expr/ModuleTest.cpp +++ b/test/expr/ModuleTest.cpp @@ -898,3 +898,51 @@ class MemeoryUsageTest : public MNNTestCase { } }; MNNTestSuiteRegister(MemeoryUsageTest, "expr/MemeoryUsageTest"); + +// This test shoule use gpu to test +class ConstMemoryReplaceTest : public MNNTestCase { +public: + virtual bool run(int precision) { + auto x = _Input({1, 4, 1, 1}, NC4HW4); + auto y = _Const(0.3f, {1, 1, 4, 1}, NC4HW4); + auto z = x * y; + auto w0 = _Round(_ReduceSum(_Convert(y, NHWC))); + z = z + _Unsqueeze(w0, {0}); + auto w1 = _Scalar(1); + auto shape = _Stack({w1, _Cast(w0), w1, w1}, -1); + auto ones = _Fill(shape, _Scalar(0.3f)); + auto res = z + ones; + x->writeMap(); + auto ptr = res->readMap(); + if (nullptr == ptr) { + FUNC_PRINT(1); + return false; + } + flatbuffers::FlatBufferBuilder builderOutput(1024); + { + std::shared_ptr net(new NetT); + Variable::save({res}, net.get()); + y = nullptr; + auto len = MNN::Net::Pack(builderOutput, net.get()); + builderOutput.Finish(len); + } + int sizeOutput = builderOutput.GetSize(); + auto bufferOutput = builderOutput.GetBufferPointer(); + std::shared_ptr net(Interpreter::createFromBuffer((void*)bufferOutput, sizeOutput), Interpreter::destroy); + ScheduleConfig config; + config.numThread = 4; + config.type = ExecutorScope::Current()->getAttr()->firstType.first; + auto s1 = net->createSession(config); + int resizeCode; + net->getSessionInfo(s1, Interpreter::RESIZE_STATUS, &resizeCode); + if (resizeCode != 0) { + FUNC_PRINT(1); + return false; + } + net->runSession(s1); + net->resizeTensor(net->getSessionInput(s1, nullptr), {1, 1, 1, 1}); + net->resizeSession(s1); + return resizeCode == 0; + } +}; +MNNTestSuiteRegister(ConstMemoryReplaceTest, "expr/ConstMemoryReplaceTest"); From 78c664ede9fc8c8fb423d6042ca5c39263bfca04 Mon Sep 17 00:00:00 2001 From: xiaying Date: Fri, 21 Jul 2023 15:52:55 +0800 Subject: [PATCH 2/4] Fix bug for arm82 run fastrcnn crash --- source/backend/cpu/CPUROIAlign.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/backend/cpu/CPUROIAlign.cpp b/source/backend/cpu/CPUROIAlign.cpp index 82909c24a..d514afc52 100644 --- a/source/backend/cpu/CPUROIAlign.cpp +++ b/source/backend/cpu/CPUROIAlign.cpp @@ -44,6 +44,7 @@ ErrorCode CPUROIAlign::onResize(const std::vector& inputs, const std::v auto& roi = inputs[1]->buffer(); mROI.buffer().dimensions = roi.dimensions; + mROI.buffer().type = halide_type_of();// Use int32 instead of float to ensure the backend alloc 4 byte unit memcpy(mROI.buffer().dim, roi.dim, sizeof(halide_dimension_t) * roi.dimensions); TensorUtils::getDescribe(&mROI)->dimensionFormat = MNN_DATA_FORMAT_NCHW; TensorUtils::setLinearLayout(&mROI); From a3c0e405e8429d012c68c09dcf627b15c617f05e Mon Sep 17 00:00:00 2001 From: xiaying Date: Fri, 21 Jul 2023 16:59:47 +0800 Subject: [PATCH 3/4] Fix bug for softmax with too large value nan --- .../vulkan/buffer/compiler/AllShader.cpp | 317 +++++++++--------- .../execution/glsl/softmaxHeight_NHWC.comp | 4 +- .../vulkan/image/compiler/AllShader.cpp | 317 +++++++++--------- .../execution/glsl/softmaxHeight_NHWC.comp | 4 +- 4 files changed, 320 insertions(+), 322 deletions(-) diff --git a/source/backend/vulkan/buffer/compiler/AllShader.cpp b/source/backend/vulkan/buffer/compiler/AllShader.cpp index a38df9108..81bd8a065 100644 --- a/source/backend/vulkan/buffer/compiler/AllShader.cpp +++ b/source/backend/vulkan/buffer/compiler/AllShader.cpp @@ -15284,7 +15284,7 @@ unsigned int glsl_unary_GELU_comp_len = 1752; const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15304,16 +15304,16 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x37, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15324,22 +15324,22 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x95, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -15362,148 +15362,147 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xc4, 0x1d, 0x00, 0x03, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x47, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x47, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x67, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x67, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x67, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x69, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_softmaxHeight_NHWC_comp_len = 2628; +unsigned int glsl_softmaxHeight_NHWC_comp_len = 2612; const unsigned char glsl_resizeNearest_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, diff --git a/source/backend/vulkan/buffer/execution/glsl/softmaxHeight_NHWC.comp b/source/backend/vulkan/buffer/execution/glsl/softmaxHeight_NHWC.comp index 5fcf815b2..339ffe4ea 100644 --- a/source/backend/vulkan/buffer/execution/glsl/softmaxHeight_NHWC.comp +++ b/source/backend/vulkan/buffer/execution/glsl/softmaxHeight_NHWC.comp @@ -26,8 +26,8 @@ void main() int W = uConst.w; int H = uConst.h; int C = uConst.c; - float maxValue = -1000.0; - for(int i = 0; i < H; ++i) + float maxValue = uInput.data[pos.x * H * W + pos.y]; + for(int i = 1; i < H; ++i) { int index = i * W + pos.x * H * W + pos.y; maxValue = max(maxValue, uInput.data[index]); diff --git a/source/backend/vulkan/image/compiler/AllShader.cpp b/source/backend/vulkan/image/compiler/AllShader.cpp index a505a7e8f..0258033bf 100644 --- a/source/backend/vulkan/image/compiler/AllShader.cpp +++ b/source/backend/vulkan/image/compiler/AllShader.cpp @@ -12202,7 +12202,7 @@ unsigned int glsl_imageTonchw_comp_len = 3024; const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12222,16 +12222,16 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x37, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12242,22 +12242,22 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x95, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -12280,148 +12280,147 @@ const unsigned char glsl_softmaxHeight_NHWC_comp[] = { 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xc4, 0x1d, 0x00, 0x03, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x47, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x47, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x67, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x67, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x33, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x67, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x69, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x88, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_softmaxHeight_NHWC_comp_len = 2628; +unsigned int glsl_softmaxHeight_NHWC_comp_len = 2612; const unsigned char glsl_resizeNearest_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, diff --git a/source/backend/vulkan/image/execution/glsl/softmaxHeight_NHWC.comp b/source/backend/vulkan/image/execution/glsl/softmaxHeight_NHWC.comp index 5fcf815b2..339ffe4ea 100644 --- a/source/backend/vulkan/image/execution/glsl/softmaxHeight_NHWC.comp +++ b/source/backend/vulkan/image/execution/glsl/softmaxHeight_NHWC.comp @@ -26,8 +26,8 @@ void main() int W = uConst.w; int H = uConst.h; int C = uConst.c; - float maxValue = -1000.0; - for(int i = 0; i < H; ++i) + float maxValue = uInput.data[pos.x * H * W + pos.y]; + for(int i = 1; i < H; ++i) { int index = i * W + pos.x * H * W + pos.y; maxValue = max(maxValue, uInput.data[index]); From 56f420fa75f68bba3661f769bddf9cf8ded1f337 Mon Sep 17 00:00:00 2001 From: xiaying Date: Fri, 21 Jul 2023 17:26:47 +0800 Subject: [PATCH 4/4] Fix bug for OpType_ScatterElements don't treat N=0 --- source/geometry/GeometryScatter.cpp | 6 ++++++ test/op/ScatterElementsTest.cpp | 31 +++++++++++++++++++++-------- test/op/ScatterNdTest.cpp | 20 +++++++++++++++++++ 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/source/geometry/GeometryScatter.cpp b/source/geometry/GeometryScatter.cpp index 3e1fb2fde..69c94eefe 100644 --- a/source/geometry/GeometryScatter.cpp +++ b/source/geometry/GeometryScatter.cpp @@ -225,6 +225,12 @@ class GeometryScatterElements : public GeometryComputer { if (axis < 0) { axis = D + axis; } + if (N == 0) { + auto outputDes = TensorUtils::getDescribe(output); + outputDes->regions = {TensorUtils::makeFullSlice(data)}; + outputDes->memoryType = Tensor::InsideDescribe::MEMORY_VIRTUAL; + return true; + } // flatten indices/update std::shared_ptr flattenIndice(Tensor::createDevice({N})); std::shared_ptr flattenUpdate(Tensor::createDevice({N}, updates->getType(), Tensor::TENSORFLOW)); diff --git a/test/op/ScatterElementsTest.cpp b/test/op/ScatterElementsTest.cpp index f1483ba1b..b2064a643 100644 --- a/test/op/ScatterElementsTest.cpp +++ b/test/op/ScatterElementsTest.cpp @@ -22,16 +22,31 @@ class ScatterElementsTest : public MNNTestCase { const int indicesData[] = {1, 0, 2, 0, 2, 1}; const float updatesData[] = {1.0, 1.1, 1.2, 2.0, 2.1, 2.2}; const float expectedData[] = {2.0, 1.1, 0.0, 1.0, 0.0, 2.2, 0.0, 2.1, 1.2}; + { + auto data = _Const(dataData, {3, 3}, NHWC, halide_type_of()); + auto indices = _Const(indicesData, {2, 3}, NHWC, halide_type_of()); + auto updates = _Const(updatesData, {2, 3}, NHWC, halide_type_of()); + auto output = _ScatterElements(data, indices, updates); - auto data = _Const(dataData, {3, 3}, NHWC, halide_type_of()); - auto indices = _Const(indicesData, {2, 3}, NHWC, halide_type_of()); - auto updates = _Const(updatesData, {2, 3}, NHWC, halide_type_of()); - auto output = _ScatterElements(data, indices, updates); + auto outputData = output->readMap(); + const int size = output->getInfo()->size; + if (!checkVector(outputData, expectedData, size, 0.001)) { + FUNC_PRINT(1); + return false; + } + } + { + auto data = _Const(dataData, {3, 3}, NHWC, halide_type_of()); + auto indices = _Const(nullptr, {0, 3}, NHWC, halide_type_of()); + auto updates = _Const(updatesData, {2, 3}, NHWC, halide_type_of()); + auto output = _ScatterElements(data, indices, updates); - auto outputData = output->readMap(); - const int size = output->getInfo()->size; - if (!checkVector(outputData, expectedData, size, 0.001)) { - return false; + auto outputData = output->readMap(); + const int size = output->getInfo()->size; + if (!checkVector(outputData, dataData, size, 0.001)) { + FUNC_PRINT(1); + return false; + } } } { diff --git a/test/op/ScatterNdTest.cpp b/test/op/ScatterNdTest.cpp index 0f817f36b..055ce85bc 100644 --- a/test/op/ScatterNdTest.cpp +++ b/test/op/ScatterNdTest.cpp @@ -17,6 +17,26 @@ class ScatterNdTest : public MNNTestCase { virtual ~ScatterNdTest() = default; virtual bool run(int precision) { + { + const int indicesData[] = {4, 3, 1, 7}; + const float updatesData[] = {9, 10, 11, 12}; + const int shapeData[] = {8}; + const float dataData[] = {1, 2, 3, 4, 5, 6, 7, 8}; + const float expectedResult[] = {1, 11, 3, 10, 9, 6, 7, 12}; + + auto indices = _Const(indicesData, {0, 1}, NHWC, halide_type_of()); + auto updates = _Const(nullptr, {0}, NHWC, halide_type_of()); + auto shape = _Const(shapeData, {1}, NHWC, halide_type_of()); + auto data = _Const(dataData, {8}, NHWC, halide_type_of()); + auto result = _ScatterNd(indices, updates, shape, data); + + auto resultData = result->readMap(); + const int size = result->getInfo()->size; + if (!checkVector(resultData, dataData, size, 0.001)) { + FUNC_PRINT(1); + return false; + } + } { const int indicesData[] = {4, 3, 1, 7}; const float updatesData[] = {9, 10, 11, 12};