pax_global_header00006660000000000000000000000064145227632340014522gustar00rootroot0000000000000052 comment=ebf2436469ccf82c08fab54b7446f699ad0eae01 InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/000077500000000000000000000000001452276323400246275ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.clang-format000066400000000000000000000121671452276323400272110ustar00rootroot00000000000000## This config file is only relevant for clang-format version 8.0.0 ## ## Examples of each format style can be found on the in the clang-format documentation ## See: https://clang.llvm.org/docs/ClangFormatStyleOptions.html for details of each option ## ## The clang-format binaries can be downloaded as part of the clang binary distributions ## from https://releases.llvm.org/download.html ## ## Use the script Utilities/Maintenance/clang-format.bash to faciliate ## maintaining a consistent code style. ## ## EXAMPLE apply code style enforcement before commit: # Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_8.0.0} --modified ## EXAMPLE apply code style enforcement after commit: # Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_8.0.0} --last --- # This configuration requires clang-format version 8.0.0 exactly. BasedOnStyle: Mozilla Language: Cpp AccessModifierOffset: -2 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: true AlignEscapedNewlines: Right AlignOperands: true AlignTrailingComments: true # clang 9.0 AllowAllArgumentsOnNextLine: true # clang 9.0 AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: Inline # clang 9.0 AllowShortLambdasOnASingleLine: All # clang 9.0 features AllowShortIfStatementsOnASingleLine: Never AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: All AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BinPackArguments: false BinPackParameters: false BreakBeforeBraces: Custom BraceWrapping: # clang 9.0 feature AfterCaseLabel: false AfterClass: true AfterControlStatement: true AfterEnum: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: true AfterStruct: true AfterUnion: true AfterExternBlock: true BeforeCatch: true BeforeElse: true ## This is the big change from historical ITK formatting! # Historically ITK used a style similar to https://en.wikipedia.org/wiki/Indentation_style#Whitesmiths_style # with indented braces, and not indented code. This style is very difficult to automatically # maintain with code beautification tools. Not indenting braces is more common among # formatting tools. IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: false SplitEmptyNamespace: false BreakBeforeBinaryOperators: None #clang 6.0 BreakBeforeInheritanceComma: true BreakInheritanceList: BeforeComma BreakBeforeTernaryOperators: true #clang 6.0 BreakConstructorInitializersBeforeComma: true BreakConstructorInitializers: BeforeComma BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true ## The following line allows larger lines in non-documentation code ColumnLimit: 120 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 2 ContinuationIndentWidth: 2 Cpp11BracedListStyle: false DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH IncludeBlocks: Preserve IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/' Priority: 2 - Regex: '^(<|"(gtest|gmock|isl|json)/)' Priority: 3 - Regex: '.*' Priority: 1 IncludeIsMainRegex: '(Test)?$' IndentCaseLabels: true IndentPPDirectives: AfterHash IndentWidth: 2 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: true MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 2 NamespaceIndentation: None ObjCBinPackProtocolList: Auto ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: false PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 ## The following line allows larger lines in non-documentation code PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Middle ReflowComments: true # We may want to sort the includes as a separate pass SortIncludes: false # We may want to revisit this later SortUsingDeclarations: false SpaceAfterCStyleCast: false # SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: false SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION TabWidth: 2 UseTab: Never ... InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.gitattributes000066400000000000000000000010101452276323400275120ustar00rootroot00000000000000# Custom attribute to mark sources as using our C++/C code style. [attr]our-c-style whitespace=tab-in-indent,no-lf-at-eof hooks.style=KWStyle,clangformat *.c our-c-style *.h our-c-style *.cxx our-c-style *.hxx our-c-style *.txx our-c-style *.txt whitespace=tab-in-indent,no-lf-at-eof *.cmake whitespace=tab-in-indent,no-lf-at-eof # ExternalData content links must have LF newlines *.md5 crlf=input *.sha512 crlf=input InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.github/000077500000000000000000000000001452276323400261675ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.github/workflows/000077500000000000000000000000001452276323400302245ustar00rootroot00000000000000build-test-package.yml000066400000000000000000000010451452276323400343350ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.github/workflowsname: Build, test, package on: [push,pull_request] jobs: cxx-build-workflow: uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@3f63de316255a285b0cac4c819d3d45649738999 python-build-workflow: uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@3f63de316255a285b0cac4c819d3d45649738999 with: manylinux-platforms: '["_2_28-x64","2014-x64"]' secrets: pypi_password: ${{ secrets.pypi_password }} clang-format-linter.yml000066400000000000000000000003641452276323400345400ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.github/workflowsname: clang-format linter on: [push,pull_request] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 with: fetch-depth: 1 - uses: InsightSoftwareConsortium/ITKClangFormatLinterAction@master InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/.gitignore000077500000000000000000000001071452276323400266200ustar00rootroot00000000000000build *.pyc *.aux *.bbl *.blg *.brf *.dvi *.log *.out *.pdf *.ps *.toc InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/CMakeLists.txt000066400000000000000000000003641452276323400273720ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.16.3) project(GenericLabelInterpolator) if(NOT ITK_SOURCE_DIR) find_package(ITK 4.9 REQUIRED) list(APPEND CMAKE_MODULE_PATH ${ITK_CMAKE_DIR}) include(ITKModuleExternal) else() itk_module_impl() endif() InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/CTestConfig.cmake000066400000000000000000000003501452276323400277770ustar00rootroot00000000000000set(CTEST_PROJECT_NAME "ITK") set(CTEST_NIGHTLY_START_TIME "1:00:00 UTC") set(CTEST_DROP_METHOD "https") set(CTEST_DROP_SITE "open.cdash.org") set(CTEST_DROP_LOCATION "/submit.php?project=Insight") set(CTEST_DROP_SITE_CDASH TRUE) InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/LICENSE000077500000000000000000000261401452276323400256420ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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 https://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. InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/README.rst000066400000000000000000000033471452276323400263250ustar00rootroot00000000000000ITKGenericLabelInterpolator =========================== .. image:: https://github.com/InsightSoftwareConsortium/ITKGenericLabelInterpolator/workflows/Build,%20test,%20package/badge.svg :alt: Build Status .. image:: https://img.shields.io/pypi/v/itk-genericlabelinterpolator.svg :target: https://pypi.python.org/pypi/itk-genericlabelinterpolator :alt: PyPI Version .. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg :target: https://github.com/InsightSoftwareConsortium/ITKGenericLabelInterpolator/blob/master/LICENSE :alt: License Overview -------- This is a module for the `Insight Toolkit (ITK) `_ that provides a generic interpolator for label images to interpolate each label with an ordinary image interpolator, and return the label with the highest value. This is the idea used by the `itk::LabelImageGaussianInterpolateImageFunction` interpolator. Unfortunately, this class is currently limited to Gaussian interpolation. Using generic programming, the proposed interpolator extends this idea to any image interpolator. Combined with linear interpolation, this results in similar or better accuracy and much improved computation speeds on a test image. For more information, see the `Insight Journal article `_:: Schaerer, J., Roche, F., Belaroussi, B. A generic interpolator for multi-label images The Insight Journal. January-December, 2014. https://hdl.handle.net/10380/3506 https://www.insight-journal.org/browse/publication/950 Installation ------------ Since ITK 4.10.0, this module is available in the ITK source tree as a Remote module. To enable it, set:: Module_GenericLabelInterpolator:BOOL=ON in ITK's CMake build configuration. InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/000077500000000000000000000000001452276323400264455ustar00rootroot00000000000000Generic label interpolation.odt000066400000000000000000002775061452276323400344030ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/documentPKzxE^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKzxE layout-cachecd`d("en@s00H00f`HK"X؁$"V)N[T0bE j`8DJ.5@,RP(cHqA "5Y Nd6C PhC \ Rb)>aPKLd?PKzxE content.xml=k6r+XrNHe\6Y|;s.WW[ IPȩ|ϿHX_<*ﮀh o׮@auhw[,f;{}?} ǢSYzn1/5hSQ{݊oHSi8)󩗴S>( [9V[G1a3mɼXmmdS1Q Vc T_$rrX&Cpx RF0|LЂLl$ }i`qyi]vDv)=dCDcS*1}0ڇ`X;f/=f:Xy GRuB` mjͷBŚx_"msL z;Z;6WsHG=|d+'% d/oPoY84~ʞ٩a%`A?MиϱvGPyr<` fǭu cuSA|'-Gj\.Sէ۱D?SG^1UHs.А@-`kRH #oS]. . hr}]㞃{ XLʫ7N2@#"%ëuDAed j,̹Q3O-]I'#3M^aDק`Wa.`Jکrd9#PO :'Y]xr£OZ_' "(86PYS&R]-u-7У9! ۷8s㵗CU1qm #'Uu11 %E$׎+VY"tƠx)VE]7O0(R1YOlqPmw{csti!s[S1yT-E5ۋQLޚ/x]2C`ďI@WI<'>RMr].2R8Vzb~ %]҄db!׹BDFo\@yÊFHyp mYD([\vAeKiն| (ht, MYNi,Z F[A]D<AGN:@ss/@GW u:ēwA%ږliRg,jOz8R>h6710ev( 9՟ͪR1)JpƓ*-n9 ie^*z쒇a]XuDu_ P_ w81{&Zԧ4Iy3&ѓZi͜}@}UKqfN%c?DQӀ(G^"J{4}yFYL#k?Q c<&D9-03cSr2D9h8p v Of Vipq&sWca`/\ۃŰ)y:sΌy܎:s>/ߛAGg><\ehrĞTiQ[q lv?{A,rjrRb(vN\Ihq_jGy,oMgڥ\'3ͣ\EFOHel1$rp2> DU)WigCUmp|ب?Mų6adV18 Y1>wĘod `:4 @T -uMg.;4q9Glv9+1"q=;W/-{ v݉=u>t:k'ݻ>`oqQb/T-Xh=WjsLg Zt`{ԙV*`.|ΠJW*{}#wF= WWID>!tG{74YpfyQu~Gt~ ;rQ FeXe਄@X~}QP* H˼%wa> Ȋ9IO=!t"Jt %X+/JX+}6 '5z< cb@vB%[őx$Z,׍1ιt͒G!NvNyr?ejj08 j72n]g.X<67`#GWrɜWV,`;j|.%!?lôe(nڝ"4Y+;a8P*Cw+T9 Y(R' U(R(pG}0t?3Sc25pbx<ݭD4aC>wSVS}}2Oa/xu/DJACU(3'' qevu `NB)ќP҆jX+f]!*Ũ׺4P[1`0 WK Fs #3 &s*>/ 6ߊ~:U1}}@##/{|aFŹGݸ+P\rܬ8@!t? aX ]5'5lWE3 RŸ 0ZhY\߲Դ-hL{ 90PС8h XdmN#Ո"֖/:qրq$ޢb/ ׍cΰYϟs_yܠ?1_ MW{<sFiq?<J++WU>:!T2T%*3H1tK4KI{ -Y ϟ" ;+;`2pB p7 (JescJ":3Mi j1mGgX"'O?ec2l 16GιA8ˍ13T/W<3(@̰}p>*Ay!·80E}MJ۬(dfy{=屝ł⑈1Q G,@d,,D,`*u#{L czg(s "mÂ{  CsXp ᠄B)9mN'q\9؛O18\Z( ;:BG:_d+d Oc b<~EP` 5g9ȴDeCik~5&jPR*i5Fs*raLgU x7/%Ɖx֊P$.A4j{һ7 O&7msT>/";ƇhvG࢙=8\a.N@>2)vC|X;#|-ƔsYf/>D2F3b z(PMSQ֫oBقwƞqRٰ]Gs Xi|qqr#JJD@wN.ScdW f̥וscrf4G<ׁ{\S?qohzfߝL̾96R#~iCNP\,_:ҪDǼ3X@ݷ3PCP[IUe},CY %w頻p-{ΚBp*O9CҺʳe1+(sۯD2m$#&/luU|x%p_.odC]Oo/616͵i<80KszUUh3KάA 7cBjv|7.U`;WWA<^yktvaބ>j9`x/v^o D1gg I} 'Q#'y 8DMeZO)ևPF˗̰6]hT/o\|ɾ{s!IkxaR;ȸ,kyYHv]6+n$ޠo$yp(*/=fw8(|?6t_XQw00`?鏇`?dU蕯?;DC'p·4Tn=wtg&Dl6!)eښWm)y!x )4t0=_p;P Z$#pɱEiFЏiO,jsq ˷/D[:%W0`F/S7I& Uq7|bN6:ɄHX,wkb>ymŘf p 2yV+LßZĿ xY'DM.먄n&=z@}lFئzt#yu@$6>Z02Yi$K}fJ0I, d\HA$`x{K|D33ރq DN@]=ˉIԅݥy:b\Gǂ/ ;~@|x7ޏݾ}X9LuF]!#JDfb)<7_Tke?8M, =)}Ze?:ߌt7ϡ,,y ɹI07.#畑229AFx?<9)=?<-g$3£j($>[%I =Јx%-ha|,*O]!([FQD4~f5e07Ơu"-}mu@N>:W}~UF7L%y(fim,;\*ZgQ61 ^\'6~6/Y<=?}nPK KȺPKzxEmeta.xmlK00"EUUӇ4];-1C޴cY!dhyΆRI+yj?{ [3 \]$$ x1#}1Ip64$v!嗀t'{JIߌV˭@ Fx_Ek=htӶcc 86y4c9CއQrMI쭀Cm}jeUty{a?y_5Tޓ8q0`\ 5֥kޠ[~ U] 噗L>f5zEƋfxix} 6?^;}P(  @ @ @P(( @ @ @P(P( @ @ @PP(  @ @s(OOONp+FP(4M?痟y߼yXcQla @K xgKYrūo?|x_s_jk 4\(@,D̂KYҶDzX4M_>L^+` @ (žRe]ΕjZϵ-k|ZT} N@nzlJJVsEPSLm@ E-26kѲ.+UU!W5ߣ!@}FPt"R鍚iTMݓ95/JkgR-1r-3A@bmMգneWYR{Ƿ3 @ E DtIG/QǔN-?Zڧ?FPt"\ssjLF<\tǒr״]}00 @ EڳIn%u75Gjں/5jRm r;ҵwssUr.k( 6j-']4]ӛ7ovH3#+]ז=kraN}朙(@,) ȥRr0C-5LHǵZjעTٕ:]z( `(:֖'SQf nُܶJ:GVפAˮftW%5P(@,m u{xϴLY5`EgGҿEuM?3sߵ\<qjA% ӊ( `(jPZTKZ6{3F5::5Dunl1=:sw@bD>鼈6DOiy5Vq:ٿݫ%#Vhy~(9.m YxDͼ;Q:z3;QtQZ{؞.> @0m :Y@լ9:=uO5L^[6˞)kZ.D?ýu~Z(2 A\.'*-([ ?5m|ksZ.rTN> @0m -k̙hOm֕{1n˚ Gkjӵs͏Mm~[ԺNVMbPŇ@bIUpeAK%鶵!Tw=ZunVHso~n_7o\1B7V͞_{ )1 %W(:mѻ[΀Զ֎ݡ΢l}~׏Rx%;xk?EI}cf @ s mYԣ.\O7ﱺrs!>RH59\=wOwj@kYrڐu*}^)uZ>y˵X>Ơ=7j*1;fj3 @ E Զ)WҪf̙jjrSkX~x=smǤ@ĺm'^sC[37d(~=U5-}GӑR`|.v}7s=FP,&0C{k|מEKkk~Z8r幨u^JdaG=ׯlf޹@rN9#aT5zW׭o{^?cwRZvcwZ@~y@Ēi!\'F\L):R.ūo?Rw>-}KKs0 @ V5P飹%G,IrF5OԪԓ;gqʙkΖm[E xnǗjPj¹;j(@˦.Kp =3DZ"ȹ~??;kPsU>k Ϥ2 @ 5P[J;ȶu[}j F{r]QZ~nJ Y̼_+W<ϼ %.iYp4Uô) /GFmMp,&|TW^^:sӓޘ( `(hc0~j"^FHKc3۞6#*w Ca @벝GJ+Gڶ[ ʞmsۜ&] @b]E34zdkVٕJFD@~g=\9]):@PCD)WS:4WӲ^jtg?3T T}/N}Xrk+uO@ĺD ohi.:Y墨rJoMG˟<@ry4\-)=ZC~}W|4Mj2 uӻtZ*FZ^W-)H]Tjw)J9z, Z,i;˳Ys]FP.5 O8*Hu"u^}FScXDjtsq/fd; @0g4uӉSLmZ^{?~:=Punn5[jZE6 ֥:/Ϙ;0tfvtű[{}-Y;ݗ{G( #P(P_GS6\=j{^k={5ҵL+9ks\Y'-(@w8ȣàBgBoq w]TlkJEۣٓ1FPNҞg51d}2,=ibm;qW+e?[=}GOFP(E#с#P(P1kRRnZr 5eMZ5շ;vB_Zu5e~u_F=#g|J;r'ںb忩{ ֭RxC{GYwO0:uWZ8wjSxGIx^KgG{{0KcOj?u|OOO@FPn; oTAnsw}m-d:|̯%\wk:N*[Km^Rx@M<lϟ4~I@MRxI[ Qǚ>»)<TiIGtM!dwH~?n-{0xI7~ 5P@SRw uǗCы ~4w]DXQ(Q Eu?};nj@PCfGWXPz]ڭ^j *YʥG]meT#3gϞ9 @z]ţL]i~'+|R)=i!}kr4'mמ(@ۦJbG, zBĥi\skr4[.$!tHFP(\lOG/Z]DSM/|tQ3;?lۿ;u=ډ3vD>q.ZPRߨA,#P(XZLxp}Z6c2b[te2}R8⊚:ܾ|E-Xb@j'v[ūo?zJ:)Li T}3;&u^(=ZKD0xG93  4MӾNk K真_IZh*dO*g;;{7u~rg[4@z~[{1k}A[Z^m {FK@PCT `oi]Ӑ)\oV##3/:p#m_~㣗BFP1љէ {'Kы y>%ėekq߆o0 @ 5PqtK>~^K=Bjtz.1R=Kў(@g4u\v%j-]}1Ixr퇟OϩU[K?һh}xxi޾}ѿQ(@NApij&Ug?Dj(Hۗ.ju|kۍNkD+kszVgictT|Xͽ{2 @ R.+5R%u-@: QrNP!j2 )] ~{ݞw˂sdk1ͼ\Z+=ݽn?j[Skb@Ē<.z]}ٳ(#.[3k_J+G{w]"͖wc0 @ E ~֪Ե2Gju%G׋Xvq\Jj5{(@, oJN9%F,|t<`so~no]#h> =>>۷~( `(j6.47oJA6=]ɞS #Wzrf5,k(@,7xzzz+MoMmM_Hs1hvH?C˿3(@,*S|{Nh9!J]~,<׏Vm>e9n9[:@PCQUYkuQ"[sG=Zji ͛]s_3Vzϵ,]St#P(XRx=G[_qN>Z_~b59%Snyf @ sZ5GkiF)YwÞk}ٞ =go& nqLu@Ơ,FIuΦ ?\ؗte{W//ƠՎsV֤5_>@bI "W3wtOZn_G#Xsz_%W\#Ѝ>wW=t7#P(P@ fz\}~QkF}*9ތ@bYLx0ňm#R|C߹iߟ}QQ޾Ocf @ 67ZֲkuWu5w阣ū_;qo~޲art>!#P(XRxZ-'GϞkyud#P(X:sزSzJi/5;y=Q$Ury}H۱( `(jZZCzj~o?~8>(@,27zw:VۓK6N;k}\o8 @0m JAR19##-Y/Uc}xxpCЄ(@,m )G]k%^A\zt$5#P(XfqyfYKiب׸)Զ,D@,CKiYqRǫ1X;W%ϝ=Z,A5P S 42{Mj~]Rx5ҝN:sFP(=^~l_smFܵZnj@b=w FnQn!g7ޝ^#"( `(jTZ.Wի@*j_>A#P(X:à- rTe:dQصmJGw"o˥SUZ` @ (Fj~&UUZo^mRKFlI \(@,vӔn%77?<<ϟMK6mU}9Is=m(1 eJkHE|w亩/ӐQ@PCQ4Ϧk87#P( @ @ @PP( @ @ @@P(  @ @ @P((@7фfIENDB`PKzxEVO-Pictures/1000020100000250000001D9B8B053B0.pngPNG  IHDRPIbKGD pHYs  tIME :,l9IDATx1HPֺ\c|< 96aslO_}7Rk*푁@b4drjԑG0wZLE@b)AFܜ5G]=xھS|2P(@S@GXz2?G[}@RRJGTJE=֎%gycMmc`  ɸ,}bs^Rh2 W! @4EE-=zȱ/(gUq"(@,%}|Z弚e=_/:9j9>7WDX;T}3g zZ{]^?Pc@R۠Ȃ޵R='>3/J%׷kα~]3~^s^zw2P(XJx+J=m՟:kz3{u/޿~~,o՚$ZkFi?2P(@S@mTߤN[TMKדk5W[aK.(9~[(@G @K oElS)REjRgtA̵Wry8dP(<t.CoWַM{  4NnGK|owIOQ  eKx#z[Sc+euudr^dP(cbTڱ\K}Ol#buŞIpK=# u7Ma)]T&/޿~~wR%JGXj]yQ9 2P(@S.z|9cSNKƢ"IjARkW*  ֥JxݚKLs'2VJxWcp~ZP~x=ѥR+O @K ojѕw$r/*^W+O @ hʳ+dn9gd=~isRO{(@Kno*/z)ϘND ,U:dP(WPΫC @% Ey_/[J߮|N+J}2P(@S1Ԏ@T?I@2(ۍM @K 2D xr^{d0Fpow8}uoQ~ M4-7'@ 1(*;@pAJxy4mn{$ւ^&s[Jw}@U.Ӿ1}㻽Kckǟ \A?dPvJ^Zk~KeT)暤>s26D'nm%k R?(@,D勞X[c=k-֥^JwҪr w꓁@j7|cLs ^s|%/}kCT}2P(X&OL})-cmkӷׯ1+RΫC @ h1%e#Oa^lسo~ZxfǮOv׸_聪C @K ^JT}FR{\O (@,wHFOIZK5{ӧO2( )zvJ_l\ߥ7_uӡ~WsѣoFQ  # ['Or5*Dk|u[vKޛZ?5瑁@jm{ZQF3 8J׮{"#% u7MӃexZ%=SkNd>׾L?7S$kg}^JT515P  NzzbdJ\ }-rU=/:/#ݧ]dP(D>7־~&J#0}a麻ҵ±:(@,% R{̾1(@,%<_vDu;]1/~?_[^6uO+7eO׈s  @=P遺CD>򟹶Jsi2P(XJx(cݞRHɲƭw9z9SsJsğO@PMu}Qc9ګrG|8wtݽꅭ]dPw-rPt*2N9ǧ{C @%-UZ;lWܚS[[vK@bA1`TgL"9F ڞcbOc @2ƠQib?HeVKǿtc2P(@S@s^@ξ=mf/(@,/ƘΖDSudյt.11(@,O]- =/Rkeςvx.x  @c 8ީk~cԾH{@bcir'cROkdP(聢Y^3%}o;ip{ 䐁@R£y%ʁ>Nଲ P*I @K K1|<}y𱔔um-K8@2u~9%y,/>:ӧO.." @4175z|H  10O45/9=]S}@=eK%yOKCۀi@c[롊1:]I @? n@$( )z"zj@P(( @ @ @P(P( @ @ @PP(  @ @@P(( @ @ (/IENDB`PKzxEDiN!N!-Pictures/1000020100000250000001D92216804C.pngPNG  IHDRPIbKGD pHYs  tIME :5~ IDATxݽv`GM5ZsPNݩsvg\'TP`y  fMq<ܾrP( @ @ @@P(  @ @ @P(( @ @ @P(P( @ @C0<#P(XRx@~~zz*2epFFP(<l{?ek߿y6{׿?oZۗz.6@ǃji32/~g˟_~9/ueS.Xr|{8FP HDfm[ߎ[Ҷ>ޚ9W6ޚe:pyԺ?7Sf @ (WEݻS46ZѴ@ok=WIWMU-P0.#P(XRxP +i3|eZ(ڳA^)-(%ѝҁXFP(rvD✵*Wuvz>ujF 3 % T\2JJ:5i5h7[ݧS-3i?`#P(XRxִܼ4&5)UIZ)j[^~9{QT /&^;&[$ @05P&KǏSu!u}ڪWNrZqz:G?Zڧپpˌ@bI݀׎{Ri xSJ&Z=^Gt'[Sx9='cȥgߦ+M\s\jSeGt U`m9>Fa @ N'Sے`}^RsY-߉˪=8N=ڳm.ڳSe>C 0 J&]m͐ѓ֮}Ώ4mmMnFz]?b2]/.LR-D2 @ ED&8jY,$rS>?{]M]jcPG1mGk,Hs;?va @K o0GF}U::-q鼵6[ijOxF]K5Gl QNm^@bDd[v O}T3QRώ5ie9uRd='czݜu2:K}Nm/KQ @0m v6#[֖Uw5 Y+b]=^ݏ8GmZ_N^TS꺈GGri}voPle @K 65tb5’t- r׺T*樴SIZ$l4MӋՙnҙ%ψ#rN-[>( `(TMrj޾}۴̞5J- WK޽z3Թ<G#nٗ=[,sFP:ȵ,8BϡuDwn]Nmt^ƞHɺr)+qޖT>(e @K Rt.w׼s_JRw>)0}w]۝g2yr*VѓlG :fFP(ZqtZrs(=kU":Ygz6=\z>";ז%ݝLd @M 3kH)/Z >H/\!1o鸕tMӻWo,}DΣE.EWbλZ\( `(?====wZRs=>JK#P(X7ۉ=}rbm#Mן~i>9sujeI睃( `(7U|}*[i[m=W Fv95@z~;s񑶿gݜT.6]!7Q\_GOvc3 u^oEN{K釚c:־wR[~G|JX"w,#P(P.QwzzzuO5eFA8;5L,kvR+Ubu>ZE_5Vϣ@ĺd¹)Cm"Dwnxym9L=-N2US]50}=/wY@PCD lgKBԹ:b@/k:}],Q0 um N,kH7}^O#F{մ6r:K[@b]*#%]NkgL;iBqR| oy }ִ]3VcY\XFP(\A*w\RWTZnt hI:5P6#>&O=#P(XϺ6t^.Vz.Z&u2_K]%3b,vg @Ro-J[OF /5A꼗\ koJ#=Ab[qqc:ׇ( `(Z*=OϽ}E{vg8Sej7\Zg<6%RU iSxK 땂;"5p&}pSxqompI{[;Vcs .=;\%m @0j+^`k}șT-j@u1ҹk[Je55=q>G󸩇*g @T)K=AGm^۾!3JZSxR򵩖eshkˇuN%/ii瘴]#P(X} /gN壧jf)ؚu#NʥZz,sLMv&0_N0|Խۖ3ډiO+g @ J@EmagWۯ^jaJ ]}.٦{|(@W؉iRyݳkkvJm rݳs闼__%l}~U/z]Wn_kҍGZ^׎ϾW8]~uݏڳHtDͳv? v"sn&.{۟z#G /w~#&j&Ѝ~Q'/I,K]3O9~G;p pjk&Rxr-w)@PCD TJ7Tmn;f3מnZ]ùy_"e?Gׅ=^5RnQװ}@z~e4.Wڧ= q]D|gkoRtgLIҎF05gwQAIWV%[Y~.m?#P(XH홺;sm2|e^FږKϷzr闖7OϷKym3zv*. @0Ku"j1*5VkQ'гVgDGm_qmkMG]}ۯ׭-FD<#Z[bXG=϶.kk5ǽqǏS MJ[K:^-zijRh5?[[W5:jr\ <˚`^שT],#P(P.Qճ)WMSs2-xr_VaT'5]OW^f3u\kS :G?{>#۟i|mz=ۖۢ?#P(X7щAju:gѺVl\;/o8Q5YW>@PC6KG妍z6m(H;AtjUTS5Ln_ K-_S,#P(XM-y)bkY7玅_)i6ߗjH5ϖmSw@Ē۠$U= 0sn(u};jh>eV=7[n{4Rt^o)g @ n+ѝqG)s|mF*ֳZ,-R5X-ZV'GG?#P(XRxSkyn5[WrKs=%R6%WҤmsU9-@j@9{2kg˯m{ֲOɈ5P:T=ԞwG%m^C˺Z [R.K5a?/5֤Z;#G8[ߴ]#ՕRu%ZeFP(hcbY#s2{M WuKA>Z6Ǜ-ԡhc0=5x@bI}fN=<_`v/{\yܶ v=[Nbk=WroE|ynd=rϋ3bى@Ē›][S-=' yK6u9j_!J#ѩ0i @0A-y~YvZמ]K3u{Z#uOv-=>>NӤhFPizzz}ý%ֺ62ImwwzR-L˹,H}o9𜶛&Q@jEnzZ[sZں65TRSjXb=Kڧ@z6MGa4CMz"w2szv.Imݖ}9޽zv ϶gthc @K 9ךbƨ}{vd5oԦ o)UfϿ}hJ9-#I[vs0 @ E Tg{ zѝ:}5A)i/Ͽ}?uB~=[1A~EtOu県@bIu1 qDJ i_}j*?Nʼne뽳e9#&*/S @05PAjkJj>N￝9CjK/rZ[uEׇk|xr5Pgo}\=^4-a @K CQ)Ckےz7Yc-鍞)ĵsy^\MŞi[?u3_ :@b=wQ2ۚ;zh{m]gOqD7֖׺Z'z4՞ُWy{+xϴr]g@ @m\}Lj&| zu+m vގޗ}=b[<%Rt=Әeզ!( `(j`EImT6=jԼ*5PkǪ1j;uO N䐱L#N\\+IEO|m9SH=ҝ_J>܇/IJ7( `(ީ&~}S~;%5L]mkJeS=#3 %;H2RiSJ]9@, @liK||QnRڒt`6k+5WΞ*-c0 @ E ܀\TkSK?q_k#۾%uM5>c @K i͟Ͽ[Lk}oM^ߦ^QuRi[lM JAHKͳ[|^n.EXgIDATN\J ؀RFP(v7Ϧc87#P( @ @ @PP( @ @ @@P(  @ @ @P((aqYOIENDB`PKzxEm-Pictures/1000020100000250000001D90AF9D348.pngPNG  IHDRPIbKGD pHYs  tIME 9)AuIDATxݽvD`Lk0qg;#9:&61AL11 7u|5 u~$}_9J:k4MN;G@ @PP(  @ @@P(( @ @ @P(P( @ @ @PP( Zg}ˋ.  @0i4 p=i{Z_}_ڹOEuJhp^  R-^KYK-Tnu-y<@bDRJbk 68M4}ߧ16gqҊTc齒c0 @ E twwNyu9-n~#j\Qe @K b6*Mm֛j3);5:n)Z)o` Wa @ \.*g5JQ瘪ϸHK{aX:5>#Ey\"aߗjk-823P(XRx'2vYt~OrZ6DFM:K823P(X:@I闣j8Zf©cqޖ[4wK~:323P(P@zҚԭvtbަgϚu;mi]\I TԸuOJ?/5׵G=_(@,UQd=קR[7 NWʧkwmZ&[jm,?}4kH3P(P1@iӒz6GUXB+ ugoc{+tT^w?va @K o0鼖m Fj0{W:ooI o4lsU忶~NKJ판sf @K og-W}HJPڞҴ(ctNk顜ߚ;⨟T1«=<7j.G.3P(PJjJgZ0E;zSmgcX8Ew>prM[ǭuOsW VfP1hl)7F%ڍPk{"C왖)iUoz{'b\Fƿט^e @ 6N///?Grjn?.#Z:wem=j_Ggjsù@ƠZїc,d{ 6Q;&{޷鋏?-jqTwtޖm93P(XV]*)FgJW\SmWkno}o:oxnJϯe7ڱ `vf @ D5GU>\_ލ.}Dm?#Ku?3P(X:둞hez;K90Fk~iT^35>>>gg䈩=;73P(P1ؠennfII-Aɹ!݊d6 c4~K"85 [nһM6gg @)^m RS[[rr/K;o== nK{Hm;uqY&is3 e_GZ4-29ל31nQ]m&߽<ZwfP(M/|AJ6QZwTהS4jM?kQֶ]pnN263P(XJᕦ排.GS{G~\=g;FQS;3P(Pl2ղ'?51Ǫqr_g _(@˦>8nƞqwgnʵ3(@Ӧ𖺎!Uԣ#u꘩WJ#D?CR2+yvok7f{ˋ( `(ZߔvΩRu:WU'ilK5Lg%0^-FRڿG<9yҖ[J_fP\bLwn8].k{sr7ވc}t^11h  @07, |_|kG,4Mto`+@:T ڮ_}-yKP/Z:zvkǔk  iWI/JRR9MZ"r}ћ4=OSj3P(PN[~>J[ԗ+٭^!.jk'9 @:l /Օt:ԲbJ-XV<}*W6VNE*W27|\( `(hcpS ZVyyоrZ)yMoKޟs[2xVF]Kѷ"3P(XopӠBw?3xRusM}Z~-z}Id#tc @!ȳWQϻչH,3ocl}G9+EkW===h  @0K@) ]w!:ekq=KE1iwo^ʩZş{[giR U  4M">fڴ:o59Kk%*5ǿ>;GK7bMKiy6 9yfP(e-Ԛ-Zg{XQ9%UgأR TD-J{uz/3\:Fm5}QԞ(@7 OK?u#Jé=s|~~~Y: 3P(X:ԙ6ݳ3rR)V)s66_M_|i>+{grv"9N*t[^#vcIa @ D8j=^c1RkGᷟ?X3:jWki9P2~9/;{ͿW=g @Rk>F+*G]˞m }}Ć.Qz/u߳ @{LuMK2 uUx799h{7j~D{vWH፸ o^OJQ3XuGL7u~\zJ;/yyy4f Vwra~g7|~_)=/Rx#j1X=[;bs;@[rg)lRߣ{D`qW5P|re w:psSmz5Qm[SHv^;KB2 @ T}R=JsQZ#hy#ދ^jl2?~OSS[SrOgx~1؇(@v"ϑ3ͽW y;bF_n>ǿ>H)qv_#}lgj,V4:|fP(5PpTnG}kJvdz-Rm ǪV%eDDy-Kjc  ֩6npR3JD}NKGl]:}m3ڲ eʺ{ES[\@PCys(icPJ;Vo{YJ8?5f-zxVox~~~{_D@Ơoѻ__\ڟGCiXfP(\yyI]Pt-RXB<81H2iiw{߃q8=<7:J /ge_³k}V  @05P.}.WWr,T/tj3%)G[jsE[l/󺧇ןC  eSx9 RJ:NG?1{"_F^›s'U糜w"۟( `(HԺsmɹ,jQ{}9˽[:5PK m Rl2qy@?3P(Xo קZYșnZw- Zv^$޲eI-ݣW*-VckafP[Q /xDt^Ċ͐?FM}^oUrغZŪf` @ 6;+a ںDuAt냨mij\.'KS4s峩inQo-JWL}￙z~Oxzzzg1@j.7G(G?(Ve}-DrutKR5PG\[y2 yҥKG_27j񽞫"H*~oe#///i`fP6XF]Z7葶kHDj;.kE9ىW ᖟ^)mc0 @ E'RQ)Pl?jJoU4o?O_|clq%ъC0 %XǩW oH?^ӷ_~-mwy*9H( `(riւ47\Zw07z||ws"6fi93P(XtRKY7Iv:ϑl~-߿6:{~nKc4ki/U{^/-Y@r7Mӟ,FYtA޾7ݏ{փjZ>??8#3P(XRx@I{5[8c omb-EwK  N$(09@ĒZ#Z"Sy?_'ShTsw{wu6:ù@ĒE~nOW?J+'E7@PCQOplfP( @ @ @@P(  @ @ @P(( @ @ @P(P(nL)!IENDB`PKzxEf%%-Pictures/1000020100000250000001D92B4AD6B1.pngPNG  IHDRPIbKGD pHYs  tIME 96ƀIDATxݱ4`O6H:\Gt ]\Gj.5{Б-ȒU6|eY㣛a> )@P(( @ @ @P(P( @ @ @PP(  @ @@P(( @ '?|à .  @Дa>Kwww|? ?랖㏏廟7_%?g<0 ïϯ_~zT.`+P(XRxgӴݜ?k)7~># LrMҙ҂pnVP#kނ{RZ,.+ų?go oϥ.3>X@ 2{ҵOc Ӵ.'5J@-ϻdWNS)P.+P(XRxЀT4-4َ Wt /:5G%S1Oӽ@VP(ۧ,ɩ)%EӺU=a @)ܴsTn%UN%:h5CZʳ %ǥ̥vSNGk}|=)Bֱ @4E'rWi,Q0zǝD~6>o;ӶpeVP1 \'T*fKdg-ɝs@bIj./H-mo}Kk!ug,-Fo_<<6׭(q}J͋KVP(ʥJ֌, ^717"o:^9cɽn}Ml3ՈodFFVP1ȴ]WS-s%&[u廟>%Fzo,E89+P(X+T[=;F{~{O3'>[ƝzKf @ h6 nSN!w6K|sq:->~p9tkn-Q^}i\(@,)GX_Z^jghs-6˹ZO嵚jӧOcyaVP(eZSq9ukzm6+>:2wzn9isp>VP.N{-3"-e}JS=qt 1Zҁ/VP(ڨ~*78KTAKuc须g׿S]5Ps˧?VP.MMI՟.=h1YgǷ["@+߳6( )j5{9)e+ (@'W=qirc{ (iV.6+P(XMͽqCJ%gohM?_Zj07 rjc䥟(zSc6n( )Di|N+%ǟG@t-Z˙O؉LuEj :(@' RV%q.zΚJF}Z*[yxx0IX@rۛA- -~G/߬@b6jw뜥Z̝Q#h9(@Sm&|www׷]ׯ̈́:[iv:͆cY@U s)^y_-yJz T=>ᚫÖ5ʳ SOKl>%Sir1vj/N=ǜӧ@PMv+TK|fX6[dZ}@bU^Iuu|y~s*5P@URw @pb*Q)cB N{˚k6EN«  @ДS@RPSGmŒ޻y]{]*YK IgS Tۢ뛛[(@'W=:umsImsv[JNw_=:3vkr-ݮcz/?}XVPN^B>Z7r:LS׼vv߶FD5K5  @3ёqK刱x̨y=5ܹ󻯆k==NG%q_:-Xrhc  )RxkSw[[3uNJD:zLWz>JռWvޛhIQSc-z`gE~^,+P(@SmZ62]r{mo{ru=m*Yvjj㯿>}ꋨ0+P(XDfWڪ?g>~/ ߾}Kڿ~nipV%)bޢ;>)@b]-NrKԩM-މ~$3Zo|=lVLVP(\dMvԿ85ly~ǽ[wmVPNՉ|jڕO˰mϯt]N5X8yOJ=Q{ksD[W2@PM࠱,Q#Un~e%c͕jjutbTmM2+P(XM=<<|`QKR|2bNcӺ Fγ;TJ?5uAyVPyK˩WJElytТܧJ'򖾧bY@[JuͭʼnnQ#]KVL-۳ןl+P(X70|:㉍Ƿ:z8bȞF1X{}ųރ9}E7a?i@PM9m ԖzZ42c9gz TXtyꞎe @yn˃-#rE:1 j{R(@KJE,^1iq\gH^͵荵[=oΫ  @Д' dwVkkԘ~޺sZx (P콷:  e>tڦWs玿>J/m ;ynS16>( )r\mZﭷ5Ps=:b X5uz(m yFO@  N_xxxa}fN*dgst#ED's;^3'֚{?gq]c @[x oE,M%s]smo 8J\; ӁVP(hcBt'-Zf!g ֽ6 P+P(XRx Ǝ0pZZL)7UU=D3#Ou^J'F_#H/#Ͻ7  @4V.+lj~#uB)%Jg5zW!TJS@bicPXu#bJ}ωzݞϜtk M[+P(XRx+-ے8"jZ,z\-l,܋OKSK'ei >X@ya[ωˉYn]FJ-T{a? ?}?58)G2~VP k1wq«1W֯/>}d5y9~$7+P(@SlR؂o-Tkíشeַ zų=oT[:VyK] uOb @KM,-GRK[:N#ճsx{/Ʋt-o_<;E-YϱwڱDt*ϙ %׀t^jf-iq-ij펖z)7M|^rs,i4o]( )jsD=TMZ3ݳk9cUumVPl&ܘTR.ʉKɼ'm  @m .jZK5/]0u9j,/ obr۳/q}KVP1iT넥_•vWH=v\}I+P(XRx=o}^QLnOx-0Uڎ@PMQET\cT?>#gh@bIѬN9rSG)s)mǩMut:di; @4E MkyU̒~(p9?}MB+P(X70|2 Q^iWˣe˫/ ߾:vOc9Ғڬ@by ZѝKZJD}JvO%Stse#r  @5P\RXΣV ѵFGߢ6[mlƬ== % ޚ6ѝ[%mEyKj)q8 +P(@Snad`:P=^ݾx6||T_=ߦ5NsaK  KMSwwwї~6 gL-]óz  4dytfjO { ʳ @4E 4jKw6QuQG@KJϏRq@bI 溟1^+CGp- _VP(fkrkv廟7_5?'Z  %JFfxU2EJN?sXNe\MM?S  0+*Ƿ7O|s.VP(ۛ?  @ @@P(( @ @ @P(P( @ @ @PP( @ @pU([ vIENDB`PKzxE-Pictures/1000020100000250000001D967F7DAF0.pngPNG  IHDRPIbKGD pHYs  tIME ;}PIDATxݽv6`*Mk$K:JJu:'J:&]E^;@ / 3L447? C @P(P( @ @ @PP(  @ @@P(( @ @ @P(P( @ @ @!zeg^zaއH(@i \-^ oL}(T^iZ&)B8+P(Xƒy n\ZE:/ϥr?\~9X@t su=8jc$UT:.k[&lF c @Kh`m44zkJn,)>h  @5PAvT^IScqrImı %L-IDtܯ%#kizxxpLVP8麋SP'ÖR|{z~wwI:VP(Ld8OjjCcɩAoL}4ȭwt7?Y@Ēcw-[ U *sZFOlq( +jX4Jmu/#Gjc-@m\5PeX(  Cp|ViT`ϥZ˱r~涕oٗs@)MLA=32+P(XRx)Ͳ/QSB9B[kK*iki1֬wI1 +P(@W@ zܺuqhkj"j&XZ1sIWsc @K S/]rNMC~qN/M8~-rjK )>Z @tf'Џڧtbzq=8ݾ}3}|!X9"hFl.HVP:P+m7MGMVű7ވUOs$z?rrOZZ@bI5V3]OE< GJHc$SxQVnDt%@P]yabjRܚҺ-ѥG-lǶsg(8s{fsۿ  ^e]i#*ŗt"aiZoﱬ#.2BVcz+=/ i=c @  [Zꌨ^vAۑΟ6<  ^Tj>n *3+s2>[_{d:R*\skΓ  FsTO[Yf~/]Ss9}qDz  @5P+{Z#eD=F8øԢ\HGE͡}Pf @K oR/5zO퍞9oI =EG`Zy,Nc @ D,襾Fme{>wFjѾbezSjy7_ks %74*m42{tM[m˚-_e6G(Dj^>/ߖG`@bLtAX:~qTCN9cE}^Y߿a?u:u}x28@P]9m TiGkYG\i_]#]/f @T)ܴݵSKϩ},j,Xu-!j}f/]ʽj[jo VP(0?{Gc omkzI-T@b"7׾ԩomtIMt^@b)R.}}#e[Q#O=/̕si~]<>>X@r3Mlu-5 -Je5<3uA{ZuԺ۷o>t=!5RǺ/U /+P(XJvKFMKjS2YiiS0gH;R9&7<]@P]9E TtBuQ{Z"j_G-T{ elG`z˶Ca @Ⓔk=1}Z+8= ӗRy@b0u]V{O)}:Wsz]*} \eVP(jNZ:ss2|X:s_ϭ7s=conwfmY6駿kzVPM-8x-=;RiqR`k -\ǹ:ӛ8>o[e @ 4MO#xf}Bʙ=""3wkA;2VP^rvcF\kPs.ͥΐKX@ǃ ǎy,zxxǬ+P(XþLږ 5i}HEK57_L_G\Q:-czjeןz8Gv@P]yaKk@X Ui5Rvt/͡Z@bI᭰e4v}s}C|i^#-Κ9hK;"u ]*17.[GRf @K ZݡGHߔ/55̾4_/`Xc5m%y'  @5PkS0MiK?}㏾"e9_ ^kKK91ng @)QN뱘ޣƈ̛tk5q̚wے=JX@:U %Z/]vԋNKzc9\:K_RG q}dvн :( û'~/7i˗~`Sxc=J'iw9=<=[>ymy?(M-}_ O,F;mI-]P=/zrvCVUP4%uN˄|!eGOj[:M܈N{tL?5( +hcp4d_0C7d:5qcOjy~scp u6[Rw=J-yt˭F~H\aޏz ǚvkl+]k~(s:#(@SLxN2rZR.}af#>}iQpo4^,+P(@Wq1\r֥s'JvzmkAr-Znڿ:/+-` @!^KGO~|vt/mL7j{nKs<[1btuQӼrs~yy_H3ׯ_Tf @m JCt]?c]Vi٦=uN=ƟZ=q(MQR(@,?vyĞ+Υi=^V=+P(XJ=>>ԋS"'sT~uޔvν֦~N-I  @ЕS1 j]iuRW{9x/&deVPNՉ|ri/G}G?ǷB>Y˖ko<@b6ە-(-ODc 4۹֙\v@P]9EK=ԖZ":[KE%9/{9<"5Gto  Cїz~,<<=}N+vY@r׻D(jY_-7UWC~R ek'e @m y#-ny?D>QԱyw{:Y@ĺ샰剼ҥҎƥy/=8۷o>t[{i^Zk8-:g @  CMtm-sekۖ}̽Eakqn'+P(XLu_,c-rRr_:/(m ~ApOt^u%A{VP(zV[~ݯ-5PB{1ѲW@.M>fj~  N+v-i˿k,7_X5Σ`fyq}ͼeVPveIt}.P5^GJLt?̱P6k ( +jUY4WeQmRF\ʮA  gi==5S9-St8];sѧ+-H"p w  @5P>ھvK~nT OX~El*j#܆{(@,)viKT[T鍵J[kR֞Ritz_C@bI0:ֻhr5U*_5XKmCRwDіKnlVP(Ldʤ꡶ȿGZ2liAMsu2}շk>5{K{ŏ  69h)uT#+q}r^z%U7\~t}Y@*u]Ԗz7`ڧs{|Ǯy,[1u*\m9+P(XRx zzt}$[ƭ^)5yٖ4[|ڈL  w ky*}R)iuH]KXjnݾ}3}|a\roK[$|@P]ƠsFE];j^F}rǼ.mmV@bic0陥4Q_ܳݲ]m ?#k}  @m sķ{_.q-?sfE14f>9+P(XRx'>vK!=qt8׮mx(@, Wb3|z7N  4 GL];zv):(@,ȡ˥)^:S՘?Y@t* eKSz'2&5[nK=a @K `NیN \  @rȩx=PS&(@,)<8r_Rە?R;)88+P(X:MW~5)0`4VP(qf @ @PP(  @ @@P(( @ @ @P(P( @ @ [l #$>IENDB`PKzxE styles.xml]]zϯpy뤒 l؝9=dl-d \D a̩:F>GG|ח;xaPMYxo_>(_jXd X Ei0 DN-b"=$ IntbǎK\729c>])}׍W,)uMnbЬVf$Klk ]3H3-Aa[H^]°vӀP׵4amn<]^nA`2p[7/lk*+tLgEJM&qUB'!gnU[FCvY(ӔYҔq?;(:Zֽ6֕w/Lסm MQq1jʳw sE↎E!FN&6S י_* ڀ%K=RY-cB{G˯c`wM;6|4Zneo\S §v#̑aV[`AT%JCՙ|7N<>A訂~/EIp)s64A.IlB{0#g2x^4|iECA _7 Bz@(E]nm ;ᅵCotOk//)4O(U6$5[ ,3 6,\E;^:u|eWk4L(syΉS 0v, Ȟ`x OVTȮ0.vBصZz=xt^ꕅG1ܞR:p^YDz} N6\ĥKw`XCfK+Aa š룕wtfp+uS[,4JJ*=_ihSPiOyyNF:WO/d;TXV6~|8VUϸnwj[JE9FIp#ui\ l$q& &ҤC1RBORnφx+6hф柼ؙ9.w6IQ3xt&+lbhE# W &\FGXh8=UxU`addY,Y y% _nyfVyqgA?|Aa<$+j>@FSbt~:Ykr:H<+N@DFHn1qN+I)/R s.9K? 1."LS3VBW=)tȯJaz3p23DaZ <Dh;QW!Ǩl*r>_qɡZU( KiLYYDS͎Zic!r8^sPNPI=SVy1^*l(g%bɼzpWWmˊdeU 䕩})yߧ8wqM͍R/Sý7MX f63$f4F]C+{dJGǜ x?RS5D"[ Z՛qc᐀6z2Q.)6h:`u|J_CnOh=pں8u*u 't֛Nv\!ǡN4{@iI! e^&t~A`2n xz(ͤh̀į݆QӿCIDdNznh4Q6fJ&9Jl:K.j1PeX4 .\>l;G]ץv ݗ*NRα]%Fh8F CTj@diQ[sq 糳%h}F{>I s=5D^ä9f2\.QWnpKF(,desWu&x;YwmkWZ}~7tѤ;F6wiug^3H~Q6:H:m8h^>/F5_/I l;ם8u8{8TϪ6VmjsTiFIIaV¼qRC$(-t^whCy597NxX``Mmp\Tq즓): N%tnѧ6٫̄9h)u<εfXZ9ߢ'_+?' o>o{W 4܇9=&[|,_\jKNdVKrꟌ+TEqKMJaY2F6hқk$ 2H[+8B[:.n RxiAjWT׍-A*پ m}6HL{uH][ATE!jl.ʈŔ}H%vx:RͅꐚSü%H%ۢEnWԘ.[TCAjlkH7-!NL^Ss6E1RYץ]7|ۋ;M%2ꤝGu:;ܘ;Nd"JlP9~96MAlnkl<o٤QF{6-7meaNJѡS qIBE|r0 7ڥ{ı7Vt*TtLd!/}_p٠hs=׫9=4#+tĦnҶD݈%nĒZ7bIȫՍXR%F,}E@kK-@kK-@oK-@oK-@oKi[L`ږӶ%-m 0mKi[m `%іF[m `%іF[m 0kKY[`֖%-fm 0kK-̶0lK-̶0lK9~L_'ukacxۺd\9aA <}&XmW֪THA1$\jd5V6L<a从-196_zjZhAs"\7 5>Dv&f0Q/h$-"zP}Ћޘ>F0jv"ۜ8O >|O{K})D,Y=Ih"LR2 I&-ݭsSp,7ϲpZOB &x,ᝧJ\|iV^.)Ͼ"`7z">*~y6A܆Hyl0kX{h+YjQ0cQx3%8U%PR@+yĠ4*Iv[ڤ%u IN˟[?>oK7$ADoVDz:5 5ֱmܠl3)!{1_iȰ`H`KM5'?Dn`Y둗S;fKL5-дÕQwO_e0]L >SۘԖ{'MFۈd@T32AS)mLE:}`:Uͦ7mLDt"^U@khQ8'M!v,I[d4%M2^]O*KC;rEʈJ#*$?GUN?r:@#+jd#+$?GWN?r:@#,j#,$?ʢGYN9r:4#-j#-?FO7h#:F86BvA3r_.2hmAUn Z2t[ez*֫ V^eʠ*CWUWzWJ*~Aߠ !An z/$t[H{!B ^H趐BB*$轐 PWqvDH_q!5gDžWuv\H_q!ugDžWyBB/$#>hRdvez c<Xn~,/JX}aFS𮊝\啊JלkA5 y(AvX1ˋzRm:W,/l4vp\S;UY^x鸦^y\Q u2mJ1KݮӚVڕG^aG0yۼaIۼaۼaۼaϹۼaωۼaY[a)aىF/$B0R,[9$,@\!¯|?ƿ:I0VVe_Le#8i olJ&%-+#.8#%eCl+ZE 1bF7M \xV.W W qcOb=IB wKV0e:Ĩ+ЦvD>pLUر`@O>c), M,OK&dq !X ذ; a8<ԞFκ馄,?(vV{%Bbqsi7ǨK.5Ddq!{4cz!K]A<|ױMȿeXfljc 5:jјQK+XY8e\0rh:ˊ29 ֨i; RoӖаR.xpC)u|C \(A$fˈ>CY],P$i.!M=?VQα Zd!y)UU:p+~ :8NOH(mudd-wOdA\ѡIl&Ll4 ЄeCcو4yE8]&UXP䵹 k܉EeNe ^r-șD qY&c)"H_F`El0ҩg|]\:Kgi4/)T} il{"Gby_Od;G.OZ uTT^ZЖu@haЮW|I3 ؂(K"C>)9m4 ʪPTCO`%3@qq2_P&|& ceN$5㵃J*h搄!YOi18|j˹TQIi&Q\-PcQ<RЇ>}.x h2A46 #O)&&xۍ/HOB#?\z1pw4!h\ݕe eC{xAQ?|hҴE=ы`4^h2NƵyOOM)M_\"9sHt]L4ڸVcϰPK ֠/'PKzxE manifest.rdf͓n0U?=qs=w_W&L?|p֭կϛ7iײ ?3To~(~~{Ν;iӦd^Q??ToQ;3}޽{oA-[:.]+W>ck֬!S  p߾} xر(~{M6=3,$9:tUVE[z^u$0mڴ^zKXE'Nܰa|"d2!>ɐ?Yq~nbw;B<`Tɟ4iP{^^ۿ[A!RCCȥgϞ/2!#GĤ#JrO>b~_5f ]??P Ɂ˿$@jD  ҥɓ'ᅬy |(O>ЬWOA8zGGe PbHս{wĤ:whE4W_} ޻K{~L={7oPߥe˖SN(k֭2EԪU??ȗ)وcΝ;50o#pSƍuҧvzv1=EsΊ(QAIH dQ"w`ڿb(E۶mj($AytsvYYZ!3TZ艆 ڵwwi^<9.رc $sBQ??YfaNO&u.^х-G:\d'?!;Yb 4_%0K.? b[$NשOzꩧ?&!%[p &Μ9s:V*i0*Ø29BΠ&yH] *WU RAؒ` L!W+٠@ cB&'X01ٜ9shR* Ӿ}{@;v|(BM3}ZU-HR6դ ,5b{juqBیSIhSDʖi{) l#SbtC䃦r%O8%W8-Jo\jYAb kR*jAm4 R`ݺu W^Bm۶-#A wY@R*\=ϟ0M7y{2yH[B膿`@D8rHZSzuCS0'|xPx8C6Lj#t 5Pj`$JRC6)I"S,hxrmԱCg{SL1XK;wcFH/dFmvw,qPO]nY!uO\ݮc0t,(eT*Ox"yҲCv(ڱcG'Mt#G}a!kCvHõkΜ9sqyyyڵ㙑͛z!"HUc;C `͙3a_7 e|A^˽c#I5kִ;ax#㮧* )w^Ƀ{B %d{J8"2t̗$W ȫە* )w*Lk3wx$ʝqi J^b=lK8WL?.uTr #Tlk"Q3Ĭ* )t߾} /\ЦM9(fSM?bu<:ZSOZY$9x`˖- 9 <(cǎKf͚ݤIG uA֭ ¯8K.^)nـ?D":HˆA[F ԼsŋϚ5 Εg>nݺdhQn~n(>jڴ)Y-Z#F"K3 k׆:5ʎ HMZxBh!=zsa Pv~~ND-Z@g4>}H"BP<&:tx( ta&A1ݽ{wVP?E) /nݺ(^m6Ɔ('|Gxصk8[}ܹ3E)N{ R!(RJJhh4ԀԼySh>awСZ3f(/(B(`ԩZ[nڴ .y~'%:Lzq%B:gQoƍy2dիWu&LPuv"{/_|E%`}_Uo ,0|t5 0#Z {Ix_tp2bݰaÔ)S\|yʮGX, XHBkW1 О!}vӻwoP!"%[!s O~ 4YsN@)E~XJԌAի:M &۷/ֈO' v98pvoэ~:$u P_o4vT!%ǡ@XoٲE\+Db F@,\X zEz=΀) O8% E gu+Ãy ߇s-٩S'ӟt̘1y2?+S<#Ayc#ˁnhX#^;dm@/~`H gɖhQ"M_3 'XQY?œHH$),,DO=`՞8oFZC-x3`Zцݝ6mo5j .J#4$PNCT'_78h +[YZҐ0Ċ2]8[nśfXn4%b"ӳpF]䄵#ߙSS ru3*1Cl*9ṉ:tF`EgPC% @U؅ `dx E ]ve {4H|`a{C=Ӯ:r^IΠm,\yGaeBO=Uw@z7x4cM /`fxdk Wk֬Ag8„c?k% it8`O &L@L]A1 TU€~+]/ZVVsaT@̀8Bp ۧI 4KIVA"[dB_7sԫ4UiHI"TT8*Y4yWN#R̢ 1ħO!&$Ã>Nh@8Xnݺ !atK6K@bRk^y8-tcP<( 1}8TK6Mkދ {WE!91D*E={jAeҐO\$ *Yc@&9VP?̨>'=:ocjدti{و6qD~k3ax뭷 J@ph + ,kM FHn!MS!\_̙cŏJ!hѝOθFwJhp:8F=!t:5h, *ĭCkPH@HdjncF|z=0MR 1WM/ @Q hi"۞53AxHcLdGErWڬ ) D1 4nt>ABcHQg.y|^n2PIaxtmK7BtҒ'jsb}k"+ˊ^ ?^kUuyj"*PY%z-$roHURcq!ϨA8#*YÛTS"oD_׵@tЬYt%ގ;_V];w\}7nB%Ӌo~l Zb-;|y iu(⫚F( Юp1֜بLTu!$F|@.!$/}B#T!nLI祑IV {K"cxXt),{}6lhnn.U ^z%YYeݖN#"caӟ9ca(3Us)u,cT!%''iܠgG"G}s%rJ9 $n 4/t5-ĤO1]D|>`6|V`r(DAu !-PD@y42VA' "CЦ8Y# IȚD0/MB d$Ʌ?ίᙸqg3LvXZ6ݭ,5͠kLB<4n͛g*2Pg֩_XGw6 Gl l1~'4&L@p̃qGJCJn].F 3VܵVQ78~8) >wӥK+V`pDG.&+¯f}Z, 3bi0o0yw}W{ (dha;X)Sŋ)??cBuH5n8֠I{JݪwvwRA\ӹ\Z4P?q.Rxz $U(X-IHUDصk] hw<<I,%%򺈉"J B; OMd^i@%.A*^hen~L$̜9 ƌEBԴ/JqGд2{9 BBw +U{hcժU4 Bkq\~WAUR <dW}d~L_hKIFDT'h>is)S+60i* )]]!⪻wyǎ Ĵ!+avv[!b;1Fp:B3x"g<ƍo^ ~%l0yI/4 &_M%m'M"޽٢ҭڵUV +rssu: F7o t,.yw@ŋOP('F[n%[lשbΝ#D Ei`P|rSNtt3Rz^ F\UI@` P0:Q={L0h{`0]G#՞={H4iBd5ȠzM6,"pѴ s t \ L3+W,u H9W$BFWI߬YqQaÆ9R="z(lUp/~ ;ߑx?FZۋz'|R; 7oK>zѢE&M:J&b7t/7BS^n/|UDMJO49s*jt%94MJӮ/2U{qtJ*: k!S0}+;fc]ܸ2Ϳ."AECHu$w!I$n!ӭQ6엲e'pfn9hH)BRD$s*I C _<*Lqz@'Jl:)l}T:S/I,]ڴiK.Ŋ,h>F|i! njUqdnײ@6z j D)V*@4{$"n2P;A6dWqg@۔Arʥxb}GjdJUKKy(_ύ8iY:>T@o߾ǏWͻnn޼ٵkWV%>Tʜ/駟͕+W֬YC5[~}5jt Nٳgu0,..ݻ6ml߾a=zݺu.\@.cǎ=R&MVXѱcG!K*vZݺu)4hР>:t[ti=(롇҉{wԩM0ރ @j*u@i!EEEdyۣK.իWM8ü)㏻w3gبQ !ETaʕ"uBVqIjD-f͚uaۭ[78f,իadLÆ 8FJ:Zk׮~!5\_OnL\;d**/AHTQ8xL^-jਞH>3IDvݻw (:mQC'܀, @999ā7^o0dg @EtPFKg-|iW `QH={R-[?2 Em^)"`AYON0J`H1@Vvٲe?0B!1`JΈKiay{JRu>2Ѵ'@<2c!&5^=r6ydɅLhT9СzNHщp#),9 G @~`Ȕ|[u i:".=n]:Tb`_KAS2Q"C&3)dڧO׉Y !*I;CS&:*>[ӼhOX,B.|4g"f ]o-Cu`ĉb p $yrDިT ,WREFy(A׹YPw&$|VLt-Z6;vـoLW#.;JADʮGaHUEћSw_K2r)3R=#Hȑ#1I&QeۑN9Ry9㵐' j´ 𩽚X.-.6FL&3!Qe'2ğ|[?YndBBPx)Q4!.aR-ҩKn4fԭ(D񨰎>9,bR"(?b:ȖA34Rm۶.H 'W oHi IU—@TeQ!_A-e#ԇj[D9fDc#g2˂ PծF DpԀBjbh1Y4|oEsШ:~i4^ɂ€p¯kx|VNkS;eXI*PqeҢ*~IȇIEEErAh~۷{=H/i%KRuĒ"7+DiT0qFAINI_O*L΀Լ9χI܀3g" Z{4HhUJm5HA@ lQIOF)]/^n@jD +84IXw} 8(wލj&7 %[5"JFtQ+6^z%" ?9*%+_ BRŕdĔCs4:@p"P)SPY݆Yk3p(H!CGȣ>J%Se1hѢ3fhHuB. vB:*L.BCHi:ñNS-4  U"2T_h.2H&}`J=EkIJKC+! 3DQ"f@.0җ{c^!hAISoM`$41`fl֤SNVdNAxV;D> g&\3pxid[B o4Y? JSOiKdx䃴u3MKe( f Ө̽@Ha]B?H8Xz۶m[,kkLd*/ɖYN;qEA@R>S(mÇ}=|д'on :rIUB5[&hcspYY A7ΘT BZ* n6 ,lTrǧi=s8iI3jD_>=6qQ1QWO$À\p's9;q] 7Cm%F}/^_Hy`?*eU͵>ps΍72$k4’SNډO Zυt+A$'yhH /֑><|[O"-ܳgO=t}/ZUrrr"6ƯD/U7o^UuСׯ7n R ߶m[.IӒ@V֭[ZdOEu,ձr ﻰfpΝ;SNq89WO{워%7C4`FW/ܙ=wXL0ip͛aDm%(M#W¼|gZvH8Ǎ#Ӹn>l7T!!ӧKHK42dH,δWǃ*h!'ѣd<[S$'g &ujZo_Ցi@% )TkuReH++23&p'}{AoHAb*q"Ӑ"¡w֢BHd0 Ojɀkt i>LkO#CB]tn$M UCL6Q<3!{FRLf} bGLhM2ER19_16hG8r"z \JALL9c_y =.Mkid@ q5&H/7TЮ k ]v ]mDH+J tv}2HJGGH(,-!ѯѿh#k(ç&+M Hwnni㖡]:w\c %N!5ZG 2rO%?ȊLjZh+"'_y2;wTs((< v2 Bט<)lQGQ -ijQ-!>Ev p1$jI5 =Ed0WkϩhxHYĊ< {ZEle1̓u>*ZɐLpLQx+ i5;.ç 3z)z(8H솦k5Ҫ_# ۗxD $j#<"wX s/@<4ni$E"@'hG'`i)h,м14t3+-G3# q>="h6GiHO? VR2ַ k\t09P# 7KLA[ AUHF )p6hƍQ'.XL_C4l/N|Z[ڵk7τiFFLÂv ŝZd}mD)hS/'bt1R~XxbxL@"ɲrdLfÓZ/'Rz7>Dڎ&(PC1X``u% fD_j -TYJ2BW j5mL:@GYa 2ЬO/zVSnTjWc)sAMiY}S,~?@]`˭>}/qTM bu )3J%e0C|yoٲE8кSqADkPT֭KNQ@G#ݻw رcT2z}5lP3^mڴ2dȺu?pƳ۶m4hQyo/{`…SLy\VCi( ˗.:u`KcǎD ݣG#G-$+///0|%-Œ.$zH ?~jժYA".JmLgB@CJ vܩlx%5!U:vMka9 ϣ# a t=P1Fzp1[p7Tl&o <_n1֯_?!PƜ۹,NY;yHBiɟ YPwJ"w"w*kĔKR_ (ȻwxHyJ;yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3yHyJ3/V#{IENDB`PKzxEObject 2/settings.xmlr0sdBҴ@ $fMdG+aLR0VliwW 7UAHNNcʧ-yprܴ5q2>xc:"+z:^D{H$'HOi ?Y0ZLs|~:okw6#鱨xg"n@fB VVSY;)4u!n UT֏k-G#w MԜyyo!NF-C!:j5qL tfjgl:{}y~n;yD(][FTrB9ZXt*5z~=a*ڍFQ) DL)Ow7gER6x8ztq*}Xn@!Bؕdہ!2 iOPUQ#⾉bUͪ 0(澆5fB%#_ +0ټʈv5d0Ī`UfZ򉒭F('x1PK*hru@moWe+M8 Vժ9CC2~2FΖ'{0}:wT*=r-R;{`ZwI]>=0=НU:Wh J[Z'UDך}z;w 4frtM!ܧ$Ys+"^W,H{rmRL B F pbdoe>CwȢgi:F1J<| I8ZjF}]ș2;tp sCl>%Kk]2}~gS!W9Ui54kB7AHXZf[PK!5KPKzxE settings.xmlZnGSV+RqI`b%3YZ-}^G>Bό^0kO93;9'Odat59bCZqD{'YX8k3w1K 9xlj4ːpD"tZYe8t{5Ւ˦vHƛJZ>j1p?}Pcl_zlqaa)?57X,ֆvn@AgޑU\VK[M5߹8F5楆wdǃ;fjmdzTbK!MȽز5VcK+G~;egN,%^mvcB! uF4&ؠy_`6@DL,~E޼CmQc0Lf R2䮌ŕrrqrlqe%T }h3Om-#*3S3) cn Dr*@*eߥzVm,GRDd|3K W!`KbBx]nkP'/ >G2@,[zB!9J ɈjŗQ瑵̧~VJ4)Mv _ n`Z ]Ovh)4O6}kJ3[߼f.B@6c&㺳J8ZtAK-! ʗE3?T7n c3Uj%SyKY riR@dӌA 3| Ay$'9E> z$WϙWiT&y3wlBI2KHU10@cCWD@sASK}j{(Cۏ[@қ 3zC_9ŜVv]d븁|bӿFCUv5zH^@ ToWfSB7Ijq^<2#(u 5hOrJ6[_鏑z b s3\~ɑ짧W㯽{7z0߆wa}?pQxF/"^{7ދEQqEQI{zϣ'SQm"n@fB VV/SY;Iր*Ll*Ƶ;&jNڼ7C'y~ÐON8l&ʆW:VTҽlm<4Y8=oHx蔛JqXP(scVo*5z~=a*:o9RRnΪ6lb?w+AMqUȱ ܀pyfFBA''̰|sTqO STe>?w>H9P>[i'uX߯pр-)BU~7Uz: Lo|wJk-hqI1ܤCJ;"Yzb/hxQ/&T $ـm@ V;Af]PF3dq, xF)Qk$çh=!L@AӺ(*KF}y F ,n^1GcK0V!9~K=+{蟞_PK^a+PKzxEObject 3/content.xmlMN0b4vAL!U*~ 7qĎl {sTB6hՔugԩɔps9Js v1WK00vfŜmHҕM)W%mag䑓^G55UwRU|1mz=HiN;Q8|BzVM7>GvӣhcƖ@GwckR/p8 Oumk 40%8oC6nv ӳtX?PKI*+PKzxE#Object 1/Configurations2/popupmenu/PKzxE#Object 1/Configurations2/statusbar/PKzxE!Object 1/Configurations2/menubar/PKzxE%Object 1/Configurations2/progressbar/PKzxE#Object 1/Configurations2/toolpanel/PKzxE!Object 1/Configurations2/toolbar/PKzxE(Object 1/Configurations2/images/Bitmaps/PKzxE0Object 1/Configurations2/accelerator/current.xmlPKPKzxE!Object 1/Configurations2/floater/PKzxEObject 1/styles.xmlY[o6~߯hɒ줋yX1t@ZtlR@Q_CRuuԴ[%A9xn<uvk7$Ow?{+$$«EUs\ɵ[|PIU2\Db΍Ъ^R6U\Tamɢ++pS:h?UXbMM>K@tX(?ݭl1rլ%Y\QqPqcbB`3,T~ۤW-MylW4EMV|ѵKGmg E<=TqS6Cb;K%L_/oqųkIlT'mjtS1fJ<}@O$I;ܦVdt-;9ڢLj1Ť 2;}`(;k7lm(cheOJa^bGlawΤ508LW lXf0Gq"gڃƷGônTqV5AmJ~|8P2K 7 1}Nr~ۚn*Žmۈoz*ؽAT̈oԧEbћ+;X#t/=ioRB~;m^I[w֛ЬQ0ZF?I>Ӿ߈gY H>cD&D??RkHeQguhhyb^8 O,$pcg :X-.W|X>]^,O+c7=~}t&P]u7e?9oPKA8[PKzxEObject 1/manifest.rdf͓n0XͶFKUPHQ8jZvKhG|D P Q(V!®(F 3a)6PO-7iqpP1-j,HH'7_>jvYH+Ð1ąi0"첇3647(d`EIR0uفcFz?qXH EALwd=nXv{߰; Y>ZAUm9Q’,vt2TӟKHO0V3 =1DZCb$ds=x76p.8},p`q7px}wgض| 9px[h~}2p:র9VXEY;,L.p9ǓƯ58H~,ӇPK rMJ엔b). Ef"*o p o0eϟjZX~:SՈPfu\i/O 1-+y=߫#Ynf0lo暃rA"?J}:$!UhM[7$j?ڪto+dɾ<.}mŠ?rTJ9*y<&*W} bngEi(/JM _kIj.igS}J|wChg[`>`@Q.o%Oa_R:QLag_{mΞhZ2>ROj+x/︣A/"Doo2}7ky3K?ٳp/!`hl; /Hp<}3Ƴ;7%*bLM9 ~f@)^ɾaF WƋf@d qIŗ\%HD|HI|oGɾƗL' ^;h]4 kX@_>u ^Ksl$Syaz0 tQ#b:R$\!Y%R]t#[T}m h^Ff[m KWjۢ6k<!3RS9y_=~Cƶ 33T1datٙ;ң7 t$xȗEq{N/uBӜr@qC/K~JZ1JauH:pi`LheJ׿ll~ٛGLZ P[` Pww.GZM:^_±Ͷ-u,&ρ&Ϟq{_eSOLg4Z#"MZ$J>kٿ5ŰX\ Q1kXt 4P惰peZt",d$tS7b[(12OD"e 2QC(zW猎zruRl\hރ:=&(R)@Ѭiӆ &4%™tFN:hYt+zә2 5[Ć&P#%0[Ҩ_׌IlChf: ChF},dq,Q:3Y4]P}_*i4xK>!,n^rtl]ndpW/J3OJ35}.4`AE6mŲIj: ژHm*1y]H} uAΤ#'sys_MM'GK?]D^fOSDy'gȴg~a18gM_x*>PKK0s #qPKzxEObject 1/settings.xmlX[sH~_u0fB-#&r@+nnDRYGk3LZ^sq*7K1DISR $!7%VﭿlB؈h' v# k췛R  d 6h QQ#ۯ0"s6բ(o4WMӪݣhH ?KHE)}'*ّ|[nF~p*~8p *d뛛ִ$(KwI! qSZCWE<>-1|y|tE\ů$ N`q>J;_-C[DH-;+=<D~>e y(!AD ^<C@ `% ۗ310e {'ۖ5VISaۣfޚ9n1n ~躩ĚhuW[_O|lun 8] ⨇2jOrtHO߂Z;fųbS L8菰(qDiX1 &)gFQ uf;oog 6ASI ꧯ{G ~0p{luFKaV+ W'"ZN煅F)L;Q[ _zgx:6-/9ֱTxSYYfRu$~\hȪj^\]2Tʱi8f4q`bu;I.%]Y` a|J Hg<mS看${˜xHדdAFq/zIn\<-oPٗI Z=$3JHSv, -f$B`&ĢE_ bz^"BO+mVԻ;h#^GVyҕʈrx`n}Q ?Q_T/}#iPK0RePKzxEObjectReplacements/Object 2 s qcd0dFid2109ӀB@&'C7#%d@"(5('d9Y 6@R'3)($3?O!8(3 s @5 `>fUPfLFv f6$ e)d{u6`̀$Aj^penR~]@;b ]R@ڎ. ~4p8's`n*>2!N)4i23œf;THa8!(݊ >  };̍nW#ƿ Ts#(ox Q2P5ކCi+iJ ԀzrRsc 7!H|Fcnj5g9< كj;ȣ s :7Ӱ7KaPK PKzxEObjectReplacements/Object 3 s qcd0dFid7p203109ӀB@&'C7#%dzz?T8 T S8\g Hr1W& B h] K HaC?idu*᮫́kaF&RiR-(p (X`*j "daNUVV0$ށxn."&)n8)*& PKHR5JPKzxEObjectReplacements/Object 1klWލ&4idmZә< Q"Euh%Z(i6w]!EE4@(~(B) DD%RK xax͌|Wڵ;;w;9cC? 'Ak)IуDob+Ն]t_<`Fakm6?dDx?7` Qhxw2NiqszH.;j .Y騽֥*t 4-+e*=++e*dlhP~Y)/VMR^63Y)/VVY)/Vi뱉zـvh'?JEm8W,˒K Y^LŢhFa\ݴ4:vPV)y_w=J?a+P< K}m>(ޠGm"!{ud|n<_h|{JZXɏFrlx:*7wTUshMA4\f{_{@ZyzJ@O/ O̗@GS+AoCV [6wYD_ mbhtQNv3=SWǠ[7e04 ?s | m/Bg?A~7A`Z~ /M"7(;}ַH3O|1?^ثȧ}Pٯk039ᅣ43zP΀}p]u>[>_ߺ  hKY'D x8>ڇp^r4et. o|p3YYWā{6zg+pM~vsT> 'ɤ9B|PD% k|x;g.4?  ==}wGh_#0ps$9׊]g w56pxn.φ< nn}iM*?O-ضVgF C@9h ;ҝ>~H/mt3 xZ#1.~K|wG\$EgybL|Sf1SSƦ#/̸4(wlOnhgqwD0Ex;Z17i"]xTq_ux Fѹ9VZKwG\Cv)Cvi;^ w̅yJkVZKwG\v-׊mYj~f<'(%Ou'ֲiieBi-ҸfƊE#RI'o3iv&11B{ p w93WWnjJkqwDEy7Y6^&`{߅95}PKo~ XPKzxEMETA-INF/manifest.xml՗K0)PT`yd +XU=WƙN؅o_@TDM%~LO왉'轀 <#\Qe @K b6*Mm֛j3);5:n)Z)o` Wa @ \.*g5JQ瘪ϸHK{aX:5>#Ey\"aߗjk-823P(XRx'2vYt~OrZ6DFM:K823P(X:@I闣j8Zf©cqޖ[4wK~:323P(P@zҚԭvtbަgϚu;mi]\I TԸuOJ?/5׵G=_(@,UQd=קR[7 NWʧkwmZ&[jm,?}4kH3P(P1@iӒz6GUXB+ ugoc{+tT^w?va @K o0鼖m Fj0{W:ooI o4lsU忶~NKJ판sf @K og-W}HJPڞҴ(ctNk顜ߚ;⨟T1«=<7j.G.3P(PJjJgZ0E;zSmgcX8Ew>prM[ǭuOsW VfP1hl)7F%ڍPk{"C왖)iUoz{'b\Fƿט^e @ 6N///?Grjn?.#Z:wem=j_Ggjsù@ƠZїc,d{ 6Q;&{޷鋏?-jqTwtޖm93P(XV]*)FgJW\SmWkno}o:oxnJϯe7ڱ `vf @ D5GU>\_ލ.}Dm?#Ku?3P(X:둞hez;K90Fk~iT^35>>>gg䈩=;73P(P1ؠennfII-Aɹ!݊d6 c4~K"85 [nһM6gg @)^m RS[[rr/K;o== nK{Hm;uqY&is3 e_GZ4-29ל31nQ]m&߽<ZwfP(M/|AJ6QZwTהS4jM?kQֶ]pnN263P(XJᕦ排.GS{G~\=g;FQS;3P(Pl2ղ'?51Ǫqr_g _(@˦>8nƞqwgnʵ3(@Ӧ𖺎!Uԣ#u꘩WJ#D?CR2+yvok7f{ˋ( `(ZߔvΩRu:WU'ilK5Lg%0^-FRڿG<9yҖ[J_fP\bLwn8].k{sr7ވc}t^11h  @07, |_|kG,4Mto`+@:T ڮ_}-yKP/Z:zvkǔk  iWI/JRR9MZ"r}ћ4=OSj3P(PN[~>J[ԗ+٭^!.jk'9 @:l /Օt:ԲbJ-XV<}*W6VNE*W27|\( `(hcpS ZVyyоrZ)yMoKޟs[2xVF]Kѷ"3P(XopӠBw?3xRusM}Z~-z}Id#tc @!ȳWQϻչH,3ocl}G9+EkW===h  @0K@) ]w!:ekq=KE1iwo^ʩZş{[giR U  4M">fڴ:o59Kk%*5ǿ>;GK7bMKiy6 9yfP(e-Ԛ-Zg{XQ9%UgأR TD-J{uz/3\:Fm5}QԞ(@7 OK?u#Jé=s|~~~Y: 3P(X:ԙ6ݳ3rR)V)s66_M_|i>+{grv"9N*t[^#vcIa @ D8j=^c1RkGᷟ?X3:jWki9P2~9/;{ͿW=g @Rk>F+*G]˞m }}Ć.Qz/u߳ @{LuMK2 uUx799h{7j~D{vWH፸ o^OJQ3XuGL7u~\zJ;/yyy4f Vwra~g7|~_)=/Rx#j1X=[;bs;@[rg)lRߣ{D`qW5P|re w:psSmz5Qm[SHv^;KB2 @ T}R=JsQZ#hy#ދ^jl2?~OSS[SrOgx~1؇(@v"ϑ3ͽW y;bF_n>ǿ>H)qv_#}lgj,V4:|fP(5PpTnG}kJvdz-Rm ǪV%eDDy-Kjc  ֩6npR3JD}NKGl]:}m3ڲ eʺ{ES[\@PCys(icPJ;Vo{YJ8?5f-zxVox~~~{_D@Ơoѻ__\ڟGCiXfP(\yyI]Pt-RXB<81H2iiw{߃q8=<7:J /ge_³k}V  @05P.}.WWr,T/tj3%)G[jsE[l/󺧇ןC  eSx9 RJ:NG?1{"_F^›s'U糜w"۟( `(HԺsmɹ,jQ{}9˽[:5PK m Rl2qy@?3P(Xo קZYșnZw- Zv^$޲eI-ݣW*-VckafP[Q /xDt^Ċ͐?FM}^oUrغZŪf` @ 6;+a ںDuAt냨mij\.'KS4s峩inQo-JWL}￙z~Oxzzzg1@j.7G(G?(Ve}-DrutKR5PG\[y2 yҥKG_27j񽞫"H*~oe#///i`fP6XF]Z7葶kHDj;.kE9ىW ᖟ^)mc0 @ E'RQ)Pl?jJoU4o?O_|clq%ъC0 %XǩW oH?^ӷ_~-mwy*9H( `(riւ47\Zw07z||ws"6fi93P(XtRKY7Iv:ϑl~-߿6:{~nKc4ki/U{^/-Y@r7Mӟ,FYtA޾7ݏ{փjZ>??8#3P(XRx@I{5[8c omb-EwK  N$(09@ĒZ#Z"Sy?_'ShTsw{wu6:ù@ĒE~nOW?J+'E7@PCQOplfP( @ @ @@P(  @ @ @P(( @ @ @P(P(nL)!IENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/gl_linear.png000066400000000000000000000160451452276323400326160ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME 96ƀIDATxݱ4`O6H:\Gt ]\Gj.5{Б-ȒU6|eY㣛a> )@P(( @ @ @P(P( @ @ @PP(  @ @@P(( @ '?|à .  @Дa>Kwww|? ?랖㏏廟7_%?g<0 ïϯ_~zT.`+P(XRxgӴݜ?k)7~># LrMҙ҂pnVP#kނ{RZ,.+ų?go oϥ.3>X@ 2{ҵOc Ӵ.'5J@-ϻdWNS)P.+P(XRxЀT4-4َ Wt /:5G%S1Oӽ@VP(ۧ,ɩ)%EӺU=a @)ܴsTn%UN%:h5CZʳ %ǥ̥vSNGk}|=)Bֱ @4E'rWi,Q0zǝD~6>o;ӶpeVP1 \'T*fKdg-ɝs@bIj./H-mo}Kk!ug,-Fo_<<6׭(q}J͋KVP(ʥJ֌, ^717"o:^9cɽn}Ml3ՈodFFVP1ȴ]WS-s%&[u廟>%Fzo,E89+P(X+T[=;F{~{O3'>[ƝzKf @ h6 nSN!w6K|sq:->~p9tkn-Q^}i\(@,)GX_Z^jghs-6˹ZO嵚jӧOcyaVP(eZSq9ukzm6+>:2wzn9isp>VP.N{-3"-e}JS=qt 1Zҁ/VP(ڨ~*78KTAKuc须g׿S]5Ps˧?VP.MMI՟.=h1YgǷ["@+߳6( )j5{9)e+ (@'W=qirc{ (iV.6+P(XMͽqCJ%gohM?_Zj07 rjc䥟(zSc6n( )Di|N+%ǟG@t-Z˙O؉LuEj :(@' RV%q.zΚJF}Z*[yxx0IX@rۛA- -~G/߬@b6jw뜥Z̝Q#h9(@Sm&|www׷]ׯ̈́:[iv:͆cY@U s)^y_-yJz T=>ᚫÖ5ʳ SOKl>%Sir1vj/N=ǜӧ@PMv+TK|fX6[dZ}@bU^Iuu|y~s*5P@URw @pb*Q)cB N{˚k6EN«  @ДS@RPSGmŒ޻y]{]*YK IgS Tۢ뛛[(@'W=:umsImsv[JNw_=:3vkr-ݮcz/?}XVPN^B>Z7r:LS׼vv߶FD5K5  @3ёqK刱x̨y=5ܹ󻯆k==NG%q_:-Xrhc  )RxkSw[[3uNJD:zLWz>JռWvޛhIQSc-z`gE~^,+P(@SmZ62]r{mo{ru=m*Yvjj㯿>}ꋨ0+P(XDfWڪ?g>~/ ߾}Kڿ~nipV%)bޢ;>)@b]-NrKԩM-މ~$3Zo|=lVLVP(\dMvԿ85ly~ǽ[wmVPNՉ|jڕO˰mϯt]N5X8yOJ=Q{ksD[W2@PM࠱,Q#Un~e%c͕jjutbTmM2+P(XM=<<|`QKR|2bNcӺ Fγ;TJ?5uAyVPyK˩WJElytТܧJ'򖾧bY@[JuͭʼnnQ#]KVL-۳ןl+P(X70|:㉍Ƿ:z8bȞF1X{}ųރ9}E7a?i@PM9m ԖzZ42c9gz TXtyꞎe @yn˃-#rE:1 j{R(@KJE,^1iq\gH^͵荵[=oΫ  @Д' dwVkkԘ~޺sZx (P콷:  e>tڦWs玿>J/m ;ynS16>( )r\mZﭷ5Ps=:b X5uz(m yFO@  N_xxxa}fN*dgst#ED's;^3'֚{?gq]c @[x oE,M%s]smo 8J\; ӁVP(hcBt'-Zf!g ֽ6 P+P(XRx Ǝ0pZZL)7UU=D3#Ou^J'F_#H/#Ͻ7  @4V.+lj~#uB)%Jg5zW!TJS@bicPXu#bJ}ωzݞϜtk M[+P(XRx+-ے8"jZ,z\-l,܋OKSK'ei >X@ya[ωˉYn]FJ-T{a? ?}?58)G2~VP k1wq«1W֯/>}d5y9~$7+P(@SlR؂o-Tkíشeַ zų=oT[:VyK] uOb @KM,-GRK[:N#ճsx{/Ʋt-o_<;E-YϱwڱDt*ϙ %׀t^jf-iq-ij펖z)7M|^rs,i4o]( )jsD=TMZ3ݳk9cUumVPl&ܘTR.ʉKɼ'm  @m .jZK5/]0u9j,/ obr۳/q}KVP1iT넥_•vWH=v\}I+P(XRx=o}^QLnOx-0Uڎ@PMQET\cT?>#gh@bIѬN9rSG)s)mǩMut:di; @4E MkyU̒~(p9?}MB+P(X70|2 Q^iWˣe˫/ ߾:vOc9Ғڬ@by ZѝKZJD}JvO%Stse#r  @5P\RXΣV ѵFGߢ6[mlƬ== % ޚ6ѝ[%mEyKj)q8 +P(@Snad`:P=^ݾx6||T_=ߦ5NsaK  KMSwwwї~6 gL-]óz  4dytfjO { ʳ @4E 4jKw6QuQG@KJϏRq@bI 溟1^+CGp- _VP(fkrkv廟7_5?'Z  %JFfxU2EJN?sXNe\MM?S  0+*Ƿ7O|s.VP(ۛ?  @ @@P(( @ @ @P(P( @ @ @PP( @ @pU([ vIENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/gl_nearest.png000066400000000000000000000205161452276323400330030ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME : Q~ IDATxݽv`GM5ZsPNݩsvg\'TP`y  fMq<ܾrP( @ @ @@P(  @ @ @P(( @ @ @P(P( @ @C0<#P(XRx@~~zz*2epFFP(<l{?ek߿y6{׿?oZۗz.6@ǃji32/~g˟_~9/ueS.Xr|{8FP HDfm[ߎ[Ҷ>ޚ9W6ޚe:pyԺ?7Sf @ (WEݻS46ZѴ@ok=WIWMU-P0.#P(XRxP +i3|eZ(ڳA^)-(%ѝҁXFP(rvD✵*Wuvz>ujF 3 % T\2JJ:5i5h7[ݧS-3i?`#P(XRxִܼ4&5)UIZ)j[^~9{QT /&^;&[$ @05P&KǏSu!u}ڪWNrZqz:G?Zڧپpˌ@bI݀׎{Ri xSJ&Z=^Gt'[Sx9='cȥgߦ+M\s\jSeGt U`m9>Fa @ N'Sے`}^RsY-߉˪=8N=ڳm.ڳSe>C 0 J&]m͐ѓ֮}Ώ4mmMnFz]?b2]/.LR-D2 @ ED&8jY,$rS>?{]M]jcPG1mGk,Hs;?va @K o0GF}U::-q鼵6[ijOxF]K5Gl QNm^@bDd[v O}T3QRώ5ie9uRd='czݜu2:K}Nm/KQ @0m v6#[֖Uw5 Y+b]=^ݏ8GmZ_N^TS꺈GGri}voPle @K 65tb5’t- r׺T*樴SIZ$l4MӋՙnҙ%ψ#rN-[>( `(TMrj޾}۴̞5J- WK޽z3Թ<G#nٗ=[,sFP:ȵ,8BϡuDwn]Nmt^ƞHɺr)+qޖT>(e @K Rt.w׼s_JRw>)0}w]۝g2yr*VѓlG :fFP(ZqtZrs(=kU":Ygz6=\z>";ז%ݝLd @M 3kH)/Z >H/\!1o鸕tMӻWo,}DΣE.EWbλZ\( `(?====wZRs=>JK#P(X7ۉ=}rbm#Mן~i>9sujeI睃( `(7U|}*[i[m=W Fv95@z~;s񑶿gݜT.6]!7Q\_GOvc3 u^oEN{K釚c:־wR[~G|JX"w,#P(P.QwzzzuO5eFA8;5L,kvR+Ubu>ZE_5Vϣ@ĺd¹)Cm"Dwnxym9L=-N2US]50}=/wY@PCD lgKBԹ:b@/k:}],Q0 um N,kH7}^O#F{մ6r:K[@b]*#%]NkgL;iBqR| oy }ִ]3VcY\XFP(\A*w\RWTZnt hI:5P6#>&O=#P(XϺ6t^.Vz.Z&u2_K]%3b,vg @Ro-J[OF /5A꼗\ koJ#=Ab[qqc:ׇ( `(Z*=OϽ}E{vg8Sej7\Zg<6%RU iSxK 땂;"5p&}pSxqompI{[;Vcs .=;\%m @0j+^`k}șT-j@u1ҹk[Je55=q>G󸩇*g @T)K=AGm^۾!3JZSxR򵩖eshkˇuN%/ii瘴]#P(X} /gN壧jf)ؚu#NʥZz,sLMv&0_N0|Խۖ3ډiO+g @ J@EmagWۯ^jaJ ]}.٦{|(@W؉iRyݳkkvJm rݳs闼__%l}~U/z]Wn_kҍGZ^׎ϾW8]~uݏڳHtDͳv? v"sn&.{۟z#G /w~#&j&Ѝ~Q'/I,K]3O9~G;p pjk&Rxr-w)@PCD TJ7Tmn;f3מnZ]ùy_"e?Gׅ=^5RnQװ}@z~e4.Wڧ= q]D|gkoRtgLIҎF05gwQAIWV%[Y~.m?#P(XH홺;sm2|e^FږKϷzr闖7OϷKym3zv*. @0Ku"j1*5VkQ'гVgDGm_qmkMG]}ۯ׭-FD<#Z[bXG=϶.kk5ǽqǏS MJ[K:^-zijRh5?[[W5:jr\ <˚`^שT],#P(P.Qճ)WMSs2-xr_VaT'5]OW^f3u\kS :G?{>#۟i|mz=ۖۢ?#P(X7щAju:gѺVl\;/o8Q5YW>@PC6KG妍z6m(H;AtjUTS5Ln_ K-_S,#P(XM-y)bkY7玅_)i6ߗjH5ϖmSw@Ē۠$U= 0sn(u};jh>eV=7[n{4Rt^o)g @ n+ѝqG)s|mF*ֳZ,-R5X-ZV'GG?#P(XRxSkyn5[WrKs=%R6%WҤmsU9-@j@9{2kg˯m{ֲOɈ5P:T=ԞwG%m^C˺Z [R.K5a?/5֤Z;#G8[ߴ]#ՕRu%ZeFP(hcbY#s2{M WuKA>Z6Ǜ-ԡhc0=5x@bI}fN=<_`v/{\yܶ v=[Nbk=WroE|ynd=rϋ3bى@Ē›][S-=' yK6u9j_!J#ѩ0i @0A-y~YvZמ]K3u{Z#uOv-=>>NӤhFPizzz}ý%ֺ62ImwwzR-L˹,H}o9𜶛&Q@jEnzZ[sZں65TRSjXb=Kڧ@z6MGa4CMz"w2szv.Imݖ}9޽zv ϶gthc @K 9ךbƨ}{vd5oԦ o)UfϿ}hJ9-#I[vs0 @ E Tg{ zѝ:}5A)i/Ͽ}?uB~=[1A~EtOu県@bIu1 qDJ i_}j*?Nʼne뽳e9#&*/S @05PAjkJj>N￝9CjK/rZ[uEׇk|xr5Pgo}\=^4-a @K CQ)Ckےz7Yc-鍞)ĵsy^\MŞi[?u3_ :@b=wQ2ۚ;zh{m]gOqD7֖׺Z'z4՞ُWy{+xϴr]g@ @m\}Lj&| zu+m vގޗ}=b[<%Rt=Әeզ!( `(j`EImT6=jԼ*5PkǪ1j;uO N䐱L#N\\+IEO|m9SH=ҝ_J>܇/IJ7( `(ީ&~}S~;%5L]mkJeS=#3 %;H2RiSJ]9@, @liK||QnRڒt`6k+5WΞ*-c0 @ E ܀\TkSK?q_k#۾%uM5>c @K i͟Ͽ[Lk}oM^ߦ^QuRi[lM JAHKͳ[|^n.EXgIDATN\J ؀RFP(v7Ϧc87#P( @ @ @PP( @ @ @@P(  @ @ @P((aqYOIENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/label_gaussian.png000066400000000000000000000172031452276323400336300ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME :6?^;}P(  @ @ @P(( @ @ @P(P( @ @ @PP(  @ @s(OOONp+FP(4M?痟y߼yXcQla @K xgKYrūo?|x_s_jk 4\(@,D̂KYҶDzX4M_>L^+` @ (žRe]ΕjZϵ-k|ZT} N@nzlJJVsEPSLm@ E-26kѲ.+UU!W5ߣ!@}FPt"R鍚iTMݓ95/JkgR-1r-3A@bmMգneWYR{Ƿ3 @ E DtIG/QǔN-?Zڧ?FPt"\ssjLF<\tǒr״]}00 @ EڳIn%u75Gjں/5jRm r;ҵwssUr.k( 6j-']4]ӛ7ovH3#+]ז=kraN}朙(@,) ȥRr0C-5LHǵZjעTٕ:]z( `(:֖'SQf nُܶJ:GVפAˮftW%5P(@,m u{xϴLY5`EgGҿEuM?3sߵ\<qjA% ӊ( `(jPZTKZ6{3F5::5Dunl1=:sw@bD>鼈6DOiy5Vq:ٿݫ%#Vhy~(9.m YxDͼ;Q:z3;QtQZ{؞.> @0m :Y@լ9:=uO5L^[6˞)kZ.D?ýu~Z(2 A\.'*-([ ?5m|ksZ.rTN> @0m -k̙hOm֕{1n˚ Gkjӵs͏Mm~[ԺNVMbPŇ@bIUpeAK%鶵!Tw=ZunVHso~n_7o\1B7V͞_{ )1 %W(:mѻ[΀Զ֎ݡ΢l}~׏Rx%;xk?EI}cf @ s mYԣ.\O7ﱺrs!>RH59\=wOwj@kYrڐu*}^)uZ>y˵X>Ơ=7j*1;fj3 @ E Զ)WҪf̙jjrSkX~x=smǤ@ĺm'^sC[37d(~=U5-}GӑR`|.v}7s=FP,&0C{k|מEKkk~Z8r幨u^JdaG=ׯlf޹@rN9#aT5zW׭o{^?cwRZvcwZ@~y@Ēi!\'F\L):R.ūo?Rw>-}KKs0 @ V5P飹%G,IrF5OԪԓ;gqʙkΖm[E xnǗjPj¹;j(@˦.Kp =3DZ"ȹ~??;kPsU>k Ϥ2 @ 5P[J;ȶu[}j F{r]QZ~nJ Y̼_+W<ϼ %.iYp4Uô) /GFmMp,&|TW^^:sӓޘ( `(hc0~j"^FHKc3۞6#*w Ca @벝GJ+Gڶ[ ʞmsۜ&] @b]E34zdkVٕJFD@~g=\9]):@PCD)WS:4WӲ^jtg?3T T}/N}Xrk+uO@ĺD ohi.:Y墨rJoMG˟<@ry4\-)=ZC~}W|4Mj2 uӻtZ*FZ^W-)H]Tjw)J9z, Z,i;˳Ys]FP.5 O8*Hu"u^}FScXDjtsq/fd; @0g4uӉSLmZ^{?~:=Punn5[jZE6 ֥:/Ϙ;0tfvtű[{}-Y;ݗ{G( #P(P_GS6\=j{^k={5ҵL+9ks\Y'-(@w8ȣàBgBoq w]TlkJEۣٓ1FPNҞg51d}2,=ibm;qW+e?[=}GOFP(E#с#P(P1kRRnZr 5eMZ5շ;vB_Zu5e~u_F=#g|J;r'ںb忩{ ֭RxC{GYwO0:uWZ8wjSxGIx^KgG{{0KcOj?u|OOO@FPn; oTAnsw}m-d:|̯%\wk:N*[Km^Rx@M<lϟ4~I@MRxI[ Qǚ>»)<TiIGtM!dwH~?n-{0xI7~ 5P@SRw uǗCы ~4w]DXQ(Q Eu?};nj@PCfGWXPz]ڭ^j *YʥG]meT#3gϞ9 @z]ţL]i~'+|R)=i!}kr4'mמ(@ۦJbG, zBĥi\skr4[.$!tHFP(\lOG/Z]DSM/|tQ3;?lۿ;u=ډ3vD>q.ZPRߨA,#P(XZLxp}Z6c2b[te2}R8⊚:ܾ|E-Xb@j'v[ūo?zJ:)Li T}3;&u^(=ZKD0xG93  4MӾNk K真_IZh*dO*g;;{7u~rg[4@z~[{1k}A[Z^m {FK@PCT `oi]Ӑ)\oV##3/:p#m_~㣗BFP1љէ {'Kы y>%ėekq߆o0 @ 5PqtK>~^K=Bjtz.1R=Kў(@g4u\v%j-]}1Ixr퇟OϩU[K?һh}xxi޾}ѿQ(@NApij&Ug?Dj(Hۗ.ju|kۍNkD+kszVgictT|Xͽ{2 @ R.+5R%u-@: QrNP!j2 )] ~{ݞw˂sdk1ͼ\Z+=ݽn?j[Skb@Ē<.z]}ٳ(#.[3k_J+G{w]"͖wc0 @ E ~֪Ե2Gju%G׋Xvq\Jj5{(@, oJN9%F,|t<`so~no]#h> =>>۷~( `(j6.47oJA6=]ɞS #Wzrf5,k(@,7xzzz+MoMmM_Hs1hvH?C˿3(@,*S|{Nh9!J]~,<׏Vm>e9n9[:@PCQUYkuQ"[sG=Zji ͛]s_3Vzϵ,]St#P(XRx=G[_qN>Z_~b59%Snyf @ sZ5GkiF)YwÞk}ٞ =go& nqLu@Ơ,FIuΦ ?\ؗte{W//ƠՎsV֤5_>@bI "W3wtOZn_G#Xsz_%W\#Ѝ>wW=t7#P(P@ fz\}~QkF}*9ތ@bYLx0ňm#R|C߹iߟ}QQ޾Ocf @ 67ZֲkuWu5w阣ū_;qo~޲art>!#P(XRxZ-'GϞkyud#P(X:sزSzJi/5;y=Q$Ury}H۱( `(jZZCzj~o?~8>(@,27zw:VۓK6N;k}\o8 @0m JAR19##-Y/Uc}xxpCЄ(@,m )G]k%^A\zt$5#P(XfqyfYKiب׸)Զ,D@,CKiYqRǫ1X;W%ϝ=Z,A5P S 42{Mj~]Rx5ҝN:sFP(=^~l_smFܵZnj@b=w FnQn!g7ޝ^#"( `(jTZ.Wի@*j_>A#P(X:à- rTe:dQصmJGw"o˥SUZ` @ (Fj~&UUZo^mRKFlI \(@,vӔn%77?<<ϟMK6mU}9Is=m(1 eJkHE|w亩/ӐQ@PCQ4Ϧk87#P( @ @ @PP( @ @ @@P(  @ @ @P((@7фfIENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/linear.png000066400000000000000000000130251452276323400321270ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME :,l9IDATx1HPֺ\c|< 96aslO_}7Rk*푁@b4drjԑG0wZLE@b)AFܜ5G]=xھS|2P(@S@GXz2?G[}@RRJGTJE=֎%gycMmc`  ɸ,}bs^Rh2 W! @4EE-=zȱ/(gUq"(@,%}|Z弚e=_/:9j9>7WDX;T}3g zZ{]^?Pc@R۠Ȃ޵R='>3/J%׷kα~]3~^s^zw2P(XJx+J=m՟:kz3{u/޿~~,o՚$ZkFi?2P(@S@mTߤN[TMKדk5W[aK.(9~[(@G @K oElS)REjRgtA̵Wry8dP(<t.CoWַM{  4NnGK|owIOQ  eKx#z[Sc+euudr^dP(cbTڱ\K}Ol#buŞIpK=# u7Ma)]T&/޿~~wR%JGXj]yQ9 2P(@S.z|9cSNKƢ"IjARkW*  ֥JxݚKLs'2VJxWcp~ZP~x=ѥR+O @K ojѕw$r/*^W+O @ hʳ+dn9gd=~isRO{(@Kno*/z)ϘND ,U:dP(WPΫC @% Ey_/[J߮|N+J}2P(@S1Ԏ@T?I@2(ۍM @K 2D xr^{d0Fpow8}uoQ~ M4-7'@ 1(*;@pAJxy4mn{$ւ^&s[Jw}@U.Ӿ1}㻽Kckǟ \A?dPvJ^Zk~KeT)暤>s26D'nm%k R?(@,D勞X[c=k-֥^JwҪr w꓁@j7|cLs ^s|%/}kCT}2P(X&OL})-cmkӷׯ1+RΫC @ h1%e#Oa^lسo~ZxfǮOv׸_聪C @K ^JT}FR{\O (@,wHFOIZK5{ӧO2( )zvJ_l\ߥ7_uӡ~WsѣoFQ  # ['Or5*Dk|u[vKޛZ?5瑁@jm{ZQF3 8J׮{"#% u7MӃexZ%=SkNd>׾L?7S$kg}^JT515P  NzzbdJ\ }-rU=/:/#ݧ]dP(D>7־~&J#0}a麻ҵ±:(@,% R{̾1(@,%<_vDu;]1/~?_[^6uO+7eO׈s  @=P遺CD>򟹶Jsi2P(XJx(cݞRHɲƭw9z9SsJsğO@PMu}Qc9ګrG|8wtݽꅭ]dPw-rPt*2N9ǧ{C @%-UZ;lWܚS[[vK@bA1`TgL"9F ڞcbOc @2ƠQib?HeVKǿtc2P(@S@s^@ξ=mf/(@,/ƘΖDSudյt.11(@,O]- =/Rkeςvx.x  @c 8ީk~cԾH{@bcir'cROkdP(聢Y^3%}o;ip{ 䐁@R£y%ʁ>Nଲ P*I @K K1|<}y𱔔um-K8@2u~9%y,/>:ӧO.." @4175z|H  10O45/9=]S}@=eK%yOKCۀi@c[롊1:]I @? n@$( )z"zj@P(( @ @ @P(P( @ @ @PP(  @ @@P(( @ @ (/IENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/nearest.png000066400000000000000000000205161452276323400323210ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME :5~ IDATxݽv`GM5ZsPNݩsvg\'TP`y  fMq<ܾrP( @ @ @@P(  @ @ @P(( @ @ @P(P( @ @C0<#P(XRx@~~zz*2epFFP(<l{?ek߿y6{׿?oZۗz.6@ǃji32/~g˟_~9/ueS.Xr|{8FP HDfm[ߎ[Ҷ>ޚ9W6ޚe:pyԺ?7Sf @ (WEݻS46ZѴ@ok=WIWMU-P0.#P(XRxP +i3|eZ(ڳA^)-(%ѝҁXFP(rvD✵*Wuvz>ujF 3 % T\2JJ:5i5h7[ݧS-3i?`#P(XRxִܼ4&5)UIZ)j[^~9{QT /&^;&[$ @05P&KǏSu!u}ڪWNrZqz:G?Zڧپpˌ@bI݀׎{Ri xSJ&Z=^Gt'[Sx9='cȥgߦ+M\s\jSeGt U`m9>Fa @ N'Sے`}^RsY-߉˪=8N=ڳm.ڳSe>C 0 J&]m͐ѓ֮}Ώ4mmMnFz]?b2]/.LR-D2 @ ED&8jY,$rS>?{]M]jcPG1mGk,Hs;?va @K o0GF}U::-q鼵6[ijOxF]K5Gl QNm^@bDd[v O}T3QRώ5ie9uRd='czݜu2:K}Nm/KQ @0m v6#[֖Uw5 Y+b]=^ݏ8GmZ_N^TS꺈GGri}voPle @K 65tb5’t- r׺T*樴SIZ$l4MӋՙnҙ%ψ#rN-[>( `(TMrj޾}۴̞5J- WK޽z3Թ<G#nٗ=[,sFP:ȵ,8BϡuDwn]Nmt^ƞHɺr)+qޖT>(e @K Rt.w׼s_JRw>)0}w]۝g2yr*VѓlG :fFP(ZqtZrs(=kU":Ygz6=\z>";ז%ݝLd @M 3kH)/Z >H/\!1o鸕tMӻWo,}DΣE.EWbλZ\( `(?====wZRs=>JK#P(X7ۉ=}rbm#Mן~i>9sujeI睃( `(7U|}*[i[m=W Fv95@z~;s񑶿gݜT.6]!7Q\_GOvc3 u^oEN{K釚c:־wR[~G|JX"w,#P(P.QwzzzuO5eFA8;5L,kvR+Ubu>ZE_5Vϣ@ĺd¹)Cm"Dwnxym9L=-N2US]50}=/wY@PCD lgKBԹ:b@/k:}],Q0 um N,kH7}^O#F{մ6r:K[@b]*#%]NkgL;iBqR| oy }ִ]3VcY\XFP(\A*w\RWTZnt hI:5P6#>&O=#P(XϺ6t^.Vz.Z&u2_K]%3b,vg @Ro-J[OF /5A꼗\ koJ#=Ab[qqc:ׇ( `(Z*=OϽ}E{vg8Sej7\Zg<6%RU iSxK 땂;"5p&}pSxqompI{[;Vcs .=;\%m @0j+^`k}șT-j@u1ҹk[Je55=q>G󸩇*g @T)K=AGm^۾!3JZSxR򵩖eshkˇuN%/ii瘴]#P(X} /gN壧jf)ؚu#NʥZz,sLMv&0_N0|Խۖ3ډiO+g @ J@EmagWۯ^jaJ ]}.٦{|(@W؉iRyݳkkvJm rݳs闼__%l}~U/z]Wn_kҍGZ^׎ϾW8]~uݏڳHtDͳv? v"sn&.{۟z#G /w~#&j&Ѝ~Q'/I,K]3O9~G;p pjk&Rxr-w)@PCD TJ7Tmn;f3מnZ]ùy_"e?Gׅ=^5RnQװ}@z~e4.Wڧ= q]D|gkoRtgLIҎF05gwQAIWV%[Y~.m?#P(XH홺;sm2|e^FږKϷzr闖7OϷKym3zv*. @0Ku"j1*5VkQ'гVgDGm_qmkMG]}ۯ׭-FD<#Z[bXG=϶.kk5ǽqǏS MJ[K:^-zijRh5?[[W5:jr\ <˚`^שT],#P(P.Qճ)WMSs2-xr_VaT'5]OW^f3u\kS :G?{>#۟i|mz=ۖۢ?#P(X7щAju:gѺVl\;/o8Q5YW>@PC6KG妍z6m(H;AtjUTS5Ln_ K-_S,#P(XM-y)bkY7玅_)i6ߗjH5ϖmSw@Ē۠$U= 0sn(u};jh>eV=7[n{4Rt^o)g @ n+ѝqG)s|mF*ֳZ,-R5X-ZV'GG?#P(XRxSkyn5[WrKs=%R6%WҤmsU9-@j@9{2kg˯m{ֲOɈ5P:T=ԞwG%m^C˺Z [R.K5a?/5֤Z;#G8[ߴ]#ՕRu%ZeFP(hcbY#s2{M WuKA>Z6Ǜ-ԡhc0=5x@bI}fN=<_`v/{\yܶ v=[Nbk=WroE|ynd=rϋ3bى@Ē›][S-=' yK6u9j_!J#ѩ0i @0A-y~YvZמ]K3u{Z#uOv-=>>NӤhFPizzz}ý%ֺ62ImwwzR-L˹,H}o9𜶛&Q@jEnzZ[sZں65TRSjXb=Kڧ@z6MGa4CMz"w2szv.Imݖ}9޽zv ϶gthc @K 9ךbƨ}{vd5oԦ o)UfϿ}hJ9-#I[vs0 @ E Tg{ zѝ:}5A)i/Ͽ}?uB~=[1A~EtOu県@bIu1 qDJ i_}j*?Nʼne뽳e9#&*/S @05PAjkJj>N￝9CjK/rZ[uEׇk|xr5Pgo}\=^4-a @K CQ)Ckےz7Yc-鍞)ĵsy^\MŞi[?u3_ :@b=wQ2ۚ;zh{m]gOqD7֖׺Z'z4՞ُWy{+xϴr]g@ @m\}Lj&| zu+m vގޗ}=b[<%Rt=Әeզ!( `(j`EImT6=jԼ*5PkǪ1j;uO N䐱L#N\\+IEO|m9SH=ҝ_J>܇/IJ7( `(ީ&~}S~;%5L]mkJeS=#3 %;H2RiSJ]9@, @liK||QnRڒt`6k+5WΞ*-c0 @ E ܀\TkSK?q_k#۾%uM5>c @K i͟Ͽ[Lk}oM^ߦ^QuRi[lM JAHKͳ[|^n.EXgIDATN\J ؀RFP(v7Ϧc87#P( @ @ @PP( @ @ @@P(  @ @ @P((aqYOIENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/document/results/original.png000066400000000000000000000156101452276323400324630ustar00rootroot00000000000000PNG  IHDRPIbKGD pHYs  tIME ;}PIDATxݽv6`*Mk$K:JJu:'J:&]E^;@ / 3L447? C @P(P( @ @ @PP(  @ @@P(( @ @ @P(P( @ @ @!zeg^zaއH(@i \-^ oL}(T^iZ&)B8+P(Xƒy n\ZE:/ϥr?\~9X@t su=8jc$UT:.k[&lF c @Kh`m44zkJn,)>h  @5PAvT^IScqrImı %L-IDtܯ%#kizxxpLVP8麋SP'ÖR|{z~wwI:VP(Ld8OjjCcɩAoL}4ȭwt7?Y@Ēcw-[ U *sZFOlq( +jX4Jmu/#Gjc-@m\5PeX(  Cp|ViT`ϥZ˱r~涕oٗs@)MLA=32+P(XRx)Ͳ/QSB9B[kK*iki1֬wI1 +P(@W@ zܺuqhkj"j&XZ1sIWsc @K S/]rNMC~qN/M8~-rjK )>Z @tf'Џڧtbzq=8ݾ}3}|!X9"hFl.HVP:P+m7MGMVű7ވUOs$z?rrOZZ@bI5V3]OE< GJHc$SxQVnDt%@P]yabjRܚҺ-ѥG-lǶsg(8s{fsۿ  ^e]i#*ŗt"aiZoﱬ#.2BVcz+=/ i=c @  [Zꌨ^vAۑΟ6<  ^Tj>n *3+s2>[_{d:R*\skΓ  FsTO[Yf~/]Ss9}qDz  @5P+{Z#eD=F8øԢ\HGE͡}Pf @K oR/5zO퍞9oI =EG`Zy,Nc @ D,襾Fme{>wFjѾbezSjy7_ks %74*m42{tM[m˚-_e6G(Dj^>/ߖG`@bLtAX:~qTCN9cE}^Y߿a?u:u}x28@P]9m TiGkYG\i_]#]/f @T)ܴݵSKϩ},j,Xu-!j}f/]ʽj[jo VP(0?{Gc omkzI-T@b"7׾ԩomtIMt^@b)R.}}#e[Q#O=/̕si~]<>>X@r3Mlu-5 -Je5<3uA{ZuԺ۷o>t=!5RǺ/U /+P(XJvKFMKjS2YiiS0gH;R9&7<]@P]9E TtBuQ{Z"j_G-T{ elG`z˶Ca @Ⓔk=1}Z+8= ӗRy@b0u]V{O)}:Wsz]*} \eVP(jNZ:ss2|X:s_ϭ7s=conwfmY6駿kzVPM-8x-=;RiqR`k -\ǹ:ӛ8>o[e @ 4MO#xf}Bʙ=""3wkA;2VP^rvcF\kPs.ͥΐKX@ǃ ǎy,zxxǬ+P(XþLږ 5i}HEK57_L_G\Q:-czjeןz8Gv@P]yaKk@X Ui5Rvt/͡Z@bI᭰e4v}s}C|i^#-Κ9hK;"u ]*17.[GRf @K ZݡGHߔ/55̾4_/`Xc5m%y'  @5PkS0MiK?}㏾"e9_ ^kKK91ng @)QN뱘ޣƈ̛tk5q̚wے=JX@:U %Z/]vԋNKzc9\:K_RG q}dvн :( û'~/7i˗~`Sxc=J'iw9=<=[>ymy?(M-}_ O,F;mI-]P=/zrvCVUP4%uN˄|!eGOj[:M܈N{tL?5( +hcp4d_0C7d:5qcOjy~scp u6[Rw=J-yt˭F~H\aޏz ǚvkl+]k~(s:#(@SLxN2rZR.}af#>}iQpo4^,+P(@Wq1\r֥s'JvzmkAr-Znڿ:/+-` @!^KGO~|vt/mL7j{nKs<[1btuQӼrs~yy_H3ׯ_Tf @m JCt]?c]Vi٦=uN=ƟZ=q(MQR(@,?vyĞ+Υi=^V=+P(XJ=>>ԋS"'sT~uޔvν֦~N-I  @ЕS1 j]iuRW{9x/&deVPNՉ|ri/G}G?ǷB>Y˖ko<@b6ە-(-ODc 4۹֙\v@P]9EK=ԖZ":[KE%9/{9<"5Gto  Cїz~,<<=}N+vY@r׻D(jY_-7UWC~R ek'e @m y#-ny?D>QԱyw{:Y@ĺ샰剼ҥҎƥy/=8۷o>t[{i^Zk8-:g @  CMtm-sekۖ}̽Eakqn'+P(XLu_,c-rRr_:/(m ~ApOt^u%A{VP(zV[~ݯ-5PB{1ѲW@.M>fj~  N+v-i˿k,7_X5Σ`fyq}ͼeVPveIt}.P5^GJLt?̱P6k ( +jUY4WeQmRF\ʮA  gi==5S9-St8];sѧ+-H"p w  @5P>ھvK~nT OX~El*j#܆{(@,)viKT[T鍵J[kR֞Ritz_C@bI0:ֻhr5U*_5XKmCRwDіKnlVP(Ldʤ꡶ȿGZ2liAMsu2}շk>5{K{ŏ  69h)uT#+q}r^z%U7\~t}Y@*u]Ԗz7`ڧs{|Ǯy,[1u*\m9+P(XRx zzt}$[ƭ^)5yٖ4[|ڈL  w ky*}R)iuH]KXjnݾ}3}|a\roK[$|@P]ƠsFE];j^F}rǼ.mmV@bic0陥4Q_ܳݲ]m ?#k}  @m sķ{_.q-?sfE14f>9+P(XRx'>vK!=qt8׮mx(@, Wb3|z7N  4 GL];zv):(@,ȡ˥)^:S՘?Y@t* eKSz'2&5[nK=a @K `NیN \  @rȩx=PS&(@,)<8r_Rە?R;)88+P(X:MW~5)0`4VP(qf @ @PP(  @ @@P(( @ @ @P(P( @ @ [l #$>IENDB`InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/include/000077500000000000000000000000001452276323400262525ustar00rootroot00000000000000itkLabelImageGenericInterpolateImageFunction.h000066400000000000000000000106501452276323400372150ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/include/*========================================================================= * * Copyright NumFOCUS * * 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #ifndef itkLabelImageGenericInterpolateImageFunction_h #define itkLabelImageGenericInterpolateImageFunction_h #include #include "itkLabelSelectionImageAdaptor.h" #include #include namespace itk { /** \class LabelImageGenericInterpolateImageFunction * \brief Interpolation function for multi-label images that implicitly interpolates each * unique value in the image corresponding to each label set element and returns the * corresponding label set element with the largest weight. * * This filter is an alternative to nearest neighbor interpolation for multi-label * images. It can use almost any underlying interpolator. * * \ingroup ITKImageFunction * * \ingroup GenericLabelInterpolator */ template class TInterpolator, typename TCoordRep = double> class ITK_EXPORT LabelImageGenericInterpolateImageFunction : public InterpolateImageFunction { public: ITK_DISALLOW_COPY_AND_MOVE(LabelImageGenericInterpolateImageFunction); /** Standard class type alias. */ using Self = LabelImageGenericInterpolateImageFunction; using Superclass = InterpolateImageFunction; using Pointer = SmartPointer; using ConstPointer = SmartPointer; using InputPixelType = typename TInputImage::PixelType; /** Run-time type information (and related methods). */ itkTypeMacro(LabelImageGenericInterpolateImageFunction, InterpolateImageFunction); /** Method for creation through the object factory. */ itkNewMacro(Self); /** ImageDimension constant */ static constexpr unsigned int ImageDimension = TInputImage::ImageDimension; /** OutputType type alias support. */ using OutputType = typename Superclass::OutputType; /** InputImageType type alias support. */ using InputImageType = typename Superclass::InputImageType; /** RealType type alias support. */ using RealType = typename Superclass::RealType; /** Index type alias support. */ using IndexType = typename Superclass::IndexType; /** Size type alias support. */ using SizeType = typename Superclass::SizeType; /** ContinuousIndex type alias support. */ using ContinuousIndexType = typename Superclass::ContinuousIndexType; using LabelSelectionAdaptorType = LabelSelectionImageAdaptor; // The interpolator used for individual binary masks corresponding to each label using InternalInterpolatorType = TInterpolator; /** * Evaluate at the given index */ OutputType EvaluateAtContinuousIndex(const ContinuousIndexType & cindex) const override { return this->EvaluateAtContinuousIndex(cindex, nullptr); } void SetInputImage(const TInputImage * image) override; /** Get the radius required for interpolation. * * This defines the number of surrounding pixels required to interpolate at * a given point. */ SizeType GetRadius() const override { return SizeType::Filled(1); } protected: LabelImageGenericInterpolateImageFunction() = default; ~LabelImageGenericInterpolateImageFunction() override = default; std::vector m_InternalInterpolators; std::vector m_LabelSelectionAdaptors; using LabelSetType = std::set; LabelSetType m_Labels; private: /** * Evaluate function value at the given index */ virtual OutputType EvaluateAtContinuousIndex(const ContinuousIndexType &, OutputType *) const; }; } // end namespace itk #ifndef ITK_MANUAL_INSTANTIATION # include "itkLabelImageGenericInterpolateImageFunction.hxx" #endif #endif itkLabelImageGenericInterpolateImageFunction.hxx000066400000000000000000000062331452276323400375770ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/include/*========================================================================= * * Copyright NumFOCUS * * 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #ifndef itkLabelImageGenericInterpolateImageFunction_hxx #define itkLabelImageGenericInterpolateImageFunction_hxx #include namespace itk { template class TInterpolator, typename TCoordRep> void LabelImageGenericInterpolateImageFunction::SetInputImage( const TInputImage * image) { /* We have one adaptor and one interpolator per label to keep the class thread-safe: * changing the adaptor's accepted value wouldn't work when called from a multi-threaded filter */ using IteratorType = itk::ImageRegionConstIterator; if (image) { m_Labels.clear(); IteratorType it(image, image->GetLargestPossibleRegion()); for (it.GoToBegin(); !it.IsAtEnd(); ++it) { m_Labels.insert(it.Get()); } m_InternalInterpolators.clear(); m_LabelSelectionAdaptors.clear(); for (auto i = m_Labels.begin(); i != m_Labels.end(); ++i) { typename LabelSelectionAdaptorType::Pointer adapt = LabelSelectionAdaptorType::New(); // This adaptor doesn't implement Set() so this should be safe adapt->SetImage(const_cast(image)); adapt->SetAcceptedValue(*i); m_LabelSelectionAdaptors.push_back(adapt); typename InternalInterpolatorType::Pointer interp = InternalInterpolatorType::New(); interp->SetInputImage(adapt); m_InternalInterpolators.push_back(interp); } } Superclass::SetInputImage(image); } template class TInterpolator, typename TCoordRep> typename LabelImageGenericInterpolateImageFunction::OutputType LabelImageGenericInterpolateImageFunction::EvaluateAtContinuousIndex( const ContinuousIndexType & cindex, OutputType * itkNotUsed(grad)) const { /* Interpolate the binary mask corresponding to each label and return the label * with the highest value */ double value = 0; InputPixelType best_label = itk::NumericTraits::ZeroValue(); int i = 0; for (auto it = m_Labels.begin(); it != m_Labels.end(); ++it) { double tmp = m_InternalInterpolators[i]->EvaluateAtContinuousIndex(cindex); if (tmp > value) { value = tmp; best_label = (*it); } ++i; } return best_label; } } // namespace itk #endif itkLabelSelectionImageAdaptor.h000066400000000000000000000043251452276323400342230ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/include/*========================================================================= * * Copyright NumFOCUS * * 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #ifndef itkLabelSelectionImageAdaptor_h #define itkLabelSelectionImageAdaptor_h #include "itkLabelSelectionPixelAccessor.h" namespace itk { /** \class LabelSelectionImageAdaptor * \brief Presents a label image as a binary image of one label * * Additional casting is performed according to the input and output image * types following C++ default casting rules. * * \ingroup ImageAdaptors * \ingroup ITKImageAdaptors * \ingroup GenericLabelInterpolator */ template class ITK_EXPORT LabelSelectionImageAdaptor : public ImageAdaptor> { public: ITK_DISALLOW_COPY_AND_MOVE(LabelSelectionImageAdaptor); /** Standard class type alias. */ using Self = LabelSelectionImageAdaptor; using Superclass = ImageAdaptor>; using Pointer = SmartPointer; using ConstPointer = SmartPointer; /** Method for creation through the object factory. */ itkNewMacro(Self); /** Run-time type information (and related methods). */ itkTypeMacro(LabelSelectionImageAdaptor, ImageAdaptor); void SetAcceptedValue(typename TImage::PixelType value) { this->GetPixelAccessor().SetAcceptedValue(value); } protected: LabelSelectionImageAdaptor() = default; ~LabelSelectionImageAdaptor() override = default; }; } // end namespace itk #endif itkLabelSelectionPixelAccessor.h000066400000000000000000000037651452276323400344410ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/include/*========================================================================= * * Copyright NumFOCUS * * 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #ifndef itkLabelSelectionPixelAccessor_h #define itkLabelSelectionPixelAccessor_h #include "itkImageAdaptor.h" namespace itk { namespace Accessor { /** \class LabelSelectionPixelAccessor * \brief Return a binary mask of the selected label * * LabelSelectionPixelAccessor is templated over an internal type and an * external type representation. This class cast the input * applies the function to it and cast the result according * to the types defined as template parameters * * \ingroup ImageAdaptors * \ingroup ITKImageAdaptors * \ingroup GenericLabelInterpolator */ template class ITK_EXPORT LabelSelectionPixelAccessor { public: /** External type alias. It defines the external aspect * that this class will exhibit. */ using ExternalType = TExternalType; /** Internal type alias. It defines the internal real * representation of data. */ using InternalType = TInternalType; void SetAcceptedValue(TInternalType value) { m_AcceptedValue = value; } inline TExternalType Get(const TInternalType & input) const { return (TExternalType)((input == m_AcceptedValue) ? 1 : 0); } protected: TInternalType m_AcceptedValue; }; } // end namespace Accessor } // end namespace itk #endif InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/itk-module.cmake000066400000000000000000000013251452276323400277040ustar00rootroot00000000000000# the top-level README is used for describing this module, just # re-used it for documentation here get_filename_component(MY_CURENT_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) file(READ "${MY_CURENT_DIR}/README.rst" DOCUMENTATION) # itk_module() defines the module dependencies in GenericLabelInterpolator # The testing module in GenericLabelInterpolator depends on ITKTestKernel # By convention those modules outside of ITK are not prefixed with # ITK # define the dependencies of the include module and the tests itk_module(GenericLabelInterpolator DEPENDS ITKSmoothing ITKImageAdaptors TEST_DEPENDS ITKTestKernel ITKImageGrid DESCRIPTION "${DOCUMENTATION}" EXCLUDE_FROM_DEFAULT ENABLE_SHARED ) InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/setup.py000066400000000000000000000044431452276323400263460ustar00rootroot00000000000000# -*- coding: utf-8 -*- from __future__ import print_function from os import sys try: from skbuild import setup except ImportError: print('scikit-build is required to build from source.', file=sys.stderr) print('Please run:', file=sys.stderr) print('', file=sys.stderr) print(' python -m pip install scikit-build') sys.exit(1) setup( name='itk-genericlabelinterpolator', version='1.2.1', author='Joël Schaerer', author_email='joelthelion@laposte.net', packages=['itk'], package_dir={'itk': 'itk'}, download_url=r'https://github.com/InsightSoftwareConsortium/ITKGenericLabelInterpolator', description=r'ITK classes for generic interpolation of label images.', long_description='itk-genericlabelinterpolator provides a generic ' 'interpolator for label images to interpolate each ' 'label with an ordinary image interpolator, and return ' 'the label with the highest value.\n' 'Please refer to:\n' 'Schaerer J., Roche F., Belaroussi B., ' '"A generic interpolator for multi-label images.", ' 'Insight Journal, January-December 2014, https://hdl.handle.net/10380/3506.', classifiers=[ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: C++", "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Healthcare Industry", "Intended Audience :: Science/Research", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Software Development :: Libraries", "Operating System :: Android", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Operating System :: MacOS" ], license='Apache', keywords='ITK InsightToolkit Label-images Interpolation', url=r'https://github.com/InsightSoftwareConsortium/ITKGenericLabelInterpolator', install_requires=[ r'itk>=5.4rc02' ] ) InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/000077500000000000000000000000001452276323400256065ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Baseline/000077500000000000000000000000001452276323400273305ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Baseline/gl_gaussian_3.mha.sha512000066400000000000000000000002011452276323400335300ustar00rootroot00000000000000a5e11ea71164ff78c65fcf259db01ea5db981a9d868e60045ff2bffca92984df1174bf984a1076e450f0d5d69b4f0191ed1a61465c220e2c91a893b5df150c0a InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/CMakeLists.txt000066400000000000000000000007471452276323400303560ustar00rootroot00000000000000itk_module_test() set(GenericLabelInterpolatorTests RotateLabels.cxx ) CreateTestDriver(GenericLabelInterpolator "${GenericLabelInterpolator-Test_LIBRARIES}" "${GenericLabelInterpolatorTests}") itk_add_test(NAME GenericLabelInterpolatorRotateLabelsTest COMMAND GenericLabelInterpolatorTestDriver --compare ${ITK_TEST_OUTPUT_DIR}/gl_gaussian_3.mha DATA{Baseline/gl_gaussian_3.mha} RotateLabels DATA{Input/classification.mha} ${ITK_TEST_OUTPUT_DIR}/ 3 ) InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Docker/000077500000000000000000000000001452276323400270155ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Docker/Dockerfile000066400000000000000000000020651452276323400310120ustar00rootroot00000000000000FROM debian:8 MAINTAINER Insight Software Consortium RUN apt-get update && apt-get install -y \ build-essential \ curl \ cmake \ git \ libexpat1-dev \ libhdf5-dev \ libjpeg-dev \ libpng12-dev \ libpython3-dev \ libtiff5-dev \ python \ ninja-build \ wget \ vim \ zlib1g-dev RUN mkdir -p /usr/src/GenericLabelInterpolator-build WORKDIR /usr/src # v4.10rc02 (2016-05-18) ENV ITK_GIT_TAG 417d6a36d01aa3b835855349cc481a9b3dca8506 RUN git clone git://itk.org/ITK.git && \ cd ITK && \ git checkout ${ITK_GIT_TAG} && \ cd ../ && \ mkdir ITK-build && \ cd ITK-build && \ cmake \ -G Ninja \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DBUILD_EXAMPLES:BOOL=OFF \ -DBUILD_TESTING:BOOL=OFF \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON \ -DITK_LEGACY_REMOVE:BOOL=ON \ -DITK_WRAP_PYTHON:BOOL=OFF \ -DITK_LEGACY_SILENT:BOOL=ON \ -DITK_BUILD_DEFAULT_MODULES:BOOL=ON \ -DITK_USE_SYSTEM_LIBRARIES:BOOL=OFF \ ../ITK && \ ninja && \ find . -name '*.o' -delete InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Docker/build.sh000077500000000000000000000001721452276323400304530ustar00rootroot00000000000000#!/bin/sh script_dir="`cd $(dirname $0); pwd`" docker build -t insighttoolkit/genericlabelinterpolator-test $script_dir InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Docker/run.sh000077500000000000000000000003611452276323400301600ustar00rootroot00000000000000#!/bin/sh script_dir="`cd $(dirname $0); pwd`" docker run \ --rm \ -v $script_dir/../..:/usr/src/GenericLabelInterpolator \ insighttoolkit/genericlabelinterpolator-test \ /usr/src/GenericLabelInterpolator/test/Docker/test.sh InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Docker/test.sh000077500000000000000000000007201452276323400303320ustar00rootroot00000000000000#!/bin/bash # This is a script to build the modules and run the test suite in the base # Docker container. die() { echo "Error: $@" 1>&2 exit 1; } cd /usr/src/GenericLabelInterpolator-build || die "Could not cd into the build directory" cmake \ -G Ninja \ -DITK_DIR:PATH=/usr/src/ITK-build \ -DCMAKE_BUILD_TYPE:STRING=Release \ /usr/src/GenericLabelInterpolator || die "CMake configuration failed" ctest -VV -D Experimental || die "ctest failed" InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Input/000077500000000000000000000000001452276323400267055ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/Input/classification.mha.sha512000066400000000000000000000002011452276323400333620ustar00rootroot00000000000000bcdbb347f3704262d1f00be7179d6a0a6e68aed56c0653e8072ee5a94985c713bd229c935b1226a658af84fb7f1fffc2458c98364fc35303a2303b12f9f7ce2f InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/test/RotateLabels.cxx000066400000000000000000000210341452276323400307130ustar00rootroot00000000000000/*========================================================================= * * Copyright NumFOCUS * * 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "itkLabelImageGenericInterpolateImageFunction.h" #include "itkLabelSelectionImageAdaptor.h" #include "itkLabelSelectionPixelAccessor.h" /* This demo is a torture test for interpolators: it takes an input label map, * rotates it one full turn in ten steps, and writes the result */ template void RotateNTimes(typename ImageType::Pointer input, typename itk::InterpolateImageFunction * interpolator, unsigned int number_of_rotations, std::string filename_prefix, std::string output_directory) { using TransformType = itk::VersorRigid3DTransform; using ResampleFilterType = itk::ResampleImageFilter; TransformType::AxisType axis; axis[0] = 0; axis[1] = 1; axis[2] = 0; TransformType::InputPointType center; center[0] = 144; center[1] = 86; center[2] = 101; TransformType::Pointer rot = TransformType::New(); rot->SetCenter(center); rot->SetRotation(axis, 2. * itk::Math::pi / number_of_rotations); typename ResampleFilterType::Pointer rs = ResampleFilterType::New(); rs->SetInput(input); rs->SetReferenceImage(input); rs->SetUseReferenceImage(true); rs->SetTransform(rot); rs->SetInterpolator(interpolator); typename ImageType::Pointer out; itk::TimeProbe timer; timer.Start(); for (unsigned i = 0; i < number_of_rotations; ++i) { rs->SetReferenceImage(input); rs->SetUseReferenceImage(true); rs->Update(); out = rs->GetOutput(); out->DisconnectPipeline(); rs->SetInput(out); rs->SetTransform(rot); } timer.Stop(); using ComparisonFilterType = itk::Testing::ComparisonImageFilter; typename ComparisonFilterType::Pointer compare = ComparisonFilterType::New(); compare->SetValidInput(input); compare->SetTestInput(out); compare->Update(); std::cout << "Pixels with differences: " << std::setw(8) << compare->GetNumberOfPixelsWithDifferences() << " ( " << std::fixed << std::setprecision(2) << static_cast(compare->GetNumberOfPixelsWithDifferences()) / input->GetLargestPossibleRegion().GetNumberOfPixels() * 100. << "% ) in " << timer.GetTotal() << "s" << std::endl; using WriterType = itk::ImageFileWriter; typename WriterType::Pointer writer = WriterType::New(); writer->SetUseCompression(true); writer->SetInput(out); std::ostringstream fname_stream; fname_stream << output_directory << "/" << filename_prefix << "_" << number_of_rotations << ".mha"; writer->SetFileName(fname_stream.str()); writer->Write(); } // The BSpline interpolator has more arguments than other interpolators, so we set the additional parameter to the // default value template class BSplineInterpolator : public itk::BSplineInterpolateImageFunction {}; template class FixedGaussianInterpolator : public itk::GaussianInterpolateImageFunction { public: using Self = FixedGaussianInterpolator; using Superclass = itk::GaussianInterpolateImageFunction; using Pointer = itk::SmartPointer; using ConstPointer = itk::SmartPointer; /** Run-time type information (and related methods). */ itkTypeMacro(FixedGaussianInterpolator, GaussianInterpolateImageFunction); /** Method for creation through the object factory. */ itkNewMacro(Self); FixedGaussianInterpolator() { this->SetAlpha(1.0); this->SetSigma(0.3); } }; int RotateLabels(int argc, char * argv[]) { if (argc != 4) { std::cout << "Usage: " << argv[0] << " inputImage outputDirectory numberOfRotation" << std::endl; return EXIT_FAILURE; } std::string inputFileName = argv[1]; std::string outputDirectory = argv[2]; std::istringstream stream(argv[3]); unsigned int numberOfRotations = 0; stream >> numberOfRotations; if (numberOfRotations < 1) { std::cout << "numberOfRotation must be strictly positive. Given value: " << numberOfRotations << std::endl; return EXIT_FAILURE; } using PixelType = unsigned char; constexpr unsigned int Dimension = 3; using ImageType = itk::Image; using ReaderType = itk::ImageFileReader; ReaderType::Pointer r = ReaderType::New(); r->SetFileName(inputFileName); r->Update(); std::cout << "Testing with " << numberOfRotations << " rotations..." << std::endl << std::endl; std::cout << "Nearest neighbor interpolator... " << std::flush; using NNInterpolatorType = itk::NearestNeighborInterpolateImageFunction; NNInterpolatorType::Pointer nn_interp = NNInterpolatorType::New(); RotateNTimes(r->GetOutput(), nn_interp, numberOfRotations, "nearest", outputDirectory); std::cout << "Linear interpolator... " << std::flush; using LInterpolatorType = itk::LinearInterpolateImageFunction; LInterpolatorType::Pointer l_interp = LInterpolatorType::New(); RotateNTimes(r->GetOutput(), l_interp, numberOfRotations, "linear", outputDirectory); std::cout << "Label Gaussian interpolator type... " << std::flush; using LGInterpolatorType = itk::LabelImageGaussianInterpolateImageFunction; LGInterpolatorType::Pointer lg_interp = LGInterpolatorType::New(); lg_interp->SetSigma(0.3); RotateNTimes(r->GetOutput(), lg_interp, numberOfRotations, "label_gaussian", outputDirectory); std::cout << "Generic label interpolator with nearest neighbor... " << std::flush; using GNNInterpolatorType = itk::LabelImageGenericInterpolateImageFunction; GNNInterpolatorType::Pointer gnn_interp = GNNInterpolatorType::New(); RotateNTimes(r->GetOutput(), gnn_interp, numberOfRotations, "gl_nearest", outputDirectory); std::cout << "Generic label interpolator with linear interpolation... " << std::flush; using GLInterpolatorType = itk::LabelImageGenericInterpolateImageFunction; GLInterpolatorType::Pointer gl_interp = GLInterpolatorType::New(); RotateNTimes(r->GetOutput(), gl_interp, numberOfRotations, "gl_linear", outputDirectory); std::cout << "Generic label interpolator with B-Spline interpolation... " << std::flush; using GBSInterpolatorType = itk::LabelImageGenericInterpolateImageFunction; GBSInterpolatorType::Pointer gbs_interp = GBSInterpolatorType::New(); RotateNTimes(r->GetOutput(), gbs_interp, numberOfRotations, "gl_bspline", outputDirectory); std::cout << "Generic label interpolator with Gaussian interpolation... " << std::flush; using GGInterpolatorType = itk::LabelImageGenericInterpolateImageFunction; GGInterpolatorType::Pointer gg_interp = GGInterpolatorType::New(); RotateNTimes(r->GetOutput(), gg_interp, numberOfRotations, "gl_gaussian", outputDirectory); std::cout << std::endl; return EXIT_SUCCESS; } InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/wrapping/000077500000000000000000000000001452276323400264565ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/wrapping/CMakeLists.txt000066400000000000000000000001331452276323400312130ustar00rootroot00000000000000itk_wrap_module(GenericLabelInterpolator) itk_auto_load_submodules() itk_end_wrap_module() itkLabelImageGenericInterpolateImageFunction.wrap000066400000000000000000000026601452276323400401450ustar00rootroot00000000000000InsightSoftwareConsortium-ITKGenericLabelInterpolator-ebf2436/wrappingitk_wrap_include("itkLinearInterpolateImageFunction.h") itk_wrap_include("itkNearestNeighborInterpolateImageFunction.h") itk_wrap_class("itk::LabelImageGenericInterpolateImageFunction" POINTER) foreach(d ${ITK_WRAP_IMAGE_DIMS}) # UC is required for InterpolateImageFunction UNIQUE(types "${WRAP_ITK_SCALAR};UC;${WRAP_ITK_COLOR}") foreach(t ${types}) itk_wrap_template("${ITKM_I${t}${d}}Linear" "${ITKT_I${t}${d}},itk::LinearInterpolateImageFunction") itk_wrap_template("${ITKM_I${t}${d}}NearestNeighbor" "${ITKT_I${t}${d}},itk::NearestNeighborInterpolateImageFunction") endforeach() # FIXME: Build fails with the following errors: # error: no match for ‘operator<’ (operand types are ‘const itk::CovariantVector’ and ‘const itk::CovariantVector’) # error: no match for ‘operator<’ (operand types are ‘const itk::Vector’ and ‘const itk::Vector’) # error: no match for ‘operator<’ (operand types are ‘const itk::CovariantVector’ and ‘const itk::CovariantVector’) # error: no match for ‘operator<’ (operand types are ‘const itk::Vector’ and ‘const itk::Vector’) # foreach(t ${WRAP_ITK_VECTOR}) # itk_wrap_template("${ITKM_I${t}${d}${d}}Linear" "${ITKT_I${t}${d}${d}},itk::LinearInterpolateImageFunction") # endforeach() endforeach() itk_end_wrap_class()