%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/lib/libreoffice/program/
Upload File :
Create Path :
Current File : //proc/self/root/lib/libreoffice/program/libsvgfilterlo.so

ELF>@`�
@8@��������������������
��
��
X#(&�
�
�
�����  ���$$S�td���  P�td���\\Q�tdR�td��
��
��
PPGNU�GNU`-�m�p�@��d���pCa����$X�K�@@H������v���}��d�������z�X���|�C:�q5T@��k��?���HO�?�+�30y0:�-"D2�%�1�?���XA7@�(Y�2�#�?�#U.  ,q�%�*n=u1�U L4L3�2�#3'�y�3��'�=�P
��1�U<	�5v"��;�D!�F""��,j4$�9H �6R=�*Z-+*,%�z�A~@�*�=G1|/`0n��l3���8V:(C(�B<�4�@��
[8�2P"�:�:U5�1�3h. �'9E8#�����M;��69�1S��&�u5�
J1�4�2X%:R3M�A�#��:�8�;�.+6�~�;�8�6J74�3�@B��8�=}_!��$+2.��~��/ �8r+>V/:�'�"�!
'��7�A+{�/43	�9HJ2
6)f�43�� <�	�)g],�	!S&75�7��+M'8p!�$7��<_�1�\@��/
R?)@�3k�3?�����3�4�"�.�� k��;01<AP	#!l"�=�9�^(�;r�98/�)=>��A���qA�.�<{c=�"i2�0�4�5�@�v;�(� �,�
B,�X/S"�8�h�>%1���- �5�?�*:~���:%Aw6�0, "
�!��<>b�	�	�/5!�%S��=�"u�0�~%!5�
�![)S..C�
z>80e	y��8�(f?*-�>�AA�v6=�0g*%�/u�:�
�$�+"�48� .4�-9.1�!�61I$�7u n$[�$�7��+?A\�@��1!ȑ
!��
S!���`��u! �)"p�FS6@���!ؑ
�
!��&	! �
�!�� "0��"���__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_ZN4cppu11OWeakObject7releaseEv_ZN4cppu11OWeakObject7acquireEv_ZN4cppu20WeakImplHelper_queryERKN3com3sun4star3uno4TypeEPNS_10class_dataEPvPNS_11OWeakObjectE__cxa_guard_acquire__cxa_guard_release__stack_chk_failrtl_uString_newFromLiteraluno_any_destruct__cxa_begin_catch__cxa_end_catch_Unwind_Resume__gxx_personality_v0_ZN4cppu15supportsServiceEPN3com3sun4star4lang12XServiceInfoERKN3rtl8OUStringEtypelib_static_type_init__cxa_allocate_exception_ZNSt9bad_allocD1Ev_ZTISt9bad_alloc_ZTVSt9bad_alloc__cxa_throwuno_type_sequence_constructrtl_uString_releasetypelib_static_type_getByTypeClasstypelib_static_sequence_type_inittypelib_typedescription_newStructtypelib_typedescription_registertypelib_typedescription_releasertl_allocateMemorytypelib_typedescriptionreference_newtypelib_typedescription_newEnum_ZN4cppu23WeakImplHelper_getTypesEPNS_10class_dataE_ZdlPvmtypelib_typedescription_newMIInterfacetypelib_typedescriptionreference_releaseosl_getGlobalMutexosl_acquireMutexosl_releaseMutextypelib_typedescription_newInterfaceMethodtypelib_typedescription_newrtl_uString_new_ZN4cppu11OWeakObjectD2Evfilter_SVGFilter_get_implementationrtl_freeMemory__libc_single_threadedrtl_uString_acquirertl_ustr_valueOfUInt64strlenrtl_convertStringToUStringrtl_uString_ensureCapacityrtl_uString_newConcatAsciiLmemcpyrtl_uString_alloc_ZTIN3com3sun4star3uno19DeploymentExceptionE__cxa_free_exception__cxa_rethrow_ZN11SvxDrawPage14getUnoTunnelIdEvuno_type_sequence_realloc_ZN3utl15UcbStreamHelper12CreateStreamERKN3com3sun4star3uno9ReferenceINS3_2io12XInputStreamEEEb_ZN8SvStream13remainingSizeEvuno_type_sequence_reference2One_ZN8SvStream9ReadBytesEPvm_ZN6ZCodecC1Emm_ZN6ZCodec16BeginCompressionEib_ZN6ZCodec4ReadER8SvStreamPhj_ZN6ZCodec14EndCompressionEv_ZN6ZCodecD1Evuno_type_sequence_destroymemset_Znwm_ZSt20__throw_length_errorPKcrtl_ustr_asciil_reverseEquals_WithLengthuno_type_assignDatacppu_unsatisfied_iset_msg_ZTIN3com3sun4star3uno16RuntimeExceptionE_ZSt28__throw_bad_array_new_lengthv_ZSt17__throw_bad_allocvrtl_ustr_reverseCompare_WithLengthuno_any_construct_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm_ZN3utl15MediaDescriptorC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEErtl_ustr_hashCode_WithLength_ZN11GDIMetaFileD1Ev_ZN11Application13GetSolarMutexEv_ZN11Application14GetFocusWindowEv_ZN3vcl6Window9EnterWaitEv_ZN3vcl6Window9LeaveWaitEv_ZN10comphelper14LibreOfficeKit8isActiveEv_ZN13GraphicFilterC1Eb_ZN7GraphicC1Ev_ZN13GraphicFilter13ImportGraphicER7GraphicSt17basic_string_viewIDsSt11char_traitsIDsEER8SvStreamtPt24GraphicFilterImportFlags_ZN13GraphicFilterD1Ev_ZNK7Graphic11GetPrefSizeEv_ZNK7Graphic20getVectorGraphicDataEv_ZN10SdrGrafObjC1ER8SdrModelRK7Graphic_ZN9SdrObject7acquireEv_ZNK7Graphic14GetPrefMapModeEv_ZNK7MapMode10GetMapUnitEv_ZN12OutputDevice12LogicToLogicEl7MapUnitS0__ZNK7SdrPage7GetSizeEv_ZNK7SdrPage13GetLeftBorderEv_ZNK7SdrPage14GetRightBorderEv_ZNK7SdrPage14GetUpperBorderEv_ZNK7SdrPage14GetLowerBorderEv_ZN9SdrObject11SetSnapRectERKN5tools9RectangleE_ZN7MapModeD1Ev_ZN9SdrObject7releaseEv_ZNK17VectorGraphicData22getPrimitive2DSequenceEv_ZN12drawinglayer11primitive2d20Primitive2DContainerC1ERKSt5dequeIN3com3sun4star3uno9ReferenceINS5_7graphic12XPrimitive2DEEESaISA_EE_ZN12drawinglayer11primitive2d20Primitive2DContainerD1Evcppu_unsatisfied_iquery_msgrtl_uString_assign_ZTVN10__cxxabiv117__class_type_infoE_ZTSN3com3sun4star3uno16RuntimeExceptionE_ZTVN10__cxxabiv120__si_class_type_infoE_ZTIN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno19DeploymentExceptionE_ZTVN10__cxxabiv121__vmi_class_type_infoE_ZTIN4cppu11OWeakObjectE_ZTSN3com3sun4star2io11IOExceptionE_ZTIN3com3sun4star2io11IOExceptionE_ZN4cppu11OWeakObject12queryAdapterEv__cxa_pure_virtual_ZNK8BitmapEx11GetChecksumEv_ZN8BitmapExC1ERK6Bitmap_ZN9AlphaMaskD1Ev_ZN6BitmapD1Ev_ZN11SvXMLExport12AddAttributeEtRKN3rtl8OUStringES3___dynamic_cast_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_basertl_uStringbuffer_insert_ZN18SvXMLElementExportC1ER11SvXMLExporttPKcbb_ZN18SvXMLElementExportD1Ev_ZN11SvXMLExportD2Ev__cxa_guard_abort_ZN11GDIMetaFileC1ERKS__ZNK11GDIMetaFile13GetActionSizeEv_ZNK11GDIMetaFile9GetActionEmrtl_ustr_valueOfInt64rtl_uString_newFromStr_WithLength_ZN8FractionC1Ell_ZNK8FractioncvdEvrtl_math_roundrtl_math_approxEqualrtl_math_doubleToUString_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_basertl_ustr_lastIndexOfAscii_WithLength_ZN11SvXMLExport30getInterfaceToIdentifierMapperEv_ZN10comphelper36UnoInterfaceToUniqueIdentifierMapper17registerReferenceERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEE_ZNK10comphelper36UnoInterfaceToUniqueIdentifierMapper13getIdentifierERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEErtl_uString_newReplace_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS__ZN10comphelper26getProcessComponentContextEvrtl_uString_newFromAsciirtl_ustr_valueOfInt32_ZN9salhelper21SimpleReferenceObjectnwEm_ZN6xmloff18AnimationsExporterC1ER11SvXMLExportRKN3com3sun4star3uno9ReferenceINS5_5beans12XPropertySetEEE_ZN6xmloff18AnimationsExporter7prepareERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE_ZN6xmloff18AnimationsExporter16exportAnimationsERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE_ZN9salhelper21SimpleReferenceObjectdlEPv_ZN7MapModeC1E7MapUnit_ZN12OutputDevice12LogicToLogicERK4SizeRK7MapModeS5__ZNK7MapMode9GetOriginEv_ZN12OutputDevice12LogicToLogicERK5PointRK7MapModeS5__ZNSt8_Rb_treeIDsDsSt9_IdentityIDsESt4lessIDsESaIDsEE16_M_insert_uniqueIRKDsEESt4pairISt17_Rb_tree_iteratorIDsEbEOT__ZN11SvXMLExportC2ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEEN3rtl8OUStringEsN6xmloff5token12XMLTokenEnumE16SvXMLExportFlags_ZN11SvXMLExport13SetDocHandlerERKN3com3sun4star3uno9ReferenceINS2_3xml3sax16XDocumentHandlerEEE_ZN10comphelper17SequenceAsHashMapC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEE_ZN6xmloff5token11GetXMLTokenENS0_12XMLTokenEnumE_ZN17SvXMLNamespaceMap3AddERKN3rtl8OUStringES3_trtl_bootstrap_getrtl_uString_newTrimrtl_uString_new_WithLength_ZN13INetURLObject12setAbsURIRefESt17basic_string_viewIDsSt11char_traitsIDsEENS_15EncodeMechanismEtb9FSysStyle_ZN18SvXMLElementExportC1ER11SvXMLExporttRKN3rtl8OUStringEbb_ZN12SvtSysLocaleC1Ev_ZNK12SvtSysLocale16GetUILanguageTagEv_ZN9Translate6CreateESt17basic_string_viewIcSt11char_traitsIcEERK11LanguageTag_ZN9Translate3getE11TranslateIdRKSt6locale_ZNSt6localeD1Ev_ZN12SvtSysLocaleD1Ev_ZNSt10_HashtableIjSt4pairIKjSt10unique_ptrI11GDIMetaFileSt14default_deleteIS3_EEESaIS7_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm_ZNSt8__detail9_Map_baseIjSt4pairIKjSt10unique_ptrI11GDIMetaFileSt14default_deleteIS4_EEESaIS8_ENS_10_Select1stESt8equal_toIjESt4hashIjENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_rtl_ustr_compare_WithLength_ZN9SdrObject22getSdrObjectFromXShapeERKN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEE_ZN15SdrExchangeView13GetObjGraphicERK9SdrObjectb_ZNK7Graphic7GetTypeEv_ZNK7Graphic14GetGDIMetaFileEv_ZN11GDIMetaFileC1Ev_ZNK7Graphic11GetBitmapExERK27GraphicConversionParameters_ZN20MetaBmpExScaleActionC1ERK5PointRK4SizeRK8BitmapEx_ZN11GDIMetaFile9AddActionERKN3rtl9ReferenceI10MetaActionEE_ZN7MapModeaSERKS__ZN7GraphicC1ERKN3com3sun4star3uno9ReferenceINS2_7graphic8XGraphicEEE_ZN7GraphicaSEOS_rtl_uString_newConcatrtl_str_compareIgnoreAsciiCase_WithLengthrtl_uStringbuffer_newFromStr_WithLengthrtl_uStringBuffer_makeStringAndClearrtl_uStringbuffer_insert_ascii__cxa_atexit_ZNK8Outliner11GetLanguageEii_ZN17SvNumberFormatterC1ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEEN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date14setDateFromDMYEtts_ZN12SvxDateField12GetFormattedERK4Date13SvxDateFormatR17SvNumberFormatterN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date6SetDayEt_ZN4Date8SetMonthEt_ZN3utl12TempFileFastC1Ev_ZN3utl12TempFileFast9GetStreamE10StreamModeuno_type_any_construct_ZN3utl20OOutputStreamWrapperC1ER8SvStream_ZN8SvStream4SeekEm_ZN9SvmReaderC1ER8SvStream_ZN9SvmReader4ReadER11GDIMetaFileP16ImplMetaReadData_ZN3utl12TempFileFastD1Evrtl_string_newrtl_convertUStringToStringrtl_string_allocrtl_string_releasertl_string_acquire_ZN17MetaCommentActionC1EN3rtl7OStringEiPKhj_ZN18MetaBmpScaleActionC1ERK5PointRK4SizeRK6Bitmap_ZNK6Bitmap12GetSizePixelEv_ZN14SvMemoryStreamC1Emm_ZN3utl14OStreamWrapperC1ER8SvStream_ZN8SvStream11FlushBufferEvrtl_crc32_ZN6ZCodec22SetCompressionMetadataERKN3rtl7OStringEjj_ZN6ZCodec8CompressER8SvStreamS1__ZN14SvMemoryStreamD1Ev_ZNK8SdrModel15GetDrawOutlinerEPK10SdrTextObj_ZNK8SdrModel18GetActiveOutlinersEv_ZN3utl15UcbStreamHelper12CreateStreamERKN3rtl8OUStringE10StreamModeN3com3sun4star3uno9ReferenceINS8_3awt7XWindowEEE_ZNK7GraphiceqERKS__ZN7GraphicC1ERKS__ZNK8SdrModel13IsUndoEnabledEv_ZN8SdrModel10EnableUndoEb_ZN10SdrGrafObjC1ER8SdrModelRK7GraphicRKN5tools9RectangleE_Z21GetXShapeForSdrObjectP9SdrObject_ZNK7Graphic11GetChecksumEv_ZTI11SvXMLExport_ZN11SvXMLExport17SetBodyAttributesEv_ZN11SvXMLExport11ExportMeta_Ev_ZN11SvXMLExport14ExportScripts_Ev_ZN11SvXMLExport16ExportFontDecls_Ev_ZN11SvXMLExport25CreateTextParagraphExportEv_ZN11SvXMLExport17CreateShapeExportEv_ZN11SvXMLExport19CreateAutoStylePoolEv_ZN11SvXMLExport16CreatePageExportEv_ZN11SvXMLExport23CreateFontAutoStylePoolEv_ZN11SvXMLExport15GetViewSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport24GetConfigurationSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport27GetDocumentSpecificSettingsERSt6vectorINS_13SettingsGroupESaIS1_EE_ZN11SvXMLExport17collectAutoStylesEv_ZN11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZN11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport6cancelEv_ZN11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZN11SvXMLExport7getNameEv_ZN11SvXMLExport7setNameERKN3rtl8OUStringE_ZN11SvXMLExport21getImplementationNameEv_ZN11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZN11SvXMLExport24getSupportedServiceNamesEv_ZN11SvXMLExport12addDataStyleEib_ZN11SvXMLExport16exportDataStylesEv_ZN11SvXMLExport20exportAutoDataStylesEv_ZNK11SvXMLExport16getDataStyleNameEib_ZN11SvXMLExport20exportAnnotationMetaERKN3com3sun4star3uno9ReferenceINS2_7drawing6XShapeEEE_ZN11SvXMLExport14DisposingModelEv_ZThn40_N11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZThn40_N11SvXMLExport6cancelEv_ZThn48_N11SvXMLExport21getImplementationNameEv_ZThn48_N11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZThn48_N11SvXMLExport24getSupportedServiceNamesEv_ZThn56_N11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZThn64_N11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZThn72_N11SvXMLExport7getNameEv_ZThn72_N11SvXMLExport7setNameERKN3rtl8OUStringE_ZN5tools11PolyPolygonC1Et_ZNK12OutputDevice14GetTextOutlineERN5tools11PolyPolygonERKN3rtl8OUStringE_ZN5tools11PolyPolygon5ScaleEdd_ZNK12OutputDevice16GetTextBoundRectERN5tools9RectangleERKN3rtl8OUStringEiiim13KernArraySpanSt4spanIKhLm18446744073709551615EEPK15SalLayoutGlyphs_ZNK12OutputDevice12GetTextWidthERKN3rtl8OUStringEiiPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZN5tools11PolyPolygonD1Ev_ZN16VclReferenceBase11disposeOnceEv_ZNK3vcl4Font13GetFamilyNameEv_ZNK3vcl4Font9GetWeightEv_ZNK3vcl4Font9GetItalicEvrtl_uString_getToken_ZN13VirtualDeviceC1EPK12OutputDevice12DeviceFormat10OutDevType_ZN12OutputDevice12EnableOutputEb_ZN12OutputDevice4PushEN3vcl9PushFlagsErtl_uString_newFromSubString_ZN3vcl9unohelper19CreateBreakIteratorEv_ZN11Application11GetSettingsEv_ZNK11AllSettings14GetLanguageTagEv_ZNK11LanguageTag9getLocaleEb_ZN12OutputDevice3PopEv_ZN3vcl4FontC1ERKS0__ZN3vcl4Font11SetFontSizeERK4Size_ZN3vcl4Font12SetAlignmentE9TextAlign_ZN12OutputDevice10SetMapModeERK7MapMode_ZN12OutputDevice7SetFontERKN3vcl4FontE_ZN3vcl4Font9GetWeightEv_ZN3vcl4Font9GetItalicEv_ZNK12OutputDevice13GetFontMetricEv_ZN10FontMetricD1Ev_ZN5tools11PolyPolygonC1ERKNS_9RectangleE_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base_ZN3vcl4FontD1Ev_ZN3vcl4FontC1Ev_ZN3vcl4Font13SetFamilyNameERKN3rtl8OUStringE_ZN3vcl4Font9SetWeightE10FontWeight_ZN3vcl4Font9SetItalicE10FontItalic_ZN8GradientD1Evmemmove_ZNK8Gradient8GetStyleEv_ZNK8Gradient13GetStartColorEv_ZNK8Gradient11GetEndColorEv_ZNK8Gradient8GetAngleEv_ZN5tools7PolygonC1ERKNS_9RectangleE_ZN5tools7Polygon6RotateERK5PointN4o3tl10strong_intIs11FractionTagILi10EEEE_ZNK5tools7Polygon12GetBoundRectEv_ZNK8Gradient17GetStartIntensityEv_ZNK8Gradient15GetEndIntensityEv_ZNK8Gradient7GetOfsXEv_ZNK8Gradient7GetOfsYEvhypot_ZNK8Gradient9GetBorderEv_ZN5tools7PolygonC1Et_ZN5tools7PolygonixEt_ZN5tools7PolygonD1Ev_ZN3vcl4Font8GetPitchEv_ZN3vcl4Font13GetFamilyTypeEv_ZNK3vcl4FonteqERKS0__ZN3vcl4FontaSERKS0__ZNK3vcl4Font13GetFontHeightEv_ZNK3vcl4Font12GetUnderlineEv_ZNK3vcl4Font12GetStrikeoutEv_ZN3vcl4Font13SetFontHeightEl_ZNK5tools7Polygon7GetSizeEv_ZN5tools7PolygonaSEOS0__ZNK5tools7Polygon8GetPointEt_ZNK5tools7Polygon8GetFlagsEt_ZN5tools7Polygon8SetFlagsEt9PolyFlags_ZN5tools7PolygonC1Ev_ZN5tools11PolyPolygonaSEOS0__ZNK5tools11PolyPolygon5CountEv_ZNK5tools11PolyPolygon9GetObjectEt_ZN5tools11PolyPolygon6InsertERKNS_7PolygonEt_ZN9SvmWriter11GetChecksumERK11GDIMetaFile_ZNK8LineInfo9IsDefaultEv_ZN5tools11PolyPolygonaSERKS0__ZNK5tools11PolyPolygon12GetBoundRectEvfilter_SVGWriter_get_implementation_ZNK8Gradient12GetBoundRectERKN5tools9RectangleERS1_R5Point_ZNK8Gradient8GetStepsEv_ZN7basegfx9BGradientC1ERKNS_11BColorStopsEN3com3sun4star3awt13GradientStyleEN4o3tl10strong_intIs11FractionTagILi10EEEEtttttt_ZN7basegfx9BGradient27tryToApplyStartEndIntensityEv_ZN7basegfx9BGradient16tryToApplyBorderEv_ZN7basegfx9BGradient15tryToApplyAxialEv_ZN7basegfx9BGradient15tryToApplyStepsEvlroundrtl_ustr_shortenedCompare_WithLengthrtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength_ZN11SvXMLExport20GetRelativeReferenceERKN3rtl8OUStringE_ZN3vcl4FontC1EOS0__ZN3vcl4FontaSEOS0__ZNK3vcl4Font14GetOrientationEv_ZN7MapModeC1Ev_ZN7MapModeaSEOS__ZNK3vcl4Font12GetAlignmentEv_ZNK12OutputDevice12GetTextArrayERKN3rtl8OUStringEP9KernArrayiibPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZN5tools11PolyPolygonC1ERKNS_7PolygonE_ZNK3vcl4Font8IsShadowEv_ZNK3vcl4Font9IsOutlineEv_ZNK3vcl4Font9GetReliefEv_ZNK8BitmapEx7IsEmptyEv_ZN8BitmapExC1ERKS__ZN8BitmapEx4CropERKN5tools9RectangleE_ZN10comphelper6Base646encodeERN3rtl14OUStringBufferERKN3com3sun4star3uno8SequenceIaEE_ZTI11SdrMediaObj_ZTI9SdrObject_ZNK11SdrMediaObj10getTempURLEv_ZN7GraphicC1ERK8BitmapEx_ZN16GraphicConverter6ExportER8SvStreamRK7Graphic17ConvertDataFormat_ZN8BitmapEx5ScaleERK4Size12BmpScaleFlag_ZNK7Graphic14GetBitmapExRefEv_ZNK8BitmapExeqERKS__ZNK7Graphic10GetGfxLinkEv_ZNK19BinaryDataContainer7getSizeEv_ZNK7GfxLink7GetDataEv_ZN8SvStream10WriteBytesEPKvm_ZNK3vcl6Region16GetAsPolyPolygonEv_ZN3vcl6RegionD1Ev_ZN5tools7PolygonC1ERKNS_9RectangleERK5PointS6_9PolyStyleb_ZNK12OutputDevice12PixelToLogicERK4Sizertl_str_shortenedCompareIgnoreAsciiCase_WithLength_ZN14SvMemoryStreamC1EPvm10StreamMode_ZN17VersionCompatReadC1ER8SvStream_ZN8SvStream10ReadUInt16ERt_ZN8SvStream10ReadDoubleERd_ZN5tools7PolygonaSERKS0__ZN17VersionCompatReadD1Ev_ZN14SvtGraphicFillC1Ev_Z18ReadSvtGraphicFillR8SvStreamR14SvtGraphicFill_ZN16SvtGraphicStrokeC1Ev_Z20ReadSvtGraphicStrokeR8SvStreamR16SvtGraphicStroke_ZNK16SvtGraphicStroke13getStartArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke11getEndArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke7getPathERN5tools7PolygonE_ZNK16SvtGraphicStroke12getDashArrayERSt6vectorIdSaIdEE_ZNK14SvtGraphicFill7getPathERN5tools11PolyPolygonE_ZN8GradientC1ERKS__ZN5tools11PolyPolygonixEt_ZNK5tools7Polygon7IsEqualERKS0__ZN12OutputDevice15AddHatchActionsERKN5tools11PolyPolygonERK5HatchR11GDIMetaFile_ZN8Gradient18AddGradientActionsERKN5tools9RectangleER11GDIMetaFile_ZN8Gradient13SetStartColorERK5Color_ZN8Gradient17SetStartIntensityEt_ZN8Gradient11SetEndColorERK5Color_ZN8Gradient15SetEndIntensityEt_ZN7basegfx11BColorStops17reverseColorStopsEv_ZN7MapModeC1ERKS__ZN12OutputDevice13EnableMapModeEb_ZN11GDIMetaFile5ScaleEdd_ZN11GDIMetaFile4MoveEll_ZNK7MapMode9GetScaleXEv_ZNK7MapMode9GetScaleYEv_ZN8FractionmLERKS__ZN7MapMode9SetScaleXERK8Fraction_ZN7MapMode9SetScaleYERK8Fraction_ZN7MapMode9SetOriginERK5Pointlibi18nlangtag.solibuno_salhelpergcc3.so.3libuno_cppuhelpergcc3.so.3libuno_cppu.so.3libuno_sal.so.3libmergedlo.solibstdc++.so.6libm.so.6libgcc_s.so.1libc.so.6GCC_3.0UDK_3_0_0GLIBC_2.2.5GLIBC_2.35LIBO_UDK_3.9GLIBC_2.32GLIBC_2.4GLIBC_2.14GLIBCXX_3.4.18GLIBCXX_3.4.29CXXABI_1.3.9GLIBCXX_3.4CXXABI_1.3LIBO_UDK_5.1LIBO_UDK_4.0UDK_3.8LIBO_UDK_5.3UDK_3.1LIBO_UDK_3.6LIBO_UDK_4.1UDK_3.3LIBO_UDK_4.4$ORIGIN	




			
			�B P&y�BB �})�B�B0ui	�B���
�B-B0YQ��B�})	�B�BP����Bii
�Bui	
�B����BxB`h���By��CyѯCt)�*Cӯk6C
YB�QS�ACPT�NCH&�	[CSS�cCF&�	}CA&�	pCVQ�xCQT��CC&�	�C�})�BHBTT��CA&�	pCC&�	�C�})�B��
�i��
`iȋ
ؖ
Ћ
p	؋
��
PK�
��
���
0�
�
�
p�
� �
0K(�
�0�
`8�
�H�
 �
P�
�	X�
P`�
�Gh�
�p�
 x�
���
@���
���
���
���
`���
����
����
���
@�Ȍ
��Ќ
��،
 ��
@��
 ��
 ��
`��
�� �
��(�
��0�
 �8�
 u@�
�gH�
�YP�
 NX�
 C`�
�3h�
�"p�
�x�
���
@���
 ���
���
n��
�`��
�L��
�1��
`��
@ȍ
�Ѝ
��
؍
@�
�
@�
�
��
�
��
��
 �
�
��
�
 u
�
b
�
�V
 �
@M
(�
�@
0�
�3
8�
�%
@�
�
H�
@	
P�
��	X�
@�	`�
�	h�
��	p�
�	x�
�	��
z	��
`j	��
 Y	��
`E	��
@2	��
 &	��
�	��
�
	��
��Ȏ
 �Ў
 �؎
@��
 ��
`��
 ���
@��
���
@u�
�d�
�V �
 F(�
�90�
�'8�
�@�
`H�
@�P�
��X�
��`�
`�h�
��p�
`�x�
`���
���
�s��
�c��
�R��
�>��
 /��
��
���
ȏ
 �Џ
`�؏
`��
@��
���
���
���
 ��
���
`y�
@k �
[(�
@L0�
�>8�
�,@�
�H�
@P�
 X�
@�`�
��h�
`�p�
��x�
��
��
P�
��
����
����
 ���
`���
����
����
����
�Ȑ
@�А
`�ؐ
���
���
���
����
��
0��
P��
`��
p� �
��(�
��0�
��8�
��@�
��H�
��P�
��X�
��`�
�h�
 �p�
@�x�
`���
����
����
����
����
����
`��
��
�
���
��
(�
��0�
��
@�
 �H�
��
X�
`�`�
��
p�
��x�
��
��
����
�
��
�
Ȓ
 �
ؒ
8�
�
P�
��
h�
�
x��
��
@�
��
H�
��P�
`�X�
��x�
 ���
����
��
��
���
����
����
����
@�ȓ
��
Г
��ؓ
���
���
��
�
P��
���
��0�
��
8�
��@�
��H�
��`�
��
h�
p�p�
��x�
����
��
��
����
p���
��Д
�
ؔ
���
`��
����
��
��
 ��
���
P� �
�i(�
�p0�
0q8�
0�@�
jH�
�iP�
j`�
�
h�
�p�
��x�
����
����
@���
�
��
����
����
����
0���
0pЕ
�
ؕ
P��
���
���
�q�
�
�
���
���
�� �
@p0�
�
8�
p�@�
��H�
��P�
�`�
�
h�
��p�
p�x�
����
�p��
�p��
 k��
����
��Ȗ
��Ж
��
�
 ��
��
��
P��
��
�
���
��
(�
��0�
�
@�
��
H�
�`�
�
��
��
��
���
���
���
��
ȗ
��З
��ؗ
���
��
@��
@��
М(�
P�0�
`�8�
��@�
p�ؘ
���
��
 �
�(�
0�0�
P�8�
Н@�
`�P�
��
X�
p�`�
 �h�
@���
��
��
��
���
0�ș
��
Й
��ؙ
P��
 ���
��
�
P��
@��
�(�
��
0�
0�8�
�@�
�`�
��h�
��
x�
����
�
��
X�
��
h�
К
��ؚ
p�
�
p�
�
�~��
P��
�~ �
��(�
P�8�
p�
@�
��H�
p�P�
�~X�
P�`�
�p�
p�
x�
p��
����
�~��
p�
��
���
`���
�~�
Ț
�
�~�
P���
�~�
��
��
�� �
P�(�
@}0�
�8�
@@�
�P�
Ț
X�
��`�
p�h�
�~p�
P�x�
���
Ț
��
p��
����
�~��
�~��
Ț
��
�Ȝ
`�М
�~؜
`�
��
P��
��
ث
��
P���
���
���
P�(�
��@�
p�H�
��`�
p�h�
P���
����
H���
����
H���
p�Ȭ
��
�(�
P�8�
��H�
`�X�
�h�
����
p���
`���
���
h���
�ȭ
h��
0��
���
0��
�� �
H�(�
��@�
H�H�
��`�
p�h�
���
����
P���
��Ю
p�خ
`��
p���
���
nȑ
n��
n��
ؑ
�
�
 �
8�
P�
h�
�
 �
��
��
ؖ
�
�
 �
X�
Ț
��
���
�0�
��
�Б
��
��
���
��
���
Np�
N��
���
�(�
�`�
}�
}�
}�
}�
}�
@�
@ �
@P�
@��
@��
@��
@��
@P�
@X�
@��
@��
@��
@ț
@Л
@��
��
��
��
� �
SH�
�P�
�X�
j`�
#h�
bp�

x�
���
���
���
.��
z��
3��
���
h��
��
8Ș
zИ
�
��
��
n��
"�
��
|p�
Qx�
$��
M��
X��
��
��
�H�
P�
!p�
x�
)��
C��
r��
s��
y��
}��
���
���
&ȟ
Vج
��
��
�
�
�
 �
(�
0�
8�
	@�

H�
P�
X�
`�
h�
p�
x�
��
��
��
��
��
��
��
��
��
Ƞ
Р
ؠ
 �
"�
%�
&��
'�
(�
*�
+�
, �
-(�
/0�
08�
1@�
2H�
4P�
5X�
6`�
7h�
8p�
9x�
:��
;��
<��
=��
>��
?��
@��
A��
B��
Dȡ
EС
Fء
G�
H�
I�
J��
K�
L�
M�
O�
P �
R(�
T0�
U8�
V@�
WH�
YP�
ZX�
[`�
\h�
]p�
^x�
_��
`��
a��
b��
c��
d��
e��
f��
g��
iȢ
jТ
kآ
l�
m�
o�
p��
q�
t�
u�
v�
w �
x(�
{0�
|8�
~@�
H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
�ȣ
�У
�أ
��
��
��
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
�Ȥ
�Ф
�ؤ
��
��
��
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
�ȥ
�Х
�إ
��
��
��
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
�Ȧ
�Ц
ئ
�
�
�
��
�
�
�
�
	 �

(�
0�
8�

@�
H�
P�
X�
`�
h�
p�
x�
��
��
��
��
��
��
��
��
��
 ȧ
!Ч
#ا
$�
%�
'�
(��
)�
*�
+�
,�
- �
.(�
/0�
08�
1@�
2H�
3P�
4X�
5`�
6h�
7p�
9x�
:��
;��
<��
=��
>��
?��
A��
B��
C��
DȨ
EШ
Fب
G�
H�
I�
J��
K�
L�
N�
O�
P �
Q(�
R0�
S8�
T@�
UH�
WP�
XX�
Y`�
Zh�
[p�
\x�
]��
^��
_��
`��
a��
c��
d��
e��
f��
gȩ
hЩ
iة
k�
l�
m�
o��
p�
q�
r�
s�
t �
u(�
v0�
w8�
x@�
yH�
{P�
~X�
`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
�Ȫ
�Ъ
�ت
��
��
��
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���H��H���H��t��H����5���%��@��h���f���h����f���h����f���h���f���h���f���h���f���h���f���h�r���f���h�b���f���h	�R���f���h
�B���f���h�2���f���h�"���f���h
����f���h����f���h��f���h���f���h����f���h����f���h���f���h���f���h���f���h���f���h�r���f���h�b���f���h�R���f���h�B���f���h�2���f���h�"���f���h����f���h����f���h��f���h ���f���h!����f���h"����f���h#���f���h$���f���h%���f���h&���f���h'�r���f���h(�b���f���h)�R���f���h*�B���f���h+�2���f���h,�"���f���h-����f���h.����f���h/��f���h0���f���h1����f���h2����f���h3���f���h4���f���h5���f���h6���f���h7�r���f���h8�b���f���h9�R���f���h:�B���f���h;�2���f���h<�"���f���h=����f���h>����f���h?��f���h@���f���hA����f���hB����f���hC���f���hD���f���hE���f���hF���f���hG�r���f���hH�b���f���hI�R���f���hJ�B���f���hK�2���f���hL�"���f���hM����f���hN����f���hO��f���hP���f���hQ����f���hR����f���hS���f���hT���f���hU���f���hV���f���hW�r���f���hX�b���f���hY�R���f���hZ�B���f���h[�2���f���h\�"���f���h]����f���h^����f���h_��f���h`���f���ha����f���hb����f���hc���f���hd���f���he���f���hf���f���hg�r���f���hh�b���f���hi�R���f���hj�B���f���hk�2���f���hl�"���f���hm����f���hn����f���ho��f���hp���f���hq����f���hr����f���hs���f���ht���f���hu���f���hv���f���hw�r���f���hx�b���f���hy�R���f���hz�B���f���h{�2���f���h|�"���f���h}����f���h~����f���h��f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h���f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h���f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h���f���h���f���h���f���h��f���h��f���h��f���h��f���h�r�f���h�b�f���h	�R�f���h
�B�f���h�2�f���h�"�f���h
��f���h��f���h���f���h���f���h���f���h���f���h��f���h��f���h��f���h��f���h�r�f���h�b�f���h�R�f���h�B�f���h�2�f���h�"�f���h��f���h��f���h���f���h ���f���h!���f���h"���f���h#��f���h$��f���h%��f���h&��f���h'�r�f���h(�b�f���h)�R�f���h*�B�f���h+�2�f���h,�"�f���h-��f���h.��f���h/���f���h0���f���h1���f���h2���f���h3��f���h4��f���h5��f���h6��f���h7�r�f���h8�b�f���h9�R�f���h:�B�f���h;�2�f���h<�"�f���h=��f���h>��f���h?���f���h@���f���hA���f���hB���f���hC��f���hD��f���hE��f���hF��f���hG�r�f���hH�b�f���hI�R�f���hJ�B�f���hK�2�f���hL�"�f���hM��f���hN��f���hO���f���hP���f���hQ���f���hR���f���hS��f���hT��f���hU��f���hV��f���hW�r�f���hX�b�f���hY�R�f���hZ�B�f���h[�2�f���h\�"�f���h]��f���h^��f���h_���f���h`���f���ha���f���hb���f���hc��f���hd��f���he��f���hf��f���hg�r�f���hh�b�f���hi�R�f���hj�B�f���hk�2�f���hl�"�f���hm��f���hn��f���ho���f���hp���f����%6�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޷fD���%ַfD���%ηfD���%ƷfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޶fD���%ֶfD���%ζfD���%ƶfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޵fD���%ֵfD���%εfD���%ƵfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޴fD���%ִfD���%δfD���%ƴfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޳fD���%ֳfD���%γfD���%ƳfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%޲fD���%ֲfD���%βfD���%ƲfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%ޱfD���%ֱfD���%αfD���%ƱfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%ްfD���%ְfD���%ΰfD���%ưfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%ޯfD���%֯fD���%ίfD���%ƯfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%ޮfD���%֮fD���%ήfD���%ƮfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%�fD���%�fD���%ޭfD���%֭fD���%έfD���%ƭfD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fDU�H����H���H�54�H��H�"�H��H��N����H��H��H��H�H�E�dH+%(uH���H�5����<���I��H�]�H�{�H���t�L9�u�H�E�dH+%(uL���H����H�3�H��H��p�L���(�H�H��PL�����H�E�dH+%(uL�������H�E�dH+%(ur���H�E�dH+%(u+�����H��L����H�E�dH+%(u@H�����g�H�E�dH+%(u�����H��8���H���P�����9��4��/�����1�H�=:�H�u�I����H�=&����H��X���H�u�L��H�
<�H�E�I������L���#�H�E�dH+%(��H�51�H��L���z�H�5��L�����H��p���H��H���H��(����H��x����U�H��H�����H��h����H��0�����H�E�dH+%(uXH���z�H�¼�H�=G�����������L��H���Y�L������H��8����E����H�������H��8����y��G�����*�1�H�=�H�M�I����H�=Ԯ��H��X���H�u�L��H�
ªH�E�I������L�����H�E�dH+%(uTH�5۝H���L���$���H��H��8����H�}�������H�L��H�=H����c�������L��H���R�L���
����H��`����<�L���4�L���|�L����H�E�dH+%(ujH����H��h����(u=H�=جu���H�=ŬH�0�}�H�5��H��h���H�����I��uL������ ��֘�V���I��H�;L����L����S����L���N�H�����H����H�������b���H�������F�H��H����L����H�������H��0����L���r�L���H��h���1�H��P H�E�dH+%(u4H�����H��(�����M���a���L���w����T�������Z����s�H��p�����H���������H������H��(���H������H��(������H�������)�H��H�����H�������I�$L��PH�������[�H��8����_�� ���M��u���H�������w��H������L����H�����H��0������H��0������H��������H��`����
�H���H������H��������H��������H�����(��L��L����H�����H�����H���H��0�����H�����H��tH��PH��������UH������H�5B��-���C�H��p���H��I��H��PH�=��T���H������H��0���L��H�
\�H��0���I��������L�����H��������H�E�dH+%(uH�5�H���L���/��Z�H�=j�u��V�H�=W�H�0�'�H�5H�H����L����������H���q��H�����H��`�����I�EL��PH�������H��p���H��P���H��x���H9������H���������!��L�����H�E�dH+%(u�@���H������L��������H��p���H��I��H��PH�=X����H������H��0���L��H�
�H��0���I���\��g�L���o�H�������#�H�E�dH+%(u1H�5u�H�V�L����I�~���L�������������L��H����H���������L����H��������H��������������H������H����H�������L��I��uH�����陨��L��H����H�������M�L���E����H����H��P��H��������m�E1�H�=*�L��p���H��teH�=����H������H��0���H��H�
�H��0���I�������L����H�E�dH+%(u0H�5�H���H���a�H����H�=���Y���r���L��I����H��L���h�H�������������H������E1�H�=I�L��p���H��t}H�=6����H������H��0���H��H�
I�H��0���I�����%�L���-�H�E�dH+%(uKH�5?�H� �H������H��H�����������H�(��H�=���h��f����~���L��I����H��L���t��H��0��������L��L���������H��p��������L��L���e�����H�����������H��p����S�H��L���H�H�����H��0������L���=�H��p����!�H�����������H�}���H�E�dH+%(uH��������H�}��1�L����H�E�dH+%(uH�����m��H�}���H�}���H�E�dH+%(uH�����>�U�H����H���H�5”H��H���H��H����UH��������m���H��� ������H����H������A��I�\$H��t$H�{L�+H��tH��PH�߾L��������I�D$I�<$1�H�����1�I�D$I�D$M��tI�<$I�t$I��0L9�u����H����H����H���v����UH���H��AUATSH��VH�H�@�t�H�U�L�cH�M��t&I�|$M�,$H��tH��PL��M�������H�CH�{H��8H��1��1�H�K�H�{�H�s�H�K�H9�tZH��[A\A]]����X[A\A]]�L���<��H�E�dH+%(u1H�����H�}����H�}����H�E�dH+%(u
H�����W���R��I��$���L�����H���u��H�}��{�H�}��r�H�E�dH+%(uHH���K�H�}��R�H�}��I�H�}��@�H�}��7�H�E�dH+%(uH������������H��x����
�H����H�E�dH+%(uL��������L��X���H�����H��������H�� �����H�E�dH+%(uCH����H�������H�����H���������H�E�dH+%(uH���V����H�������U�����H������B�H�� ����6�H�E�dH+%(uOH����H�������H�� �����H��������H��X����?��H�E�dH+%(u
H���������~����H��H��������H����������H�E�dH+%(u�����D��H�E�dH+%(u����L��H���q�����H�� ����^��H�� ����P�H�������D��x���H�� ����3�H�������'�����H�������H�� ����
�H��������H�������B���H��������H�� ��������H��������H�� ������H�������H�� ������H�������H�� ������{���H�� ����y��j���H�5m�H���U��H�E�dH+%(uL���>�����H�;�@�H�E�dH+%(uL��������H�;��I�$L��PH�E�dH+%(uL���������XL������H����L�������XL�����L����H�����H�}��q�H��L��H��u���1��	��ZPH�E�dH+%(u�p��+��UH��AWAVAUATSH��xdH�%(H�E�1�������SL�%��L��������<E1�1ɺ#1�H�}�L�]�E1�E1�H�5՚����H�]�H�]���W�1�H�}�H��4H�5Κ)E�L�m�L�m�H�E���H�U��L��� �1�H�}��0H�5ΚL�u��e�H�U�H�}�����H�E�AWH�u�AUE1�E1�1�j1�H��Pjj���H��0H�����H�}��Y�H�}��P�H�}��������H�U��H��1�H�H����H�}����H�}����H�}��	��L��H�o��Z��H�c��=�H��h����\���H�8H���_��=О�7�Þ��H�=��uH����H�=���$��H�=l�uH�s��H�=W����L�U�L���1�1�L��L�޺!H�E�L��`���L�}�L�u�H��x���L�m�L��x������H�E�1�1�H�U�H�5+��L��H�E����1ɺ4L��H�M�H�5ݘ1���AUL�M�1�jH�M�A�L��j�j��H�� L���=��H�}����H�}����H�}����1�1�H�}�H�u��-H�5��E�1�1ɺ(H�}�H�5a�H�}��(�E1�1ɺ!L���H��`���L�E�L����H�U�E1�1��~E�H�5��L��L�M�H�U��E�)E����E1�1ɺ0H�5!�L��L�U���AUL�M�1�jH�M�A�L��j�j��H�� L���D��H�}����H�}����H�}����H�}����H�}����H��x������H�;���H�E�dH+%(t���H��h���H�e�[A\A]A^A_]ÐL����H���8�H�E�dH+%(uL���!������H�}��#��H�}��J�H�E�dH+%(uH���������H�}����L����H�}���H�E�dH+%(uUH�����H�}�������H�}������H�}�����H�}�����H�}�����H�}�����H�}������+���H����n��H�������H������V��H���������H�E�dH+%(uH���#��H������'�������H��������H�� ������H�E�dH+%(uH���������H�� ��������y����H�}�����H�}�����H�E�dH+%(u=H�����H�}����H�}��_�H��p�������H�E�dH+%(u
H���l���'���"��H�E�dH+%(�����H������N��H������B��L�����H�������~��H�������"��H�������֥H�E�dH+%(u5H������H�������H����������H�E�dH+%(���}����H���H��������H���������e���H������H���������P���H������~��H������r��L������+���H������Y��H������M����H����?��H������3������H����"��H�����������H������������H�������H������������H�������H������������H��������H���������g���H��������H���������J����L���_���L���H������n��H����b���/���H������Q��H������E��������H�E�dH+%(�V�����H��������H�����������H�E�dH+%(uS�d�H��p�������H����������H�� �������H�E�dH+%(uH�����H��p���������T���O��H�E�dH+%(u'����H���H�E�dH+%(u���������H�߾L���4���u���H�������C��H��p����7���X���H��(����&��H����������;��������1�H�M�I�����H�8���H��(���H��L��H�
�H�E�I������L������H�E�dH+%(��H�5ՄH���L�������H��H������k��G��L��H���z��L���2��H������F�H��`�����H��X�����H��P����"�H��H����H��8���H�����H�����輣I�L���PH������7�H�����K��H�E�dH+%(�NH���������H�5ԷH����������I��I�L�u�L���PH�=s����H�����H��L��H�
��H��h���I���c��n�L���v��H���.�H�E�dH+%(��H�5|�H�]�L������H�5>�H���&����<��L�u�L��I��I��PI�}�S�H��(���H��L��H�
��H�E�I��������L������H����H�E�dH+%(��H�5�H��L���5��H�}����H��8���H��������H�}����H��(���������L��H���s��L���+������H�}��]��H�}��T��H�E�dH+%(uH���-������������L��I���$��H��L�����L������H��8���H�����������H������H��H��8���H��������H�}�����H�}�����H��8���H�����H��h���������H�}����H��8���H���������H��H��(���H�5|��g���$���L���z��H��L�����������L��I���I��H��L����L��������H������H�5!�H���	������H������I��H�H�}��PI�>�3��H��(���H��L��H�
ߏH�E�I������L������H���~�H�E�dH+%(u4H�5ЀH���L���������I��������H���=����&����L��I���g��H��L����L����������H������H������H��L����������0��1�H�U�I����H�8���H��(���H��L��H�
�H�E�I��������L������H�E�dH+%(u#H�5�H�нL���8��L���0��A����V����H��� ����E����H�������H��0����|��H�������p��H�������$�H�������X��H�E�dH+%(uCH���1��H������5��H����L��L���B�L���J�L���b���H����������H���������H���{���H�E�dH+%(u"�I�H����������H��0�������J����e��H���]��H�E�dH+%(uL������A���H�E�dH+%(ub���H��L�����L�����H��8����]��L���U���H��`����G��H��0����;��H�E�dH+%(uH�������������H��`���������H���H��`������널H�}�����L���3��H�E�dH+%(u1H�����H�}�����H�}����H�E�dH+%(u
H������N���I���H�}����H��x������L�����H�}�H�E�H�u�H9�t	H���A��H����H���M��H�E�dH+%(u(L���&��H�}��-��H�E�dH+%(u
H�����������H�}����H�}����H�E�dH+%(uOH������H�}���H��I��u�����7���[�H��H��X������H�E�dH+%(u
H������G���B��L���J�H�}�����H�}��v����H�� ����h��H��`����\��H��X����P��H��P����D��H��H����h�H�E�dH+%(uEH�����L���i��H��x����
��H��p������H��h���赙H������9���|������H�� �������H����H��(���H��(���艐�X���L�������H���������=���H���������8���L�������n���H�� ����o��H�����c�����H������R���@���H������A���#���H������0��H����T�H������������L��������H�� ����������H���������H�� �������H��(����!���H����������O���H��������H�� �������9���L���Y�H����H��(������H������z��H�� ����n��H����H��(������H������O��H�� ����C���a���L������H���H�� ����%����L���8~H�E�dH+%(uH���������H�}�����H��p�������H��0���t3L��0���L������L������H�}����H��x������L������H��h������H�E�dH+%(uH���o���*��H�}��q��H�}��h��H�}����H�}��T��H�}��K���L������H�}��6��H�}��-���H��x������L���g������H��0���������R���H�}�����H�}�������H�}�����H�}���������H�}�����H�}���������H�}����H��@�������H��`������H�E�dH+%(uH���n��H�}��u��H�}��l������H��h����Y��H�}��P��H��P�������H��h����6��H�}��-����H��h������H�}������H��h������H�}�����H��h�������H�}������L��讌�,���H��h�������H�}������o����H�}����H��������H��@������H���������H���������H�E�dH+%(uHH���^��H�}��e���H�}��Z��H�}��Q���H�}��F��H�}��=��H�E�dH+%(t�����H��(����m���H��H������H������U���H��@������H�������=���L��赋�O���H��H�������H�}���������H���������H��(�����������H��p����������H�}�L��8������H�}�����H�}�L��8����m���c���H��H����\��H�}�L��8����L���6���H�}�L��8����7������H�}���L��I��uA�;�������/�M��tI�~���L���ֿ��H�E�dH+%(u!H������H�E�dH+%(u����v���q����HL��蓿��H��p���M��L���������H�� �����H�:bL��H��0������H������H������H����H���AH�{L�+H��tH��PH�߾L�������ӾHL�������t���H��(������H��p���L���������H��lH�������X���H��(���������H��(��������H��(���������_���tH�� ������H���������H��lI��L������H��������H��0������H�����w��L�����L9�p�����I�<$H��tH��P(I����H��p����B��H��(���L�������/��H�lH����������H���H����1�H�����1�H����H���H�����H������H��h���H9�t	H��謽��H�5`L��L��H��������H��������H��������H���������H���H��tH��PH������H��P��H������H�����H)�H��uXH�����I��H�����=��H�����聽��H������u���H�E�dH+%(u6H�����H��0�������b���H���ռ���H�E�dH+%(��苿��H��0�������H���������H��(������E��������H��0������1�H������H��p���H���������H��0����s��H�����g��1�H������H��p���H���������H��(����?�������HL���
����u���L���������H�������H��0������������I��H��iH�������H���H��0�������H�����������H��p����������H�������H��0�������i���H�������H��0�������L���H��(����q�����H��(����`�����H�����H�5M��8���H��(���I��L�������2��H�����H�� ���H�iH�������t����H�������tL������H���������H�������H��p���H��PH������H��t�ƺH�E�dH+%(uH�����H�������S�����L���H����H��t��t�L���!t�L���7����H���y���L�������`���H������P���[���L����H�E�dH+%(ugH�����L����sH�����������<���L��軹����H������H��t�xsE1�H�}��<��L�����E��t�L������A����x���H��������H����H������H������貌H�����������H����H���}����r�s���L���s���H�E�dH+%(u���������L���hsH�E�dH+%(uH���!���ܻ�����H��H�}�����H�}�����H�}��	���H�E�dH+%(uH�����H�E�dH+%(t$莻��H��p���肋H��h�����衸����,��L��荸��H������L���w���H�������H�5��L���o���H��P����s���H�������H��������H������I���rH�������0��H���������H�������sH�E�dH+%(uxL������H������起��H������詷��L������H����q��H��P���H��t�Pq�H��P����B��L���ʼ��H��L���/��H��@���裿����L���H��@���萿���H��8���H��t��p�H�����������q���H��@����^����`����XL���,����N���H�������K����=���H��P���H���-����p�#���H������� ������������H��H�?mH��H�H�E�dH+%(ubH��lH�5#m�N���L��H��0���A����H��(���I��A��0襾��H�� ���I�薾��I9��A���I��0L���qp���*�����H�}�I��A��TpH��`����HpH���@pH��@����D���H��8����8���H��������n���H�����H�������H��P���L���o����H�}����H�}���H�}���H�}��
�H�E�dH+%(uH��賾���n���H�}�H�5��螳��H�}�襽���H�}��j��H�}��_�H�E�dH+%(uH���h����#����� L���E���L��荈H�}���H�E�dH+%(u$H���-���H�}��4���H�}��[�L���Co���̷��H�}�����봾XL������L������L����L��蚇H�E�dH+%(uH���ý��L���w����H�����k����ֳ��L�cXM��u1�H�CX����E1��KGL������L���e����֐E1�H��藳��L�cXM��uc1�H�CX�ӿ��E1��NH������?wH��������L���+���L���s��H������׆H�E�dH+%(uH������軶��L���S����L���ֳ�����H���E1��a���E1��Y�����H��H���������L��苿���{���H��0����(u�H�=�yu��U���H�=nyH�0�&���H�5_yH��0���H�q�輿���L���2���H������F�����H��(����Ž��H����������c���E1������2���H��H�`iH��H�H�E�dH+%(uH�iH�5Di�o���蚵��H�E�dH+%(ua�H��L��螾��H�}�M���º��M��t
I�EL��P0H�}��z�H�E�dH+%(uH��胻��H�}�H��tH��PM����*����%�����H��H�E�H�E��H��L���I���H�%H��H����C���H��L���(���L���`�L���HlH���������������H��������H��x���H��t��H��h���H��t��H������H��X���H����H����ɄH��������H�����H��tH��PH�����H���|���H�E�dH+%(uDL���e���H�����1��װ���S���H�����&���H��0���H�������'����>��t������H�������؃���H��p�������H�� ���H����?���H�}�����I���H��p������H��(���H�������L������H�������s���L���k���H��0���H���������L���P���H�������D���H��0���H�������r����H������t���H�������h���L���Ю��H�E�dH+%(uH���9���H������=��������H������*����H����������H���������릿����H�
fH�5FfH��H�4fH��H��`���H�;�ط��L�����H�}��Ƿ��H�E�dH+%(uH��蠸���[����H�}��a�H�}��X�H�E�dH+%(uAH���q���H�}��x���H�}�H��tH��PH�}��`���H�}��G�H�E�dH+%(t���H��P���� ����H�E�dH+%(t���H�}������H������
���H���������L���f���H���������H�������޶��H��0����"���H��X����F���H��������H������讶��H��x���袶��H��8������H�E�dH+%(��H���k���L���3�H�������'�H�E�dH+%(�H���<���H�������@���H������4����9���H�������#���H����������L��菿������H���������'���� L���̭���-���L��菭������腰��H������ɵ������H�����踵�����H�����觵��H������蛵�����H�����芵�����H�������y���H�������m���L������j���H������T����Y������L���¼��H�E�dH+%(uH�������֯��U�H���(���H�!cH�5ZcH��H�HcH��H��t���UH��SH��P�6���ZH�߾[]鶬��UH��ATSH�� dH�%(H�E�1���r����L�%�rL����������1�1�H�5�l�!H�}�H�E�H�]��6���1ҿH�U��&���H�U�E1�E1�H��H�����H���ĵ��H�}�諳���葪��1�H�UؾH�H��H���x���H�}�����H�XrH�E�dH+%(uH�� L��[A\]�I���H�E�dH+%(t腮��H�� [A\]ÿ�ү��H��H�bH��H�H�E�dH+%(uH��aH�5�a�����:�����H�}�H���z���H�E�dH+%(uH���S�������UH��AWAVAUATSH��xdH�%(H�E�1���r���SL�%�rL��葮�����<E1�1ɺ#1�H�}�L�]�E1�E1�H�5�m賺���H�]�H�]�衶��W�1�H�}�H��4H�5�m)E�L�m�L�m�H�E��t���H�U��L������1�H�}��0H�5�mL�u��H���H�U�H�}���ִ��H�E�AWH�u�AUE1�E1�1�j1�H��Pjj葫��H��0H���ų��H�}��<���H�}��3���H�}�蚱���耨��H�U��H��1�H�H���g���H�}����H�}����H�}����L��H�Rq�=���H�Fq�=�qH��h����\���H�8H���B����=�q�7��q����H�=�quH��l�H�=�q����H�=OpuH�Vc�H�=:p���L�U�L��i1�1�L��L�޺!H�E�L��`���L�}�L�u�H��x���L�m�L��x����Ѹ��H�E�1�1�H�U�H�5~�L��H�E�譸��1ɺ4L��H�M�H�5�k1�葸��AUL�M�1�jH�M�A�L��j�j�ܹ��H�� L��� ���H�}�藰��H�}�莰��H�}�腰��1�1�H�}�H�u��-H�5�k�(���1�1ɺ(H�}�H�5DbH�}�����E1�1ɺ!L�zhH��`���L�E�L�����H�U�E1�1��~E�H�5k�L��L�M�H�U��E�)E�起��E1�1ɺ0H�5kL��L�U�蘷��AUL�M�1�jH�M�A�L��j�j���H�� L���'���H�}�螯��H�}�蕯��H�}�茯��H�}�胯��H�}��z���H��x����ޮ��H�;薮��H�E�dH+%(t����H��h���H�e�[A\A]A^A_]�H��x����0���H���ث��H�E�dH+%(uL������輩��H�E�dH+%(u����裩����H�}�H�����H�}��ڮ��H�E�dH+%(uH��賯���n���H�E�dH+%(ui���H�����螮��H������蒮��H��p���uGH��h���謤��H��`������H�E�dH+%(uH���I���H�E�dH+%(����H��p����A������H���H�E�dH+%(u���H������
���1�H��p����^���H�������H�����������A�����H����H�E�dH+%(u�������H��p����茥���H�E�dH+%(�Q����l���H�����膭��H������z���1�H��p�������H�E�dH+%(�����.���H�E�dH+%(�����������H���&�����������H�E�dH+%(�������H��p�����ۤ��1�H��p������H��������1�H��p�������H�}��ɬ��H�E�dH+%(u1H��袭��H�}�詬��H�}�蠬��H�E�dH+%(u;H���y����4���H�}��{���H�}��r���H�E�dH+%(uH���K������������L���#���H���+����H�}��1���H�E�dH+%(u(H���
���H�}�����H�E�dH+%(u
H�����襦��蠦��H��8������H��0����ث��H�E�dH+%(u$H��豬��H��8���赫����H��8���觫����P���H�}�藫��H�E�dH+%(uH���p����+����H��8����n���H�E�dH+%(uH���G�������H��0����F���H��8����:���H�E�dH+%(u$H�������L�����H�E�dH+%(t�貥��H��8������H�E�dH+%(t��ސH�}��۪��H�}��Ҫ��H�E�dH+%(u0H��諫��H�}�貪��L�����H�E�dH+%(u
H��胫���>����9����L��谠��H�E�dH+%(uH���Y�������H�E�dH+%(u�*������H�E�dH+%(u����H�E�dH+%(u
���Τ���ɤ����H������H������H�E�dH+%(uH���ߪ��蚤��H�}�H��t
�ouH��PL��蜮��H�E�dH+%(uH��襪���`���H������褩��H����蘩��H�E�dH+%(��H���m���H�����q���H��p����e���H��8���詡��H�E�dH+%(uH���2������H�����1���H��x����%���H��`����i����H����������H��������H�������H������3���L��苬���q���聣���H�� ����Ĩ��H�E�dH+%(u+H��蝩��H�� ���表��H�E�dH+%(uXH���z����5���H�� ����y���H�E�dH+%(u+H���R���H�� ����V���H�E�dH+%(uH���/������������H������$���H�E�dH+%(u+H�����H���������H�E�dH+%(u
H���ڨ��蕢��萢��H������ԧ��H�E�dH+%(u+H��譨��H�����豧��H�E�dH+%(uXH��芨���E���H�����艧��H�E�dH+%(u+H���b���H������f���H�E�dH+%(uH���?�����������H�� ����4���H�E�dH+%(u+H���
���H�� �������H�E�dH+%(uXH�����襡��H�� ������H�E�dH+%(u+H���§��H�� ����Ʀ��H�E�dH+%(uH��蟧���Z����U����P���H��p���蔦��H�E�dH+%(u+H���m���H��p����q���H�E�dH+%(u
H���J�����������H��p����D���H�E�dH+%(u+H������H��p����!���H�E�dH+%(uXH�����赠��H��p������H�E�dH+%(u+H���Ҧ��H��p����֥��H�E�dH+%(uH��详���j����e����`���H�}�觥��H�}�螥��L������H�E�dH+%(uH���o����*���H��P����n���H������қ��H�E�dH+%(uH���;���H��P����?��������H��P����,����H��P��������H��P�������H��8�������H��@�������H��P�������w����H��8����ؤ��H��`����̤��L������H��0���踤��H�E�dH+%(uH��葥��L��������B���H��x���膤��H��p����z���H�E�dH+%(uH���S����L���6���������H�E�dH+%(u5����H�}�H���*���H�}��!���H�E�dH+%(u
H�����赞��谞��H�E�dH+%(u���藞��H�}��ޣ��H�E�dH+%(uH��跤���r���H�KMH��H����L��蘤��H�H��PL���g���H�E�dH+%(uL���p����+����H������n���L��薙��H�����誛��H��`����N���H�� ���蒛��H�E�dH+%(uH�������֝��H������J7H��(����>7H��0����R����H��������L����pH�}��pH�E�dH+%(��H��趣����H���L��L��蟘���赞��H��I�L�u�L���PH�E�H�8�ɭ��H�u�L��H��H�
`H�E�I���L���L���_���L����H�E�dH+%(tI����I���H���L����H�E�dH+%(�K����Ͽ����H��1�H�E��j���H�5 PH��H���i�����L��I���ڡ��L��蒚H��芧��H�E�dH+%(�o���L��蟢����I���Կ謝��1�H�U�I���0�H�8����H�u�L��L��H�
�^H�E�I���I���L���\���H�E�dH+%(����H�5jOH�K�L��賡����L��H���$���L���ܦ��L����n�%�����H����H�}����H�}�H��tH��P�L����nH�}��nH��8����H��p�����H��h����w5H��`����+5H�E�dH+%(uH��脡��H�}�苠����4���H�}��{����H�}��p����H��X���L���O�����e���L�m�L��I��I�E�PI�?�|���H��P���L��L��H�
�]H�E�I����A�L������L���ǘH�E�dH+%(��H�5NH���L���^����L��豗��H�}��h4����H��X���L��褕���躛��L�m�L��I��I�E�PH�=`�ͪ��H��P���L��L��H�
	]H�E�I���M���L���`���L����H�E�dH+%(uTH�5jMH�K�L��賟���ޙ����L��H������L���חL���Ϥ���G�����H������H���2���蠙����L��H�����L��虗L��葤��������H������H������H�}�讞��H�}�襞������H�}�藞�������H��H��H����_l����耚��1�H�M�I����H�8���H��P���L��L��H�
�[H�E�H�����_�H���-���H�E�dH+%(��H�5;LH��L��脞��H��X���L���������L�m�L��H��I�E�PI�>����H��P���L��H��H�
N[H�E�I��蒖���L��襝��L���]�H�E�dH+%(uH�5�KH���H������#�����L��I���d���L����H��L�������q�����I������H���\��������I��H���#���L��L���آ�������H����H�L��H��H��X����������I��I�L�u�L���PH�=8]����H�u�L��L��H�
JZH�E�I��莕���L��衜��L���Y�H�E�dH+%(uH�5�JH���L��������H�}��f��������L��H���R���L���
�H�C~H��X���L����H��X���H��P�������H�E�dH+%(uH�������H��H��}H��X����螖��H��P����"NH�}��ٛ������H��X���L��赑����˗��L�m�L��I��I�E�PI�?���H��P���L��L��H�
YH�E�I���b���L���u���L���-�H�E�dH+%(u"H�5IH�`�L���ț����H������������B������]���L���ݓ�a��������I���"���L��L��H���跓H�}����H�������H��p����֚��H��h����(tmH��`����}/H��X����/H��P����դL���=/H������H��8���赤H�E�dH+%(u\H���^���H�}�L��H����^����H�=Xu�����H�=XH�0�٘��H��(���H�5�WH��h����o����Q����Ŕ��H�}�����H�}�����H����'�H��x���L��H��������H�}��֙��H�� ����L��H����
���H�� ���H�5�{蛏��H�E�dH+%(uH��脚���?���H��(���H�� ����l���H�}��s����H�}��h����W����H�}��Y���H�}��P���H�}��G���H�E�dH+%(uZH��� ����L������H�E�dH+%(u1H�����H�}�����H�}����H�E�dH+%(uH���ә��莓��艓��脓���L��觐��H�E�dH+%(u+H��蠙��H��@���褘��H�E�dH+%(u&H���}����8���H�E�dH+%(u�N���������H�������^���H�������R���H�E�dH+%(uH���+������H��讟��H�E�dH+%(uL�������’��H��p�������H���������H�E�dH+%(��H���Ϙ��H�������ӗ��H������Ǘ��H�����軗��H�����诗��H������裗��H���������H�E�dH+%(u"H���p���H��p����t���H�������h������������H�������P���H�����蔏���l���H�������3���H�����w�����H����������H��(����
���H�� �������L���i����ĐL��M���k���H��L����ؖ��H���̖��H�����H���贖��H���訖��L����;L���4H���茖��H�{xH��t��H�{pH��t�|�H�{hH��t�n�H�{P�*H�{H�0dH�{@��*H�{8�dH�{0�5���H�{(�*H�{��L�������H��0L���臝��H�� �{���H�����H�����H���ו��H����˕��H���迕��L���:L���3H���裕��H�{xH��t��H�{pH��t��H�{hH��t��H�{P�*H�{H�GcH�{@��)H�{8�5cH�{0�L���H�{(�)H�{�L���"���L��M����:H�{H��t�I�H�{H��t��H�E�dH+%(usL���������H�E�dH+%(u\�;���L��背��L�}�L���w���H����{�H�}�肃H���H��t���L������L��M���N:�b����4����/���� L���R������I���ԗ��L���|���H�C0H�{(H�4��'���1�H�K(H�K0H�E�dH+%(u艘���Ԏ����I��舗������H�}��ɯH��譋��H���豯H���赂H���H��t����H�{x�K���H�{(�9H�{H��t��H�{H��t���H�E�dH+%(uL�������:����}�t
H�}��E����H�E�dH+%(uH���P��������L���Қ��H�E�dH+%(uH���+������L���~���H��0����r���L��蚜��H�E�dH+%(u.H����H��P������H��p������H��H����ߒ���舍��H��p����̒����L��肋�H��P���贒��H��p���訒���L������w���H��p���荒��H��P���聒���Z���H��X���H�5nt�Y���H�}��`���H��x���脜H��p����H���H�E�dH+%(uH���!����܌��H�}��'�L���h���H�������H�� ����P���H��X���H��h���H)�H��t�ʼn��H��H����Y���H�E�dH+%(uH��貒��H�E�dH+%(t[�^���H��0���袑��H�����薑��H���H���z���H��P�o���L���É����L���ه��H��x���荇���L����-��H�������G����B������ΫH��0����-�������H��0�����������H��0����������L���N������H��0�������F���L���P����r���H������ϐ��H��0����Ð�����H��0���貐�����H��0���衐�����L������H�E�dH+%(uH���m����(���H��0����l���H��p����`���H�����T���H�������(u=H�=Nu���H�=NH�0�Ď��H�5�MH������H�r�Z���M��tI�(�L���L��褓���`L���LJ��H�����H��u;H����������H���������H�������g���H�E�dH+%(uH��萐��蛇��D���H�E�dH+%(u)�Z��L���!�H��x���H���\����a��R���������H��H��������H������8���H�E�dH+%(�HH���
����`L�����$���H�E�dH+%(�h����H��0������H��p����ێ��H����������H��h��������^���H��0���貎��H��p���覎���տ誊��H��H��<H��H�H�E�dH+%(uH��<H�5�<�����H���Q�������H��0����J���L���r�H�����H��tH��PH����T��8���H��0���������H��p�������H��0������������I��H�����L�����興��H��p����̍��H�������������H�����词��H��p���裍����H��P���蕍���@����;����H�߾PL���Z���H��@����ރ��H��0����� L��蚓��H�E�dH+%(u3H���3���H��@���跇��L���o���L���W!H�E�dH+%(t��Ç��L���{���H��@����/���H�E�dH+%(t���H�߾PL��辄��H��0�������H��(����6���H��8����*���H��8���H��H���H)�H��t����H���������H��������H��@���諂������H��@������H�������^���H�E�dH+%(�����.���L��讂���.���L��� H�E�dH+%(��������H��@���荓���H��x����O���L��觏��H�E�dH+%(���������L���W���H������ˋ��H�E�dH+%(�m������L���{���H�E�dH+%(�M����{���L�����H�E�dH+%(�-����[���H��@����ׁ��L���߆��H�E�dH+%(�����/���L��迒��H�E�dH+%(��������L�����L�����L���^���H����������H��0����F���H��8����:���H��x����ފ��H��@����"���H�E�dH+%(uH��請���f���H��0���誊���H��P���蜊���H��P���莊���H��P���耊���H��P����r����w���H��P����a���H��0����U����Z���H��P����D����I����H�E�dH+%(up���L���RH��L�����L������H������S���H�������G���H��������H������߉��H�E�dH+%(u*H��踊����H�����j���H�E�dH+%(u
����Q����L���H��X���萉��H��@����4���H�E�dH+%(uH���]���H��8����1������
���H�}��Q���M��tL���P���}�tL���6���H�E�dH+%(uH�������L������軃���L��貀��L��誀��H�E�dH+%(uH���Ӊ��L��苀����脃��H��蜌��L��L��葍��L�����H�E�dH+%(uH��蒉���M���H�H�#kH��H�@H9�u�r������f.�f�H�=FH�
FH9�tH�n6H��t	�����H�=�EH�5�EH)�H��H��?H��H�H�tH�}6H��t��fD�����=�Eu+UH�=
6H��tH�=B�}���d����uE]������w������Ðf.���U1ɺ H�5-6H��SH��H��H��6���H��H�]��Ðff.����H��H�Ӏ���f���U1ɺ"H�56H��AUI��ATL�e�SL��H��(dH�%(H�E�1�H�E��ˎ��H�}�1ɺ"H�5�5H�E�謎��H�}�1ɺ+H�5�5H�E�荎��H�5�DH��tYL��h�L��L���z������ԓ��H�]�H�{�H��葆��L9�u�H�E�dH+%(u7H��(L��[A\A]]�������H�=DH�0���H�5D������H��H����f�U1ɺ H�5i5H��AWAVH�����AUATSH��dH�%(H�E�1�HDž���訍��H�����1ɺH�5�RHDž���胍��H����1ɺH�5�RHDž���^���H����1ɺH�5OQHDž���9���H���1ɺH�5/QHDž�����H������1ɺH�5�[HDž�������H�����1ɺH�5,QHDž����ʌ���;C����L�d4L�����L�� ���H��(���L��@���L��1ɺ L��HDž����{���1ɺL��H�5�PHDž ����Z���1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E��~���H���V���H��(����:����� z��H������H�H��H������H�� ���薃��H�����芃��H������~���H�������r���H����f���H�����Z���H�����N���H������B���H������6���H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=9AL���i~���������L�Z2H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž����f���1ɺL��H�5gNHDž���HDž����:���1ɺ
L��H�����H�5ANHDž ���H��@�������1ɺH��H�� ���H�5 NHDž(���H��H����܉��M��1�H��(���H�����L��0���H�����H�����H��P���H�!bDž8���H��0�������H������?���H������#�����	x��H������H�H��H��������H��(����{���H�� ����o���H������c���H������W���H�����L��H��?血��L�������]�����{�����ff.���UH��ATL�&SH��M��t
I�$L��PH�{PL�cPH��tH�[A\]H�@��fD[A\]�ff.����Gz�����U1ɺ H�5M/H��SH��H��H��V���H��H�]��Ðff.����UH��ATL�&SH��M��t
I�$L��PH���L���H��t
H�[A\]H�@��[A\]Ðf.���UH��ATL�&SH��M��t
I�$L��PH���L���H��t
H�[A\]H�@��[A\]�ff.���UH��ATL�&SH��M��t
I�$L��PH�{`L�c`H��tH�[A\]H�@��fD[A\]Ðf.�UH��AWAVAUATSH��8H�}�H���H�E�H�@H�E�H����H�E�H�@H�E�H����H�E�H�@H�E�H���PH�E�H�XH����L�kM��t|M�eM����M�t$M����M�~M��t0I��\���M��M�I�x L�E���~��H�}��`�v��M��u�I�~ M�~�~���`L���v��M����M���H�{ L�c�~���`H���cv��M��t5L���T���fDI�} M�e�c~���`L���6v��M��t�M���0���L�u�I�~ I�^�8~���`L���v��H��tCH�]����DI�D$I�|$ H�E��~���`L����u��H�E�H���{���I������L�}�I� I�_��}���`L���u��H��t	H�]��o���L�u�I�~ I�^�}���`L���yu��H��t	H�]��.���L�}�I� I�_�z}���`L���Mu��H��t	H�]����H��8[A\A]A^A_]�HcOI��1�����L�WHc�M�HI�4I�BH�<L9���H��H)�H��H��H��~sA�H���':P��:P��:P��H��H9�t<8u�H9�tcH��H9�tZL��H���f�H��H9�tOH��H9�t>D�D8t��H��H)�H���(H����H��uA�8t��1��������H��H��H��~{A�I�L��-f�:P��:P��:P��H��H9�t=8u�H9�@����H���'����H�������H������H��H)�H����H��tgH���O���A�1�8�C����H���H��H9�@���+���H��H9�@������A�8�����H��:�����H�����A���A�8�>���H��8�2���H���A���ff.�UH��AWAVAUATSH��HdH�%(H�E�1���8��tB�=d9H��8�vH�E�dH+%(��H�e�H��[A\A]A^A_]�f�H��8H���!v����t�1ɺL�m�HDž���H�5(*H������D����HDž���L������(~��f�1ɺ3H�H�����)E�H�5*)E�)E�H��P���H�E�HDž������H������L���m|��1�H�� ����1H�5�)HDž ���訁��H�� ���H�}���3|��1�H��(����1H�5�)HDž(����n���H��(���H�}���{��1�H��0����:H�5�)HDž0����4���H��0���H�}���{��1�H��8����=H�5�)HDž8������H��8���H�}���{��H��@���1ɺ:H��H�5�)HDž@���轀��H��@���H�}���H{��H��H���1ɺ=H��H�5�)HDžH���耀��H��H���H�}���{��H��P���1�1�H��E1�E1�L��AUH�����jPjj�q��H��0L����y��H�}��i���H�}��`���H�}��W���H�}��N���H�}��E���H�}��<���H�}��3���H������w����}n��H������H�H��I���_z��H��H�����w��H��@�����w��H��8�����w��H��0�����w��H��(�����w��H�� ����w��H������w��H������w��H��L�%�5��v���=�5H��5�����@�s��H�8I���{���=�5tI�?�v���d���f���5��5����H��@���H����H��H���H����H�W/H�����H�=x5��H�=r5��H�=�5L�5�(��H�=�5�aH��8���H�����1ɺ!H��H�����L���HDž�HDž8����P~��H��8���1�H�����#H�5�(HDž@���H�E�� ~��H����1ɺ3H�5&HDžH����}��H�M�1ҾH�����L��@���A�L��QH��H���jjj�6��H�� L���zw��H��H�����u��H��@�����u��H��8�����u��H������1ɺ
H�5�AHDž�����q}��H�����1ɺH�5�BHDž����L}��H�����1��~����D�-�UI��H�5zA������L��L������E��E�fD�m�HDž�����|��H��K1�L�����H��L�ߺL������HDž����|��H�����1��~����I�Һ+fD�m�H�5<&L������L������E��E�HDž����p|��H�� ���1�H�50&HDž ���I�Ӻ(L��L�������>|��H��(���1�L��I�к*HDž(���L��P���L��L�������	|��H��0���1�H�5)&HDž0���I�Ѻ(L��L��������{��H�����1�H�����HDž8����!�{��H��8���1��~�(����~����H����H�5�?HDž@����0���H��p����� ���)�`���)�P����S{��H����1ɺ1H�5n#HDžH����.{��AVL��@���1�jH��H���E1�L������j�r|��H�� L���t��H��H����*s��H��@����s��H��8����s��H��0����s��H��(����r��H�� �����r��H�������r��H�������r��H�������r��H������r��H�������r��H������1ɺH�5�>HDž����Mz��H������1ɺH�5�?HDž ����(z��H������1��~� ����+H�5�#fD�m������E�E�HDž(�����y��H������1ɺ(H�5�#HDž0����y��H�����1�H�����HDž8����!�y��H��8���H�%H1��~�(���H��H����HDž@���H��`�����0���)�P����Ny��H����1ɺ1H�5�!HDžH����)y��AVL��@���1�jA��L�����H��H���j�jz��H�� L���r��H��H����"q��H��@����q��H��8����
q��H��0����p��H��(�����p��H�� �����p��H�������p��H������1ɺ
H�5�<HDž����ux��H������1ɺH�5�=HDž����Px��H������1��~�����	H�5�<fD�m������E�E�HDž����x��H��"1�H������H�ƺ*HDž �����w��H������1��~� ����+H�5g!fD�m������E�E�HDž(����w��H������1ɺ(H�5�!HDž0����{w��H�����1�H�����HDž8����!�Vw��H��8���1��~�(���H����H�5�;HDž@����0���H��`����)�P����
w��H����1ɺ:H�5�HDžH�����v��AVL��@���1�jH��H���E1�L������j�,x��H�� L���pp��H��H�����n��H��@�����n��H��8�����n��H��0����n��H��(����n��H�� ����n��H������n��H������n��H������n��H������1ɺ
H�5r:HDž����v��H������1ɺH�5d;HDž����u��H������1��~�����	H�5D:fD�m������E�E�HDž����u��H�7 1�H������H�ƺ*HDž ����u��H������1��~� ����+H�5fD�m������E�E�HDž(����Ju��H������1ɺ(H�5eHDž0����%u��H�����1�H�����HDž8����!�u��H��8���1��~�(���H�����H�549HDž@����0���H��`���)�P����t��H����1ɺ=H�5�HDžH����t��AVL��@���1�jH��H���E1�L������j��u��H�� L���n��H��H����l��H��@����l��H��8����vl��H��0����jl��H��(����^l��H�� ����Rl��H������Fl��H������:l��H������.l��H������1ɺH�58HDž�����s��H������1ɺH�59HDž����s��H������1��~�����	H�5�7fD�m������E�E�HDž����`s��H�1�H������H�ƺ*HDž ����8s��H������1��~� ����+H�5�fD�m������E�E�HDž(�����r��H������1ɺ(H�5HDž0�����r��H�����1�H�����HDž8����!�r��H��8���1��~�(���H����H�5�6HDž@����0���H��`����)�P����ar��H����1ɺ:H�5lHDžH����<r��AVL��@���1�jH��H���E1�L������j�s��H�� L����k��H��H����8j��H��@����,j��H��8���� j��H��0����j��H��(����j��H�� ����i��H�������i��H�������i��H�������i��H������1ɺH�5�5HDž����sq��H������1ɺH�5�6HDž����Nq��H������1��~�����	H�5�5fD�m������E�E�HDž����
q��H��1�H������H�ƺ*HDž �����p��H������1��~� ����+H�5efD�m������E�E�HDž(����p��H������1ɺ(H�5�HDž0����yp��H�����1�H�����HDž8����!�Tp��H��8���1��~�(���H�����H�5�4HDž@����0���H��`���)�P����p��H����1ɺ=H�5VHDžH�����o��AVL��@���1�jH��H���E1�L������	j�*q��H�� L���ni��H��H�����g��H��@�����g��H��8�����g��H��0����g��H��(����g��H�� ����g��H������g��H������g��H������g��H�����f����L�%�%L����b��H��@���H����H��H���H����H�
~H���������H����1ɺ!H�5ZHDž@�����n���HDžH����j��E1�E1��L����H�H��@���L���e��L���Ih��H��H����-f����]��H��@����H�H��I���h��H��@����f��L��L�-�$��e���e�DH�Y�H�==%��b����L��H�=�$��b���X��H���H�=�$�b����H�i�H�=m$�b������`��ff.���UH�L	f�H���H��ATSH��H�H�GfHn�fHn�H�H8fl�H��hH����GG fHn�fHn�H��`fl�fHn�G0fHn�fl�G@H�>H�{PH��tH��PH�5"#f��Cx�C|����ƃ�CXCh����H����H���L��F1�1���m��1�f��Hǃ�f���H��ǃ�ƃ�Hǃ�ƃ�ǃ�ǃ�ƃ�ǃ�Hǃ�����	b��H��8f���^EH��H��xH��HH���H���H���H���H�� H���H��0HǃHǃHǃ Hǃ0HǃPHǃXHǃ`HǃpHǃxHǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ��(�8��h������HǃHǃHǃ ǃ0Hǃ8H��@H��HHǃPHǃhHǃpHǃxHǃ�Hǃ����X[A\]���� ��t%H�� H�=/ H�0��`��H�5  �.���L�%a L���]����t����L��H�N �ya�����I���o��ff.���UH��AUATSH����H��dH�%(H�E�1��3X��H�]�I��H��tGH�H��PH�u�L������L���k��H�H��PH�E�dH+%(u(H��L��[A\A]]�@H�u�H�����L����j�����\����I���!o����I���o����I���o���UH��AWAVAUATSH��dH�%(H�E�1��uH��GH��H�8t�W��u(H�E�dH+%(��H�Ĩ[A\A]A^A_]�H�5�H���hL�cL�-�BL��BL��L���_������n��H�C�@9Cu�H�3L��H����L���l��H��H���H���p����;Y��L��H���A�W8��x���?tI�L���P0�F���fDHcSH�5H9�HF�H��8���H����H�
BL��L���Li�����Mn��H�CH��8���L��H�p�d��L��H����CA�G8��x����?�|���H�C�x���{uJL�e��H���E�<svgL���Q��C��u(H�DOCTYPE �L��H��H�E��E� svg�%��CM�������d���@���8����c��H�=)H�0��]��H�5��8����g����x	��c���H��P�������H��H��8���I���Rf����L���0d��H�5�D�{H����H�
�@L��L���
h������l��H�CD��L��8���H��H���H�PL���`���CL���U���CH��8�����x6�Ck��L��H��������-b��H�=FH�0�\��H�57�4����
k��L��H���������X�����a��H�=H�0��\��H�5��;������ol�����'l���@��UH��AWAVL�5*AUATI��SH��H��dH�%(H�E�H�L�hHc@H�@H��M�|u
�4f�I��0M9�t)I�}�
u�H���
L���|T����t�I�E�xt.1�H�E�dH+%(��H�e؉�[A\A]A^A_]��I�E�8t�H��`���H�sPH��H��0����^L��`���H�E�HDžh���H��X���H��I�GM�oL��P@H�}�H����H��PH�E�L��H��8���H��I�G�P@L�u�M���Ik��I�L���PH�}�L�u�H��tH��PI�H��8���L�����L�m�M���gl��I�EL��PH�}�L��h���H��tH��PI�L��L�5�PH�=�I�EH��X���L��L��H�E��xt0H��X���H�5">�
R��1�I�EL��PI�L���P���L�u�H��X���H�5�=H�E���Q��L��p���M��t�H�=�L����eM��t7I�H��X���H��L���H�E��x�{H��X���H�5�=�tQ��HDž@���H��@���H�}�H��(���H�H��x����PH�u�L�u�1�L��H��P0H�E��x�gHDžP���H��P���L��H�5=H�E��Q��H���L���H��L)�tTH��ttI�FH9�tkH��H���I��H�� ���H��H�;H��tH��RH��I9�u�H��H���H�� ���H����H��p���H����H��H����{gL���H��P���H��tH�H��p���H��H����PI�>H��P���I�H��tH�H��p���H��H����PH��p���H��p���H��X���L���H��H���H��P H�5H����H��H��;H�M�L��PH�U�L�
�;L��A�+e��H��X���H�5�;A���O��XZE��uq���uK1�H��P���H��tH��PH�}�H��tH��PH��@���H��PH��p���H���Z���H��P�O���H��p���H��H��H��H��������t�H��p���L��H��H��H��������z���H�=�t21�����H�E�H��X���H�5
;H�E�H��@�����N���x���H���H�=�1��gU�����H�=�H�M���H���~���H�H��X���H��H��H�E��xtrH��X���H�5�:�tN���F����H��$H�=|�T��H�5p�V���H�D�H�=H��T���~���H��
�L���T������H�E�H��X���H�5:H�E�H��P�����M������H��H�=�H��P����kT��H��P��������zR����H��H��p���H��H�����f����H����f����H���cg����H���f����H��H��p���H��H����f����H��H��p���H��H����f�����g����H���g�����f��f.���UH��H��AWAVL�5:7AUL��`���ATL�e�SH��L��H��dH�%(H�E�1��)V��L���Q��L��L��`����Q��H��`����wH����W��L��L�牅h�����fH��`���I���V��L���V��I��x�E1�H�H��L��X����T��H��X�����H�5<L��X���L��`���H���%H��h���L�'81�1��^��1�L��HDžp���@f��x�������y�����H��h����.u#H�5�H���H��h���H��7�%Z��H��X���H��tH��PL���`H�}�H�E�H�u�H9�t	H���M��H�E�dH+%(��H�ĈH��[A\A]A^A_]�f�H�)5H�;H��^U��L�����y���H��h����D���Hc�t����E�oH�xmlns:ooH�E����#���H�FH�H��H)�H��H��H����H���1fD�xx���xx���xx��H��H9��E�8xu�H9������H��H9������L�}�H��L�E�L���f�H��H9������D�
D8	�l���H��L9�u�L���5��y���H��h����c���H�ooo:metaHc�t���H�E�H�a_slidesH�E����8���H�FH�H��H)�H��H���	H���1fD�xo�#�xo�"�xo�!H��H9����8ou�H9�����H��H9�����H��L��L�E��fDH��H9������D�D8�o���H��L9�u�H��2H�;H��S���y���fDH�=�M�w��M������I�H��L��L��H��`����xtFH�575L���I�����f.����V��H�=�H�0�Q��H�5����H�5�4L��L��p���HDžp�����H���K���f���V��H�=�H�0�WQ��H�5�����H��H�=�� O���%���H��H)�H��tZH��tGH���n����8x�e������fDH������H���w����H���g����8x�^���H���8x�Q���H���H��H��H)�H��tEH��t6H��������:o���H������H�����H����H������:ot�H���:ot�H����_L����H���[b����I��I���b����H���Tb�����H��@�C����f���UH���H���fHn�H��pH��AVAUATSL��`H��H�H�L��XfHn�H��hfl�fHn�H��`G fHn�H��`fHn�fl�G0fHn�fl�G@M9�t%fDI�<$H��tH��PI��M9�u�L��XM��tH��hL��L)��H��L��8M��t-I�|$M���	��I�} M�d$�P���`L���^H��M��u�L��M��t<DM��M�$$M�nM��tL��� U���XL���#H���L���H��M��u�H���H���1�H���K��H���H�� HǃHǃH���H9�t	H���G��L���M��t_�M��M�mM�t$M��tL���T���XL���G��I�|$H��tH��PI�|$H��tH��P�(L���UG��M��u�H���H���1�H���CJ��H���H���Hǃ�Hǃ�H���H9�t	H���F��L���M��tLfDM��M�$$M�uM��tL���S���XL����F��I�}H��tH��P� L���F��M��u�H���H���1�H���I��H���H���Hǃ�Hǃ�H���H9�t	H���LF��L��XM��t1M��M�$$I�}�PN��I�}H��tH��P� L���F��M��u�H��PH��H1�H���I��H��HH��xHǃ`HǃXH��PH9�t	H���E��H��@H��tH��PL��M��tSM��M�mI�|$��cI�|$I�D$@I�t$H9�t	H���jE��I�|$H��tH��P�PL���ME��M��u�H��H��1�H���;H��H��H��8Hǃ HǃH��H9�t	H����D��H���M��L���L���M9�t"I�<$H��tH��PI��M9�u�L���M��tH���L��L)��D��H���H��tH��PH���H��tH��PH����(u#H�5Z
H����H���H�k.�P��H���H��tH��PH���H��tH��PH���H��tH��PH�{`H��tH�H��.H�@H9�ud�C��H�{PH��tH��PH���H��H�[A\A]A^]�I���
��t/H�
H�=�	H�0�eJ��H�5�	�@���f����L�%�	L���
G����t��d��L��H��	��J��먐f���UH��SH��H�����H��H�]���.O��ff.���UH��AWAVAUATSH��H���H������H��p���dH�%(H�E�1��CU���H��H��h���H�H��P(��S��H��x���H���&H���L��H�����L��0���H��p���L���I��H��*HDž���H���`E��H��H��p����QE��H��p����wH���K��L����x���H��p���H��H�������ZH��p���I���PJ��H���HJ��I�$�x��
H�=���H�����HDž���H����H��PH�����H����H������H�=�H�����H��t:H�H������H��H��H��p����x��
H������H�5�+�?��E1�H�����H��tH��PL����SH��0���H��`���H��8���H9�t	H���@A��H��x���tH��x����ZK��H��h���1�H��P H�E�dH+%(��#H�e�D��[A\A]A^A_]�fDE1�H���t���Q����H��p���DžP�������ƅX���H�L�hHc@H�@H��M�ttjL�%�������I��0M9�tNI�}�G��
u�H���
L���?�����	I�E1ۃxu�I�E�8��X���I��0M9�u�fDH������H������H��8���H�pP�JL������H��p���HDž����H������H��I�D$M�l$L��P@H��p���H���N���;H��PI�D$H�����L��H�������P@H�����H���:_��H�H��PH�����H������H��tH��PH�H������H����H�����H���^��H�H��PH�����H������H��tH��PH�=QL�%J�1H�H������L��H��H��p����x��Z��L�}�L�5)H������H�E�L��L��@�����<��M����#H��@���H�=�L�%�H��������H�H������L��H��H��p����x��[��L�e�H������L��H�E��<��M���q%I�$L������H�����L��PH�����H������H��P`H�����L������L��0���H�L��L�` HDžp�����C��L��L��H��H�����A�HDž0���H��0���H��A��H��0���H��tH��PH��p�����E��H�����H��tH��PH�����H�����H������H�XHc@H��L�,u�h��E��H��I9��NH�3H������H��PH��p����!u�H���!H�5��L<��H��p���A���ME��E��t�H�����H������H��H��P8H�=�L������\
M��t7I�$H������H��L��H��p����x�H������L����:��H�����H���5���H��P�*���DH������H�������E1�H���������K����(uH�5PH���SH����L���H��L��L���U:��H����H��tH��PH�����H��tH��P�H������H���H9���!H������(uH�5�H����
H�����L���IH��H�����H��tH��PH������H��tH��PH������H��tH��PH������H��tH��PH������H���H9����
��X����iH������H�E�HDžx���H��P���H��p���H���H���H�E�H�E��E��?H�E�H�E�H��X���H9���H������H��0����+H�5	%H����8��H������H������H9�X����=H������H�=�L� ��M��t�I�$H��L��H��H��0����xu�L��@���H�5�$H��HDž@����w8��M��t�H�����L��H��`���H��I�E�PH�}�L������L��1�H��x���I��H��`���H������L��L���TH��tMH�8tGL�����M��t	I�L���PI�EL��P���fDL�����1�L��H��x���H�}�I��u���:��H�����H�I��H�xH��tH��PH�E�H�U�H�}��H��x���H��0����I��H�ք���H��p���M�fJ��H�H����H�I�H�L�0H�E��/����L�}�M��uD�
f�H�59#H���!7��M��A��M�������I�L���PE�����M�?M������M�gL�����M9�������D��H��M��t+I�L��H��H��0����x��H�5�"H���6��E1��L������^D��H��M���a���I�$L��H��H��0����x�5���H��@���H�5g"H��HDž@���H�������=6��H������I9�A��H��t	H�H��RM����������H�5"H��L��@���HDž@�����5���K���f.�H����H�=��h<������H���H�5S�6���������I�EI�U�@�����)������������P������@H�=��I�\$�jH���(���H�H������H���H��H��p����x�}H������H�5!�
5�����DH�]�H������L�5� H�E�L����4��H�����H���>���H�L����H��L��PH����H���+H��P(H�������H�����H��1�H��H������H�H��P0H������x�tH������L���W4��H����E1�DH��tH��PH�����H�����H�H��P���E1���H�=�H��������H���y���H�H������H���H��H��p����x��H������H�5��3���:������P������H������H�5�H�]�H�E��3��H�����H�����H���i��q�DL�e�H������L��H�E��E3��L����M���e���I�$L��L���P H��0���D�HE���lL��L���	3��I�$L��P�*���f.�H������H���QL��1�H��x���I���[���DH�E�L�u�I�H��tH�@1�H��x���L�4�H�E�H��P���H������H�u�L��`H��XL��H)�H��H��H9��iH9�s<L�,�M9�t3L���H�;H��tH��PH��L9�u�H������L��`H�]�E1�L�52�H����H������L��XH�CM�H�=��
H��t5H�L��0���L��H��L���H��0����x��H�5�L���1��1�I�}I�EH��tH��PH�I��H��u�H��p���H��������H������A����IH��p���H��P���H��x���H9�t	H���=3��H������H��t	H�H��PH������H�����H��P���DH��@���H�5L��HDž@���H��������0��H�������3���@H���L��H�������e7��H����������f�H�a��H�=m��87�����E1��@����E1��K����I�}�G��@����������P�����f�H�9��H�==���6���T�H���H�=u��6�����H)�H������H��X��F�������P����+�L�e�H������L�5�H�E�L���/��L��0���M���'���H������H������L��L���I�$�P H�5��H����	H��H��p���L��L�
\AVH��x���L�,!�D��H������L��A���5/��XI�$L��Z�PE�������H������H���H��P(�������E1����H�5��H����H�=��7��H�5�����H�=�L����m	M����	I�$H������H���L��H��p����x��H������H�5��{.��H������L�%}�H���M���D	E1�H�����H�H������H�P�H��H��p����x�H������H�5,�.��HDž��M���}�I�$L��P�n�H����H����DH��@���H������H��P H���H�;H��tH��PH��p���H���H�5y�H���Z
H����L��1�1�H��H��H����W@��H�5H�H���
H��H��H���H��0���L�.AVH��8���L�
>�B��H����_AX�P�����Hc�E1�H��(���H���H��H����@H������L����,��HDž����H������HDž����H���H���H9��xH������H�H��H����H��(���I��H����I9����H�=��J�\��jH����H�H������H�h�H��H��p����x�:���H�]�H������L��H�E��,��H�����H��H���&���H�H������H��H��p����x��H������L����+��HDž����E1�f.�H������H���H���H9��H�H��H���H��H�H�������PH������H���M��t
I�$L��PH�H��P����@L�e�H������L��H�E��=+��L������M���`���H��H���I�$H�����L��H��`���H�������PH�����H���7���H�H������H�5�1�H�� ���L�B(�HDžp���L�������<��H������H�� ���L������A��H��p�����tz�4��I�$�1�H������H�5xH�@(HDž���H�������1<��H������H������L��H��������H��p����x��H������L���'*��H������+4��H�����H���K���H��P�@���H�!��H�=��0���y���H�b�H�=8��k0���y�HDž�薸������L��1�H��x���I�����H���H��H���H�������>M��t
I�$L��PH���������H������1�L��`H��XL��H)�H������H������E1�1�H����L�%��H����L���/���G�H�L��L���/����H�=�H�� �����	H���n�H�H������H���H��H��p����x��H������L���(���3�H��x���H������L����������z(��H������~2�����������D���H�����H��tH��PI�$L��PH�H��P���H����H�=���.����H�]�H������L�5H�E�L���'��H����M����I�$H������H����L��H��H���H��PH���H��H������H��H��PH����H����H��P(H�������H����H��P(H������H��P(�� ������dH��������P����Dž`���L��0���H��0���H�����������H�H��������`���L����H��0����x��L��L��HDž������&��贵��H������HDž���H���H���H9���H������H�H��H�����`�����`���9� �����H�����`���H�H�@09�P����N���������A���L����H��0����x��L��L��HDžp���� &��H������H���H;���3H������H������;�[���H���H��tH��PH����H��tH��PH�H��P���H������H�5�L�e�H�E��%��H������H�=��H���tkH���*����_����H��H�=���+��H�5w����H���H�=?���+���v���H������H�=6�H��������H���H�=��+���x���H������L��H�]�H�E���$��H������L��H������$��H���k�H����H�����H��H���H��0����6I��H���-H����H�����H����H��H������H��0�����9��H�����L�������L���l1��H�����H��H��`���H���6��jL���1�H��jA���H�
D
L���n/��[A^����E1�H�����H��t=H�KH�SH�H9��oH�2��8���C�P��S���iH�������7��H���H��tH��P0H����H��t	H�H��PH����� �E1����)1��H�=*�H�0�+��H�5�������1��H�=�H�0��+��H�5�����H��`����4��H��@���H��8���H��p���H�������H������H�����H��`����6��H�8H��t
����0I������#��H��`���H��H��I���%��L���1��ƅX���L������H��`���L��L��(����-��H��1�H���H��PL����`����D.��A����`���D8�t5H��8�����D���T3����`���H��@���D��H�������73��H��p���H���(*��H��H��`���I���&'��f��f�H���H*�`����*���`����^���P����6����P���f�H���*��^�`����X���`����2��f�f�H���I*��*���P����^��X�`�����`�����!��f�H��p���f��f���*�H�������^�P����X�`����YvH��H*��Y��
j�Y�f/���f/\����s�X��,�H��H������Hc�L��p���H������I��I��H�H�@H��x���H��L��p����Ѐ�X���upf�H����)�p���M��t����H�D�L�H������H�E�H����H��t����H�D�H�H��H������L��H�E��.��H�H��L��H��P(H��(�����!��M��tL����1��A�����H�=�L��@�����M�������I�EH������H���L��H��p����x��H������L��������HDž@���H�����E1�H��0���H��(����4H��@���H��tH��PM������I�EL��P����H�~��H�=b���%���c����H���H�=����%��H�5���0���,��H�=��H�0�'��H�5����H���h�H�H��P�Z���������"���H�H������H��H����"���H�=��L��@�����M���`���I�EH������H���L��H��p����x�pH������L���_���$���H�H�
@
H�CH�PH9��H�PH�
P
H��H9����P�u���H������L�m�L��H�E����L��L��L�����������ʬ��H��M���
���I�EH������L��H��p����x��H������L�����HDž���1�H��@���H������H���H���H9���L�(H��0���L��I�EH��(����PH������H��@���H���H������H��P����H�E�H������L��H�E�H��@������H��@���H�����H���[���H��@���H��0���H�����H������H�H��(����PH�����H���+���H�H������H�5��1�H�����L�B(�HDžp���L��(����[.��H������H�����L��(���A��H��p�����tx�s&���L��1�H��@���H�5G�H�H�@(HDž0���H��(����-��H��@���H������L��H��(�����H��p����xtBH������L�����H��0����%��H�����H���A���H��P�6���H����*���H��x���H������L������������H��0����%����������u�H�����H��tH��PH��@���H��PI�EL��P���H����H�=e���!���O������H�����������H���H������f/��E�\��,�����H������1�L�m�H�u�L������L��L��L��p�������H������H���H;����L�.M�����I�EL��PH������H����"����Y#��H������H�����H�E�H�]�H��P���H9�trH�E�L�u�H��X���H9�P���t8H�;H��tH��P ��=uGH��H9�X���u�I�^I��H��H��X����H���������I���E1�ƅX����o���H����������%���H���H�=���k ���'���������H������H������H�����.�(�����H���5����H���5����H���5����H���5����H����5����H���+6����H���&6����H���5����H���6����H���26����H���46����6����H����7����H���=6����H���I6����H���7����H����7����H���8����H���7����H���4����I��I����8����H��H���H��������5����H���94����H���
5����H���4�����7�����a:����H���:����H���:����H���5����H���5����H���5����H���:����H���3����H���3����H���y:����H���4����H��H������H��(����B4����H���W:������7����H��H�����H��0����Z3����H��H�����H��0����H3������8����H��H�����H��0����13����I���9����H��I���7����H����3����H���9����H���4����H���4���K6���fD��UH��AWAVAUI��ATI��SH��dH�%(H�E�1�H���LJ�t2H�E�dH+%(�|H��L��L��[A\A]A^A_]�V��fDH����H�L�5#�H�XHc@H�@H��L�<u�H��0I9�t,H�;�	u�H���	L���=����t�H�C�x�I�EH�XHc@H�@H��L�<�K���L�5���@H��0I9��1���H�;�
u�H���
L��������t�L�u�H�E�L���a��H�C�x�)H�}��G��tW�����������������f�1�H�E�dH+%(�8H����[A\A]A^A_]�f.�H���H�5��;����toAƄ$�L��L������H�}����(���fDH�C�8A��$�����H���H�5����������AƄ$�L��L�������H�}��G����H���H�5������tXAƄ$�L��L������g���H�CL��H�0��������H���H�5[��a����t	AƄ$�H�}����H�}��G���H�}��G���������H���"7��f���H��(�������f.����H��`fD��H��`fD��H��`fD���������H��H�����H��@�����H��8�����H��0�����H��(�s����H�� �c�����W�����H��H�C����H��@�3����H��8�#����H��0�����H��(�����H�� �������g&�����H��H�S&����H�� �C&����H��@�3&����H��8�#&����H��0�&����H��(�&����UH��AVAUI��ATI��SH��H��dH�%(H�E�1�����t:H��I��H��L��L���b(��H�E�dH+%(u>H��L��[A\A]A^]�L�5��L�������t�H�f�L��H����W��������UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��m���t9H�j�I��H��L��L���'��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5)�L��������t�H���L��H�����������UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1������t9H���I��H��L��L���!'��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5��L���A����t�H�&�L��H�t������`����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��-���t9H�*�I��H��L��L���&��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5��L�������t�H���L��H����w��������UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1������t9H���I��H��L��L����%��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5I�L�������t�H���L��H�4������� ����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1������t9H���I��H��L��L���A%��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5��L���a����t�H�F�L��H����7��������UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��M���t9H�J�I��H��L��L���$��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5	�L�������t�H���L��H�������������UH��ATSH��0H�u�dH�%(H�E�1�H��t,H�H�]�H��H�U�H��H�EЃxt4H�5��H����
��E1�H�E�dH+%(uEH��0L��[A\]��H�5����H��L�e�H�E��
���H��t H�E�dH+%(t�1����H��H�������������T��@��H�=��H���t�f.�UH��H����H�����H���]�f.�D��H�=��H���t�f.�UH��H�-��H���h��H�a�]�f.�D��H�=<�H�5�t�f.�UH��H����H�����H�	�]�f.�D��H�=��H���t�f.�UH��H����H������H���]�f.�D��UH��SH��H��H�5��H��t$H��L���1�1����H��H�]��������H�=��H�0�g��H�5���ff.���UH��SH��H��H�5y�H��t$H��L�z���1�1��Q��H��H�]������&��H�=?�H�0���H�50��f.�@��UH��ATSH��H��dH�%(H�E�1������t4H�5��H�����H�E�dH+%(uAH��H��[A\]�f.�L�%��L���A����t�H�&�L��H�t������`����UH��ATSH��H��dH�%(H�E�1��8���t4H�55�H���u��H�E�dH+%(uAH��H��[A\]�f.�L�%��L�������t�H���L��H�������������UH��SH��H��H�H��tH��PH�;H�]������@��UH��SH��H��H�H��tH��PH�;H�]������@��UH��AWAVAUATSH��xdH�%(H�E�1������tA�=2�H�����H�E�dH+%(�RH�e�H��[A\A]A^A_]��H�Q�H�������t�1�H�}�L�u��H�E�H�5��L�m������L�e�H�E����f�1�L��H��))E�L�u�H�5��H�E�H�E����H�U��L�����1ɺ4L��H�5��H�E��`��H�U�H�}������H��H�E�E1�AVH�u�E1�1�j1�L��Pjj���H��0L������H�}��R��H�}��I��H�}��������H�U��H�H��I���{��H�}����H�}��	��H�}����H��L�%��Q���=��H����`���D���H�8I���X���=i�tI�<$�����4�����Q��������L�u�L�m�L���L�]�L��1ɺ!L��L��h���L�}�L��p���H�E�H�E����H�E�1�L���H�54�H�E�H�E�����1�L��)H�5��H�E�����H�E�L�M�1�PH�M�A��H��x���L��jjj���H�� L���T��H�}�����H�}�����H�}����H��h���1�H��p����!H�E��W��H�U�1�L��H�5��H�E�H�U���1��1�L��4H�5h�H�E����L�M�H�M�1�H��x���A��L��Pjjj�X��H�� L�����H�}����H�}��
��H�}����H�}��h���4���L�=1�L�u�L��L�m��I��L�����?���L��1ɺ!L��L��p���H�E��i���H�E��W��H�U�E1�E1�H��L���-��L�����H�}����������H�U��H�H��H��x������H�}��:��H��x���L��H�y����L��p��������	����UH��AWAVAUATSH��dH�%(H�E�1������t>�=?�L�5���
H�E�dH+%(�H�e�L��[A\A]A^A_]�DH���H���
����t�1�L�u�L�m��H�5��H��p���HDžp���� ���L�e�HDžx������f�1�H�}�H��5)E�H�5��H�E�H�E�H�E�����H�U�L����`��1ɺ/L��H�5��H�E����H�U�H�}���0��1�L��8H�5��H�E�L��x����k��H�U�H�}�����H��H�E�E1�AVH��p���E1�1�j1�L��Pjj���H��0L������H�}��Z��H�}��Q��H�}��H��H��x����������H��p����H�H��I���t��H�}��
��H�}��
��H�}����H��p�������H��L�%���>���=?�L�5������f.����H�8I���@���=�tI�?��������f.����������H���L�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E�����H�E�1�L��H�E�H�E�H�"�H�����1�L��5H�5w�H�E����L�U�L�M�1�ARH�M�A�H��L��H����jjj����H�� H���&
��H�}����H�}����H�}����H��p���1ɺH�5z�HDžp����&��H�y�1�H��x���H�ƺHDžx������H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E����H�U�1�L��H�5��H�E�H�U�����1�L��/H�5��H�E��u��H�U�L�M�H��RL��H���A�1�jH�M��ARj���H�� H�����H�}��q
��H�}��h
��H�}��_
��H��x����S
��H��p����G
��H��X���1�H��P����!H�E�����H�U�1�L��H�5-�H�E�H�U�����1�L��8H�5��H�E����L�M�H�M�1�L��H���A��H��ARjjj����H�� H���)��H�}��	��H�}��	��H�}��	��H��h�����������DH���L�m�H��L�e�����H�
��H��X��������1ɺ!L��H�E�H�5r������H�E�����H�U�E1�E1�H��L�����L���y
��H�}��`����F���H�U��H�H��H��P����'��H�}����H��P���H��H�������?����N��f.�@��UH�d�H��H��H�H�@H9�uQH�ʶ�8t5�G�P��W��t��DH�H�
V�H�PH9�u-H�@��fD�������G��@H�}���H�}��@��f.���H�H�WH9�t9H�B��8t�G�P��W��tO�fDH�O���������f�H�H�
��H�GH�PH9�uH�PH�
��H9�u=�`f����UH��H��H�}���H�}�H�
o�H�H�PH9�u
H�@��@������H�?H��tH��`fD����UH��AVAUI��ATI��SH��H��H�>dH�%(H�E�1�H�;���I�}H�{H��tH��PH�3�~���6M���JA�t$L��P����
L�����M�$$�E�L��H���HDžH���L�����L������L��L�����A��	��H��H���HcU�HcGL�dE��u*�E��H�E�dH+%(�5H�Ġ[A\A]A^]�f�H�H��D`D���n��H�H��H���HcJH�DJ�DJat� f�HH�HHcFL�4H����J�1LcuԺ:f�H�HK�6M����1�H��H���fB�qH�D�`�P���f.��H�a�H���L��M�������L��P����
1�L��L�%�������E����fDH��H��L�����H���\����H��L���u���H���i���H�{����H�;���H�E�dH+%(t�����I������I����L������f.�@��UH��AUATSH��8dH�%(H�E�1���������t0�������H�E�dH+%(�gH��8[A\A]]�H���H��������t�1�H�}�L�eк!H�5��H�E�����H�E�����H�U�E1�E1�H��L�����L�����H�}��m����S���H�UȾH�H��I���8��H�}�����H��L�%�� ������� ����H���H������������H�}�1ɺ$H�E�H�5���:��H�E��������H�U�L�e�E1�E1�H����L��H�����L�����H�}��������H�U��H�H��I���h��H�}����L�%�H�E�dH+%(��H��8H��[A\A]]�3��L�%�L���1������V���1�H�}�L�mк!H�5�H�E��V
���H�E��D��H�U�E1�E1�H��L�����L������H�}���������H�UȾH�H��I�����H�}��+��L��L�-q��|���������f���UH��ATSH�� dH�%(H�E�1��3���t'H�E�dH+%(��H�� H��[A\]�@H��H���!�����t�1�H�}�L�e�!H�5׹H�E��J	���H�E��8��H�U�E1�E1�H��L�����L������H�}��������H�UؾH�H��I�����H�}����H��L�%e��p���$������fD��H�?H��tH��`fD����H�?H��tH��`fD����UH��AWAVAUATI��SH��H��(H�H�H�H�H�H�HcPH�FH�Hc@L�lAD�����H�E��uH��([A\A]A^A_]�I�$H�xI�L$H�L�zH�L�pH�L�BL�HH�H�0HcFL�$H����J�'1�DfA�4f�4BH��H��u�1�f�fA�4f�tB4H��H��	u�1�f�fA�4f�tBFH��H��u�fA�H�1H���f�B~LcffA�Gf���K�$M��uNH�D�h1�fB�gH��([A\A]A^A_]ÐH��L��L�M�L�E�H�M����L�M�L�E�H�M�H���1���@H�����H���f���UH��AWAVAUI��ATI��SH��H�H�H�H��X��?���|���I�E��uH��[A\A]A^A_]�DI�$H��H�HM�d$H�L�rL�xH�H�0HcFH�H��urH�1�DfA�f�BH��H��u�1�f�fA�f�LB4H��H��	u�1�f�fA�f�LBFH��H��u�1��_f�B~H��[A\A]A^A_]�H��H��H�U����I�}H�U�H���n�����UH��AWAVAUATI��SH��H���H�6dH�%(H�E�1�H��h���H�H��8���H��H��P L��h���L�m�1ɺL��I�L�xH���H�E�H��H��P����h��H�E�L��L��H��@���L��H��A��H�=N�H�E���H��t3H�L�u�H�1�H��L���H�E��x��H�5L��L���4�E1�H�;H��tH��PH�}�L�;H��tH��PH�}�����H��h���H��tH��PH�;��H�E�dH+%(��H���H��[A\A]A^A_]�@H�5���L��L�}�H�E����o���H����H�=e�H�� ����!���H�� ����	���H��@����9���H�}��p���H��h���H����L��L��H�3�H�M�fIn�fHn�H�z�fHn�fHn�H��p���H��L��`���fHn�fHn�fIn�fl�fl�fl��P���H���hH���{)����)� ���)�@���)�P������I������1ɺ*L��I��H�5��1�H��`����Y��L��8���fo����H�E�fo� ���fo�@���H�u�H�E�fo�P���L��L�m�)�p���)U�)M�)E����L��L��L��H�
w��b���H��h����&���H��`�������H�E�dH+%(������L��p�������1�1�H�5>�H��p���L���*I�����fIn�H��H�u��P���fHn�H���)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��:���L��L��L��H�
�����H�}��\���H��p����P���H�E�dH+%(�6���H�5��H��L�������I��I�������I��I�������I���*��H�
�H��L�m�H��H��P��������I���H�}�����H��p������L���y���H������H�E�dH+%(�����L�����H��P�+�����H�E�dH+%(�l�������I�����I���EH�5��H�2�L��������I�������H��h����/���H��`����#���L����������X������H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����UH��ATSH�� H�dH�%(H�E�1�H�=g���H��t/H�L�e�H�N�H��L��H�EЃxt4H�5���L����E1�H�E�dH+%(��H�� L��[A\]�H�]�H�5���L��H�E��}�H��t�H�L�`����H��H��A��I��H�H��P�DH����H�=������B���H�H��PH�E�dH+%(t�����I����L������D��H�?H��tH��`0fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H��(u3UH��SH��H��H�5@�H��t#H�;H�]�H�]���������H�5��H��tH�=����H�5�����H���H�=Ŵ��H�5����f.�D��H�?H��tH��`fD����H�?H��tH��`fD����UH��AVI��AUATSH�_H��t<L�-���fDI��L��H�I�|$�e�I�|$�k����8L���>�H��u�I�FI�>1�H���3�I�FI�F[A\A]A^]�f.���H�H�wH��0H9�tH��H������f.�D��UH��H��������H��AWAVAUATSH��(L�wH�L��H)�H��H9��PI��I��H)�L9���H�<H�}�H9���H���E1�H�9I�7H�E�H�8H��tH��PL��I9�t(L��H��L��H)�L�DH�2H��H��H�p�H9�u�H��M9�tM)�H��L��L���r�H��L�H��tI�uH��H�M�H)����H�M�H�E�M�}I�MI��I�EH��([A\A]A^A_]�DH��������H�U�H�M�H�u��m�H�u�H�M�I���(���DH��r�H��������H9�HF�H�U�H�<��H��������H9�HF�H�E�H�<��H�=��h���H���l�M��uH�}�������H�u�L��H���	�����H�����H������H��tWUH��AWAVAUATI��SH��H��(H�OH�GL�?H)�H��H9�r1H��1�H��H����H�I�\$H��([A\A]A^A_]Ð��H��������H��L)�H��H��H)�H9���I��������L�M9�MF�H9�rL�,H��������I9�LG�I��L�E�L��H�M�H�u����H�u�H��I��H�<01���H�M�L�E�I9�t#L)�L��L��L�H�2H��H��H�p�H9�u�M��tI�t$L��L�E�L)���L�E�M�4$K��M�I�D$M�t$H��([A\A]A^A_]�H�=F������UH��AUI��ATSH��H�_H��t+I��H�I�|$H��tH��P�L���=�H��u�I�EI�}1�H���1�I�EI�EH��[A\A]]�fD��UH��AVAUATI��SH��H����H��I��H��<��L�4�L����L��1�H��I����M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�A0H��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H���!�I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�u�����H����I�EI�D$(�F���H���J�H�����f���U1�H��AWAVAUI��ATSH��H��(LcfdH�%(H�E�1�L��H�wH��H�E�H�L�<�M���}M�7I��I�N0�!�I�6H��thH�N01�M��H��H�sI9�uSI��I9�u�A�FA9Eu�I�EI�V�p;ru�L�E�H9�tH��H�x����L�E���u�M�?M��t	I����8��L��I��H�I�EI�EM�~I�F�`�A�E1�1�H�
���L��A�F�%�H�C(H�SH�{ H�s�H�E�����H�ք�uPH�L�m�M�f0I�I�EH��taH�I�I�EL�0H�CH�E�dH+%(��H��(L��[A\A]A^A_]�f�H�U�H������L��1�H�sH��H�E��DH�CL�sI�H��tH�@01�H�sL�4�H�CI�E�H�5���L�����I�~����8L����H�E�dH+%(t�g���H���H����fD��UH��AWAVAUATSH��XH�U�dH�%(H�E�H�L�,�M���RI�]H�E�I��I��H�E�I��H�K�0�H�3H���$H�N1�I��H��I�t$I9��
H��L9�u�H�}�H�CH�7H�E�H9�H�u������H�u�H��H��t'H�H�}��H�E��x��H�}�H�5�����H�E�H�E��H�E��g�H�u�H��H����H�H�}��H�E��x��H�}�H�5u���`�H�}���H�}�H��t
H��E��R�E�������f.�H�E�dH+%(��H��XL��[A\A]A^A_]�E1���H�E�H�}�H�5��H�E�H�E�����2���H�E�H�}�H�5���H�E�H�E���H�E�H��tH�H�E�H��RH�E�H9E����:���f�H�}����+���H�}��J�H�E�L��H��t-H�E�dH+%(t-����H�U�I������H��H�����k�������,�f.�f���UH��AVAUATI��SH��H����H��I��H��<��L�4�L����L��1�H��I�����M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H���1�I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t������H���$�I�EI�D$(�V���H���Z�H�����f���UH��AVI��AUATSL�oM�����M��M�mI�\$ H��t�H��H���x�H��u�I�D$I�|$1�H���j�I�|$I�D$@I�D$(I�D$ I�t$H9�t	H���+�I�|$�A��PL����M���k���I�FI�>1�H����I�FI�F[A\A]A^]�f.�f���U1ɺH�5��H��SH��H��H���H��H�]��Ðff.����U1ɺ	H�5�H��SH��H��H��F�H��H�]��Ðff.����U1ɺH�5�H��SH��H��H���H��H�]��Ðff.����U1ɺH�5�H��SH��H��H����H��H�]��Ðff.����U1ɺH�5��H��SH��H��H���H��H�]��Ðff.����U1ɺH�5��H��SH��H��H��F�H��H�]���ff.�f�UH��ATSH��pdH�%(H�E�1�H��t
�G��utI��xt$1�H�E�dH+%(u`H��p��[A\]��H�E�dH+%(u>H��pH��[A\]�p�L�e�H�wL�����L���X�H�}����-�L������~���H������f���UH��AUATL�m�L�e�SH��H��H��(dH�%(H�E�1�H�L��1ɺH�5��L��H�E��,�L��L���H����H�}��P�H�}��G�H�E�dH+%(uH��([A\A]]������H���`���ff.����UH�ċ1�H��SH��H��H�5A�H���x�1�H��t	�@@9C@��H�]�����UH��ATA��SH�_H��u�CH���S H�CfA9�HBC��H��u�H�ބ�u!1�fD9�HC�HB�H��H��[A\]�@H�_H9_tH���6�H���P H����f.�H��1�H��H��[A\]�U1ɺ H�5y�H��AWAVH�����AUATSH��dH�%(H�E�1�HDž�����H�����1ɺH�5��HDž�����H����1ɺH�5ɱHDž���n�H����1ɺH�5_�HDž���I�H���1ɺH�5?�HDž��$�H������1ɺH�5��HDž������H�����1ɺH�5<�HDž�������K�����L�t�L�����L�� ���H��(���L��@���L��1ɺ L��HDž�����1ɺL��H�5��HDž ����j�1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E����H���f�H��(����J���0��H������H�H��H����H�� �����H�������H�������H��������H����v�H�����j�H�����^�H������R�H������F�H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=I�L���y���������L�j�H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž����v�1ɺL��H�5w�HDž���HDž����J�1ɺ
L��H�����H�5Q�HDž ���H��@�����1ɺH��H�� ���H�50�HDž(���H��H������M��1�H��(���H�����L��0���H�����H�����H��P���H�1�Dž8���H��0����+�H������O�H������3�����H������H�H��H�������H��(�����H�� �����H������s�H������g�H�����L��H������L�������]�������H�H�ыPH���������I��H�w���ff.�H��I��H��A��L��M��t6I�H�H�!f�H�0H��t(H�NI��1�H��H��I9�uH��I9�u�fD9Xu�L��ÐE1�L��Ð�H�u)H�OH��u�fDH�	H��t9qu�H����L�O��1�I��H�H��I��H��t�H��x9�t"L�M��t!A�xH��1҉�I��I9�uL��9�u�H�	H���1�뤐ff.�UH��ATI���S���I�<$H�H��H�xH��tH��PH��[A\]���H������f.���U1�H�"�H��SH��H��H�5�H���8�1�H��tH�{@H�P@�w;rtH�]�����f��H9�t�H��H�����G��H�]�Ʌ������f.�UH��AVE1�AUATI��SH�?H����H�[H��ttH�{����H��H�C1�I�t$H�AI�t$I�$I�L$H�4�@H�H��t;H�{I������I�EH��H�C1�H�AI�t$I�$H��H�8u�L�(H�H��u�[A\A]A^]�@H�WH��t2H��H��<u7L�,�L���5��L��1�H��I���e��M�4$�:���H�G0L�w0��H��=t����������H������f���UH��H��AUI��ATSH��H�_H�H��t1f�I��H�I�|$H��tH��P�L������H��u�I�EI�}1�I��8H�����I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�}��DH��[A\A]]Ðff.����UH�\�H��AUI��ATSH��H�_H�H��t1f�I��H�I�|$H��tH��P�L���
��H��u�I�EI�}1�H�����I�}I�E8I�E I�EI�uH9�t	H������H��L��H[A\A]]�����UH��H��AUI��ATSH��H�H�@���I�]H���I�EH��t-DI��H�I�|$H��tH��P�L���M��H��u�I�EI�}1�I��8H���=��I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]���DH��[A\A]]Ðff.����UH��H��AUI��ATSH��H�H�@����I�]H���I�EH��t-DI��H�I�|$H��tH��P�L���}��H��u�I�EI�}1�I��8H���m��I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�-��DH��[A\A]]Ðff.����UH�L�H��AUI��ATSH��H�H�@�	��I�]H��I�EH��t-DI��H�I�|$H��tH��P�L�����H��u�I�EI�}1�H�����I�}I�E8I�E I�EI�uH9�t	H���g��H��L��H[A\A]]�P����UH��H��AUI��ATSH��H�H�@�I��I�]H�&I�EH��t-DI��H�I�|$H��tH��P�L������H��u�I�EI�}1�H������I�}I�E8I�E I�EI�uH9�t	H�����H��L��H[A\A]]�����UH��AVAUL�u�L�m�ATI��H��SH��H��0dH�%(H�E�1�H�L���1ɺH�5q�L��H�E���L��L���L����H�}��;��H�}��2��L��L���A�A�H�
3��o��I�|$pH�s@H��P8L���H��H�E�dH+%(u
H��0[A\A]A^]������H�������H�����ff.�UH��AWAVAUATSH��(H�}�H����H�E�H�@H�E�H���dH�E�H�@H�E�H���/H�E�L�xM����I�_H����L�kM��tbM�eM��txI�T$H����L�rM��t'I�~H�U��d���L��M�v�(����H�U�M��u�L�r�(H������M��tdL���L�c�(H�����M��t'L���w����M�e�(L�����M��t�M���a���I�_�(L���q��H��t3I���-���@I�T$�(L��H�U��J��H�U�H��t�I���!���H�}��(H�_�'��H��t	H�]�����H�}Ⱦ(H�_���H��t	H�]����H�}��(H�_����H��t	H�]��g���H��([A\A]A^A_]�f.���UH�<|H��XfHn�H���H��ATI��SH�H�fHn�H�H8H��xfl�fHn�H��`G fHn�fHn�fl�G0fHn�fl�G@H�pH��P I��$�H��tH�{���H��H�[�(�!��H��u�[L��A\]�0����H����@��UH��SH��H���+���H��H�]������ff.�UH��AWAVI��AUL��@���ATL��I�Ժ
SH���H��dH�%(H�E�1�����E�H�L�|D�����I�E��u,H�E�dH+%(��H�ĨL��[A\A]A^A_]�@�-�@bgH�f�HH�HH��u3Hc]�H��.f�H�HH�H��u>I�D�x1�f�Y��H��L��H��8����V��H��8���H���f.�H��L���5��H�������f.���U1ɺH��AWAVL�u�AUI��L��ATI��H�5��SH�]�H��XdH�%(H�E�1�H�E��@��1ɺH��H�5y�H�E��"��L��H�ھ��L�����H�}�L�}��B��H�}��9��L��H�E����H�E�H�E�H��H�E����A�E@�tL�����A�E@����H�E�HcPH�E�Hc@L�|D���H��H�E�I��E����H���
L��H��L���H�E��j��H�}�������L��H��A�A�H�
������H������H�}��m��H�}��d��H�}��[��H�E�dH+%(��H��X[A\A]A^A_]�f�H�}�����-���f�H�u�H�xHcFH�H��u;H�u�H�� f�H�yHcFH�H��u:1�E�}f�D����f.�H��H�U����H�U�H���f.�H��H�M�H�U�����L�m�H�M�H�U���<����H������H���"���H���
��UH��AWAVAUATSH��dH�%(H�E�1��~���tB�=�H�t���H�E�dH+%(��H�e�H��[A\A]A^A_]�f�H�1�H���Q����t�H��x���1ɺ)HDžx���H�5u��x��H�E������1�=r�L�-��mI�EL�}�1ɺ<H�5��L��L�m�H�E�H�E�L�e�H�E����H�U��L�����H��H�E�E1�AUH��x���E1�1�j1�L��Pjj�X��H��0L�����H�}����H�}��j����P��H��x����H�H��I���2��H�}�����H��x������H��L�%�����=_�H���|���f.�����H�8I������=1�tI�>����L���f.���������JL�e�L�}�L�{�L��H�}�1ɺ!H�E�H�E�����H�E�1�L��#H�5ÉH�E�L�e�H�E����1�L���<H�5]�H�E����H�E�L�M�1�PH�M�A��jL��jj����H�� L�����H�}����H�}����H�}����H�}��������L�-��L�������������1�H�}�L�e��%H�E�H�5#�L�u������L�}�H�E�����f�1�L��H��5)E�H�5�H�E�L�e�H�E����H�U�L����:��1�L���2H�5�H�E��|��H�U�H�}���
��H��H�E�E1�AVH�u�E1�1�j1�L��Pjj����H��0L�����H�}��n��H�}��e��H�}���������H�U��H�H��I�����H�}��.��H�}��%��H�}����L��L�%r��m���g����L�-A�L�e�L��L�}��Y��L�"��������L��1ɺ!L��L��`���H�E��y���H�E��g��H�U�E1�E1�H��L���=��L�����H�}����������H�U��H�H��H��h������H�}��J��H��h���L��H������L��`��������[��H�8I������=�tI�>�/���m���f.�����*�����L�e�L�}�L��L�U�L��1ɺ!L��L��P���L��X���H�E�H�E��W��H�E�1�L��H�5c�H�E�H�E��1��1�L���5H�5p�H�E����H�E�L�M�1�PH�M�A�
�H��`���H�}�jjjH��h����L��H��h���H�� ���H�}����H�}����H�}�����H��P���1�H��X����!H�E����H�U�1�L��H�5ϗH�E�H�U���i��1�L���2H�5�H�E��K��L�M�H�M�1�H��`���A��L��h���PL��jjj���H�� L������H�}��D��H�}��;��H�}��2��H�}��������H�=e�L�e����L�}�L�I����6���L��1ɺ!L��L��`���H�E�����H�E����H�U�E1�E1�H��L���d��L���,��H�}��������H�U��H�H��H��h�������H�}��q��H��h���H�=��H������L��`�����������I���$�f.�UH��AWAVAUATSH��dH�%(H�E�1�����tB�=c�L�5��H�E�dH+%(�H�e�L��[A\A]A^A_]�f�H���H���!����t�1�L�u�L�m��H�5��H��p���HDžp����@���L�e�HDžx����'��f�1�H�}�H��5)E�H�5ҀH�E�H�E�H�E�����H�U�L������1ɺ/L��H�5πH�E�����H�U�H�}���P��1�L��8H�5πH�E�L��x������H�U�H�}�����H��H�E�E1�AVH��p���E1�1�j1�L��Pjj����H��0L�����H�}��z��H�}��q��H�}��h��H��x��������貽��H��p����H�H��I�����H�}��+��H�}��"��H�}����H��p����
��H��L�%��^���=_�L�5������f.����H�8I���`���=1�tI�?��������f.��������H��~L�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E��	��H�E�1�L��H�E�H�E�H�B�H������1�L��5H�5�~H�E�����L�U�L�M�1�ARH�M�A�H��L��H����jjj���H�� H���F��H�}����H�}����H�}����H��p���1ɺH�5��HDžp����F��H���1�H��x���H�ƺHDžx������H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E�����H�U�1�L��H�5�H�E�H�U�����1�L��/H�5�}H�E����H�U�L�M�H��RL��H���A�1�jH�M��ARj����H�� H�����H�}����H�}����H�}����H��x����s��H��p����g��H��X���1�H��P����!H�E����H�U�1�L��H�5M�H�E�H�U������1�L��8H�5�|H�E����L�M�H�M�1�L��H���A��H��ARjjj���H�� H���I��H�}����H�}����H�}����H��h����������DH�فL�m�H��L�e���H�
�{H��X��������1ɺ!L��H�E�H�5�{�
���H�E����H�U�E1�E1�H��L������L�����H�}������f���H�U��H�H��H��P����G��H�}�����H��P���H��H���(���?����n���ff.�UH��AWAVAUATSH��HdH�%(H�E�1��~���tB�=�H�t��vH�E�dH+%(��H�e�H��[A\A]A^A_]�f�H�1�H��衽����t�1ɺL�m�HDž���H�5�qH����������HDž���L��������f�1ɺ3H�H�����)E�H�5�q)E�)E�H��P���H�E�HDž����a��H������L������1�H�� ����1H�5hqHDž ����(��H�� ���H�}�����1�H��(����1H�5fqHDž(�������H��(���H�}���y��1�H��0����:H�5dqHDž0������H��0���H�}���?��1�H��8����=H�5jqHDž8����z��H��8���H�}�����H��@���1ɺ:H��H�5mqHDž@����=��H��@���H�}������H��H���1ɺ=H��H�5pqHDžH������H��H���H�}�����H��P���1�1�H��E1�E1�L��AUH�����jPjj�>���H��0L���r���H�}�����H�}�����H�}�����H�}�����H�}�����H�}����H�}����H�������������H������H�H��I������H��H����s���H��@����g���H��8����[���H��0����O���H��(����C���H�� ����7���H������+���H���������H��L�%}�p����=r}H�}�����@�3���H�8I���x���=J}tI�?�����d���f��2}�
}����H��@���H����H��H���H�����H��vH����H�=�|��H�=�|��H�=}L�5%p��H�=7}�aH��8���H����1ɺ!H��H�����L���HDž�HDž8�������H��8���1�H�����#H�5pHDž@���H�E����H�����1ɺ3H�5�mHDžH����{��H�M�1ҾH�����L��@���A�L��QH��H���jjj���H�� L�����H��H����n���H��@����b���H��8����V���H������1ɺ
H�5D�HDž��������H�����1ɺH�56�HDž�������H�����1��~����D�-7�I��H�5��������L��L������E��E�fD�m�HDž����s��H��1�L�����H��L�ߺL������HDž����A��H�����1��~����I�Һ+fD�m�H�5�mL������L������E��E�HDž�������H�� ���1�H�5�mHDž ���I�Ӻ(L��L���������H��(���1�L��I�к*HDž(���L��P���L��L���������H��0���1�H�5�mHDž0���I�Ѻ(L��L�������W��H����1�H�����HDž8����!�2��H��8���1��~�(����~����H����H�5c�HDž@����0���H��p����� ���)�`���)�P�������H�����1ɺ1H�5�jHDžH������AVL��@���1�jH��H���E1�L������j����H�� L���6���H��H���誺��H��@���螺��H��8���蒺��H��0���膺��H��(����z���H�� ����n���H������b���H������V���H������J���H������>���H�������2���H������1ɺH�5!�HDž�������H������1ɺH�5�HDž ������H������1��~� ����+H�5+kfD�m������E�E�HDž(����d���H������1ɺ(H�5kHDž0����?���H����1�H�����HDž8����!����H��8���H���1��~�(���H��H����HDž@���H��`�����0���)�P�������H�����1ɺ1H�5!iHDžH������AVL��@���1�jA��L�����H��H���j���H�� L���.���H��H���袸��H��@���薸��H��8���芸��H��0����~���H��(����r���H�� ����f���H������Z���H������1ɺ
H�5H�HDž������H������1ɺH�5:�HDž����п��H������1��~�����	H�5�fD�m������E�E�HDž���茿��H�
j1�H������H�ƺ*HDž ����d���H������1��~� ����+H�5�hfD�m������E�E�HDž(���� ���H������1ɺ(H�5;iHDž0������H����1�H�����HDž8����!�־��H��8���1��~�(���H����H�5�HDž@����0���H��`����)�P���荾��H�����1ɺ:H�5gHDžH����h���AVL��@���1�jH��H���E1�L������j謿��H�� L����H��H����d���H��@����X���H��8����L���H��0����@���H��(����4���H�� ����(���H���������H���������H���������H������1ɺ
H�5�HDž���蟽��H������1ɺH�5�HDž����z���H������1��~�����	H�5āfD�m������E�E�HDž����6���H��g1�H������H�ƺ*HDž �������H������1��~� ����+H�5�ffD�m������E�E�HDž(����ʼ��H������1ɺ(H�5�fHDž0���襼��H����1�H�����HDž8����!耼��H��8���1��~�(���H�����H�5��HDž@����0���H��`���)�P����7���H�����1ɺ=H�5eHDžH�������AVL��@���1�jH��H���E1�L������j�V���H�� L��蚵��H��H�������H��@�������H��8������H��0������H��(����޳��H�� ����ҳ��H������Ƴ��H�����躳��H�����讳��H������1ɺH�5�HDž����I���H������1ɺH�5��HDž����$���H������1��~�����	H�5nfD�m������E�E�HDž������H��e1�H������H�ƺ*HDž ���踺��H������1��~� ����+H�5;dfD�m������E�E�HDž(����t���H������1ɺ(H�5�dHDž0����O���H����1�H�����HDž8����!�*���H��8���1��~�(���H����H�5c~HDž@����0���H��`����)�P������H�����1ɺ:H�5�bHDžH���輹��AVL��@���1�jH��H���E1�L������j����H�� L���D���H��H���踱��H��@���謱��H��8���蠱��H��0���蔱��H��(���舱��H�� ����|���H������p���H������d���H������X���H������1ɺH�5G}HDž�����H������1ɺH�58~HDž����θ��H������1��~�����	H�5}fD�m������E�E�HDž���芸��H�;c1�H������H�ƺ*HDž ����b���H������1��~� ����+H�5�afD�m������E�E�HDž(�������H������1ɺ(H�59bHDž0������H����1�H�����HDž8����!�Է��H��8���1��~�(���H�����H�5|HDž@����0���H��`���)�P���苷��H�����1ɺ=H�5�`HDžH����f���AVL��@���1�jH��H���E1�L������	j誸��H�� L�����H��H����b���H��@����V���H��8����J���H��0����>���H��(����2���H�� ����&���H���������H���������H���������H����f�����L�%1mL���Q���H��@���H����H��H���H�����H�
�fH��������H����1ɺ!H�5�fHDž@����J����HDžH����5���E1�E1��L�����H�H��@���L������L���ɯ��H��H���譭���蓤��H��@����H�H��I���u���H��@����	���L��L�-Ol�Z����e�DH��_�H�=�l�h�����L��H�=al�L����X��H�9_�H�=l�(�����H��^�H�=�k�����������ff.���f��@��UH��AUATSH��H��H9�tlL�.I��M��t
I�EL��PH�;L�+H��tH��PM�l$M��t�X譥��I�t$H��I���m���L�cL�kM��tL��許���XL��諤��H��H��[A\A]]���H���������UH��SH��H�^H���7���H��1�H��tH�]���fDH��1�����H�����H�]�ɉ��fD��UH��ATSH�^L�bH�����H��t1�[A\]��L���Ȯ��H��u�1�H��訸��H�����1�L���蔸��H�����9���븐@��UH��AWAVAUATSH��dH�%(H�E�1�H��u'H�E�dH+%(��H�e�[A\A]A^A_]�DL�� ���H�_`1�I��L������L��HDž ���H�5wyL���������1ɺL��H�5TyL����HDž�����L��L���H�����H���������H�� �������I�v`L��A�A�H�
y����D���H���HDž�L�=�xH��H������L���I��H��@���H�����H�����f�H���L����}���M�n`1ɺH����H�5Q{HDž�������H��������L��H�������H������-���L�������AoL$(f�L��M�npL����HDž����)����)��������jA�����L��jL����L��H�����H�����U2H������XZ跩��H�H����L�c1�D�kL���)���H��t�H�����D��
��D�h�E�D�����I��E������H�HH��wf.�f�H��H��f�A�L9�u�HcE�I�HH�H��uBH�1��)f�E�hf�p�����H������H������@����,���H�����H��L������H��������L������H����H����c�����H��������H�������H��������H���"���f���UH��AWAVAUATSH��dH�%(H�E�1�H��Pu'H�E�dH+%(�QH�e�[A\A]A^A_]�DH�� ���L�g`1�I���H��H�59vHDž ���蹯��H�����1ɺI��H��H�5�uHDž���H������臯��H��L��L���t���H�����訧��H�� ���蜧��H����I�u`H�
�uH��A�A����H��X����ʤ��M��@I��0I���H��x���H��p���I9���
fDA�t$(H��p����w��I��H����
M�D$ H��@����
H��H������E�xL�������`����E�H�I�L��H�������H���H������L������H���������CM�}`1ɺH��H�5�wHDž ����V���H�ھ��L��H�������?���H�� ����s���I�t$0H�������
M�}`�	���H������H��HDž ����‰E�蚦��H������1ɺH�5�|HDž����խ��H�پ��L��H������辰��H�������H�� ������I�t$8H�������
M�}`�|���H������H��HDž ����‰E��
���H������1ɺH�5��HDž����H���H�پ��L��H�������1���H������e���H�� ����Y���I�t$@H�������
M�}`���H������H��HDž ����‰E�耥��H������1ɺH�5(vHDž���軬��H�پ��L��H������褯��H������ؤ��H�� ����̤��I�t$HH�������
M�}`�b���H������H��HDž ����‰E���H������1ɺH�5�rHDž����.���H�پ��L��H����������H������K���H�� ����?���1ɺH��H�5�rM�}`HDž ����ګ��H������1ɺH�5jrHDž���赫��H�پ��L��H������螮��H������ң��H�� ����ƣ��I�u`���H������A�A�H�
r���M�vL������HDž����L������H������I�V(I�t$@H��H�������Q���H�����I�V0I�t$HH��H�������2���H����������1�芨��H������fI~��٥��1���m����
m���h���fIn��s�����t�
O���h����Z������tH������膥��H��A�.1�1�A��H��HDž ���jjj��L�� ���H�� M���	H�������4���H��A�1�1�A�.�H��HDž ���jjj袛��L�� ���H�� M�������IcPIcFH�D
����H������L��L��`���B�Ɖ�h����X���H������L��`���H�5]pHcPH�LP1��f�f�AH��H��u�Ic@H��H�H�������H�H�y�IcFH�H��������DH��������h����HL���f���L���^���H������D�@E��tDM�u`1ɺ	H��H�5�oHDž ������L��H�ھ��L���֫��H�� ����
���A�t$(H�������
�d���D�p	�E�D���U���H������I��E����M�}`1ɺ
H��H�5IoL������HDž ����f���L��H�ھ��L���S���H�� ���臠��I�u`H��A�A�H�
o����Ý��H��諘��H�������O���H�������C���H������臘��I�T$ A�L$(L���rH���.��M�}`1ɺH�5�pH��HDž ���蹧��L��H�ھ��L��親��H�� ����ڟ��I�u`���H������A�A�H�
�l����H������D�xA��D������H������I��E���PL�5n1�H��M�}`�L��HDž ���� ���H������1ɺH�5vHDž������H�پ��L��H���������H���������H�� �������L��1ɺH��M�}`HDž ���諦��L������1ɺH�5�yHDž���L��胦��H��L��L��L�������i���H�����蝞��H�� ���葞��L������I�t$P�
M�u`L���$���L��H��L�������‰E�HDž ���貞��L������1ɺH�5ZoHDž���L�����H��L�����L���ר��H���������H�� ������I�t$XH�������
M�u`蕝��H������H��HDž ����‰E��&���1ɺL��H�5lHDž����e���H��L�����L���R���H�����膝��H�� ����z���M�u`1ɺH�5lH��HDž �������1ɺL��H�5�kHDž�����H��L�����L�����H���������H�� ����	���M�u`1ɺH�5�kH��HDž ���褤��H�ھ��L��H������荧��H�� ������I�u`H��A�A�H�
Uk������H�����H������艜��H�������͔��H�������q���H�������e���L���
���I��H9�x�������H��X���葔�����@1�H�
1x�f�fA�TFH��H��u�H������I�NHcFH�H���gH��)1�f�E�~f�H�T���@H��iH�HH�rf�f�H��H��f�A�H9�u�HcE�I�OH�H���.H��)1�f�0E�wf�x���1�H�=�i�f�4f�tPH��H��u�H�xK�?M���+Lc}�H�A�.fD�H�xK�?M����H������E1ɉHfF��N�f�I�vH��H���L��P���H��`����2���H��H���L��P���H��`����@����I�pH��L��P���H��`������L��P���H��`���H�����H��H��H��h����͑��H��h���H���w���fDH������H��H��h���袑��H��h���H�����H������H�������}���H������H�����fDI�pH������H�������Q���H������H������H�����薔����H��錶����H��黶����H��飶����H��闶����H��鋶����H��闶����H���s�����H���g�����鳶���˶��������H�������H��������H�������H��������H��������H��������H���+�����H���9�����H���G�����H���U�����H���f�����H���ն���ff.���UH��AVI��1�AUI��H�
�z��ATI��1�SH��H�� dH�%(H�E�1�����I�}L��H��P(��t`I�6L�m�L��L��H��P(foE�H�E�H�KH�S�o�H�CH�sH�U�fH~�H�U�)M�H9�tEH9�t0H�5)z��L������H�E�dH+%(u-H�� H��[A\A]A^]�f�H�U���f.�H�KH9�u���萒����I���`���@��UH��ATI��SH��H��dH�%(H�E�1�H��0���I�4$H�}�H��PH�}�H�5f�wH���V������tA1ɺH�5!kH������H�}��R���H�E�dH+%(��H��H��[A\]�H�}�H��e�wH�������t1ɺH�5�kH��蹞����H�}�H��e�wH��贐�����t1ɺH�5�eH���y����Y���@H�}�H��e�wH���t������t1ɺ	H�5�eH���9�������@H�E�H�je�pH�x�4������t1ɺH�5deH���������H�E�H�Ne�pH�x������t1ɺH�5HeH��轝�����H�E�H�2e�pH�x輏�����t1ɺH�5.eH��聝���a���H�E�H�e�pH�x耏����t 1ɺ
H�5eH���E����%����+���H�E�H�e�pH�x�?�����t1ɺ	H�5�dH���������H�E�H��d�pH�x������t1ɺH�5�dH���Ȝ�����H�u�H���G��������I��鞳��fD��H�>t&UH��SH��H��H�`葖��H��H�]��H������Ðff.���UH��SH��H��H�`�W���H��H�]��H���'����fD��UH��AUATSH��H��8L�&dH�%(H�E�1�H�=ZT��M���I�$L�m�H�<TL��L��H�E��xtBL��H�5v����H�H��脑��H�E�dH+%(��H��8H��[A\A]]�L��H�5�u��L�e�H�E�襉��H�H���6���M��t�I�$H�}�L��PH�u��_� L��H�E�襍��H�E�H�;H��f���H�}��]���I�$L��P�Z���fDH�oi�H�=MS���M�����H�H��衐������跍����I���ױ���f.���UH��AWAVAUA��ATSH��H��pH�����H��t=I��A�L��xH��t?�(�U���L��L��D��fD�h H������H���H��[A\A]A^A_]��L9�t�E1�fD;j A��뮐ff.����H���A��L��xH��t6L���	�H��H��tH�PH�HfD9@ r�H��H��H��u�I9�tf;w ��Ð1�Ðff.����UH��AUI��ATSH��H��H�>H�;H��tH��P�X�n���L��H��I���0���L�cH��[A\A]]���I��鬰����I��铰������UH��AUI��ATSH��H��H�>I�}H��tH��PL�cM��t�X��H�sH��I��赐��M�eH��[A\A]]���H���O�����H���6���ff.�UH��AVAUATSH��0dH�%(H�E�1�H9���I���H��艔��H��M��t-I�$L�m�L��L��H�E��x��H�5�r��L��脆��E1�L�e��C���H��H����H�L�m�H��L��H�E��xt~H�5Wr��L���?���M����M��t
I�$L��PH�E�dH+%(��H��0��[A\A]A^]��H�5	r��L��L�e�H�E�����_�����f�L�u�H�5�q��L��H�E�赅��M9���M���m���I�L���P�_����M�����L����@�����H��I���Ǯ����H��H���Ǯ��f���UH��AUATSH��H��(dH�%(H�E�1�H�H�>tNL�m�I��L������H�}�L����LH�;H��tH��PH�}�H�E�H�;H��tH�H��RH�;H�L��PH�E�dH+%(uH��(H��[A\A]]�耉����I���l�����I���h������UH��AWAVAUATI��SH��XdH�%(H�E�H���H+��H��������E�t
�x��A�D$|1�H�E�1�L�m�H�E��E���yF����L��L��H��I��H�E��xtSH�5p��L�����A�T$|H��9]���A�߃����I��$�L�4�M��u�H��9]���A����L�u�H�5�o��L��H�E�蝃��L�u�M��t�I�H�}��1�H�5{]H�E�H�@(H�E��:���H�U�H�E�L��L���H�E�H�5_o��L��xtV�A���H�}��H���I�L��H���PA�T$|9]��3���D�����H�U�dH+%(u;H��X[A\A]A^A_]�@H�E��8t����H�}����E�|$|�f��W|���胇����H��雰���fD��UH��AWAVAUI��ATSH��XH�u�L�&dH�%(H�E�1��Ƈ�f���LJ�LJ�LJ����M��t,H��I�$H�]�L��H��H�E��xt:H�53n��H������H�E�dH+%(��H��X[A\A]A^A_]�f�L�}�H�5�m��H��H�E��Ձ��L�}�M��t�I�L�u�L��L���PH�}��=L�e�1ɺH�E�H�5�[L���_���H�E�L��L��H��H��H�E���H�E��x�xH�5qm��H���Y���H�}��`���1ɺL��H�5C[H�E�����H�U�L��L��H���`�H�E��x�
H�5m��H������H�}��
���1ɺL��H�5[H�E�謒��H�U�L��L��H���
�H�E��x�,H�5�l��H��譀��H�}�贊��1ɺL��H�5�ZH�E��V���H�U�L��L��H����H�E��x��H�5ol��H���W���H�}��^���1ɺL��H�5�ZH�E�����H�U�L��L��H���^�H�E��x�PH�5l��H������H�}�����1ɺL��H�5:ZH�E�誑��H�U�L��L��H����H�E��x��H�5�k��H�����H�}�貉��1ɺL��H�5�YH�E��T���H�U�L��L��H����H�E��x�DH�5mk��H���U��H�}��\���1ɺL��H�5�YH�E����H�U�L��L��H���\�H�E�H�U��@����w��������D�"�fD������D�"H�5�j��H����~��H�}��ш��E���A���t-H�}�臐��H��tH���H��H�����A���H�}�H��tH��PH�E�dH+%(�I�L��H�@H��X[A\A]A^A_]���H��H�5Fj���1~��H�}��8����i���H�E��8A������@H�E��8A������@H�E��8A����t���@H�E��8A����
���@H�E��8A������@H�E��8A����.���@H�E��8A������@D�"����D�"���������H���i�����H��H�E�H�E��]�����H���@�����H���e�����H���d�����H���c�����H���b�����H���a�����H���`�����H���_���f.���UH��AWAVAUATSH��XH������dH�%(H�E�1�H���u(H�E�dH+%(�
H�e�[A\A]A^A_]�fDL�� ���H�_`1�I��L������L��HDž ���H�5�VL����������1ɺL��H�5<TL������HDž����ۍ��L��L��H���Ȑ��H��������H�� �����I�w`L��A�A�H�
�S����,���H�����HDž���H��H�������;���M���M���I�_H��H�������%���H����1�H������H��H����H�����L��@����ƺ
L���~��D�h�E�D���}��I��E����H�����L���������L������1�H�������H�5�UHDž ���L�``L��覌��H������L��L��菏��H�� ����Ä��M�g�
��H��M��t,I�$L��L���H�� ����xt9H������H�5�f���vz��H������z���H�������|�����f�H������L��0���H�5Kf��HDž0����+z��f�L�����)���M��t�I�$L����	1�H�5�TL��L�h(HDž�贋��H������L��L��A��H�5�CH����H��H��e��H�� ���L�
�e��PH��(���L�|k��H������H������H�5�e��A���zy��H����~���Y^E����Hc���Hc���f�)��H��(����CH�� �����u�P��x�'L�kpH�CxH������H��L��H��H��H�H��P H������L�����HDž���L��L������H�@pH�������p���jL��L������jH������A�����H������H�������BH�����XZ褂��H�L��H��H�������P I�$L��PM�?M�������fDH�HH��PDf�H��H��f�A�H�xPH9�u�HcE�I�NH�H��u{H��)E1�f�8E�nfD�@���fDHDž����1�1�E1�����f�L�k8H�C@����H�fRH�=�A�X~��H�5�A���@H��L��H�������x��H������H���d���I�$L��P�����3|����H���	�����H���8�����H���?�����H���٥����H�������H���O����f.���U1ɺH�5�QH��AWAVL�u�AUL�m�ATSH��H��hL�g`L��dH�%(H�E�1�H�E�蟈��1ɺL��H�5�ZH�E�L��p����z���L��L��L���g���H�}�螀��H�}�蕀��H�s`L��A�A�H�
1Q�����}��H�C`H�=M@H�Xp��H��t+H�H�4@H��L��H�E��xt=H�53b��L���v��H��p����ox��H�E�dH+%(��H��h[A\A]A^A_]�L�e�H�5�a��L��H�E���u��L�e�M��t�H�E�H�nH��x���L��xI�$H�3L��L�xxH�E��E���H�U�H��x���L��H�U�A��H�}�H�����I9�u�I�$L��P�D���H��:�H�=D?��{������y����H���g�����H��鄤����H��銤������UH��AWAVAUATI��SH��h������������������D������dH�%(H�E�H�G`H�=�>H�@pH�������"H������H���BH�H�����H��>H��H������x�SH�5�`��H���lt��M�l$`HDž����HDž����1ɺH��HDž���H�5OL������1ɺL��H�5�NHDž��؅��H��L��L���ň��H����}��H�������}��M�l$`A��ftm1ɺH�5�NH��HDž����}���1ɺL��H�5zNHDž��\���H��L��L���I���H����}}��H������q}��L������HDž����L����z��A��$���A��$��H�E��������
L��0���H��H�������D����������
L���E��.���HcUĉ�t���H�H�L��H�������Ou��H������I������H������L�������|��������H�������
�Ӂ���������
L���E�轁��HcUĉ�t���H�H�D���lM�|$`1ɺH��H�5=MHDž�������L��H�ھ��L�����H������/|��M�l$`1�H�ߺH�5MHDž����Ƀ��1ɺL��H�5�LHDž�訃��H��L��L��蕆��H�����{��H������{��M�l$`1�H�ߺH�5�LHDž����W���1ɺ	L��H�5�LHDž��6���H��L��L���#���H����W{��H������K{��H��M�l$`1�A�.�1�H����[A�HDž���jjj�lt��H�����H�� H������1ɺH��H���H�5�KHDž���萂��L��H�ھ��L���}���H������z��H����z��M�l$`1�H�ߺH�5�MHDž����?���1ɺL��H�5�KHDž�����H��L��L������H����?z��H������3z��M�l$`1�H�ߺH�5PKHDž����́��H�ھ��L��H�
;趄��H�������y��M�l$`1�H�ߺ$H�5�5HDž���脁��1ɺ	L��H�5�JHDž��c���H��L��L���P���H����y��H������xy��M�l$`1�H�ߺH�5�JHDž�������1ɺL��H�5�JHDž���H��L��L���ރ��H����y��H������y��M�l$`1�H�ߺ,H�5�4HDž���蠀��1ɺL��H�5;JHDž�����H��L��L���l���H����x��H������x��M�l$`1�H�ߺH�5�4HDž����.���1ɺ
L��H�5�IHDž��
���H��L��L�����H����.x��H������"x��M�l$`1�H�ߺ3H�5<4HDž������1ɺ
L��H�5uIHDž����H��L��L��舂��H����w��H������w��M�l$`1�H�ߺ8H�54HDž����J��1ɺ	L��H�5IHDž��)��H��L��L������H����Jw��H������>w��M�l$`1�H�ߺH�5�HHDž�����~��1ɺ	L��H�5�HHDž��~��H��L��L��褁��H�����v��H�������v����ro��I�t$`���H��I��A�A�H�
nQ�s��A��$�M�l$X��M�l$`1ɺ
H��H�5"HHDž���� ~��1ɺL��H�5YDHDž��}��H��L��L�����H���� v��H������v��I�t$`���H�����A�A�H��H������H�
D�As��M��$1ɺH�5�GL���}��M�l$`1�H�ߺH�5�FHDž����]}��L��H�ھ��L���J���H������~u��M�l$`1�H�ߺH�5�CHDž����}��1ɺ
L��H�5GHDž��|��H��L��L������H����u��H������u��I�t$`L��A�A�H�
�F����Gr���������
M�l$`L������L���y��L��L������H�߉‰E�L�����HDž����t��1ɺL��H�5QKHDž����>|��H��L�����L���+��H������_t��H������St���������
H������M�l$`�gy��H������H��HDž����‰E��xt��1ɺL��H�5 OHDž����{��H��L�����L���~��H�������s��H�������s���������
H������M�l$`��x��H������H��HDž����‰E���s��1ɺL��H�5�DHDž����0{��H��L�����L���~��H������Qs��H������Es���������
H������M�l$`�Yx��H������H��HDž����‰E��js��1ɺL��H�5HAHDž����z��H��L�����L���}��H�������r��H������r��I�t$`H��A�A�H�
QA����o��H����j��L����j��M�l$`1�H�ߺH�5aDHDž����#z��1ɺL��H�5?CHDž��z��H��L��L����|��H����#r��H������r��M�l$`1�H�ߺH�5W@HDž����y��1ɺ
L��H�5�CHDž��y��H��L��L���}|��H����q��H������q��I�t$`L��A�A�H�
oC�����n��Hc�����Lc�����D������M�D$`H��Hi��MbL��H������Ii��Mb����L��x���I��H��&I��%H��%)�E��A��D�A)�A)ʺ
D��p���D�������6v��H������H��HDž����‰E��Gq��1ɺL��H�5�GHDž����x��H��L�����H��x����o{��H������p��H������p��������M�D$`Ii��MbD������L�������
��L������H��&L��)�D��u��L��H��HDž����‰E�L�������p��1ɺL��H�5=KHDž�����w��H��L�����H�������z��H�������o��H�������o��������M�l$`D��p���H������D)ډֺ
��t��H������H��HDž����‰E��o��1ɺL��H�5�@HDž����=w��H��L�����L���*z��H������^o��H������Ro���������
D������H������M�l$`D)щ��Zt��H������H��HDž����‰E��ko��1ɺL��H�5I=HDž����v��H��L�����L���y��H�������n��H������n��I�t$`H��A�A�H�
R=����k��H����f��L����f��H��������f��H�������rn��H������H��tH��PH�E�dH+%(��H�e�[A\A]A^A_]�fD1ɺL��H�5?L��0�����u��H�E�H�������Q�H������L��B�Ɖ������Nz��H������HcPH�LPHc�t���H����HcE�L�<� fA�I�H�H���\1�������fA�DH�������H���H�������|m��H����������H�E�dH+%(��H������H�H�@H�e�[A\A]A^A_]��DL�� ���H�5*O��H��HDž ���L�������c��L������M�l$`M�����A��f���H������H�5H��PxM�l$`�n��f�H��A�.1�A��1�H���*������YMHDž���jjj��e��L�����H�� M���3���A�GD�@D��D��������d��D������H��E���tH������H�������1l��L���)l��M�|$`1�H�ߺH�50=HDž�����s��L��H�ھ��L���v��H�������k��f�H��1�A�.�1�H���*������Y*LHDž���A�jjj�d��L�����H�� M������A�GD�@D��D��������c��D������H��E���XH������H�������Mk��L���Ek��M�|$`1�H�ߺH�5~9HDž�����r��L��H�ھ��L����u��H������k����H�xHc�t���H�H����H�A� fD�H�xHcE�H�H���H�� 1�f�0A�Hf�x���f��H�&H�=u*�g��H������H������HDž����M�l$`H��������@H������H��x����a��H��x�������H�H��L��H��x����ka��H��x���H���>���@H�xIcGH�H����E1��mmD�AfD�T�z���f.�H�xIcGH�H����E1��mmD�AfD�\�^���f�H������H��p���L��x���H��������`��H��p���L��x���H������H�����f�L��H��p���L��x���H�������`��H��p���L��x���H������H���F���I�wH��x���D������H�������X`��H��x���D������H������H�����I�wH��x���D������H�������`��H��x���D������H������H������[c����H���e�����H��頎����H��锎����H���!�����H���|�����H��韎����H��鰎����H���َ����H���ڎ����H�������H�������H���
�����H��������H��������H�������H��������H��靍����H���
�����H��������H��鼍���������H��������H��雍����H��雍����H��郍����H�������H���
�����H���ԍ����H���0�����H���G�����H���;�����H���/�����H���#�����H��������H��������H���ێ��ff.���UH��AWAVL�� ���AUL��p���ATfIn�I��L��SH��0���H��hD����������������dH�%(H�E�1�H�E�H�����H����H�����H�M7fHn�H��`���H������H������fHn�H��P���fHn�H��@�������fHn�H��0�������)�����fHn�fl�H������)�����fHn������fl�H������fl�)�����)�����)���)����HDž ����Oc��1ɺH��H�5k6M�|$`HDž�����Ym��H��(���1ɺH�5E6H��HDž(���H������*m��H�پ��L��H������p��H��(����Ge��H�������;e��f�H��1�A�.�1�H���*�����Y�EHDž����A�jjj�U^��L������H�� M���_���A�GD�@D��D�������:]��D������H��E���gH�� ���H�� ����d��L���d��M�|$`1�H�ߺH�5�5HDž�����6l��L��H�ھ��L���#o��H�������Wd��f�H��1�A�.�1�H���*�����Y�DHDž����A�jjj�q]��L������H�� M���^���A�GD�@D��D�������V\��D������H��E����H�� ���H�� ����c��L���c��M�|$`1�H�ߺH�5�1HDž�����Rk��L��H�ھ��L���?n��H�������sc��������
H������h��������
H������E��rh������
H��������t����Uh������
H��������$����8h��fo����H��fo�����fo�����fo����������)�0���fo���H�����)�`���)�@���fo�����)�p���)�P���)������y.H�� ���H��(���H�� ����b��M�|$`1�H�ߺH�5H3HDž�����j��L��H�ھ��L���m��H�������:b��M�t$`1�H�ߺH�53HDž������i��1ɺL��H�5�2HDžp����i��H��L���L���l��H��p�����a��H��������a��M�t$`1�H�ߺH�5�2HDž�����bi��1ɺ	L��H�5�2HDžp����Ai��H��L���L���.l��H��p����ba��H�������Va��H��M�t$`1�A�.�1�H����AA�HDž����jjj�wZ��H������H�� H�������1ɺH��H��p���H�52HDž�����h��L��H�ھ��L���k��H�������`��H��p����`��M�t$`1�H�ߺH�5�3HDž�����Jh��1ɺL��H�5�1HDžp����)h��H��L���L���k��H��p����J`��H�������>`��M�t$`1�H�ߺH�5[1HDž������g��H�ھ��L��H�
F�
�j��H�������_��M�t$`1�H�ߺ$H�5�HDž�����g��1ɺ	L��H�5�0HDžp����ng��H��L���L���[j��H��p����_��H�������_��M�t$`1�H�ߺH�5�0HDž�����g��1ɺL��H�5�0HDžp����f��H��L���L����i��H��p����_��H�������_��M�t$`1�H�ߺ0H�5�HDž�����f��1ɺL��H�5�0HDžp����f��H��L���L���wi��H��p����^��H�������^��M�t$`1�H�ߺ9H�5iHDž�����9f��1ɺ
L��H�5�/HDžp����f��H��L���L���i��H��p����9^��H�������-^��M�t$`1�H�ߺH�5�/HDž������e��1ɺ	L��H�5�/HDžp����e��H��L���L���h��H��p�����]��H�������]����aV��I�t$`���H��H��A�A�H�
]8��Z��I�\$XH�� ����x]��H�E�dH+%(��H�e�[A\A]A^A_]�fDH�xIcGH�H��uO1��mmD�Af�t�q����H�xIcGH�H��u_1��mmD�Af�D�%����I�wH��p���D��|���H�������"T��H��p���D��|���H������H���v���DI�wH��p���D��|���H��������S��H��p���D��|���H������H���f���� W����H���~�����H��顄����H���Z�����H��鉄����鰄����H���t�����H���h�����H���\�����H���!�����H��������H���8�����H�������H��� �����I���g�����H���p�����H��遄���f���U1ɺH�5�-H��AWI��AVAUATSH�]�H��H�����L�g`H��dH�%(H�E�1�H�E��c��H�E�1ɺI��H�51,H��H�E�H��(�����b��H��L��L����e��H�}��[��H�}��[��H��p���I�w`A�H��A�H�
	)���H�����6X��I���M���H�� ���I9�u,���H�5�<��H���P��I��L9� �����M�,$�ח��H��M��t�I�EL��H��H�E��xu�L�m�H�5^<��H��H�E��>P��L��8���M��t�I�EH��(���L��PL�m�H�5W,H��1ɺI�EL�p(H�E���a��H��L��A��H�}�A����Y��H�}�H��tH��PL��8���E����L��(���I��1�H�5�+L��L�h(H�E��ga��L��L��H��A��H�E�H�U��@������E1�wD�*H�5q;��H���YO��H�}��`Y��H�=M�4$��M��t+I�H��L��H��H�E��xtmH�5&;��H���O��L��8���M���m���I�L��I���PL9� ����d���H�����8Q��H�E�dH+%(�H��[A\A]A^A_]�L�}�H�5�:��H��H�E��N��M���~���H��@���L��H�����H��I��PL��@���M����fE����H�����H�x`�(Z��H��L���S��H�8L��h���H��h����R��L�����L��H���
���I�~`��b��H��h����L��H�'*L�������b��M�n`1ɺH��H�5�(H�E��_��H�ھ��L��H������}b��H�}��W��1ɺ
H��H�5�)M�n`H�E��R_��H��(���1ɺH�5�%H�E��0_��H�پ��L��H��(����b��H�}��PW��H�}��GW��I�v`H��A�A�H�
O%����T����	d��I�v`H��8���H��I��H�������M��M�u�A�EH�����L���b��H�����L���tX���A�.�iH���O��H��h����V��H��@���H��tH��PI�L���P�w���DfD�*����fD����I��I�L��H��L��H�E��x����H�E�H�5Q8��H��H�E�H������*L��H������
H�����H��h���H�����H�H��H����P(L��h���M����~��I�EL��PH��h���L��P���H��tH��PI�EL��P��I�E���H��(���L��P H�E�H�o�xtQH�����Q��I��1�H�E�����H���H�=-�Q������I�EL��P����L�u�H����M��t�I�H��L��H��H�E��x�C��H�E�H�57��H��H�E�H��������J��H��������H������H��(���H��X���H�5�6���J���h���H������I��H��L��H��H�E��x�}���H�E�H�5�6��H��H�E�H����sJ��H����4H���H�����H�H��`����P(L��h���M��� ���I�L���PH��h���L�u�H��tH��PI�L���P��ufI�EL��P�������I�L���PH���H��PH������H��PI�EL��PH�����H��P����������W����ƅ�����L��PH�����H��P����H���H�=E�P������H���H�=(��O�������N�����|����H����|���������I�������H���f~����H���v~����H���W~����I���?�����H���|����H��H��8���H����������H���_~����H��H��8���H������|����H���|����H���~����H����~����I��H��8���H����������H��H��8���H������7|�����Y~��������#�������������I��������|����H����{�����UH��AWI��AVAUATI��SH������H��H��hH�������dH�%(H�E�1��hQ��L��I�w H��H��(H������H��H�������T��H��L������I��I���?I��L��HDž�����O��H�=\I�D$p��H����H�H�>H��H��H�������x�=H�563��H���G��HDž����HDž�����H��@����
L��H��H�������P���H�Eĉω������OI��������I������H������L�������P��1ɺH��H�5�!HDž�����ZX��L��H�ھ��L���G[��H�������{P��H�������
L���P���H�Eĉω�������H��������I�����+H������L�������0P��1ɺH��H�5nHDž������W��L��H�ھ��L���Z��H��������O��K�D��
H������H�4�L������H���{O���
L��E�K��H�4�H���_O��HcUĉ�4���H�H�L��H�������H��H������I�ƅ���H������L�������kO��1ɺH��H�59 HDž�����
W��L��H�ھ��L���Y��H������L��0����$O��1ɺH��H�5^!HDž������V��1ɺL��H�5�HDž0����V��H��L���L���Y��H��0�����N��H�������N��A��$ftm1ɺH�5gH��HDž�����KV��1ɺL��H�5HHDž0����*V��H��L���L���Y��H��0����KN��H�������?N��1ɺH�5dH��HDž������U��H�ھ��L��H�
L�
��X��H�������M��1ɺH��H�5-HDž�����U��1ɺL��H�5#HDž0����yU��H��L���L���fX��H��0����M��H�������M��H���1�HDž������-A�.1�jA�H��jj�F��H������H�� H���U|��1ɺH��H��0���H�5>HDž������T��L��H�ھ��L����W��H�������L��H��0�����L��1ɺH��H�5 HDž�����T��1ɺL��H�5�HDž0����kT��H��L���L���XW��H��0����L��H�������L��1ɺH��H�5HDž�����T��1ɺ	L��H�5�HDž0����S��H��L���L����V��H��0���L����L��H�������L�����L��L��A�A�H�
�&�II��L�����f�H��1�H������L��HDž ���HDž����)�����]L��L��L���_L1�H���5K��H�������YQ��H������H��H���U��H��H�����H������C��1�H���J��H������H������H���!N��H��H����H������B��L��L��H���;L�����HDž���L���H��jM��A�jH������H��H����H������i�H�����XZ��J��H���=L����KL�����H�����I9�tD�L�cM��tL���_O���XL���bB��H�;H��tH��PH��I9�u�H�����H��tH�� ���H��H)��-B��L���B��H������H��tH��PH�������'J��H�E�dH+%(��H�e�[A\A]A^A_]�DH������H�5�+��H��HDž����H��������?��H������H������H�������A��$g�����H������H�5��
H��Px���f�1�H�5a�f�fA�TFH��H��u�Hc�4���I�~H�H���SHcE�L�,� fA�uI�}H�H���A�N1�fA�L����H�xHcE�H�H����E1��mmA�HfD�L���f.�H�xHcE�H�H����E1��mmA�HfD�T���f�H�1�H�=�H�������!E��H������H���!����HDž�����M���H������L��p�����x���H�������?��L��p�����x���H������H���1���@H������H��x���H�������f?��H��x���H����������L��H��x���H�������:?��H��x���H������H�����@H������L��p�����x���H�������?��L��p�����x���H������H�������?B����H���u����I���6v����I���[v����I���^v����I���&v����H���%v�����Kv����H���u����H����u����H���u����H���u����H���zu����H���nu����H���v����H���Vu����H���Vu����H���Ju����I���v��f.���UH��AWAVAUA����ATI��SH�]�H��H���H������
dH�%(H�E�1��K��D�p�E�D����>��H��0���E���iM�t$`H��`���1ɺH�5H��HDž`�����M��H�ھ��L��H��0�����P��H��`����E��H���1�HDž`����[&A�.1�jA�H��jj�?��L��`���H�� M���u��IcFL�|	D���
>��1�H�5H��8���f�f�LPH��H��u�IcVH�����@,-H�HH��)1�H��f�H��8���H�5�D�zM�|$`�	f�H1�HDž`�����L��H�ھ��L��H��8�����O��H��`���L��@�����D��I�t$`L��A�A�H�
�����,B��I�D$`1ɺH��H�5�HDž`���H������_L��H�����H��H���������DO��H��`����xD��I�t$`H��A�A�H�
����A��I�|$`H��.���fD��.���H��p�H���{<��L���s<��H��8����D��L���D��H��0����D��H�E�dH+%(��H�e�[A\A]A^A_]ÐI��1�H�
�@f�fA�DWH��H��u�HcE�I�2H�H����1�E�wfA�t2�L���DL�H�HL��H��I�vL�����H������:��L�����Ic~J�H�?�,-H�HH��tIH�����H��H������:��H�����H������@H��H������a:��H������_���D1�����=����I���lr����H���r����H���r����H���r����H���Or����H���;r��ff.����U1ɺH�5�H��AVAUL�m�ATI��SH�]�H��0L�w`L��dH�%(H�E�1�H�E��J��1ɺH��H�5JH�E���I��L��H�ھ��L����L��H�}��B��H�}��B��I�t$`L��A�A�H�
����I?���-H��1�H�5P�H�E��I��H�ھ�L�������(H�5W�H��1��eI��H�ھ
�L������TH�5a�H��1��?I��H�ھ�'L������YH�5��H��1��I��H�ھ�'L�������H�5�H��1���H��H�ھ'L���s����5H�5oH��1���H��H�ھ'L���M�����H�5�H��1��H��H�ھ�%L���'�����H�53H��1��H��H�ھ" L�������,H�5�H��1��[H��H�ھ L��������H�5�H��1��5H��H�ھl�L�����H�}��\@��L���8��H�E�dH+%(u
H��0[A\A]A^]���:����H���3p����H���Op���f.���UH��AWI��AVI��AUL�m�ATI��SH��L��H��xdH�%(H�E�1�H�E��\=��A�E1�1�L��L��H���J��H�}��?��H��
L��H��H��XH�H�fHn�fHn�H��pH��xfl�fHn�H��`ǃxC fHn�fHn�H��pfl�H��xHǃ�C0fHn�H���fl�H���Hǃ�C@�<��H�{pH��PL��L���H9��L�51#L��M�~�9��L��L�u��9���L����?��H�}��E�A����L�e�M��u�DM�$$M���E;D$u�I�T$�zu�L9�t(H����L��D��l����G9��D��l�����u�L���T>��L���L>��I�D$�x�w1���fL��L�5K"M�~�">��L����8��L��L�u���8���	L���!?��H�}��E�A����L�e�M��u�:f�M�$$M���+E;D$u�I�T$�z	u�L9�t(H���	�	L��D��l����8��D��l�����u�L���=��L���=��I�D$�x�U���gL��L�5`!M�~�W=��L���8��L��L�u��8���
L���V>��H�}��E�A���uL�e�M��u��M�$$M����E;D$u�I�T$�z
u�L9�t(H���
�
L��D��l����7��D��l�����u�L���<��L���<��L���<��I�D$�x�Mƃh��f��ƃjL�5 L��M�~�/7��L��L�u��#7���L���v=��H�}��E�A����L�e�M��u�w�M�$$M���cE;D$u�I�T$�zu�L9�t(H����L��D��l�����6��D��l�����u�L����;��L����;��I�D$�x�����iL��L�5M�~�;��L���_6��L��L�u��S6���L���<��H�}��E�A���L�e�M��u��M�$$M���{E;D$u�I�T$�zu�L9�t(H����L��D��l����5��D��l�����u�L���;��L���;��I�D$�x��1���kL����:����L����t>���0I���g>��H�ƹL��L���t?���!L����C>��� I���6>��H�ƹ
L��L���C?����L����>����
I���>��H�ƹL��L���?����
L�����=����
I����=��H�ƹL��L����>��L���iD��H�}�H�E�H�u�H9�t	H����1��H�E�dH+%(�8H��x[A\A]A^A_]�DL����9��L����9������L���9��L���9�����L���9��L���9������L���9��L���9���>���L�}�L���l9��L���d9��L���\9��L��x���HDžx���L����6���L��1�H�5�H�E���@��H�}�1�L���F?����H�}���h�9��H��x����8����f�b���L�5�L��M�~�3��L��L�u��3���L����9��H�}��E�A����L�e�M��u�M�$$M����E;D$u�I�T$�zu�L9�t(H����L��D��l����?3��D��l�����u�L���L8��L���D8��I�D$�x�����jL���"8�����DHc�1�L�}�L��H��H�u�H��L���:H���a���L� L����7��L����7��M�������I�D$�x�����I�D$ �8���{���fDHc�1�L�}�L��H��H�u�H��L����
H������L��L� �~7��L���v7��L���n7��M���	������Hc�1�H�}�H��H�u�H��H��L���
H���a���L� L���.7��L���&7��M���(��������Hc�1�L�}�L��H��H�u�H��L���2
H���A���L� L����6��L����6��M���X����D����Hc�1�H�}�H��H�u�H��H��L����	H������L� L���6��L���6��M�����������I�D$ �8���m���I�D$ �8��� ���I�D$ �8��h���@I�D$ �8���h����I�D$ �8�����L���6��L���6������Hc�1�H�}�H��H�u�H��H��L���	H��t�L� L����5��L����5��M��������p����_0����I���Bf����H���af����I����e����I���e���ff.���UH��AWAVAUATSH��dH�%(H�E�1����t(H�E�dH+%(�FH�Ĉ[A\A]A^A_]�L�m�H�_`L�}�1ɺH�5|I��L��H�E��<��1ɺL��H�5�H�E�L��X����<��L��L�����H���s?��H�}��4��H�}��4��I�t$`L��A�A�H�
������1��M��$�I��$�L)�H��������1�H��I�I��$`H��h���I��$HH��`�����@M��$XM����H��x���L��p����@��7��H��M��t)I�$L��L��H�E��x��H�5���L���)��E1�L�e��t7��H��H����H�H��L��H�E��x��H�5���L���p)��M����M��t
I�$L��P��uM�?M����I�_M�&L9��K���H��x���L��p���H��`���L���nH�E�H�0L���+)��H�E�M�6�H�E���6��H��M��t(I�L��L��H�E��x�eH�5���L����(��E1�I�|$`L�u��4��H��L���j.��H�}�I��H��tH��PI�H�}��P��t�G���/�2��H��h���H9���M��$�H��I�I��$`�4���I�1�H��`���H��I��$PH��L���H��t�H�8����f�H�5��L��L�e�H�E��'���>���H�]�H�5���L��H�E���'��H��t	H�H��PI9����R���@M�����C���DH��x���H��h���L��p���H9�� ���H��X�����)���I���f�H�5y��L��L�u�H�E��U'�����I�|$`L��H���
�<��I�|$`H�M�L���H�O
H�E���;��H�}��1��I�t$`L��A�A�H�
!�����X.��L���@)��H�}��X����+����H����a����H��I����a����H��I����a����H����a����H���b����H���b����H���	b�����UH��AWAVAUATI��SH��H�����8���L�.dH�%(H�E�1��m��M��t2H��I�EL�� ���L��L���H�� ����xt=H�5��L���%��1�H�E�dH+%(��H�e؉�[A\A]A^A_]��L��0���H�5���L��HDž0����%��L��H���M��t�H�3H��P���H��PE��$�E����H��X���H��H��H��0���託����8�����H��P����H���wH���,)�����tHH�=O�
L�3�6M��t2I�H�7�
L��L���H�� ����x�.H�5��L����$��I��$�H���H����I��$�f�H��)�������H�@L������	1�H�5:�L��H�� ���I�EH�@(HDž���H��8����I6��L��L��L��H��8�����H�5@�
H����H��H�\��H�� ���L�
>��PH��(���L���H�������9��H�5,��L���$��H������.��Hc�����Hc�����H�� ���H������Hc�����H������Hc�����H������H������XZ�r0��H���Y���I�E�H�551�L�p(H�����HDž���H��H��0����A5��H��0���L��L��A��H�� ���E1��x��H�5V��L���>#��H������B-��H��X���H��H��H��0����Y�����8���u8E�������1�H��X����	-��H��P����,��I�EL��P���fDH��X����G��	t)��u�H���H�5���#����u��f�H���	H�5S��#����u�H��X����G�H��(����8A������DH��`���HDž`���H��H�������)��A��$�t<H��X���1ɋP��
�����~���/����
��	��@I�D$`1ɺL��H�5��HDž ���H��8����3��H��0���L��H��8�������6��H�� ����+��I�t$`���H������A�A�H��H�����H�
����(��I�D$`H�=\�
H�Hp�QH��t2H�H�C�
H��L���H�� ����x��H�5;
��L���#!��HDž0���H��0���HDžp���H��h���H��p���H��H��(����(��I�E�1�H�5��L��H�@(HDž���H��8����2��L��L��L��H��8�����H�� ����x��H�5���L��� ��H������*��H��p���D�XE��tAI�t$`A�L��A�H�
<�����'��H��0���H��(���H��P8L���"��H��x���HDžx���H��H��(����'��I�E�1�H�5�L��H�@(HDž���H��8����1��L��L��L��H��8�����H�� ����x��H�5���L�����H������)��H��x���D�PE��tAI�t$`A�L��A�H�
n������&��H��0���H��(���H��P8L���!��H�3�H��8����-��H��8���H��H��t(H�L���H�� ����x��H�5��L�����1�I�|$`H�� �����*��H��L���$��H�� ���I��H��tH��8���H��PL��8���I�L��8���D�HE��tTI�D$`1ɺL��H�5��HDž ���H��(����N0��H��8���L��H��(�������33��H�� ����g(��I��$�H��H��H��8�����H�����H��tH��8���H���RH�@H�����H������HDž����H��H�������%��H������L��H���H��I�E�PH������H�5�L��1�H�H��(���L�B(�HDž ���L��8����n/��H��(���L��8���L��A��H�� �����8����'����8�����tnI�E�L��1�H�5[�H�@(HDž���H��8����
/��L��L��L��H��8�����H�� ����x��L��H�5 	�����H������'��I�t$`H����A�A�H�
����H��H��(����<$��I�D$`1ɺL��H�5�HDž ���H��8����o.��1ɺL��H�5��HDž����N.��L��L��H��8����71��H������k&��H�� ����_&��I�D$`1�L���H�5��HDž ���H��8�����-��1ɺL��H�5��HDž�����-��L��L��H��8����0��H�������%��H�� �����%��I�D$`1�L���H�5i�HDž ���H��8����u-��1ɺL��H�5M�HDž����T-��L��L��H��8����=0��H������q%��H�� ����e%��I�D$`�������
H�����H�E�H��H��8����k*��H��8���L��HDž ����‰E��|%��1ɺL��H�5�HDž����,��L��L��H������/��H�������$��H�� �����$��I�L$`�������
H��8���H�������)��H��8���L��HDž ����‰E���$��1ɺL��H�5��HDž����),��L��L��H������/��H������F$��H�� ����:$��I�L$`�������
H��8���H������G)��H��8���L��HDž ����‰E��X$��1ɺL��H�5�HDž����+��L��L��H������.��H������#��H�� ����#��I�L$`�������
H��8���H������(��H��8���L��HDž ����‰E���#��1ɺL��H�5��HDž����+��L��L��H�������-��H������"#��H�� ����#��I�t$`L��A�A�H�
������Q ��L���9��H�������P���H��L��H�����H��8���H��Ɖ�(���HDž �����(��H��E1�L��fo�
H�A�L�H�����H��8���H��p���)�0���)�@���)�P���)�`���j�Z*����p���_AX��������M�|$`1ɺ
L��H�5��HDž�����)��L��L��H�������,��H�������!��I�t$`L��A�A�H�
�����"��I�|$p�����H������H������L�����SA�����H�� �����YL��^����H�� ����y!��H��(������H������H��tH��PH�������O!��H��x����C!��H��p����7!��H��0���H��tH��PH������i��H��`����
!���?��H�R��H�=��
�x����L��0���H�5���L��HDž0������L����M�����I�D$`1ɺL��H�5W�HDž ���H��(����B(��H�����1ɺH�5w�H��HDž���H�� ����(��H�� ���L��H��(�������*��H������, ��H�� ����  ��H�3�H��(�����#��H��(���H��H��t(H�L���H�� ����x�,H�5���L������1�I�|$`H�� ����!��H��L���g��H�� ���I��H��tH��(���H��PL��(���I�I�D$`L��(����J��tT1ɺL��H�� ���H�5S�HDž ����'��H��(���L��H�� �������)��H�� ����/��I�D$`A����H��L��A�H�
+��g��H������8���L��H��H��(����L����8����)��I�L���P��8����������@H��0���H�5���L��HDž0���H��(������H��(������@�H��H�==�
���H�51�
��@I�|$p�����H������H������L�����SA�����H�� ���赦XZ���H�����H�5P
�[��I�D$`1�L���H�5��HDž ���H��8����%��1ɺ
L��H�5{�HDž����}%��L��L��H��8����f(��H��������H�� ������H����HDž��H��H��(������I�E�
1�H�5�L��H�@(HDž���H��8����$��L��L��L��H��8�����H�� ���H��(����@�����������H�5����L����8�������H�����������8���f���f����f����I�|$`H��(���L�����H��	
H�� ����W'��H�� ������H��������r�H��0���H�5l���L��HDž0���H��0����B���%�H��0���H�5?���L��HDž0���H��8������H��8�����H����H�=��
H��8������H��8�����H�x�H�5C���8����������������8����������H��X����P��DH�xH�5����8��������8�������	�H��X����P�O�H�xH�5���U����H��X������P�"�L��H�5G����2��H������6��H��(���1ɺH�5����"���Y���f�����H��(���H��(���H�0�H���M�H��(���H��(���H�0�-����H��(���1ɺH�5���~"�����H��(���1ɺH�5t��_"������H��(���H������H�0�����U�H�xH�5t��_���������Z��
����H����K����H���PL����H��H����H��(����fL����H���kL����H���4L����H���]L����H���K����H���K����H����K����H���K����H���{K����H���&L����H���8L����H���L����H���=L����H���K����H���6L����H���;L����H���XL����H���YL����H����J����H���^L����H���lL����H���qL����H���L����H���L����H���.L����H���L����H���L����H���L����H���L����H���tL����H���hL����H���\L����H���{K����H���aL����H���bL����H���K����H���WK����H���zK���ff.���UH��AWAVL�}�I��AUATSH��XH�}�H�>�U�dH�%(H�E�1�H�H�E��P(�E������E��E�1�L�e�L�-�����E��V�H�}�����
���U�H�}�L���Q��M���EȈM�H�}�H�E�H��tH��P��9]���I�6��L��H��P0H�5��
H��t@H��H�M�L��L�
f���AUH�U�L�9����"��ZL��YL���d����?
���D�H�D�H�=5�
���H�5)�
���E�@H�}�H��tH��PH�E�dH+%(u�E�H�e�[A\A]A^A_]������H���J��fD��UH��AWAVAUI��ATL��h���SH��L��H��H��P���H��H��8���L��H���D��\���dH�%(H�E�1��������L�s`tH��h���D�PE���H�=4�
M�vp�7M��t3I�L�e�H��
L��L��H�E��x�1H�5���L�����L�}�H�s`A�L��A�H�
�����B��H���L���s�H��t+H���L����H�@H��H��@����L��H������\����vH��P���L�`D����
��H��x���E���cL�k`L�e�1ɺH�5J�L��H�E��
��L���L��H��x������H�}�L�m��)�����L�s`u
�����1ɺL��H�E�H�5<����1ɺL��H�5��H�E����L��L���L�����H�}����H�}����H�s`L��A�A�H�
���������H��H����H������L������H��x����`��L�����H��h����L��H�E�dH+%(��H�e؉�[A\A]A^A_]��H��H���1�H����������\����+HDž0���L�e�H��P���L�hD���I��H��p���E���L�k`1ɺL��H�5��H�E��g��L���L��H��p����P��H�}�L�m�������L�s`t��\���t
���� 1ɺ
L��H�E�H�5�����1ɺL��H�5;�H�E�����L��L���L������H�}����H�}����H�s`L��A�A�H�
�����;��L��x���f�L�spHDžx���L��L��(���)E��>��H��@���jA�jL��(���L��L��H�Q(��^_H��x����y��L���
��H��p����e��L��0���M�������L���
���L��� 
�����L��H�v�
���L������L�s`H�=��
M�vp����H����H�=��
������fDL�u�H�5��L��H�E����L�u�M�������L�}�H�E�L���<��1ɀ�\���ty�H�5��L���M��H�C`1ɺL��H�5��H�E�H��@����$��L��L���H��@����
��H�}��D��H�}��;��I�L���P�'���D�H�5M�L�������f�H��P����-�@bof�HH�HH�6H����D�`H��P���1�f�A�_���f�L�e�L�s`1ɺH�5��L��L�m�H�E��f��1ɺL��H�5��H�E��H��L��L���L���5��H�}��l��H�}��c����		��H�s`A�H��A�H�
a����H��0����
���=���f�1ɺL��H�E�H�5������1ɺ
L��H�5��H�E����L��L���L�����H�}�����H�}����L�s`���fDH��P���A�-�@bgH�HfD�HH�6H����D�hH��P���E1�fD�A���fDH��8���H�����H��H��x����b���f.�1ɺL��H�E�H�5������1ɺ
L��H�5��H�E�����L��L���L�����H�}�����H�}�����L�s`�v���fDH��8���H�����H��H��p����,����]	����H���B����H����B����H���C����H��� C����H����B����H���B����H���C����H���B����H���C����H���
C����H���6B����H���8C����H���B����H���7C����H���OB����H����B���ff.����UH��AWA��AVI��AUATSH��`���H����H����H��X���dH�%(H�E�1����HDž`������H�5��H���.��H��p���I�v`A�A�H�ٺ��H��H��@����0
��A�������H���A9���ƅO���Ic�H��DH��X���L� I�I�<$��I�~`���H��L�����L�m�M�f`1ɺH�5��L��H��P���H�E��w��L���L��H��P����`��H�}����H��X���H�H�L�!L�e�M��tI�$L��PH��X���H�H�H��P���A�M��L��H��rH���u�����O�����E�@��O���M��t
I�$L��PA��H��D9�H��������H��@����R��H��`������H�E�dH+%(����O���H�Ę[A\A]A^A_]�f.��H�5��H���l���9����L�m�1ɺM�f`H���L��H�E�H���7��H�E�1ɺH�5R�H��H�E�H��P������L���L��H��P������H�}��.��H�}��%��M�f`1ɺH��L��H�E�����L���L��H�=�
���H�}���
��1ɺL��H�5��I�^`H�E����L��P���1ɺH�5��H�E�L���`��L��L���H���M��H�}��
��H�}��{
��I�v`L��A�A�H�
�����L��P������I�^`1ɺL��H�5��L��h���H�E�����1ɺL��H�5�HDžh�������L��L���H�����H��h�����	��H�}���	��I�^`1ɺ
H�5�L��H�E��|��1ɺL��H�5��HDžh����[��L��L���H���H��H��h����|	��H�}��s	��I�^`1ɺH�5�L��H�E����1ɺ
L��H�5��HDžh�������L��L���H������H��h����	��H�}��	��I�v`L��A�A�H�

�����D��L���,��I�^`1ɺH�57�L��H�E��z��1ɺL��H�5��HDžh����Y��L��L���H���F��H��h����z��H�}��q��I�^`1ɺH�5��L��H�E����1ɺL��H�5H�HDžh�������L��L���H������H��h������H�}����I�^`1ɺH�5��L��H�E����1ɺ
L��H�5��HDžh������L��L���H���p��H��h������H�}����I�v`L��A�A�H�
���������L�����H��P��������H���A9��1���ƅO����:���������H���<����H���<����H���i<����H���<����H���f<����H���=����H���B<����H���~<����H���<����H���<����H���<����H���<����H���<����H����<���f.���UH��AWAVAUATSH��H��H�����L�o`��������dH�%(H�E�1�����������tgL�����L��M�&���H��L������I�H��rH��H�E�dH+%(��
H��L���H��E1�[A\A]A^A_]���L�u�1�L�}��
H�5G�L��H�E�L��(����c
��1ɺL��H���H�E�H��L�����H�����4
��L��L�����L���!��H�}�L�%u��Q��H�}��H��H�s`L��H��P���A�A����H�����L������v��H��p���H�s`A�H������H��A�L����H��L�c`1ɺL��H�5k�H�E����1ɺL��H�5��H�E��h��L��L�����L���U��H�}����H�}����1ɺL��H�5��L�c`H�E��!��1ɺL��H����H�E����L��L�����L������H�}��'��H�}����H��D�hA��D���w���H��@���I��E���]L��(���L�c`1ɺ	H�5�H�E�L�����L��L��H��@����t��H�}����L�����H�s`A�H�����A����L������L�c`1ɺ
L��H�5�H�E����L��L��H���
���H�}�L��H����7��1ɺL��H�5W�L�c`H�E���
��1ɺL��H����HDžH����
��L��L���L���
��H��H�������H�}�����H�s`���H�����A�A�L�����L����L�����H��@������H����������H���������L�k`����,���L�}�1�L�u��
H�5�L��H�E�L��(����	��1ɺL��H�/�H�E�H��H������	��L��L��L��L��������H�}�����H�}�����H���H�s`H��P���A�A�H�����H�����H������	���L���M����I�$����L��L�h����)�D�p���L�����H�����H���H�<��T��H��p���H�����H�5�H��H��H�������	��H������=	��L���5���H������D��L��A��H��p����������9�����L���Hc���HDž ���H��H������fDH��(���1ɺ	H�5G�L�{`H�E��R��L��L��(������L��L���8��H�}��o��H�s`���H�����A�A�L�����I�UH�����E1�H��L��8���H������rHH��M���J�L���b���H��H������H������J���H��@������H�������2���I�$L��PH�� �������H�� ���H�������H������I��9���M��tI�$�� ���L��P0H�����H�����HL� L��8���M��t�I�$L��P���L�k`tsL��(���1ɺH�5��H�E�L������L�����1ɺ
H�5��H�E�L������L��L��L���	��H�}����H�}����L�k`H��p���H��������A�A�L��H��H����������H�����H�{`L�����L(�g��H��L���<���I��H�D�pA��
D�����H��@���I��E���L��(���L�s`1ɺH�57�H�E�L�����L�����L��H��@�������H�}�����H�s`���H�����H�����A�A��R���L�s`1ɺL��H�5��H�E����L��L�����L��L��(����v��H�}�L��H������1ɺL�{`H��(���H�5��H�E��@��1ɺL��H����HDžH������L��L��H��(������H��H����<���H�}��3���H���H���ω��������H��H���I�Dž��I���1��H�5��f�fA�TGH��H��u�H��I�HcFH�H����H��)f�A�O1�f�H���D����9��������fDH��������H�E�dH+%(�AH��[A\A]A^A_]��H�PH���H�p
�f�H��H��f�J�H9�u�I�uI�HcFH�H��uf1�E�wfA�t���H���fDH���g���H��P �\���@H�������H���������H���H�����DH��H������H����1�H�
��fDf�fA�TDH��H��u�H��I�L$HcBL�4H��uJ�1�)E1�f�8E�l$fD�@�H���H�rH��L���}�H����������H���Y1����H���b1����H���1����H���1����H���1����H���J1����H���1����H��L��8�����1����H���0����H����1����H����1����H���=1����H����1����H����1����H���?1����H����0����H��L��8����P1����H���1����H��L��8����%1����H����1����H���1����H���1����H��L��8�����0����H���!1���fDUH��AWAVAUATSH��H��HH�u�dH�%(H�E�H�H���1�I��H�wI��H�N�<�M����M�7I�N�,�I�6H����H�N1�M��H��H�sI9�uoI��I9�u�H�E�I�vH�8�Gh����t�I�?tMDH�E�dH+%(�ZH��H[A\A]A^A_]�fDL�gM���.1�I��H�wI���H�}�����H�SH�sH�{ I��H�C(�H�E����H�ք���H�3M�fJ��H�H����H�I�H�L�0H�C�V���fD��>���H��M��t,I�L�u�L��L���H�E��x��H�5R��L���:�E1��L�}����H��M����I�EL�u�L��L���H�E��x�H�5��L�����M��A��M��t	I�L���PE�������M�$$M����H�E�M�l$L�8M9��8������H�5���L��L�}�H�E����Q����L�m�H�5���L��H�E��e�M��t
I�EL��PM9�A���a���f.�M��A���K���@H�E�1�L� L��H�sH�{I���2����|���DH�U�H������L��1�H�sI���@���H�CI�L�sI�H��tH�@1�H�sL�4�H�CH��3����v���I��I���.����H��I���.����H���.��ff.����UH��AWAVAUATSH���H���H+��dH�%(H�E�1�H����u#H�E�dH+%(�6.H�e�[A\A]A^A_]ÐH��0���H�w`I��A�H��A�H�
.����L��0���H������T�M�o`1ɺH�b�	L��H�5��HDž0���H�������L��L��H����H��H�������`��H��0������H�������H�E��
��H��I��M�o`���L��L��HDž0����‰E�L���������L��L��H�z�	H����H���������H��������H��0�������L������A�w|�
M�g`L���#���L��L��HDž0����‰E��8���L��L��L������H���	H����L���p���H������H��0�����M�g`A��$ktZ1ɺH�5b�L��HDž0����(���L��L���H��	L��H��������H�����;�H��0����/�I�����H���>$H���H��H�������X���A��A�������H������HDž���b�fA���]$�%fE���$$fA��u(H������1ɺH�5���V���DžX���@H�����G��t9I�`H������L��H���	H��0�������H��0����H�H�����<�H��P���I�w`A�A�H�
=����H��H������j�H�C�	H����H���	H��H������A��������*�~5�
�C�HDž����H������H��h���H��P���HDž����HDžp����P���HDž���)�0����V@H�5i��L���Q�H������H�����H)�H��x���f�H������H������H�AH9���H������H������I���H�=�
H��A��L�+�`M��t�I�EH�а
L��L���H��0����x�_���L��@���H�5���L��HDž@���L��������M���=���H������H���H������H��PH������D��
���D�`�E�D�����H������I��E���mM�g`1ɺL��H�5%�HDž0������L��L��H����������H��0�����M�g`L�����H��H����H��H�d�
���L�����M�g`L����H������H���l�H��H�*�
���L���e���H������H�����A���H)ш�_���H��x�����t;H���-��H��H��t+H�H��L���H��0����x��H�5H��L���0�I�w`A�L��A�H�
E�����|�L���d�H��������H���H��tH��PH������H��P���@fo8�	H�x&@fo8�	@HcUĸ_fA�E$H���}E1�E�efE�\&�N���H�y��H�=m�
�����L��@���H�5j��L��HDž@����G�L�����M������H�����HDž���H����I�E�1�H�5=�L�`(H��(���HDž(���H��H��������H��p���H�����L��H�����H��A��H�����H��x����~
�
�~ҍ
H��h���H�����H��`���H��p����h����x�`���)�@���)�������H�����H�5j���U�H��(����Y�fo�����f�L�����HDž����L������)�����HDž����HDž����Dž�����?HDž������H�c�
f�fo�@���fo�0���H������H��p���H��H��(���)���)�0����h���HDž�HDž����HDž���Dž����?HDž���HDž���Dž ���HDž@���HDžH���HDžP���DžX����?HDž`�����H�Շ
1�H�����H��0���I�E�
H�5@�HDž���H�X(HDž(�����H�����H�����L����*��H��H�0H�
���H�����H�� ���L�
���L�t��H��QH��p���H��x�������H�����H�5���j�H��(����n�H�����AYAZH����H�H������	1�H�5t�H�@(HDž(���H���������H�����H�����H��H��������H�5��
H����H��H����H��p���L����PH��x���L�
���H�� �������H�����H�5�������H��(�����_AX��t�� ������[I�EH������1�H�5Z�H�X(HDž(����&�H�����H�����L���H��p����x��H�����H�54����H��(����#�I�EH������1�H�5��H�X(HDž(�����H�����H�����L���H��p����x�H�����H�5�����H��(�����I�EH������1�H�5��H�X(HDž(����F�H�����H�����L���H��p����x�
H�����H�5T���?�H��(����C�I�EH������1�H�5�H�X(HDž(������H�����H�����L���H��p����x�BH�����H�5�������H��(������I�EH������1�H�5��H�X(HDž(����f�H�����H�����L���H��p����x�NH�����H�5t���_��H��(����c�H������H����L�����I�E�1�H�5{�L��H�X(HDž(������L��L�����L��L���H��p����x��L��H�5�������H��(������L�����I�E�
1�H�5�L��H�X(HDž(����s�H�����L��L���H��p����x��H�����H�5����p��H��(����t�H��p���D�PE���zH��p���H�����H)�H�����H��H��(��������1�H��@���H������H������� f�H��@���H�CH9��<H��H�����L������L��H�<�H��P��tʿ��@����:�foB�	H��p���@fo?�	�@�@$_@Hc�@���H�����H������H�<�H��H�b�
H������H����H�������
�����Eą�tBH��p���H�����B�Ɖ���H��p���Lce�HcPH�LPM����E1�fF�!�XI�`H��������H�O�
��H��p������L�����I�E�1�H�5�L��H�X(HDž(����v�L��L�����L��L���H��p����x��L��H�5����t��H��(����x�H�����L��H������H��I�E�PH�����H�� ���H�5��1�H��H�H������L�b(�HDž ������H������H��A�Ԅ��
H�� ���E1���H�����H����H��PI�EH�PE����H������L���H�����H�5�H��1�H�H��@���L�B(�HDž ���L�������L�H��@���L������H��A�Є��PH�� ����d�H�����H���(H��PI�EH������L��PH�����H�5`�H��1�H�H������L�b(�HDž ������H������H��A�Ԅ���H�� ������H�����H��tH��PH�����H��tH��PH��p���H�܊
H��0�����L��H���H���
H������H��0���M��t/�L��M�$$H�{H��tH��P�H���=��M��u�H��@���H��8���1�H���+��H��8���H��P���HDžP���HDžH���H��@���H9�t	H������H������L������H����M��t0�L��M�$$H�{H��tH��P�H�����M��u�H���H����1�H�����H����H��h���HDž���HDž����H���H9�t	H���B��H�����H�|�
H�������H�H������H������H������H��t.fDI��H�I�|$H��tH��P�L������H��u�H������H������1�H������H������H��`���HDž����HDž����H������H9�t	H�����H�������I�EL��P�O��H�2H������L�����H�5o��L���W��H��(����[�I�`H��L��H�*����H��p�����H��p����-����f��Z9�������H�����H�5������H��(������H�� ������H�����H��tH��PE����H��M�g`A�.1�������H�����A�1�HDžp����jjj����H��p���H�� H������H�����H��������L��H��(���H���H��p�����H��p����8�H��(����,�I�E����M�g`H��	1�L���H�5�H����HDž0�����L��L��H��������H��0������H������M�g`1ɺH�5D�L��HDž0����Y�L��L��H�|
�B�H��0����v�M�g`1ɺH�5��L��HDž0�����L��L��H��{
��H��0���L�%Ӳ�'�M�o`1ɺL��L��HDž0������L��L��H�d{
��H��0�������M�o`1ɺL��L��HDž0�����L��L��H�{
�k�H��0������M�g`1ɺH�5��L��HDž0����:�L��L��H��z
�#�H��0����W��I�w`L��A�A�H�
\�������L���{�����S�A���tsHDžx���HDž����HDžp���HDž���DI�G`��h�H�����H9�p����LH�����tH��x���H��������H�=��	���H�=��	���H���������H������������A���t�H��p���H�����H)�H�����a���D�h�1��z�M�g`1ɺL��H�5�HDž0������L��L��H���������H��0������H�����I�w`H�<�H��PH��������H�CL9����H��H�������
�����D�`�E�D�����H����H��E���R���fo
�	A�_H�x&fD�@$@fo��	@HcU�H���V1�D�af�t&����fDL�����I�E�1�H�5`�L��H�X(HDž(������H�����L��L���H��p���H�����H�5��@����������H��(�������H�� �������H�����H��tH��P������L�����I�E�1�H�5�L��H�X(HDž(����A�L��L�����L��L���H��p���H�5a����@�����L���:��H��(����>��I�_`1ɺH�5�L��HDžp������L���H��H�Ww
���H��p�����������I�EH������1�H�53�L�`(HDž(�����H�����H�����L��A��H��p���H��x����@�����'
����E1�u
���A��H�����H�5f����Q��H��(����U��H�� ����I��H�����H���M����N���@H������H�H������j��H������a�fDH������H�H�����H������;��H�����H������z����H��x���H�����H�5��������H��(�����������L�����I�_`1ɺH�5-�HDžp���L���3�L���H��H��u
��H��p����P�����H��x���H�����H�53�������H��(�����������H�����I�_`1ɺH�5��HDžp�����H��������H��H�Hu
��H��p���������f���k����H�����H��p���H9�����M��DH�;L��H��PH��H9�p���u�H�����L��p���f�H�;H��tH��P(H��I9�u����@H������$��H��(����(���O�I�EH������1�H�5j�H�@(HDž(���H��������H�����H�����L��H��������H��p���H��x����@�����
H�ιHc�H�>����!���fA���	�H������1ɺH�5���7�DžX��������H���H�=��
����H�5�
�?�@H�����I�_`1ɺH�5�HDžp�������H��������H��H�����H��H��(�����H��(�������H��p��������6�f��C���@������fo%�	H��p���@fo"�	�@�@$_@H�a}
�HH���������I��H�F}
�o�X���H��8���H������I�|$I�$H��@���I�D$I�D$H��P���I�D$I�D$ I�D$8A|$(���H��p���H�}
I�$I�|$@���H��q
H������I�$H��p���H9���	L� H��H��p�����H��x���H�����H�5��������H��(�����������L�����I�E�1�H�5˦L��H�X(HDž(������H�����L��L���H��p���H��x����@�����+������u��� ���f�H�����H�5�����H��(�������H��p���H�����H)�H������H��H��������Y
��1ۉ����H��@���H������H�������@H�CH9�@����H��H�����L������H������H�<�H��P��tɿ��@������fo��	H��p���@fo��	�@�@$_@Hc�@���H�����H������H�<�H��H��z
H������H���	��H�������
������Eą�tBH��p���H�����B�Ɖ���H��p���Lce�HcPH�LPM���E1�fF�!�XI�`H��������H��o
�1��H��p����e��������������@������fo��	H��p���@fo��	�@�@$_@H��y
�HH���������I��H��y
�o����H����H������I�|$I�$H���I�D$I�D$H�����I�D$I�D$ I�D$8A|$(�K���H��n
H������I�$�� ���A�D$@H��p���H9��1L� H��H��p����?���H��x���H�����H�5C�����+��H��(����/����X�����������H�����I�_`1ɺH�5=�HDžp������H��������H��H�����H���	H��(������H��(������H��p�������h�L�����H��x���H�5����L����x��H��(����|�������I�_`1ɺL��H�5�HDžp������L���H��H�����H�v�	H��(�������H��(������H��p��������DL�����H��x���H�5�L�������H��(������������I�_`1ɺL��H�5f�HDžp����o��L���H��H�����H��	H��(����J��H��(����~��H��p����r����D��E1���������H��p���H�����H)�H�����H��H��������S��1�L������H�������f�H������H�CH9���H��H�����L��H�<�H��P��tѿ��@����A��foI�	H��p���@foF�	�@�@$_@Hc�@���H�����H������H�<�H��H�iv
H������H�����H�������
������Eą�tAH��p���H�����B�Ɖ����H��p���Lce�HcPH�LPM���O1�fB�!�XI�`H��������H�_k
���������������� �������H������HDž���U��DžX����.����3�H��x���H��(���H�0������H������1ɺH�5j��9��DžX�������H������1ɺH�5Y����DžX��������� ����3������ ����%����f��H*���������f��*9����������f��*�����������f��*����������f��*���������HDž����E1����9�������|�H������M�H��L������H��H��p�������H������M�H��L�����H��H��p����+��C���@������fo��	H��p���@fo��	�@�@$_@H��s
�HH���������I��H��s
�o�����H������H������I�|$I�$H������I�D$I�D$H������I�D$I�D$ I�D$8A|$(�5�H�����H��s
I�$I�|$@�)��H��g
H������I�$H��p���H9���L� H��H��p������H��x���L��H�0�r����H��������H9�(����H�����H9�p�����H��(���H�H9���H����H�����E1�1�1�HDž����L� H�����H��p���H�H��H��H�J�H9�u�H��p���H�����H)�H�DH��p���H�����H��tH��x���L������8��L������L��x���H�������H��������H9�����!H�����H9�p�����H�����H�	H9���H���HH������E1�1�1�HDž����L� H�����H��p���H�H��H��H�J�H9�u�H��p���H�����H)�H�DH��p���H�����H��tH��x���L������X��L������L��x���H������A��������fo˾	Dž@���H��p���@fo��	�@�@$_@�����}��fo��	Dž@���H��p���@fox�	�@�@$_@�Q�H������M�H��L�����H��H��p������H��������H9�HG�H��H���<��H��H�I��H�����H������H������H��L�$H9�p��������H�BH��p������H�����H��s�H���������H��(���H���<H��������H9�HG�H��H�����H��H�I��H�����H������H�����H��L�$H9�p�������H�BH��p����D���H��������H9������H�����H9�p����H�����H�H9��_H����H�����1�1�HDž����L� E1�H�����H��p���H�H��H��H�S�H9�u�H�����H)�I�H�����H��tH��x���H��������H�����H�CH��x���H��p���L������?���H��������������:���foB�	Dž@���H��p���@fo5�	�@�@$_@���H�����H��rdH��������H9�HG�H��H�����H������	���H�����H��H�����H�H������H�����L�$I��H9�p����������H��������H���������H�E�dH+%(u�H�=o����H�E�dH+%(u�H�=T�����H�E�dH+%(u�H�=9�������I�������I�������I���W����I���]����I�������I���w����H�������H��������H�������I�������H���c��������H�������H�������I�������I��������H�������I���/�����H���!�������H�������H���9����H�������H�������H��������H��������I�������I���%����H��������I���=�����I���
����I�������I�������I�������H�������H��������I��������I�������H�������������H�������I�������H�������H�������H���0�����H�������H�������I���h�����I���\�����H�������I��������H��������H���n�����I�������H��������I�������H��������H�������I�������I�������I�������fD��UH��AWAVAUI��ATL��`���SL��H��H��H������H�2dH�%(H�E�1�H��PH��`����H�9��wH���Z���H��`���A���k��A�����H�=i�
H��pH��t.H�H�Q�
H��L��H��`����xt<H�5%���L���
���E1�H�E�dH+%(��
H�e�D��[A\A]A^A_]�DH��p���H�5��L��HDžp���迹��H��`���H��t�H������L��L���QA��H�H��P�H�����I��H���o���H�������L��H��H������I�����A���tL����������H����������E1���u~H������H������H�WH�OH�H9��3H�lq
�8��G�P��W�������\��������H�2��H�=݁
�X����s���H�������D�����H�������ߺ��H���7��H��tHH�=��
L�;��M��t2I�H�j�
L��L��H��`����x��H�5R���L���:���H�������~���H��H��L���@0��I���H���A�H��L������H��h���H��tH�������XH���չ��H��`���H��tH��PA�����H�3L��H��PH��`����'�����X���f�H�����H��H�������J���I�f�L��)��������H�P1�H�����tH+H�J�H�rHH�H�P1�H�����tH+PH�B�H�JHHȿ�H�����H��������H������f�L��I��H����ƅ�)���蓸��H�����H������L��L���*��L�������A�GH������H�������j��H������H��t
�ouH��PH�}�����L���@��fo����1�L���(�������H�� ���L���8���L������H������H��L���^.��I���H���_�H��L������H��h���H��tH�������XH����H��`���H��tH��PH�����������
�������������f�H�H�
����H�GH�PH9���H�PH�
ơ��H9����P���DH���'H�5���{���H��`���A���|���E���"���L�;���H��M��t+I�L��L��H��`����x� H�5@���L���(���E1�I��H�5��1�L�����HDž��L�@(H�����H��H������L������HDž������H������L��L��L������A��H�5`~
H���_H��H����L�����H��`���H������L�
����L�a���ARH��h�������L�|���L��L���a���H������e���H����Y^��H������L���&���H������L���7���H��h���H��tDH�WH�OH�H9���H�il
�8��G�P��W����L�����H����H��tH��PM���{���I�L���P�m���L��p���H�5����L��HDžp���L��p���膳��I�E`��k��M���� Ј�_�����L�;���H��M��t+I�L��L��H��`����x�H�5A���L���)���H��p���H��P����H�5 ���L��L��p���HDžp���������������H��������H������H��!���H�~��H�=�|
�Z����D���I�L���PH������H�������H�KH�SH�H9���H��j
�8�?�C�P��S���R���H���׳���E���f��H�ِH�=�{
�ظ��H�5�{
�}���L��p���H�5.���L��HDžp�������L�����M������A�����H�;�nI�}`躽��H��H�����L�;�蒿��H��M��t+I�L��L��H��`����x��H�5����L��菱��E1�I�}`L��`����\���H��L���1���H��`���I��H��tH��PI��@����I��HH������H��H������聛I�L��H������HDž`���H�0聶��H��`���H�������H�������U���H��`������H������H�������&�H�0H�ǹH������H�����H��H�������y���I�L�����HDžh���H�PH�����tH+H�J�H�rHI�H��h���HDž`���H�PH�����tH+PH��H�R�H�HHI�H��`���H������聲��H��H�������Ҽ��H��x���E1�ƅ����H��u<�����u����x����_���������I��L9�x�����H������L���a��I�Nj@=t������u�ƅ�����I�G�P������u�H�x��H�Z�����u���DL���0���L�����A�GH����L��H��H���������H����H��t
�ouH��PH��h���H������1�H�E�H��`���H�E�譸��H������H�}��͵��H������衰��H������L��H����&��H������I����L�H����H��tH��P���脽��H��P����X胰��H����H��tH��PL�����A�GH������H�������!���H����H��t
�ouH��PL��� ����M���H��h���1�L��H��(���H��`���H��0����ŷ��H�� ���L�����L��辯��H������H��L���&��I���H���
�H��L���
��L��h���M��tL��螼���XL��衯��H��`���H��tH��PH�������s���L�����M���Z���I�L���P�L�����;�������I��H�5�1�L�@(H�����HDž���H��H������L���������H������L��L��L������A��H��`����x��L��H�5�����H��������������������H�5ܘ��L��L��p���HDžp���責���!���H�x��H�c������������I�G�P���H�H�
e���H�GH�PH9���H�PH�
u���H9�ui�PL������j���輭���Y������������H��h���H�5(���L�������������H������������������i��������L���������H��������H������H��a���H�1�H�
����H�SH�PH9�u5H�PH�
����H��H9�u�P��H��p����E��Q������f�H���H����H���]���H������H���Q���H������H������H������H����������H������H��� ���H���!���H������H������H�������H������H�������H������H�������H���t���H�������H������H�������H��������UH��AWI��AVL�u�AUATSH��XH�}�H�:H�u�dH�%(H�E�1�H�H�E��P(�E������E�1�L�e�L�-����UfDH�}����ة��H�u�H�}�L�����M���EȈM�H�}�H�E�H��tH��P��9]���I�7��L��H��P0H�5�s
H��t?H��H�M�L��L�
m���AUH�U�L�@���軾��ZL��YL���c����F����@�H�L�H�==s
�ȯ��H�51s
���E�@H�}�H��tH��PH�E�dH+%(u�E�H�e�[A\A]A^A_]�蚭����H����ff.���UH��AWAVAUATI��SH��H��dH�%(H�E�1�H��t	���uEH��pH���5H�U�dH+%(�@H��xH�ĈL��[A\A]A^A_]��DH�G`��ht���kt�L�}��H�5r�	H�E�L���E�#�s���H��@H����H��H�� L��@H�E���L��M��u�f�M�mM����H��@I�u� ����t���p
���:H�}�L����H�E�I�D$L�pI�L�������I�L�������I�L�����
t(I�L���H�}������>������f�M���gH�}�H�<L
H��蔉I��H����H��H�]�H��虋L�-p
H��I��L��H�]��`�H��tH�}�L���o�H�xH�]���M��t?M�vM��t6L�m�fDH�E�A�L��H��L���PA�Ff�E��T���M�6M��u�H��L��葩��H��I�|$(H��豭��H���Y���H�}��P���H�E�dH+%(�H�Ĉ[A\A]A^A_]��9o
����I�D$H�E�E1�L�p���H��1�H��H�}�H��H��L����H��t�L�(��n
����M���"����H�]��;�������W�������������H�]�A�H�
��L��H��袭����H�~n
H��H�E��ʪ�����9���E1�赧��foݢ	1�H�ieldH�Jn
H�5
�@foǢ	@H�H&f�f�LP.H��H��	u�1��@H�+i
H�5n
f�H@H�=U�t���H�}��+������H�}�H�5�I
�6�H���7���H�}�H�5�I
�=�I��H�]�����H�}�H�5�I
��H�5�I
H������H�}�����H�wm
H��H�E�������������H�Wm
H��H�E�裩�����`�������L�-?m
H�}�L��蓆H���J���H�}�L��螈H�x�3���H�}�L��臈H�PH������B�ƃ������K���BH�H��uډM�H�E�H�]�A�L��H�
��H�ދP蹫���U��������L�m�1���E�L��H�E�耳��A�T$4A�t$0I�<$荧����f��f������H�M�H��h���H��H��p�������H��p���H��h���1��ͭ��H��p����wH�U����I�ѺL��L��x�������D��f���H��h����H��x���H��p���襸��H�E�L��pH�P�b��H�}�虬���E����l��l�����E��u�H��x���虬��D��f���H��h����U�H��x���H��p����4���H�E�L��pH�P����H�}��(����E��E���u�H�E��E�H��X����u�H��x����˳��D��f���H��h����U�H��x���H��p����Ʒ��H�E�D�@H�HH�E��PE�����H��X���L���{���H�}�被���E��E���
u�H�E�L���pH�P�C��H�}��z������f�����H�f�������H����J�x��΃�����w;f���}�����H�f����H���l����z�ȉ����x�������v�H�H�����J�΃���릃�uBH�]�A�H�
�L��H������G���H�]�A�H�
�L��H���ר���&���H�]�A�
H�
�L��H��趨������H�]�A�H�
sL��H��蕨�����H�H��t�z�����������z���H���C����E�����ݤ���E��u����E������|��������H�������H�������H�������H������H����������H����ff.���������fD��UH��AWAVAUATSH��(H�}�H�u���h
���H�E�H�XH����H��h
H�E��<fDE��I�w1�I�?L��M��H��H�U��!��H��tkH�8teH�H����H�}�H�s�m�H�u�H��衃I��H�E�I�D�p@D��u�I�GH��tf;Ht�H�H��u�E��1�L��I�wH�U���g���H�u�L��L��H�A�H��I��fD�p�КH�H���j���H��([A\A]A^A_]�DH��g
H���ѣ��������迠��fo�	H�ieldH�}H�_g
H�z	@foϛ	@H�H&H�H.f�2H��H��f�q�H9�u�1��@H�=.Nf�P@H�g
H�b
H���t���H���,����S�����H�����f.�UH��AWAVAUATSH��8H�U�H�M�H��HcRH�u�H�wH��H�QH�u�H�U�H���
���H�E�H��L�e�H�E��EfDA�\$H�p1�I�?H��H��I��H��I�����H��tjH�8tdH�E�I��I9���H�u�H�}��d�H�u�H��蘁H�xI��u�H�@A�\$H��t�f;Xt�H�H��u�H��1�I�wI�ֿ�d���H��L��L��I��H�A�D$A�L��fA�E�ȘH�E�I��I9��f���H�E�H�H�E�H�������H��8[A\A]A^A_]�H�U�H�
H�M�H����������H����f���H�W@H�
YA
�l���ff.����H�W@H�
aA
�L���ff.����UH��AWAVAUATSH��xH�����H����H�wPdH�%(H�E�1�H�����H��H�������q[H��p���H��H�������K���H�����H��H������H�������H���5���L�� ���1ɺH����H�5�zL��HDž ���L��������H��(����
H�5�qH��H������1�H�����HDž(���L��@���責���訨��H��L��L��H�����H��(���H��0���脟��H�����H��L��H�����Dž8������H�5����L��DžX����x����8�ޚ��H����H��I�����I�D$(L��H��0����ȭ��H��8���1ɺH�5�yH��HDž8���H���������H�Jd
H���AH��0���H��L��H��H�������=���H��8���H��`���語��H�����H��H�����H��p���Džh�������H�5����L���E�蝙��H��@���1ɺH�5yH��H�����HDž@����>����ƅ����-���H��L��H�H��P���H��H���莯��1�H��1�L��诟��fo�P���H��`���H����fo�����H����H��`���fH~�H��`���)�P���)����H9��MH��@���H�}�蝝��H�����H��H�}�H������E����H�5����L���E�薘��H���H�5����胘��H�5d`
H���s
H�����H��0����L�Y���H��H��H�������'������D�L�e�I��0H�5@���I�|$�&���I�<$�-���I9�u�H��@�������H��8�������H��0���H��tH��PH��(�����H�� ������L�����I�D$H������I�D$H�@H�����H����H�H�������3a
����=�a
L�5%a
��H������H��t+H�L��L���H������x�gH�5`���L���H���1�H�����H������L��H�������H�����H��tH��PI�$H������L��PH����1�H���H���H��L��譢��H������1�L��輧��H����H��-��H��H���!	H�H��L���H������xt)H�5����L��蚖��HDž(���1���H����H�5����L��HDž���_���H��(���H��t�L���H��
1�H�5�sHDž@���L��L�`(HDžP������L��H��L��A���h��H��H�0H�
���H�����PH�����L�
��L�����H������1���H�5ځ��L���•��H��P����Ɵ��L��@���Y^M����I�$�	L��1�H�5�sL�h(HDžP����K���L��L��L��A��H�5(_
H���H��H�d���H�����H������PH�����L�
7���L����苪��H�54���L��A������H��P�������E��XL��@���Z��M��tI�$L��P@L����H������L��L������H�����L��H�����H��L���n�L�����M��tL���z����XL���}���H�����H��tH��PH��t	H�H��PH������(u#H�5A\
H����
H�����H�R���蝢��H�������1���H����������H�����H��tH��PH�E�dH+%(�&H�e�[A\A]A^A_]ÐH�5���L��H����HDž���ϓ�����f.�����H�8H�������L����=�]
�H������H�8�������H�=]
��������H������1ɺH�5�rHDž0��������HDž8����
���f�1ɺ%H�H�����H�5�a)�0���HDž@���H��(���HDž@����Ť��H��@���H�߾�Q���H���1ɺ.H�5�aHDžP���茤��H��P����H��8�������1�L���1H�5�aHDž����S���H�����L����ߞ��H��(���1�1�H��L������E1�E1�SH��0���jL��Pjj茕��H��0L�����H��0����4���H��8����(���H��@�������H��8���耛����f���H��0����H�H��I���H���H������ܛ��H��P����Л��H��@����ě��H��0���踛��H�=9[
L�5:[
�������H����H��������D��8����p���L���I�$�1�H�5
qL��H�X(HDžP�������L��L��L����H�����E1�x��H�5%}��L���
���H��P�������H��@���1�L����H�5�pH�L��L�h(HDžP���蛢��L��H��L��A��H�����H������@���~�G���]1ۃ�u�H�5�|��L���}���H��P���聚��L��@���1�H����H�5.pI�EL�p(HDžP����
���H���L��L��A��H�����H������@������������u�	�H�5|��L�����H��P��������H��@�����D ������H����	H��PL���}���H�������Q���H����H����H�����E1�E1�H�H�������ODE��u2H������H�������Ɖ����诹��H����	������IE��H����I��I9�t~H������L��跥��H�Ë@��uA�ă�x��A�u�=�t€����t�H��P����CH���L��蔟��H��P���H��t��ou�H�I���PH����I9�u��������L��L����H���L��H�����H�����L��H���虀H��H����H��X���H��tH���*����XH���-���H��P���H��tH��PL������H��(���H�������H��P�����1V
����H�*V
H�=�U
H�0苖��H�5�U
�\����H�)m�H�=�W
�P���H��W
��@HDž(���1����fD��W
��U
����
H��OH��x���H��x���H�����1ɺ!HDž(���HDž@�������H��@���1�H����H�5@cHDžP���H��0����ў��1�L���%H�5�[HDž���谞��SL��P���E1�jH�����1ҾjH������j���H������H�� �5���H�����詖��H��P���蝖��H��@���葖��H������1ɺ	H�5�bHDž0����,���L��[1�H������L�޺ HDž8�������D��vH��x���1��~�8����!H�����Dž0���fD��H����0���HDž@����8���话��H��@���1�H����H�5�aHDžP���H��(����|���1�L���.H�5cZHDž����[���H��(���E1�1�PL��P����H��p���H�����jH������Sj蓞��H������H�� �Ӗ��H������G���H��P����;���H��@����/���H��8����#���H��0�������H������1ɺ	H�5)aHDž0���貜��L�Z1�H������L�޺ HDž8���芜��D�uH��x���1��~�8����!H�����Dž0���fD��H����0���HDž@����8����5���H��@���1�H���H�5v`HDžP���H��(��������1�L���1H�5YHDž������E1�1ҾH��p���L��P���H�����PjSH������jH������H�� H���a���H������Փ��H��P����ɓ��H��@���轓��H��8���豓��H��0���襓��H��(����	������@��Q
����H��Q
H�=KQ
H�0����H�5<Q
����H��WH�=�R
�Џ��H�5�R
���H�UQ
H��蕎���������ح��H��H�>Q
�i�������@H�����H�x`���H����H��葎��H�������C��u�n��x��H�CpH��`���H�CxH��p���H���H��x���H���H��h���H��(���H������1�H�5RhH�L�p(HDž@���� ���H�����H���H��A��H��P���H��X����@���������E1���uL�2H���H�5	t����H��@������H��1�H�����H�5�gH�@(HDž@���H������腙��H�����H���H��H��������H��P���H��X����@����������1ۃ�uH�H���H�5is���T���H��@����X���H�����H������H��(辀H��`��������L�p(H�X0H�����H�PH��p����H�PH��x���H�PH��h���H�P H������H��rH�����H���HDžP���H�����H��@���H��A��L�VH�����H��P���D�pA��D���S���H��E����H��P�������(�a���H��I��H��P������H���1�1�E1�L�����H��P���轒��L��P����A�FH���L���і��H��P���H��t
�ouH��PH��耒��H��@��������L��视��H�������{���H����H���*���H����������@H������f�
D�s)�@���)�P����1���H������1��#���A��u��A��xu�oc`)�P���L������H������H���L���*���H������H��P���H��X������L���؆���C��u�%��x����������H���H�����H�KH��H�������8����X莇��H��I��蓅��H������H��8����@H������L���a���H��8���H��t
�ouH��Pfo�P���H������1�A^(����H������I�~ �=���H����������H������H������yH�8L�0H�����H����������H�������X�������DHDž`���HDžp���HDžh���HDžx����T����fo��	�@ H�x@H��P���HcPH���
D�s�D�#���f.���1ۃ�����Hc����f.���E1����Z���Lc2�R���f�H�C8H��`���H�C@H��p���H�CHH��x���H�CPH��h�������L�2�����D�2��������H�����X�ݙ��H���H�����H�KH��H������謘������H�{�~���H��P���H��X����D���H�pH���������H����������H�=�J
��H�
�DH��x��������H���1ɺ!H�5�DHDžP��������HDž�����E1�E1��H�H��P���L���Ɗ��L��莍��H������r�����X���H��P����H�H��H��p����6���H��P����ʋ��H��p���H�=J
H�J
�����7�H��I
H�������������O���H��H��I
�����������e��^��1ۃ�������	��?�����	��-����H������8A�����H���H�L���ˁ��H������蟍��H����H���N��?�蕅����H���Z����H���N����H��������I��������H�������I��������H�������H��������H��������I�������H��������H�������H��������H�������H�������H��������H�������H��������H�������I���'����I�������I�������H���R����H���7����H���:����H�������H�������I���a����H���"������UH��AWI��AVAUATSH��hdH�%(H�E�1����tPH���H;���H�>tH��������H�U�dH+%(�*H�e�[A\A]A^A_]�H��XH��`H)�H������D�p�H�E�E1�H�E�I���fDI��XI��L�L�+M��t]I�EL��PI��@M��@H��tH��PH��L����L�+M��t'I�EL��L�m��PH�U�H��L�����I�EL��PM9�u�I���I���H)�H�����	�����E1�H��H��x���H�E�H�E�f.�L�L�+M�����L��H�}�L��H��I�E�H�E��x�~H�}�H�5�i���}��H�E�E1�L�+L�m�M����I�EL��PH�U�H��L���7��I�EL��PM��t	I�L���PL9�x����H���I���I���R���f�L�u�H�}�H�5Qi��H�E��4}��L�u�M���q���H�E�H�E�L��H�E�H��I��PL�m�H�}�1ɺ
H�5@ZI�EH�@(H�E�H��p���詎��H�u�H��p���L���H�}�A���͆��H�}�H��tH��PE����L�m�M�����I�EH�}��	1�H�5�ZH�@(H�E�H��p����:���H�U�H�}�L��H��p�����H�5F
H���6H��H�M�H�Gh��L�
0h��PH�U�L�n��H�}��{���H�}�H�5 h��A���|��H�}�����ZYE��t�E����H�}�H���0���H��PL�+L�m�M���*���H�U�H��L���k���9���fDI�H�}��
1�H�5�XL�h(H�E��Z���H�U�H�}�L��A������H��H�0H�M�H�}�H�qg��L�
Zg��PH�U�L�.m��詐��H�}�H�5Ng���9{��H�}��@���^_���f�1�����f��H�\IH�=�D
蘁��H�5�D
���@H��L�������������H��������H��������H�������H�������H��������H�������H�������H�������f���UH��AWAVAUATSH��H��L���dH�%(H�E�H����G|����L��x���H+��H�����Gx��<����o���M���N
H��I�L�}�L��L���H�E��x��H�5�e��L����y���{xH�E���ƃ�HDžx���1�1�Dž@���DžD������D��@���H�ߋ�D���u
��������H������t8���t
�����	H���H�����H������A�Ƅ��E1�H��x���H��tH��PH�E�dH+%(��H�e�D��[A\A]A^A_]�f�H���HDžx���H������H��P(����H��x�������;L�}�L��x���L�m��1�H�5�XL��I�L�`(H�E��R���L��L��L��A��H�E�H�U��@���b	�|���s�����L�%Pd��L����D���L���/x��H�}��6���H��x����L��1�H�5�WH�L�p(H�E��ʉ��H��x���L��L��A��H�E�H�U��@���f����O�����L��L����@����w��H�}�豁����������5*bH�+bE1�H��h���H��p�����`�����X����DH��H�]c��H�M�L�m�PH�U�L��L�
6c��L�i��芌��YL��^H�5.c����t@H�}�t9�w��L�u��e���H��M��t(I�L��L���H�E�H�5�b��L���x�
��v��H�}�H��tH��PA��H���H��P(A9���H���L�}�L�m�D��H�E�L��H��P0H�5�@
H���!����H��SH�=v@
�}��H�5j@
���DL�u�H�5Ub��L��H�E�L��x����.v���{xL�u�tH���H���?���H��x���ƃ��M����<���f.������v���fD�����L�u�H�5�a��H�E��u��f�L�u�)E�M������I��	H�5,P1�H�E�L�@(H�E�H��H��P���L��H����<���H��P���L��L��L��H���A��H�5.?
H����H��H�M�H�Fa��L�
/a��PH�U�L�g��H�}��z���H�5#a��L��A���u��H�}����XZE��uI�L���P����f.��U��E�f�f����p���f.=j_�*��*�z�f(��]�p����_�X�����p�����h���f.._z��f(��]�h����_�`�����h���U�f��f�E��*���p���f.�^�*���`�����X���z����X���f(��_��]�p�����X�����p�����h���f.%�^z����`���f(��_��]�h�����`�����h���������p���f.H^z����h���f.0^z����p���f�f/��zf/%�]��������h���f�f/��!f/-�]�����|��X����\�p���f��f/���f/p]DžD�������/��`����\�h���f��f/���f/:]Dž@�������'����X]�,���@�������1�1��������p��������h���������X�����p����g�����`�����h����S����H��LH�=<
��x��H�5	<
����@H���L�`L��H��;��f�H�E�)E�M����I��L���t��I�H�E�f�L��L�e�H)ƒ�tH��L9�tDH�� @�L9�u�H���L�e�L�`H�E�E1�H��p���M��t/fDD��I�t$L��p���A��H��H}�� ��M�$$M��u׿XL�}��	t��H�s`L��H��I���|L�ch� ��s��H�ShH�s`H��I���kH�C`L�cp��h�i��k����tH�Cpƀ���u.H��`H��XH9�tH)�H��X1�H��H���H���l����<���H���1�H���t�����t
�����L�cXM��tL����r���L���Nr��H�CXL�m�H�]�I9�tBf�L�cM��tL������XL���r��H�;H��tH��PH��I9�u�H�]�H������H�u�H��H)���q�����f.�����wx����������������D�{xH�E����H���H������������H������H�������<������������L�%i[��L��L���No��H�}��Uy��DžD�������fDL��L���%o��H�}��,y�����Dž@����l���fD�����H�E�H�E��:���H���pC��H���86��H�����H������H�{pH�����H���0�����H�{h�/�H�C`���fD�
�Xf/��/�\�X�,���D����_�����
�Xf/����\�X�,���@��������X��h���f/����\^X�,�����D�XX��p���f/�sx�\52X�,��r����X!X�,���D�������
X�X��,��o�����W�X��,��1���H���`������Dž@���DžD���������������� ���Dž@������DžD�����8�����q��H�E�dH+%(u�H�=m<�0w����H��颹����H���˹����H���ѹ����H���Թ����H���ӹ����H���{�����H���g�����H��餹����UH��AVAUL�m�ATI��SH��L��H�� dH�%(H�E�1��l���I�<$�1L�u�L��L����L�e�M���I�D$I�|$H�}�PI�$L��PH�}����8L�u���n��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����Jl��H���L��L��H��I����5��I�$H�WoL��H9B�r�%��H�{`L�c`H��tH�H�.X��H�@H9��a�|m��H���L� M��t
I�$L��PH���L���H��tH��PH�����A��L�kpM��tL���.h� L���m��H�{`H�CpH�C`H��tH�H��W��H�@H9�����l��L�khM��tL���v�XL���l��L���H�ChM��t/L����BI�}I�E0I�uH9�t	H���l���8L���{l��Hǃ�H�}�H��tH��PH�}�H��tH��PH�E�dH+%(u:H�� D��[A\A]A^]�E1�����m���fD���5�����������n����H���&�����H���9�����H��������2�����H���0����f.���UH��AWAVI��AUL������ATSH��H���H�����dH�%(H�E�1�H�� ���H��H������o����@�L���w��I�>��H���H9�������i��L��H��I���~��L���|��I���I���H��0����PH��0���H��0���H��H�����H��������L��0���M����I�D$I�|$H��(����PI�$L��PH��0���H��tH��PH��(�����H�=M2
L�����M��tII�$H��(���L��H�����H�����H�2
�H��0����x�
H�����H�5WT���Bh��ƃ�H��(����8H�������j��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����Lh��H�����H���I��H��(���H��L��H������1��I�$H�GkL��H9B���{��H�{`L�c`H��tH�H�T��H�@H9����li��L���L���M9�t-f�I�<$tH�{`� s��H��L���u}��I��M9�u�L��`L��XM9�t-f�I�<$tH�{`��r��H��L���5}��I��M9�u�H���L� M����I�$L��PH���L���H����H��PH�����E1�L�{pM��tL���c� L���sh��H�{`H�CpH�C`H��tH�H�S��H�@H9����Nh��L�{hM��tL���mq�XL��� h��L���H�ChM��t.L���$>I�?I�G0I�wH9�t	H����g���8L����g��H��(���ƃ�Hǃ�H��tH��PL����g��E���)L���k��H�����L��H����k��L������@�H�����E���s�������L���Vk��L�����Hk��H�������1��Xt������L��������L���v��1�L���ss����L���at��H�������1�L��H��^	H��(����h��H��(����tq��H�����L��L���Bx��L���:f����h����������?��H�������t{��H�������t���E1�L����t��H�� ���H��tH��PH�E�dH+%(�!H���D��[A\A]A^A_]�L��@���H�����H�5CP��HDž@����#d��M���������I�$L��P����@H�����u��H���+H���1�L��H���L���|n��H�
%���o��H��H���H����o���p���!�A��M�����H�����L���fr��H��0���H��8���H��H9�u�[H��H9��KH�H���H9��u�H��H9��u��o�p����L���e���s���HDž(����+���H���Hǃ�H�������,���A9�����H������h��H�E�H�����H����h��H������D�}��dy��H�5}*
H����H���H������L�oN��D���Gu�����C���H�����H������H�8H��PH��0����(u#H�5$*
H����H��0���H�-N���xp��H������\r���z����H���V���H��@���H)���c���B���H�i1�H�=}+
�hh���3���H���H�A�������Ke����fD���K���f���������Oo��H�=h)
H�0� j��H�5Y)
�����*o��H�=C)
H�0�i��H�54)
�����e����鿮����H���ڮ����H���s����������H���Ѯ�����#������"������%�����H��鲮����H���w������Y�����H���	�����H���o�����H���o�����黮����H���P�����H���`����f���UH��AWAVAUATSH��XH�}�H�H�5E(
LccdH�%(H�E�1�H���H�E�H�E�H����H�}�1�L�1L��H�
L���h�����3���E����H�E�O�$dH��E1�H�E�I��H�E�L�=�K��H�E�I��2f�������
�����mDH��0L9�tiH�;�G��u�H���H�5?�`�����H�5�)
H���H��H�KH�SH��0AWH�}�L�2Q��L�
KK���t��_AXL9�u�H�E�H�u�H�}����u
������g��M��t
I�EL��P0H�}�H��tH��PH�E�dH+%(�HH�e؉�[A\A]A^A_]�H���H�5�>�_������H�}�H�E��Bf��H�C�x��H�u�H�}�H�M��
H�E���d��L�u�H�E�M��tI�EL��P0H�}�H��tH��P0H�}�H��tH��PM��t7�8�^��L��H��I���s��L��I��(�q��H�}�L�m�H��tH��PH�}�M���h���@����H�L=H�=(
�xd��H�5	(
�]���@H���
H�5�=�^�����kH�5�%
H����H��H�KH�SL�
�I��AWH�}�L�[O����r��Y^����H�;�G���D���7���fDH���H�5D=�3^�����{���H�E�H�5 '
L���H����H��H�SH�KL��H�
I��L�
�H��PL��N���Fr��XZ�/����H�;�G����DH�CH�}�H�0�d��������$
����H��$
H�={$
H�0�;e��H�5l$
������$
����H��$
H�=C$
H�0�e��H�54$
�����H�;�G�w���DH�E�E1�H�E�����H��+H�=
&
�b��H�5&
���L�5-$
L���ma�����D���谀��L��H�$
�Ae���+���L�-�#
L���=a�����L���耀��L��H��#
�e���3����W`����H��������H���ͪ����H��鵪����H��顪���fD��UH��AWAVAUATSH�XG��H��(H�����H�6dH�%(H�E�1�H�E�H�����H��H��P HDž������H��H�0H�M�H�����SH�U�L��L��L�
�F���:p��L�����_AXM���I�$L�}�1ɺ#H�5�*L��L�h H�E��ml��L��L��A��H�}������d��L������ס��H��M��t%I�$L��L���H�E��x�H��L���JZ��E1�I�L��p����1�H�5�8L��L�����HDž ���L�h(HDžp�����k��L��L��L��A��H�5�#
H���2H��H�M�H�� ���L�
�E��SH�U�L��K��H��H���L��P����o��H��L���Y��H��p����c��Y^L��H����zZ��I�H�����HDž(���H�@(����HDžp���H���������H�5]9L���	k��H������L��L��L����H�5�"
H���7H��H�M�H��(���L�
E��SH�U�L��J��H��H�����Fn��H��L����X��H��p�����b��H��(���XZ��L��`���H����L���Y��L��L���`�����vL��L����Y��H���H�8H��0���H��tH��P1�L���b��L��H���L��L��L�������c��L��@���L��L���c��L���h��H��L��L����k��L��H�����H�������Y��L����Y��L���Y��1�L���a��L��L���9c��L����h��H�U�L��L��L��H�E�L�������d��L��H������I���rY��H�������fY��H�����H����si��H���
H���H����H��H��H������Y����������tH�����1���X�����W��fo����H������H����H����)E�H��t��fH~���H�DA�H�H�E�H����M��t����I�TF�H�����H�L��L����L��H�E�H�����L���Z��L��L��8����Ee��L��L����l��L��8������H��M���I���I�$L��L���H�E��x�$���L�e�H��L��H�E��aV��H� 
I�$L��@���H�@ H�����H��uH��4�H�=�
��\��H��
H��0���H�
B��L��H��H�������Pl��H�������1�H�5�4HDžH����g��H������L��L��H�������H��H�����_��L��H���U��H�������l��H������L���3%H�����H���H��tH��PH�}�L�����H��H���I���H��tH�H��RI���H�L���P8I�$L��PH��8���H��tH��PH������f����������A���_��A�H�����H��tH��PH�����H����T��H�E�dH+%(��H�e�D��[A\A]A^A_]��A�뽺H�5�4L���\f��H�������N���E1�H��0���H��tH��PH��x���H��t=H�WH�OH�H9��TH��
�8�4�G�P��W����H��h���H��t=H�WH�OH�H9��KH�d
�8���G�P��W����H��(���H��tH��PH��X���H��t=H�WH�OH�H9��8H�	
�8��G�P��W���H�� ���H��tH��PH�����H���g���H��P�\����H��L��L�u�H�E��9S�����@E1��a����L���xi��L���������ji��9������h���L��L���CT��H�����c�����H�i1H�=u
�hY��H�5i
���@�H�A1H�=M
�@Y��H�5A
���@����������f�H�����1���S���_���DH�H�
N>��H�GH�PH9�uH�PH�
b>��H9�u%�P���DH�������H�����H����������������� ���f������������f�H�H�
�=��H�GH�PH9���H�PH�
�=��H9�us�P���f�H�H�
�=��H�GH�PH9�umH�PH�
�=��H9�uV�P���D��R����fD��R���<���fD��R���u������%���H�������H�����H��^������O���H�������H�����H��{�����U����I�������I��H��0���H�������Š����I��釡����I��驡����I��陠����I��������I��鵡����I�������I���~�����I��钠����I��铡����I��鮡����I��隡����I���š����I��鱡����I���l�����I���O�����I��H��0���H������������I���X���f.�����f.�����f.�����f.�����f.����1��f���H�?�Y��@��UH��AVAUI��ATI��SH��H��dH�%(H�E�1���
��t:H��
I��H��L��L���e��H�E�dH+%(u>H��L��[A\A]A^]�L�5q
L���T����t�H��
L��H�\
�wX����S����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��
��t9H�
I��H��L��L����d��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�
L���T����t�H�&
L��H��
��W���� S����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��u
��t9H�r
I��H��L��L���Ad��H�E�dH+%(u=H��L��[A\A]A^]�f�L�51
L���aS����t�H��
L��H�
�7W����R����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���
��t9H��
I��H��L��L���c��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�
L���R����t�H��
L��H�|
�V�����Q����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��5
��t9H�2
I��H��L��L���c��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�
L���!R����t�H�F
L��H��
�U����@Q����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���
��t9H��
I��H��L��L���ab��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5Q
L���Q����t�H��
L��H�<
�WU����P����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���
��t9H��
I��H��L��L���a��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�
L����P����t�H�
L��H��
�T����P����H�=\
H�U
t�f.�UH��H�S+�H���Q��H�)
]�f.�D��UH��SH��H��H�5�
H��t$H��L��6��1�1��]��H��H�]������vX��H�=�
H�0�GS��H�5�
�ff.���UH��SH��H��H�5Y
H��t$H��L�Z6��1�1��1]��H��H�]������X��H�=
H�0��R��H�5
�f.�@��UH��ATSH��H��dH�%(H�E�1��0
��t4H�5-
H����W��H�E�dH+%(uAH��H��[A\]�f.�L�%�
L���!O����t�H�F
L��H��
�R����@N����UH��ATSH��H��dH�%(H�E�1���
��t4H�5�
H���UW��H�E�dH+%(uAH��H��[A\]�f.�L�%a
L���N����t�H��
L��H�L
�gR����M����UH��AWAVAUATSH��dH�%(H�E�1��J
��t>�=�
H�@
�jH�E�dH+%(�"H�e�H��[A\A]A^A_]�DH�
H����M����t�1�L�}�L�e��!H�5�H��x���HDžx����Z���L�m�H�E��U��1ɺ-L��H�H�5vH�E�H�E�H�E���Y��H�U�L���\T��H��H�E�E1�ATH��x���E1�1�j1�L��Pjj�K��H��0L���FS��H�}��Z��H�}��$Q����
H��H��x����H�H��I����S��H�}��Q��H��x����wQ��H��L�%�
��P���=�
H��
�����@�M��H�8I����U���=Y
tI�<$�^P���o���f��9
�Z
����L�}�L�m�L�5;	��T��H��`���1ɺ
H�5('HDžX���HDž`����X��H��h���1ɺH�5'HDžh����\X���1��~�h���H��p����f�E�H�5�&�`����E�E�HDžp����X��1�L���!H��x���HDžx�����W��1�L���~�p���H�52H�E�L��X����x���)E��W��1�L���-H�5:H�E��W��H�E�L�M�E1�PH�E�H�M�1�j�L��Pj��X��H�� L���)Q��H�}��O��H�}��O��H��x����O��H��p����O��H��h����sO��H��`����gO��H��X�����N������fDH�=�
L�}��J��L�m�L�5u���2���1�L���!L��H�E���V���H�E��R��H�U�E1�E1�H��L���M��L���_P��H�}��FN����,E��H�U��H�H��H��H����
Q��H�}��N��H��H���H�=�
H��
��M������0I�����ou
H��`�����UH��ATSL�gH��M��tL���S���XL���F��H�;H��tH�[A\]H�@���[A\]���UH�50��H��SH��H�H����C��H�;H�]����M����H�?H��tH��`fD����H��(u3UH�5�
H��ATSH��H��t%H�;H��/��[A\]��Q��f.�����
��t%H��
H�=7
H�0�K��H�5(
�fDL�%i
L���H����t���g��L��H�V
�L���f.�D��H�?H��tH��`fD����H�?H��tH��`fD����UH��AWAVAUATI��SH��H��(H�H�H�H�H�H�HcPH�FH�Hc@L�l\D���D��H�E��uH��([A\A]A^A_]�I�$H�xI�L$H�L�zH�L�pH�L�BL�HH�H�0HcFL�$H����J�'1�DfA�4f�4BH��H��(u�1�f�fA�4f�tBPH��H��	u�1�f�fA�4f�tBbH��H��)u�fA�H�1H���f���LcffA�Gf���K�$M��uSH�D�h1�fB�gH��([A\A]A^A_]�fDH��L��L�M�L�E�H�M��B��L�M�L�E�H�M�H���)���@H���B��H���f.���UH��AWAVAUI��ATI��SH��H�H�H�H��X��Z���|C��I�E��uH��[A\A]A^A_]�DI�$H��H�HM�d$H�L�rL�xH�H�0HcFH�H��urH�1�DfA�f�BH��H��(u�1�f�fA�f�LBPH��H��	u�1�f�fA�f�LBbH��H��)u�1��_f���H��[A\A]A^A_]�H��H��H�U��A��I�}H�U�H���n�����UH��AWAVAUATI��SH��H���H�6dH�%(H�E�1�H��h���H�H��8���H��H��P L��h���L�m�1ɺ(L��I�L�xH�?H�E�H��H��P����hQ��H�E�L��L��H��@���L��H��A��H�=.	
H�E���H��t3H�L�u�H�	
H��L���H�E��x��H�5L+��L���4?��E1�H�;H��tH��PH�}�L�;H��tH��PH�}��I��H��h���H��tH��PH�;�H�E�dH+%(��H���H��[A\A]A^A_]�@H�5�*��L��L�}�H�E��>���o���H�Y�H�=E
H�� ����!E��H�� ����	���H��@����9A��L��H�}�H��@����fH��H��8����j���H��@���L��H�)H�M�fIn�fHn�H��fHn�fHn�H��p���H�uL��`���fHn�fHn�fIn�fl�fl�fl��P���H���ZH���m)����)� ���)�@���)�P�����>���I���C��1ɺ*L��I��H�5�1�H��`����OO��L��8���fo����H�E�fo� ���fo�@���H�u�H�E�fo�P���L��L�m�)�p���)U�)M�)E��m���L��L��L��H�


�XB��H��h����G��H��`����G��H�E�dH+%(���A���L��p����B��1�1�H�54H��p���L���*I���N��fIn�H�H�u��P���fHn�H�R)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��0���L��L��L��H�
 
�A��H�}��RF��H��p����FF��H�E�dH+%(�6���H�5��	H�2��L���F����I�������I��I���}�����I���*��H�
nH��L�m�H��H��P��������I���H�}���E��H��p����E��L���rK��H�����H�E�dH+%(�����L���F���<��H�E�dH+%(�z�����I��I�����I���EH�5��	H�61��L����E����I�������H��h����3E��H��`����'E��L����J���H���c���D��H�?H��tH��`fD����UH��AWAVAUATI��SH��H��(H�H�H�H�H�H�HcPH�FH�Hc@L�lBD���=��H�E��uH��([A\A]A^A_]�I�$H�xI�L$H�L�zH�L�pH�L�BL�HH�H�0HcFL�$H����J�'1�DfA�4f�4BH��H��u�1�f�fA�4f�tB6H��H��	u�1�f�fA�4f�tBHH��H��u�fA�H�1H���f���LcffA�Gf���K�$M��uSH�D�h1�fB�gH��([A\A]A^A_]�fDH��L��L�M�L�E�H�M���:��L�M�L�E�H�M�H���)���@H���:��H���f.���UH��AWAVAUI��ATI��SH��H�H�H�H��X��@���;��I�E��uH��[A\A]A^A_]�DI�$H��H�HM�d$H�L�rL�xH�H�0HcFH�H��urH�1�DfA�f�BH��H��u�1�f�fA�f�LB6H��H��	u�1�f�fA�f�LBHH��H��u�1��_f���H��[A\A]A^A_]�H��H��H�U��9��I�}H�U�H���n�����UH��AWAVAUATI��SH��H���H�6dH�%(H�E�1�H��h���H�H��8���H��H��P L��h���L�m�1ɺL��I�L�xH�WH�E�H��H��P����I��H�E�L��L��H��@���L��H��A��H�=�
H�E���H��t3H�L�u�H�i
H��L���H�E��x��H�5l#��L���T7��E1�H�;H��tH��PH�}�L�;H��tH��PH�}��8A��H��h���H��tH��PH�;�H�E�dH+%(��H���H��[A\A]A^A_]�@H�5�"��L��L�}�H�E���6���o���H�]�H�=�
H�� ����A=��H�� ����	���H��@����Y9��L��H�}�H��@����@��H��8�����H��@���L��H�IH�M�fIn�fHn�H��fHn�fHn�H��p���H��
L��`���fHn�fHn�fIn�fl�fl�fl��P���H���ZH���m)����)� ���)�@���)�P����6���I����;��1ɺ*L��I��H�5�1�H��`����oG��L��8���fo����H�E�fo� ���fo�@���H�u�H�E�fo�P���L��L�m�)�p���)U�)M�)E��m���L��L��L��H�
�	�x:��H��h����<?��H��`����0?��H�E�dH+%(����9���L��p����;��1�1�H�5T�H��p���L���*I���F��fIn�H�2H�u��P���fHn�H�V)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��0���L��L��L��H�
�	�9��H�}��r>��H��p����f>��H�E�dH+%(�6���H�5��	H�%*��L���>����I�������I��I���}�����I���*��H�
�H��L�m�H��H��P��������I���H�}���=��H��p�����=��L���C��H�����H�E�dH+%(�����L���>����4��H�E�dH+%(�z�����A��I�����I���EH�5��	H�V)��L����=����I�������H��h����S=��H��`����G=��L���B���@���c���D��H�?H��tH��`fD����UH��AWAVAUATI��SH��H��(H�H�H�H�H�H�HcPH�FH�Hc@L�lKD���75��H�E��uH��([A\A]A^A_]�I�$H�xI�L$H�L�zH�L�pH�L�BL�HH�H�0HcFL�$H����J�'1�DfA�4f�4BH��H��$u�1�f�fA�4f�tBHH��H��	u�1�f�fA�4f�tBZH��H��u�fA�H�1H���f���LcffA�Gf���K�$M��uSH�D�h1�fB�gH��([A\A]A^A_]�fDH��L��L�M�L�E�H�M��3��L�M�L�E�H�M�H���)���@H����2��H���f.���UH��AWAVAUI��ATI��SH��H�H�H�H��X��I���3��I�E��uH��[A\A]A^A_]�DI�$H��H�HM�d$H�L�rL�xH�H�0HcFH�H��urH�1�DfA�f�BH��H��$u�1�f�fA�f�LBHH��H��	u�1�f�fA�f�LBZH��H��u�1��_f���H��[A\A]A^A_]�H��H��H�U���1��I�}H�U�H���n�����UH��AWAVAUATI��SH��H���H�6dH�%(H�E�1�H��h���H�H��8���H��H��P L��h���L�m�1ɺ$L��I�L�xH��H�E�H��H��P����A��H�E�L��L��H��@���L��H��A��H�=�	H�E���H��t3H�L�u�H���	H��L���H�E��x��H�5���L���t/��E1�H�;H��tH��PH�}�L�;H��tH��PH�}��X9��H��h���H��tH��PH�;�H�E�dH+%(��H���H��[A\A]A^A_]�@H�5	��L��L�}�H�E���.���o���H�B�H�=�	H�� ����a5��H�� ����	���H��@����y1��L��H�}�H��@����8��H��8�����H��@���L��H�iH�M�fIn�fHn�H��fHn�fHn�H��p���H��L��`���fHn�fHn�fIn�fl�fl�fl��P���H���ZH���m)����)� ���)�@���)�P����/���I���4��1ɺ*L��I��H�55�1�H��`����?��L��8���fo����H�E�fo� ���fo�@���H�u�H�E�fo�P���L��L�m�)�p���)U�)M�)E��m���L��L��L��H�
��	�2��H��h����\7��H��`����P7��H�E�dH+%(����1���L��p����73��1�1�H�5t�H��p���L���*I����>��fIn�H�RH�u��P���fHn�H�;)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��0���L��L��L��H�
��	��1��H�}��6��H��p����6��H�E�dH+%(�6���H�5��	H�E"��L����6����I�������I��I���}�����I���*��H�
H��L�m�H��H��P��������I���H�}��6��H��p����5��L���;��H�����H�E�dH+%(�����L���6����,��H�E�dH+%(�z����:��I�����I���EH�5��	H�v!��L���6����I�������H��h����s5��H��`����g5��L���;����8���c���D��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����UH��AVI��AUATSL�oH�I9�t:f�L�cM��tL���o9���XL���r,��H�;H��tH��PH��I9�u�I�H��tI�vH��H)�[A\A]A^]�<,��@[A\A]A^]�f.�D��H�?H��tH��`fD����UH��AWAVAUI��ATI��SH��(H�H�NH�HcIDH�H�RH�HcRDH�\H�PH�H�HcRDHc@DH�H��5,��I�$��uH��([A\A]A^A_]�fDH�HI�EM�uH�L�@H�L�zH�L�HH�L�jH�0L�PHcFDH�H��u|H�fA�H�Hf�IcEDH�H����H�fA�L�hf�IcGDH�H��u~fA�I�I�}fA�EIcFDL�<H��uPI�$�X1�fC�D=H��([A\A]A^A_]�f�H��L�U�L�M�L�E�H�U��(*��L�U�L�M�L�E�H�U�H���T���L��L���*���L��L��L�E�H�U���)��L�E�H�U��b���H��L��L�M�L�E�H�U���)��L�M�L�E�H�U�H������D��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����UH��AVAUI��ATSL�gM��tZDL��M�$$L�sM��tL���6���XL���)��H�{H��tH��PH�{H��tH��P�(H���p)��M��u�I�EI�}1�H���d,��I�EI�E[A\A]A^]�f.����UH��AWAVAUATI��SH��8L�wH�H�}�L��H�U�H)�H��������H��H9���I��I��H��H��H�u�H)�L9��`H�4H�u�H9��'H����H�E�H�E�L��L��H�H��H�E����H�M�I9��@L�m�I���
�I��L��L���
���I��I�EM9�u�I�� M��M9�t'M��fDH��L���ݞ��H��I��I9�u�L9u�tFH�]�fDL�kM��tL���4���XL���(��H�;H��tH��PH��L9�u�H�}�tH�E�H�}�H�@H��H�E�H)���'��H�E�H�U�H�M�H��H�H�L�aH�AH��8[A\A]A^A_]�@H�����H�U�H�M��Q(��H�M�H�E�����@H��r�H��������H9�HF�H��H�U�H����@H�E�L�hM��L9u�����C���H��������H9�HF�H�E�H��H���H�=���4/����H�����H���;��H���N�$&��H�}�uH�}���H�}�tH�u�H�}�H���&���73����%��H�]�I9�t)H��H���]�����%��L��I9�tH��H���B����2����H�����2����H�����1��H���%���u�����H���
��1��H���L/����1��H���o%��H�]�I9��N���H��H��������@��UH��AWI��AVAUATSH��H��D�6D���9H��H��td�E�I��H�KH��ta�(H�M��&��H�M��}�L��I��A�L��fA�E �7��H�C(�H��L����[A\A]A^A_]�fDI��1���f�H9�t�1�fD;r ���E��f.�f���UH��ATSL�gM����I�\$ H��tfDH��H���%��H��u�I�D$I�|$1�H���
(��I�|$I�D$@I�D$(I�D$ I�t$H9�t	H����$��I�|$��,��[L��PA\]�$��[A\]�f.����UH��AWAVAUATSH��H�L�,�M��tI�]I��I��I��I��H�K0�*f�H�3H��tXH�N01�I��H��I�t$I9�uBH��I9�uڋCA9@u�I�H�S�p;ru�L�E�H9�tH��H�x���
'��L�Eȅ�t�E1�H��L��[A\A]A^A_]�f.����UH��AWAVAUATSH��XH�U�dH�%(H�E�H�L�,�M���RI�]H�E�I��I��H�E�I��H�KH�0�H�3H���$H�NH1�I��H��I�t$I9��
H��L9�u�H�}�H�CH�7H�E�H9�H�u�����/��H�u�H��H��t'H�H�}��H�E��x��H�}�H�5&
���!��H�E�H�E��H�E���.��H�u�H��H����H�H�}��H�E��x��H�}�H�5���� ��H�}���H�}�H��t
H��E��R�E�������f.�H�E�dH+%(��H��XL��[A\A]A^A_]�E1���H�E�H�}�H�5a��H�E�H�E��@ ���2���H�E�H�}�H�59��H�E�H�E�� ��H�E�H��tH�H�E�H��RH�E�H9E����:���f�H�}����+���H�}��"��H�E�L��H��t-H�E�dH+%(t-�y$����H�U�I������H��H������ ���-������*��f.�f���UH��AVAUATI��SH��H����H��I��H��<��L�4�L���"��L��1�H��I���1$��M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AHH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H��� ��I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t��%��������H�����I�EI�D$(�,����H���+��H���2)��f���UH��AWAVAUATSH��H�L�,�M����I�]I��I��I��I��H�KH�&DH�3H��thH�NH1�I��H��I�t$I9�uRH��I9�u�I�8H�S�w;ru�L�E�H9�tH��H�����"��L�Eȅ�u�H��L��[A\A]A^A_]�f�E1���f.����UH��ATI��SH�u[H�_H��u-f�1�H��[A\]�fDH��H�����!"����t�H�H��t�I�<$H�S�w;ru�H9�u�H��[A\]��H�HcH��~H�4H�H��H��H���HH�H9�u�H��1�H�wH��L�����H��H���j���H�H��[A\]�f.���UH��AVAUATI��SH��H����H��I��H��<��L�4�L���!��L��1�H��I���Q!��M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AHH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H�����I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�#�������H�����I�EI�D$(��)����H����(��H���R&��f���UH��AWAVI��AUATI��SH��8dH�%(H�E�H�HcX��~%H�Xf�H��H��H���XH�H9�u�1�H��H��L��I�t$I��L��L�����H��t5H�H��t-H��H�U�dH+%(�*H��8[A\A]A^A_]���PL�e��R��I�>H�I��H�x�L��f�I�E@I�E@I�EI�T$I�|$ �AE0I�D$(I�t$I�EA�E0�?AE L�m�H�E��h,��H�ք�u1I�4$I�]HJ��H�H��t=H�I�EH�L�(I�D$I�E�(����H�U�L���D���H��1�I�t$I���DI�D$M�l$I�EH��tH�@H1�I�t$L�,�I�D$H��H�}��;���H�E�dH+%(t�G����H����H���v$��fD��UH��AWAVAUATSH��XH�U�dH�%(H�E�H�L�,�M���RI�]H�E�I��I��H�E�I��H�K�0�H�3H���$H�N1�I��H��I�t$I9��
H��L9�u�H�}�H�CH�7H�E�H9�H�u�����&��H�u�H��H��t'H�H�}��H�E��x��H�}�H�5������H�E�H�E��H�E��G&��H�u�H��H����H�H�}��H�E��x��H�}�H�5U���@��H�}���H�}�H��t
H��E��R�E�������f.�H�E�dH+%(��H��XL��[A\A]A^A_]�E1���H�E�H�}�H�5���H�E�H�E�����2���H�E�H�}�H�5���H�E�H�E����H�E�H��tH�H�E�H��RH�E�H9E����:���f�H�}����+���H�}��*��H�E�L��H��t-H�E�dH+%(t-�����H�U�I������H��H�����K���$������"��f.�f���UH��AVAUATI��SH��H����H��I��H��<��L�4�L�����L��1�H��I�����M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H�����I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�e���p����H�����I�EI�D$(�6$����H���:#��H��� ��f���U1�H��AWAVAUATI��SH��H��L�.dH�%(H�E�1�L��L��H�wI��H��L�����H��t4H�H��t,L�`H�E�dH+%(�H��L��[A\A]A^A_]�� ����I�<$H�I��H�xH��tH��PI�GM�gL�����H�C(H�SH�{ H�s�H�E��'��H�ք�u0H�3M�oJ��H�H��t=H�I�H�L�8H�C�O����H�U�H�����L��1�H�sI���fDH�CL�{I�H��tH�@1�H�sL�<�H�CH����!��H�E�dH+%(tk�����H���	��H���&�Y��� L�����H�E�dH+%(u��x"��I����I������ L������H�E�dH+%(u�H��������H���m���fD��UH��AWAVAUATSH��XH�U�dH�%(H�E�H�L�,�M���RI�]H�E�I��I��H�E�I��H�K �0�H�3H���$H�N 1�I��H��I�t$I9��
H��L9�u�H�}�H�CH�7H�E�H9�H�u������ ��H�u�H��H��t'H�H�}��H�E��x��H�}�H�5��������H�E�H�E��H�E�� ��H�u�H��H����H�H�}��H�E��x��H�}�H�5�������H�}���H�}�H��t
H��E��R�E�������f.�H�E�dH+%(��H��XL��[A\A]A^A_]�E1���H�E�H�}�H�51���H�E�H�E�����2���H�E�H�}�H�5	���H�E�H�E�����H�E�H��tH�H�E�H��RH�E�H9E����:���f�H�}����+���H�}��z��H�E�L��H��t-H�E�dH+%(t-�I����H�U�I������H��H���������������\��f.�f���UH��AWI��AVAUATSH��8dH�%(H�E�1�H��~H�_H�����\@�����H��M��t,I�L�m�L��L��H�E��x��H�5��L������E1��L�u����H��M����I�$L�m�L��L��H�E��xtsH�5����L�����M��A��M��t	I�L���PE��uH�H����L�cM�7M9��F���H�E�dH+%(��H��8H��[A\A]A^A_]�f�L�e�H�5%���L��H�E����M��t
I�$L��PM9�A���m���f.�H�5��L��L�u�H�E��������M��A���7���@1��[���f�H�1�H��H�wH��L������H��H���/���H��'���H�}��<��L��I��t,H�E�dH+%(t,�����I��I������H��I�����b���������#����UH��AVAUATI��SH��H����H��I��H��<��L�4�L�����L��1�H��I������M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�A H��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H���1��I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t��������H���$��I�EI�D$(�V����H���Z��H������f���U1�H��AWAVAUATI��SH��H��L�.dH�%(H�E�1�L��L��H�wI��H��L������H��t4H�H��t,L�`H�E�dH+%(��H��L��[A\A]A^A_]��(���I�<$H�I��H�xH��tH��PH�C(f�H�SH�{ H�sAG�M�gH�E��>��H�ք�u/H�3M�o J��H�H��t<H�I�H�L�8H�C�V���fDH�U�H�����L��1�H�sI���fDH�CL�{I�H��tH�@ 1�H�sL�<�H�CH�����H�E�dH+%(tj�(����H���	��H���&�
���(L���4��H�E�dH+%(u����L������I������(L�����H�E�dH+%(u�H�������H���n���f.�D��UH��AVAUATI��SH��H����H��I��H��<��L�4�L���a��L��1�H��I�����M�T$0I�t$I�D$H��t`E1�M�L$��H�H�H�H�H��t>H��1�H�6�AH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H������I�\$M�,$[A\A]A^]�L�W0H�G0M���P���@H��=t�M���X����H������I�EI�D$(�����H���"��H�����f.���U1�H��AWI��AVAUATSH��H��D�.L�GdH�%(H�E�1�L��I��H�L��L�4�M��tcI�	M��I�ҋqA9�t#H�9H��tJ�G1�I��H��I��I9�u7H��A9�u�I�H�BH��t#H�U�dH+%(�H��[A\A]A^A_]Ð����H�SH�sH�{ H�I��A��I�D$A�D$H�C(H�E�����H�ք�u.H�I�I�H��tKH�I�$I�L� H�CI�D$�i���@H�U�H���|���L��1�H�H�sL�4�I�I�H��u�H�CL�cI�$H��t
�@1�H�sL�$�H�CI��M�l$M��tL�������XL����
���L����
��H�E�dH+%(t�
����H���H������D��UH��AUI��ATSH��H��L�gM��u�I��I�T$ I�}�J�wH��H�����I�T$��IHT$����H��uɄ�t]H�[I9�tLL��L���)��I��I�|$ I�U�w�JH��H�������1���HI�LH�H��L��H��[A\A]]�E1���L���L�g�f���UH�GH��AVAUI��ATI��SH9��~H�V I�}H��J�wH��H���0������I�D$H��H9�t<H���s��I�UH�x I�ƋJH���wH�������ya1�I�~HE�ID�H��[A\A]A^]�fDH�(t9H�G H�H�x �JH���wH�������y[I�T$ 1�A\A]A^]��[L��L��A\A]A^]�=���DI�UH�{ �J�wH��H���]����yYI�T$ 1�H9��j���H�����I�}H�P I�ƋwH���JH���#����y�1�H�{IE�IE�H���)����H��1�����fD��UH��AWI��AVL�wAUI��ATM��SH��H�_H��u
�dH��H��t1I�H�{ �J�wH��H�����H�SH�K��x�I��H��H��u�M9�t#I�T$ I�?�J�wH��H���g�������`L�����I�?I��H�x �
��f�H��L��I�D$XI�T$ AD$(AD$8AD$H���I��H��H��taI9�t,H��u'H�R I�D$ �J�pH�xH�����������	@�L��H��L���E��I�E(H��I�D$([A\A]A^A_]�@I�|$ �.��L��`M�������f.�f���UH��AVAUATI��SH��H����H��I��H��<��L�4�L�����L��1�H��I���	��M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H�����I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�e���p����H�����I�EI�D$(�6����H���:��H�����f���UH��AVI��AUI��ATI��L��SH��H�� H��H�W�H�w�dH�%(H�E�H�GH�E������uLH�3M�l$J��H�H��tXH�I�$H�L� H�CH�E�dH+%(ucH��L��[A\A]A^]��H��H��H�U��	���L��1�H�sI���H�CI�$L�cI�$H��tH�@1�H�sL�$�H�CH��������UH��AVAUATI��SH��H����H��I��H��<��L�4�L���A��L��1�H��I���q��M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�AH��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H������I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�%	���0����H������I�EI�D$(�����H�����H���r��f���UH��AWAVAUI��ATI��SH��(dH�%(H�E�1�H�u7H�_H��u�,@H�H��t H�SL��L����^����t�1��fDI�]E1�H���
��H���O1�L��I�t$I�|$I��I����� ���L��H�H��H�@H��H�E��<y��I�D$(I�T$I�|$ �I�t$H�E�����H�ք��I�4$L�sJ��H�H���H�H�H�H�I�D$���H�E�dH+%(�,H��(H��[A\A]A^A_]��I�$L��M���<���I�H�K�/fDH�3H���!���H�N1�I��H��I�t$I9�����H��I9�u�H�SL��L��L�M�L�E��k]��L�M���t3I�1�H���U�������1�H���6��H���."��A�����fDL�E��w����H�U�L�����L��1�I�t$I������f�I�D$I�\$H�H��tH�@1�I�t$H��I�D$H��������H�E�dH+%(tv������H���	��I���&�"��� H������H�E�dH+%(u��A
��H�}��x���� H�����H�E�dH+%(u�L���	����H���v���H���	����U1�H��AWI��AVAUATI��SH��L�.dH�%(H�E�1�L��L��H�wI��H��L���Y��H��t4H�H��t,H��H�U�dH+%(�TH��[A\A]A^A_]�fD�P����I�?H�H��H�xH��tH��Pf�L�{@H�C@I�D$(C0I�T$I�t$I�|$ L�{�H�C�C0�?C H�E�����H�ք�u6I�4$L�kHJ��H�H��tBH�H�H�H�I�D$H�C�/����H�U�L������L��1�I�t$I���DI�D$I�\$H�H��tH�@H1�I�t$H��I�D$H��H�{�<��H�{H�sI9�t	H�����H�{����PH������H�E�dH+%(tF�����H���	��I�������PH�����H�E�dH+%(u������H���L������	��H�E�dH+%(u�H���g������������H��H������H��0�����H��(�����H�� �����H��@�����H��8�s��UH��ATA��SH�_H��u�CH�ËS H�CD9�HOC��H��u�H�ބ�u#1�A9�HN�HO�H��H��[A\]��H�_H9_tH���f��H�ދP H����H��1�H��H��[A\]��UH��ATA��SH�_H��u�CH�ËS H�CD9�HOC��H��u�H�ބ�u#1�A9�HN�HO�H��H��[A\]��H�_H9_tH������H�ދP H����H��1�H��H��[A\]��UH��AWAVAUATSH��8H�}�H���H�E�H�@H�E�H����H�E�H�@H�E�H����H�E�H�@H�E�H���PH�E�H�XH����L�kM��t|M�eM����M�t$M����M�~M��t0I��\���M��M�I�x L�E��(��H�}��(���M��u�I�~ M�~����(L������M����M���H�{ L�c�����(H�����M��t5L���T���fDI�} M�e����(L�����M��t�M���0���L�u�I�~ I�^����(L���[���H��tCH�]����DI�D$I�|$ H�E��U���(L���(���H�E�H���{���I������L�}�I� I�_�"���(L�����H��t	H�]��o���L�u�I�~ I�^����(L������H��t	H�]��.���L�}�I� I�_�����(L�����H��t	H�]����H��8[A\A]A^A_]�H��t{UH��AVAUI��ATSI�}M�����I�^8M�mH��t0@H�{I�����I�|$ H�[�V���(L���)���H��uԾXL������M��u�[A\A]A^]�f�Ðff.�UH��AWAVAUATSH��8H�}�H���H�E�H�@H�E�H����H�E�H�@H�E�H����H�E�H�@H�E�H���PH�E�H�XH����L�kM��t|M�eM����M�t$M����M�~M��t0I��\���M��M�I�x8L�E����H�}��X�*���M��u�I�~8M�~����XL������M����M���H�{8L�c�p����XH�����M��t5L���T���fDI�}8M�e�C����XL�����M��t�M���0���L�u�I�~8I�^�����XL�����H��tCH�]����DI�D$I�|$8H�E�����XL���X���H�E�H���{���I������L�}�I�8I�_����XL���%���H��t	H�]��o���L�u�I�~8I�^����XL�����H��t	H�]��.���L�}�I�8I�_�Z����XL������H��t	H�]����H��8[A\A]A^A_]�H��t{UH��AVAUI��ATSI�}M�����I�^8M�mH��t0@H�{I�����I�|$8H�[����XL���Y���H��u�I�~ �k����XL���>���M��u�[A\A]A^]�Ðff.���H�G�o
f�H�7H�G H�G(H�B�GH�GH�G0H�GHH�BO8�GPÐff.���UH��AVI��AUATSL�o@H�_8I9�t:�L�cM��tL������XL�����H�;H��tH��PH��I9�u�I�^8H��tI�vHH��H)��S���I�~[A\A]A^]���f���UH��AWI���AVI��AUL���ATL��SH��H��dH�%(H�E�1��,��H��L��L��������Uf��
��L��)� ���fo��)�0����A��d���H��H�� ���E1�1�A�����H��L��HDž���HDž���fo����HDž���jjjH��H�D$$j�Q��H��@��uLE1�E1������1�H��L���q���H�����H��t����H�TP�H��0���f�HDž8������)� ���I�L�����1ɺH�5��L��HDž���H�������H��L���H�������H���������H�H������f�x ��I�1�H����H��0���H=���tH+� ���H�P�H�pHH�L��@����
L���!���L��L��HDž����‰E����1ɺH��H�5��HDž�������L��H�ھ��H��������H����������H���������1�L��H���H������M�>�@��uhA����L��L��A�H�
��%���L���
�H���������L����H�E�dH+%(��H�e�[A\A]A^A_]��1ɺH�5��L��HDž������H��L���L�����H������@���M�>�P�����x�s���� H��L��HDž���f��������_���E1�E1������1�L��L������H�����H��t����H�TP�H�����f�H��0���HDž8������)� ����������M�����H���B����H���<B����H���CB����H���EB����H����A����H����A���@��UH��ATI��H��SH����~w�B�H�TAH���H��H9�tf�8;u�H)���H��H�H9���A��H�H���S���A�D$P��u
H��[A\]�f�H�3�	H���H�����H��[A\]�1����I����A�����UH��AWAVI��H��AUATSH��H��HdH�%(H�E�1��^��H��I���S���H�߃���E�E1����A��I�7H�}�A�����;H�E�A��1�E1����H�U�M�~E�I�FH�U�H�E�M����H���
fDH�U�I��I� �JH���wH���Z����I�G��IIGII�H��u�H9]���H�S H�}��J�wH��H��������_L�{0H�C8M��H��u�f�I��H��H��tH�HH�PD;` ~�H��H��u�M9���E;f ��I�F8M�f0L��H��u�:f.�H��H��H��tH�HH�PD9h }�H��H��u�I9�t
D9k ��I�F(�XH�E���D�h I��H�@0�H�@I�G@I�GHI�GPI9���D;k ��I9^@tH�����D;h �2H�x�q�H��L��L��L���y��I�FPH�}��{���H�C(H�U�dH+%(�>H��H[A\A]A^A_]�DH�]�@I�F�XH�]�H�E����H��H�E�H�}�H�E�L�{0H�C ���C0H�u�H�S H�C8H�}�L�{@L�{HH�CP�BI��H����H9U��H���H�R H�C L�E��J�pH�xH�����L�E�������fDH�C(�XH�E��.�D�` I��H�@0�H�@I�@@I�@HI�@PM9���E;f ��L9s@t%L��L�E���L�E�D;` �jH�x���L��L��L��L�E���H�CPL�u����f�H�{8H�E����H�{ ����H�߾X��H�]�����@�H�M�L��H�����I�F0���f���L9sHt`L��L�E��8���L�E�D;` ��I�~t?I�Ƹ�$f�H�{P��L�sHE9f ��1�M9��%���������1�E;f @������D��I9^HtHH�����D;h ��H�{t/H�ø��I�~PtqI�^HD9k }g1�L9��5������-���1�D;k @���#���DD��H�{(L�E��8�L�E�I��H��uJ1�L�E����H�}��X�c��"���fDD��I�~(�l�H��H��u �XL���7�����H��I�������H��H�����Y���I�����H���G��������H���E<���@��UH��AWAVAUATSH��H��H���� dH�%(H�E�1����1�1�H��H��P���H�����1�H��H�]��/�H��H���H�u�L�m�H�u�H��P���H�P8H�@@H��pH��h���H��8���H��@���H9�u(��H��h���H��h���H9�8�����H��h���H�@H��`���H��t�H��P����������H��`������H��X���E1�H����DH�}�H�E��w�H��`���L���h���H�Nj@��r�!����p�B��q�!H�w �Gd�W`�N9�O�L��H�E����H�}�H�E�H�E��~�H�}��w���H��@���H��H������H�}�H�E��_���H�}��4���H���g���H�Ǿ���H��x���H�E�1�H��p���H�E��H���fDD9���H�}��E�A�܉�H��A�A�H���p���H��x���H�u��P��H�u�XL���ZD��H�E�D)�L�u����H�E�H�}�L��H�E��HH�}���H�E�;X�r���H�}�H��tH��PH�}��Z�I��L9�X����Q���H��P����]��������s��H�w0H�}��j����DH�}��G��t���H�_L�u�L�dG
D�L��L��H�E�f�E��1�H�}�L���H�}�H����I9�u��<���fDH�w �G0�W,�N9�O����H�H��P����P����fDH�w �G,�W(�N9�O������H��P���H�E�H�H�U�HP�H�����H��P���H�HP�H���jtdH�}�H��t=H�Hx��ou/H�E�dH+%(uFH�H�@H�e�[A\A]A^A_]��f�H�E�dH+%(uH�e�[A\A]A^A_]�H��P��e���H���7����H���=8����H���N8����H���8����H���X8����H���7����H���7�����UH��AWAVAUATSH��dH�%(H�E�H���hu/H�E�dH+%(��H�ĸ[A\A]A^A_]�f.�H��I���E���H�x(H��P���t�H������H�3A�A�H��H�
����H��8���L��x���L��@�����1ɺ
L��H�5f�HDžx����G����
L���L��`�����L��HDž�����E���H������H��H��H������ ����1�1�H��I���W�H������L��L������H��H��X�����fo��L�����H��X���L��)�������H��X�������1�L���g�L��L����L���d�H��X���L�������CPH��`����
�p�sP��E����`H�1ɺL��H�5Y�HDž���H��h�������L��L���H��h������H������2�L�31ɺH�5��L��HDž������L���L��H��H������H��������H����H�3A�A�H�
�����H��H��0�����H������L������HDž����H��H��@����"�L��HDž������H��X����C�1Ƀ���H��@����H�57���H��X�����1ɺ����H�5�L�����H�L��H��(�����H�H������H��H��I�ŋQH����1ɺH�5��L��HDž�����L��L���H��(���L��h����v���H�������H��������L�+1ɺH�5��L��HDž����:�L���L��H��H����#���H������W�L�+1ɺH�5T�L��HDž������L���L��H��@�������H�������L�+1ɺ
H�5�L��HDž�����L��L���L�����H��������L��L��L�3�/�L��`���������
L�����H��h���L��L��`����‰E�L������HDž�������1ɺL��H�5��HDž������L���L��H��h�������H�������4�H�������(�L����L��L��L�3������H��`����
�+�H��`���H��h���HDž�����‰E��8�1ɺL��H�5�HDž�����w�L���L��H��h����`�H��������H��������L����H�3���L��A�A�H�
����L����H��`����
L�3����H��`���L��HDž����‰E��}�H��h���1ɺH�5��HDž������L���L��H��h�����H���������H��������f�L��L��)����fo��)������H��h���1�L��L�3�n1ɺH�5��L��HDž����/�L���L��H��h�����H������L�H�������@�H�3���L��A�A�H�
`��}�L���e�L���}��H��P���L�hL�pM9�t(f�I�U L��H����L���9�I��I9�u�H���������H��������H��0������H��X����!�I�L�����HDž����H�x�L��0�I�H�x�L��ouH��PH������H��tH�Hx��ouH��PH�������=�H��x����1�H��8����u����H��x���L��B�Ɖ�h����f�H��x���HcU�D��h���HcHH��H�LHuN1�f�4D�@�W����H��@����H�5���x��c���H�5��L���a��v���@H��`���H�H��D��@���H��h�������D��@���H��h���H��H��x����u�������H���4/����H���@/����H���/����H���0/����H����/����H����/����H���/����H���0/����H���/����H���$/����H����/����H����/����H����/����H����/����H����/����H���0����H���0����H���0��ff.���UH��AWAVAUATSH��H��HH�}�dH�%(H�E�1��0�H�K H��H��H�M�H�E�H9���L�e�H�E�L�h@H��0H�E�L9�tzI�]@M�u0I9�tYH�E�L�x L�����L��L���m��A�u L������s L�����H�}�L���Z���L���2�H���
�H��I9�u�L����I��H9E�u�H�}��8�H�E�H9E��Z���H�E�dH+%(uH��H[A\A]A^A_]������H���/��f.����H�?H��tH�Hx��ouH��`�f.�D��UH��ATSH��H�dH�%(H�E�1�H�H�]�H��t_H�I��H�x�H��}�H�HX��kt_I�<$H��t6H�Hx��ou(H�E�dH+%(udH�H�@H��[A\]���H�E�dH+%(u<H��[A\]��H�H��P�H�}�����L������H�E�dH+%(t������H����H����f.�D��UH��AUI��ATSH��H��L�gM��u�I��I�T$ I�}�J�wH��H���9�I�T$��H��IOD$��H��uɄ�t]H�[I9�tLL��L���i�I��I�|$ I�U�w�JH��H�������1���HN�LO�H��L��H��[A\A]]�E1���L���L�g�f���UH��AWAVAUATI��SH��H������H��tk�E�I��M�t$H��tg�(���H�H�H��I��H�P �t���}�L��L��L�����I�D$(�H��L��@��[A\A]A^A_]�f�I��1���f�L9�t�H�R H�;�J�wH��H������������E��j������UH��AUI��ATSH��H��L�gM��u�I��I�T$ I�}�J�wH��H����I�T$��IHT$����H��uɄ�t]H�[I9�tLL��L������I��I�|$ I�U�w�JH��H���J���1���HI�LH�H��L��H��[A\A]]�E1���L���L�g�f���UH�GH��AVAUI��ATI��SH9��~H�V I�}H��J�wH��H���������I�D$H��H9�t<H�����I�UH�x I�ƋJH���wH������ya1�I�~HE�ID�H��[A\A]A^]�fDH�(t9H�G H�H�x �JH���wH���K���y[I�T$ 1�A\A]A^]��[L��L��A\A]A^]�=���DI�UH�{ �J�wH��H������yYI�T$ 1�H9��j���H���!�I�}H�P I�ƋwH���JH�������y�1�H�{IE�IE�H���)����H��1�����fD��U1ɺ H�5�H��SH��H��H���H��H�]��Ðff.����H��0�S���f�UH��SH��H��H�@����{8u5H�{H��tH�s(H)����H�����H��H�]��P��f��fD�C8H�{0�C�뼐U1ɺ H�5��H��AWAVH�����AUATSH��dH�%(H�E�1�HDž������H�����1ɺH�5-�HDž������H����1ɺH�5��HDž����H����1ɺH�5��HDž���y�H���1ɺH�5o�HDž��T�H������1ɺH�5سHDž�����/�H�����1ɺH�5l�HDž����
��{�	����L���L�����L�� ���H��(���L��@���L��1ɺ L��HDž�����1ɺL��H�5�HDž �����1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E����H�����H��(����z����`��H������H�H��H���B��H�� �������H���������H��������H���������H������H�������H�������H��������H������v��H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=y�	L������������L���H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž�����1ɺL��H�5��HDž���HDž����z�1ɺ
L��H�����H�5��HDž ���H��@����K�1ɺH��H�� ���H�5`�HDž(���H��H�����M��1�H��(���H�����L��0���H�����H�����H��P���H�a�Dž8���H��0����[��H��������H������c����I��H������H�H��H������'��H��(������H�� ������H��������H��������H�����L��H�Ɨ	����L�������]���� ��9Wt1���UH��H���C��]�����ff.��H9�t{UH��AWAVI��AUATI��SH��L�~H�H�?I�D$M��I)�H)�L9���I�L$H��H)�L9�r;I�� ��L��H�����M,$M�l$H��[A\A]A^A_]�fD��H�� ��H���f��I�L$I�<$M�~I�H��H)�H�I�L9�t�I)�1��o�oLLH�� L9�u�뇐H������L9���L�����1�I��I9�t"�oA�o\A\H�� L9�u�I�<$H��t
I�t$H)�����M�M�4$M�l$����f�u�o#'�okoI����fD�:����o37�o{�%���� ��UH��AWAVAUI��ATI��SH��H�_H�OH9�t4��oH�� H�B�C�[�H�C�H�_H��[A\A]A^A_]�@L�?H��H��������L)�H��H��H9��;L9���H�<H9���H���I�D$�Ao,$E1�E1��H�B1��jL���o
H�� H�� H��oR�P�H9�u�L)�I�\ M��tL)�L��H�����M�eI�]M�uH��[A\A]A^A_]�@H��rrH��������H9�HF�I��I��L��H�u�H�U����H�u�H�U��Ao$$I�MI��I�t$H�I��bH�r�L9��>���H�X �^����I�������H��������H9�HG�H��I���H�=s����ff.����W���fD��UH�5,�1ɺH��ATSL�e�H��L��H��dH�%(H�E�1�H�E��M��H�5F�	H��tIL�j����L��H���:������!��H�}��Y��H�E�dH+%(u4H��H��[A\]�fD�����H�=�	H�0���H�5ؒ	�������H��0�3�����U1ɺ H�5��H��SH��H��H����H��H�]��Ðff.����UH�<	H�HpfHn�H��ATSH��H�H�fHn�H��0H�G0fl�H�G@G �(uH�5K�	H��t>H�{@H�c������H�{8H��tH��PH��}	H��H�[A\]�i��f��Q�	��t%H�N�	H�=�	H�0���H�5�	�fDL�%!�	L���a����t��x���L��H��	�9��벐fD��UH��SH��H�����H��H�]���~��ff.�U�
H��AWI��AVL����AUL��0���ATSH��H���7dH�%(H�E�1�H�E�H��H������~���s�
L��E��j���s�
L����t����S��HcM�Hc�t�����$���H�L�DM�$D���o��H��E��u7I�?I�����H�E�dH+%(��H��[A\A]A^A_]��1�H�
:��f�f�TCH��H��u�Hc�$���H�KH�H��uXH��,f�8H�HHc�t���L�4H��uxJ�1�,f�0H�HHcE�L�,H��u;J�)�)1�f�D�cf�H�9���H��L��H������n��H�����H���f�H�����H��L���N��H���f�H��L��L���2��H���r������DUH��AWAVAUATSH��dH�%(H�E�1���	��tB�=S�	H��	��H�E�dH+%(��H�e�H��[A\A]A^A_]�f�H���	H�������t�H��x���1ɺ)HDžx���H�5�����H�E��q�	���1�=�	L�-c�	�mI�EL�}�1ɺ<H�5g�L��L�m�H�E�H�E�L�e�H�E����H�U��L�����H��H�E�E1�AUH��x���E1�1�j1�L��Pjj����H��0L�����H�}��s��H�}���������H��x����H�H��I�����H�}��9��H��x����-��H��L�%s�	�~���=Ϗ	H�`�	�|���f.��;��H�8I������=��	tI�>����L���f.����	�
�	���JL�e�L�}�L��L��H�}�1ɺ!H�E�H�E��H��H�E�1�L��#H�53�H�E�L�e�H�E����1�L���<H�5͉H�E����H�E�L�M�1�PH�M�A��jL��jj�H��H�� L�����H�}����H�}����H�}�����H�}��X�����L�-1�	L���A���������1�H�}�L�e��%H�E�H�5��L�u��b���L�}�H�E��L��f�1�L��H��5)E�H�5��H�E�L�e�H�E����H�U�L������1�L���2H�5��H�E�����H�U�H�}���z��H��H�E�E1�AVH�u�E1�1�j1�L��Pjj�3��H��0L���g��H�}�����H�}�����H�}��<����"��H�U��H�H��I�����H�}����H�}����H�}����L��L�%�	�����g����L�-��	L�e�L��L�}�����L����������L��1ɺ!L��L��`���H�E������H�E�����H�U�E1�E1�H��L�����L���u��H�}��\����B��H�U��H�H��H��h����#��H�}����H��h���L��H���	���L��`�����������H�8I������=Q�	tI�>����m���f.��1�	���	����L�e�L�}�L�{�L�U�L��1ɺ!L��L��P���L��X���H�E�H�E�����H�E�1�L��H�5ӥH�E�H�E����1�L���5H�5�H�E����H�E�L�M�1�PH�M�A�
�H��`���H�}�jjjH��h������H��h���H�� ���H�}��s��H�}��j��H�}��a��H��P���1�H��X����!H�E����H�U�1�L��H�5?�H�E�H�U������1�L���2H�5P�H�E����L�M�H�M�1�H��`���A��L��h���PL��jjj���H�� L���=��H�}����H�}����H�}����H�}��	������H�=Ո	L�e�����L�}�L������6���L��1ɺ!L��L��`���H�E�����H�E����H�U�E1�E1�H��L������L�����H�}������i���H�U��H�H��H��h����J��H�}�����H��h���H�=�	H��	�'��L��`�������f����I���n��f.�UH��AWAVAUATSH��dH�%(H�E�1��^�	��tB�=Ӈ	L�5T�	�H�E�dH+%(�H�e�L��[A\A]A^A_]�f�H��	H�������t�1�L�u�L�m��H�5o�H��p���HDžp�������L�e�HDžx������f�1�H�}�H��5)E�H�5B�H�E�H�E�H�E��a��H�U�L�������1ɺ/L��H�5?�H�E��2��H�U�H�}�����1�L��8H�5?�H�E�L��x������H�U�H�}�����H��H�E�E1�AVH��p���E1�1�j1�L��Pjj�?���H��0L���s��H�}�����H�}�����H�}�����H��x����<����"���H��p����H�H��I�����H�}����H�}����H�}����H��p����}��H��L�%c�	�����=υ	L�5P�	�����f.����H�8I�������=��	tI�?�_������f.����	�Z�	���H�CL�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E��y��H�E�1�L��H�E�H�E�H���H���P��1�L��5H�5H�E��2��L�U�L�M�1�ARH�M�A�H��L��H����jjj�r��H�� H�����H�}��-��H�}��$��H�}����H��p���1ɺH�5
�HDžp������H�	�1�H��x���H�ƺHDžx������H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E��I��H�U�1�L��H�5��H�E�H�U���#��1�L��/H�5~H�E����H�U�L�M�H��RL��H���A�1�jH�M��ARj�F��H�� H�����H�}����H�}����H�}�����H��x�������H��p�������H��X���1�H��P����!H�E��u��H�U�1�L��H�5��H�E�H�U���O��1�L��8H�5n}H�E��1��L�M�H�M�1�L��H���A��H��ARjjj�u��H�� H�����H�}��0��H�}��'��H�}����H��h����������DH�I�	L�m�H��L�e��a���H�
*|H��X��������1ɺ!L��H�E�H�5|�}���H�E��k��H�U�E1�E1�H��L���A��L���	��H�}�������ֹ��H�U��H�H��H��P������H�}��N��H��P���H��H���	����?����޽��ff.�UH��AWAVAUATSH��HdH�%(H�E�1���	��tB�=T�	H��	�vH�E�dH+%(��H�e�H��[A\A]A^A_]�f�H���	H��������t�1ɺL�m�HDž���H�5rH������4���HDž���L��������f�1ɺ3H�H�����)E�H�5�q)E�)E�H��P���H�E�HDž�������H������L���]��1�H�� ����1H�5�qHDž ������H�� ���H�}���#��1�H��(����1H�5�qHDž(����^��H��(���H�}������1�H��0����:H�5�qHDž0����$��H��0���H�}�����1�H��8����=H�5�qHDž8�������H��8���H�}���u��H��@���1ɺ:H��H�5�qHDž@������H��@���H�}���8��H��H���1ɺ=H��H�5�qHDžH����p��H��H���H�}�����H��P���1�1�H��E1�E1�L��AUH�����jPjj讹��H��0L�����H�}��Y��H�}��P��H�}��G��H�}��>��H�}��5��H�}��,��H�}��#��H�����臿����m���H������H�H��I���O��H��H������H��@����׿��H��8����˿��H��0���迿��H��(���賿��H�� ���觿��H�����蛿��H�����菿��H��L�%�}	����=�}	H�r}	�����@裻��H�8I�������=�}	tI�?�w����d���f���}	�z}	����H��@���H����H��H���H����H�GwH�����H�=h}	��H�=b}	��H�=|}	L�5�p��H�=�}	�aH��8���H�����1ɺ!H��H�����L���HDž�HDž8����@��H��8���1�H�����#H�5�pHDž@���H�E����H����1ɺ3H�5�mHDžH�������H�M�1ҾH�����L��@���A�L��QH��H���jjj�&��H�� L���j���H��H����޽��H��@����ҽ��H��8����ƽ��H������1ɺ
H�5��HDž�����a��H�����1ɺH�5��HDž����<��H�����1��~����D�-��I��H�5j�������L��L������E��E�fD�m�HDž�������H�u�1�L�����H��L�ߺL������HDž������H�����1��~����I�Һ+fD�m�H�5,nL������L������E��E�HDž����`��H�� ���1�H�5 nHDž ���I�Ӻ(L��L�������.��H��(���1�L��I�к*HDž(���L��P���L��L���������H��0���1�H�5nHDž0���I�Ѻ(L��L����������H�����1�H�����HDž8����!���H��8���1��~�(����~����H����H�5ӇHDž@����0���H��p����� ���)�`���)�P����C��H����1ɺ1H�5^kHDžH������AVL��@���1�jH��H���E1�L������j�b��H�� L��覼��H��H�������H��@�������H��8�������H��0������H��(������H�� ����޺��H������Һ��H������ƺ��H�����躺��H�����论��H������袺��H������1ɺH�5��HDž����=��H������1ɺH�5��HDž ������H������1��~� ����+H�5�kfD�m������E�E�HDž(�������H������1ɺ(H�5�kHDž0������H�����1�H�����HDž8����!���H��8���H��1��~�(���H��H����HDž@���H��`�����0���)�P����>���H����1ɺ1H�5�iHDžH�������AVL��@���1�jA��L�����H��H���j�Z��H�� L��螺��H��H�������H��@�������H��8������H��0������H��(������H�� ����ָ��H������ʸ��H������1ɺ
H�5��HDž����e���H������1ɺH�5��HDž����@���H������1��~�����	H�5��fD�m������E�E�HDž������H�}j1�H������H�ƺ*HDž ����Կ��H������1��~� ����+H�5WifD�m������E�E�HDž(���萿��H������1ɺ(H�5�iHDž0����k���H�����1�H�����HDž8����!�F���H��8���1��~�(���H����H�5�HDž@����0���H��`����)�P������H����1ɺ:H�5�gHDžH����ؾ��AVL��@���1�jH��H���E1�L������j����H�� L���`���H��H����Զ��H��@����ȶ��H��8���輶��H��0���谶��H��(���褶��H�� ���蘶��H�����茶��H�����耶��H������t���H������1ɺ
H�5b�HDž�������H������1ɺH�5T�HDž������H������1��~�����	H�54�fD�m������E�E�HDž���覽��H�'h1�H������H�ƺ*HDž ����~���H������1��~� ����+H�5gfD�m������E�E�HDž(����:���H������1ɺ(H�5UgHDž0�������H�����1�H�����HDž8����!��H��8���1��~�(���H�����H�5$�HDž@����0���H��`���)�P���觼��H����1ɺ=H�5reHDžH���肼��AVL��@���1�jH��H���E1�L������j�ƽ��H�� L���
���H��H����~���H��@����r���H��8����f���H��0����Z���H��(����N���H�� ����B���H������6���H������*���H���������H������1ɺH�5
�HDž���蹻��H������1ɺH�5��HDž���蔻��H������1��~�����	H�5�fD�m������E�E�HDž����P���H�f1�H������H�ƺ*HDž ����(���H������1��~� ����+H�5�dfD�m������E�E�HDž(������H������1ɺ(H�5�dHDž0���迺��H�����1�H�����HDž8����!蚺��H��8���1��~�(���H����H�5�~HDž@����0���H��`����)�P����Q���H����1ɺ:H�5\cHDžH����,���AVL��@���1�jH��H���E1�L������j�p���H�� L��贳��H��H����(���H��@�������H��8�������H��0�������H��(������H�� ������H��������H������Ա��H������ȱ��H������1ɺH�5�}HDž����c���H������1ɺH�5�~HDž����>���H������1��~�����	H�5�}fD�m������E�E�HDž������H��c1�H������H�ƺ*HDž ����Ҹ��H������1��~� ����+H�5UbfD�m������E�E�HDž(���莸��H������1ɺ(H�5�bHDž0����i���H�����1�H�����HDž8����!�D���H��8���1��~�(���H�����H�5x|HDž@����0���H��`���)�P������H����1ɺ=H�5FaHDžH����ַ��AVL��@���1�jH��H���E1�L������	j����H�� L���^���H��H����ү��H��@����Ư��H��8���躯��H��0���讯��H��(���袯��H�� ���薯��H�����芯��H������~���H������r���H����֮����L�%�m	L�����H��@���H����H��H���H����H�
ngH���������H����1ɺ!H�5JgHDž@���躶���HDžH���襲��E1�E1��L����H�H��@���L���q���L���9���H��H������������H��@����H�H��I�����H��@����y���L��L�-�l	�ʭ���e�DH�I`�H�=-m	�ت����L��H�=�l	輪���X��H��_�H�=�l	蘪����H�Y_�H�=]l	�x������莨��ff.���H�G0H9Gt"H�WHH;G8t�@��@H�B�H��@��f�1�Ðff.����H�GPÐfD��H�7H�WH�OH�G����UH��SH��H�_H��tH��蒥��H��H�]�������H�]���f.���������%���Y��XH�f(�fT�f.�v3�H,�f���-A�fU��H*�f(����fT��\�fV�f(��^��f�����H��t���fD1ɺH�5'{H���B���f���UH��AWAVL�u�L�}�AUI��ATI��L��SH��H��8H�U�dH�%(H�E�1�H�E��ǩ��L��H�E�跩���{���L��H���r���C�P������I�<$L��L���讶��H�}��G��t
I�$��iu6�ѫ��H�}��ȫ��H�E�dH+%(�5H�e�[A\A]A^A_]�fDH�U�L�����H���L���H�}��fD�1�H�5zL���*����C�P�����X��������f��D����%��*��^M��Y��Xq�f(�fT�f.�w[�^�H��H�}�1�H�E�A�.A�1�j�jj�?���H�E�H�� H������H�}�H�E�������@�H,�f���-�fU��H*�f(����fT��\�fV�f(��m����+��������f���UH��AWAVAUI��ATSH��dH�%(H�E�1�H�~����(
H�~���I���
H��H��I��蹠����tL��譠������	H����H�3A�A�H��H�
J	���H��`����é��L���˦���L���������k����L���������{�����H��L������L��Hi�ų����L��L��h�����H�� ��)ȉ�I�$i�)�I�D$f������I�L$H=���HD�H�H��H��?H�I�T$H�H�����HD�H�����H�H��H��?H�H�H�����蝟��H�����������L��H��H��x����=���H�� ���L��认��H��(���L��D������H����������L��A��D������Hi���QH��%�������ȟ����L��A��D������Hi���QH��%������蠟����L��A��D������Hi���QH��%�������h�����L��A��D������Hi���QH��%�������@�����L��A��D������Hi���QH��%�������������5e	�
A��L��@���L��Hi���QH��%�������F��d	����H	�E��ω���������������I������
I�}M�E茧��H�;L���H�rG	�5���H������HDž����H��H���������L��������dL���ܝ�����SI�$f�I�D$E1��H*�������H=���tH)�H�P�L�hLH�L���W�����I�T$f�f��I��E1��H*��H*��Y>�I�D$�X�����������fI~�H=���tH)�H�P�L�hLH�L���%�����f�f��I���H*��Y�I�D$�X�����������H=���tI+D$��H��f���H*�I�D$f�H=���tI+$�AH��f��H*��'���L�+1ɺ�YU�L�����H�5MtHDž���L��������蜭��L���L��H�E	腰��H�����蹥���5Y�L�+fIn�����I��Y��������XՅf(�fT�f.�v3�H,�f���%΅fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�j���H�����H�� H�������L�����H��D	���L��L��H�����葯��H������Ť���������Y������X������%M�L�+f(�fT�f.�v3�H,�f���%�fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj����H�����H�� H�������L��H��C	���L��H�����譮��H���������������Y������X�����=i�L�+f(�fT�f.�v3�H,�f���%��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj蛜��H�����H�� H���}���1ɺL��H�����H�5$|HDž���迪��L��L���L��謭��H��������H������Ԣ����z���H�3A�H��A�H�
Cz���H��p���������������3
H������H����������H��L�+A�.1�A��1�L��HDž���f�jjj觛��H�����H�� H���]�H�����H�mA	L��L��H�¾��H�������ˬ��H��������H�8A	H�;H������H�¾��H��x���蚬��L�-�A	H�3���A�A�L��L��褡��L�������������_	H������H����������H�L��H�������Z�����f���Ӂ�5��*��Y
ǁf(��\��Y������
?��X��f(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�$���H�����H�� H�����H������H������L��H������N���H�����肠��H�;���H������H��x����'���H�3A�L��L��A�����8���L��萘����L���Ж�����#���L��迖��������fDH�E�dH+%(�dH�e�L��[A\A]A^A_]�w����H�������H��H�������՚��L������1�L�����L��轞��H������fInľL��fHn�fl�H��8���L�����H=���HD�H�������y���fIn�������H��x��������H������营��L�+L�����1ɺH�5~mL��HDž����զ��L���L��H�S>	辩��H�������H������1�L�+��H�0�
L��聞��L��L��HDž����‰E�����L���L��H��>	�_���H�����蓞��H������1�L�+蒝��H�p�
L���!���L��L��HDž����‰E�趞��L���L��H�>	���H������3���H�������L�+�/���H�0�
L��违��L��L��HDž����‰E��T���L���L��H��=	蝨��H������ѝ��H�������L�+�͜��H�p�
L���\���L��L��HDž����‰E���L���L��H�G=	�:���H������n��������H�3A�H��A�H�
c=	���H��p����*���L��������f�L���*�������跓���}���6�Y�����L��������莓����H������H��������HD�����H�������!��H��L�+A�.1�A��1�L��HDž���jjj���������H�����H�� H���L�H�����L�����H��;	L��L��H�¾��H����������H������5���H�n;	H�;H������H�¾��H��x����Ц��L�-<	H�3���A�A�L��L���ڛ��L���2���L���z�������L���i�����tHDž������������<H������H�����������{�-1|����%)|f(��\�����L�;�������Y��X�{f(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�C���H�����H�� H���v�H������L��L��H������q���H�����襚��H�;���H������H��x����J���H�3A�L��L��A�����[���L��賒��H������臐��H�������K���H��p���H��茒���H������H��h����S���H��`����g���H�E�dH+%(�kH�e�[A\A]A^A_]�DH������1ɺH�5xh薡���������z���1�H�5?q�f�fA�DPH��H��	u�HcE�I�xH�H���f1�A�HfA�|���DH������1ɺH�5�g�����������������H������H���������H�H��A�.1�A��1�L��H��X����RyHDž���jjj�L���H�����H�� H�����H������H��X���L��H������v���H�����誘��H�;���H������H��x����O���H�3A�L��L��A�����`���L��踐�����H������1ɺH�5�f��������H������1ɺH�5�f�������L��L��p���������H�������T���L��p���������H�������e���H��f��H*���fDH��f���H*��z�fDH������1ɺH�5@f�^����i����D�����H��������P���H���i���H���k�������H�������H�������H���0���H������H������H���l���H������H������H������H���)���H�������H���<���H���<���H���0���H������H������H������H������H������H���s���H���u���H���[���H���]���H���C���H���E���H���+���H���-���H������H����f���UH��AWAVI��AUI��ATSH��H��8dH�%(H�E�1�H����M��M����L�u�I��H�E�L���7���L��L��L��H���&�H�}�L�e��G��tDD�xD�����H�E�I��E����L�e�H�;���H��4	L������H�}��G���H�}��>����H@L�e�1ɺH�E�H�5�lL���֜��L��L��H��H�5�4	��H�}�L�u���1ɺL��H�E�H�5�l薜��1ɺL��H�5gcH�E��x���L��L��L��H���'�H�}�螔��H�}�蕔��H�E�dH+%(��H��8[A\A]A^A_]�1�H�
ip�f�fA�TDH��H��u�H�u�I�L$HcFH�H��u%H��)1�f�E�|$f�H���f�H��H��H�U��P���H�U�H����袎����H������H���1���H���J���H����f���UH��AUATSH��H��L�gH�GM��tL������L���f���H����kt]� ���H�3A�A�H�
�3	���H��I���:���L�kL�cM��t]L��腋��H��L��[A\A]]���fD�Ë��H�3A�A�H�
3	���H��I���ݒ��L�kL�cM��u�H��[A\A]]���H���y���H���m��ff.����UH��SH��H�_H�GH��t"H���ڊ��H��H�]����X����H�]���f.���UH��AVAUATSH��H�� L�/L�gdH�%(H�E�1�A��ktjL�wL��H�]����H��H�L���QH��赗��H�پ��L��H�s1	讜��H�}����H�E�dH+%(��H�� [A\A]A^]�DL��蘛��H�}�E1�1�H�0�;H�E��j���H�E�L��H�E��j�����tEL���݉��L�eȃ�tT��toH�;L���H��0	����H�}��O����e���f.�L�e�H�uȹH��hL�����f�H�uȹH��hL���؛���fDH�uȹH��hL��踛���t���莋����H������H����fD��UH��AWAVAUATI��SH��H���L�oL��dH�%(H�E�1�L��������t(H�E�dH+%(�H���[A\A]A^A_]�L��0���HDž0���L���΍��L��L���S���H������H�L��H��(����)���L��@���H�ƺ
L��貏��D�h�E�D���c���H��8���H��E��� L��8���H��(������H�>/	L���~���H��8���貏��L���j�����t.L���^���1Ƀ��k�H�5ufL���?����D1ɺH�5QfL���"���H�;L�����H��.	����L���#���������	w
H���4��
L��L�;�L���L��L��HDž8����‰E��a���L���L��H�W.	誙��H��8����ގ��H���jtbHDž8���L���O���L���W�����tcL���K�������L��蛆������H�;L���H��-	�<���H��8����p���H�����H��0����\��������L���H�����u�1ɺH�5�\L������@�H�5�eL���ԕ������1ɺ
H�5�eL��貕���J���DH��8����
H��eL��蝘���5����H�xHcE�H�H��u1��pxD�if�D����L��H�����H�� ����ʄ��H�����H�� ���H���������H���f���H���f���H���}���H����f���H�>t&UH��SH��H��H�?���H��H�]��H���2���f�Ðff.���UH��SH��H��H�?討��H��H�]��H���x������H��H��H�pH��t5UH��SH��H��H�P`H��tH�Ơ�l���H�H�SH�]����ÐfD��H��H��H�pH��t5UH��SH��H��H�P`H��tH�Ơ�̕��H�H�SH�]����ÐfD��UH��ATSH�� H�wdH�%(H�E�1�H��tyL�� H��pH��L������L�����H�E�1�H�E�H�CH��tH�S`H��tH���H�}�舎��H��H�E�dH+%(u.H�� L��[A\]�&���fDH�E�dH+%(u	H�� [A\]������f���H�~01�f��u��oF��f.���UH��AWI��AVI��H��I��AUATSH��H��覍��I9�snI�p�I���4f��J��H��H��L����������s��I��M9�s+L��H���C����P���(��q���pt^��qu҃xd~�H��[A\A]A^A_]�@��u�H�x�	u�H���	�	H�Xb�Ċ����u�H��[A\A]A^A_]Ð�x,�o���H��[A\A]A^A_]��H�@0�x�K���H��[A\A]A^A_]��x0�c����*����H�I�vH��R����ff.���UH��ATL�� SH��L��H�� dH�%(H�E�1�耓��H�}�E1�1�H�0�;H�E��R���H�E�L��H�E��R�����tUL���Ł��L�e؃�����tcH�;L���H��(	���H�}��3���H�E�dH+%(uqH�� [A\]�L�e�H�uعH��`L���̓���f.�H�uعH��`L��訓�����H�uعH��`L��舓���`����^�����H�����f���UH��AWAVAUATSH��L��0L�� H�����,���dH�%(H�E�1��=���L��L���ҋ����t.H�E�dH+%(��H���[A\A]A^A_]�f�L�����L��H���������L��I���N~��L� ������L�牅(����‘��L��H��������L��I���~��L�牅���节��H�����H����������H�9H��w;r��H9�tH��H�����`�������M9�tnH�L��@���L���
L��H���������D�p�E�D�����H��8���H��E����H�����H��8������H��&	�ё��H��8�������D�� ��������A9�tfL��8���HDž8���L���i���1�E���>A�����H�5�]L���p���H�;L��H�&	�Y���H��8���荆����(��������9�tx������	��H�L��@����
L��8���L��H�� ����w���L��L��HDž8����‰E�茆��H�� ���L��H��%	����ѐ��H��8�������H���j����,��������H�E�dH+%(�iH���L��L��[A\A]A^A_]�ف��f�H�������+���H�y{�4��%�����H�5k\L���<��������H�xHcE�H�H�����pxD�q1�f�L����@L��L��8����ѐ��L�(����#}��L��A��踐��L�牅 ����
}��L��HDž8��������聂���� �����(���9�������H��8���������FA9����FH��E������t�H�zUL���e���H��8���H���H��\L���G���H��8����@��u1ɺH�5�RL������H�;L��H��#	���H��8����0����6�����t���f�H��8���������GH��A9��H�����t��fD�H�5�[L��褋���/����H�5�[1ɺ	L��肋�������H��8���A9����V���8����I���@L��H�����H�������z��H�����H�����H�������~����H��������H��������H��������H������fD��UH��ATSH��H�PH��tH�H�CP�PL�cxH�CxM��tL���B{���L����z��L�cp1�ƃ�f���H�CpM��tL���{��[L��A\]�z��[A\]Ðf���UH��AWAVA��AUA��ATSH��H��L�gxdH�%(H�E�1�H�GxM��tL���z���L���*z��Hǃ�H�L��8���1ɺH�5GZL��HDž8���L��0���H��(����Ɖ��1ɺL��H�5�OHDž0���襉��L��L�����H��(���莌��H��0������H��8���趁��E����E��t\H���L��@����
L�+L���:���L��L��HDž8����‰E��ρ��L���L��H�E!	����H��8����L������y��H�3E1�E1�H�
R!	���H��I������L�kxL�cxM��t=L���]y��H�E�dH+%(��H�ĸL��[A\A]A^A_]�x��@H�E�dH+%(uzH�ĸ[A\A]A^A_]��H���L��@����
L�3L���B���L��L��HDž8����‰E��׀��L���L��H�U 	� ���H��8����T�������z����H��������H�������H���$����H�����f.���UH��SH��H�_xH�GxH��t"H���:x��H��H�]����w���H�]���f.���H����@�����ff.����H����@��UH��AWAVAUATSH��8dH�%(H�E�H����@��u(H�E�dH+%(��H��8[A\A]A^A_]�fDL�e�L�71ɺH�5PWL�m�H��L��H�E��̆��1ɺL��H�5MH�E�讆��L��L���L��蛉��H�}���~��H�}���~��H�3E1ɺ��A�H�
�QL���	|��H�H���L��L�ppI�L�x8H�E��t��H�E�H�u�L��H�E�A��H�}��i~��H�����{��L���v�����x����H���[����H���x���f���UH��H��H�� dH�%(H�E�1�Hc�H���H�}�fHn�fl�H�Ơ)E��ǀ��H��H�E�H��H�}�H�E�dH+%(u�H����px����UH��H��H��SH��H��H��H���H�Ơ� ���H�H��H�SH�]�����UH��H��H��SH��H��H��H���H�Ơ�0���H�H��H�SH�]�����U1�H��AUATI��SH��H��H�odH�%(H�E�1�H�F)E�H=���tfH~�H)�H�P�H�HHH�H�F1�H=���t�fH~�H)�H�p�H�PHH�I��$�M��$H�U�H�}�L��H�M�H������I��$�H�}�H�U�L��H�ƠH�E��
���H�E�H�E�H�U�foE�H�����fo�)E�H��t����H�TP�fH~�H�H�M�H����H��t�����H�DA�fH~�H�H�SH�CH�E�dH+%(uH��H[A\A]]��v���@��UH��AWI��H��AVAUI��ATI��SH�]�H��(dH�%(H�E�1����H�����v��H��L������H����q��L�����f��tr��1ۉE�I��H�E�f���L���vz����L��I����v��H�U�H��I���H����τ����L��I�VI�螁����L������x��9]�u�H�E�dH+%(uH��(L��[A\A]A^A_]��u��@��UH��AWAVL�}�I��AUI��ATSH�]�H��8H�}�L��dH�%(H�E�1��R����H��赁��H��L����|��H���q��L���zv��f��t>D��1����L���w��H�}�H��L���o���H�ƺ��L���/�����D9�u�L���op��H�E�dH+%(uH��8L��[A\A]A^A_]���t����H������ff.����UH��AWAVAUATSH��H��xH��`���H��h����������dH�%(H�E�1�H������HDž����H��H������Dž�������H���zu��HDžx�����H��p���H��u$�+H��x���H��x���H9�p������x���H��h����zv��H��I���}��f������f��v�1�L���t��H�H�pH��@����
H��H�������x���
H�މE�H������H��H�������x��H��������4���H�HcZHcU�L�DM��tp����)�H�L9��k��L������H������1ɉ�L���X���H�������
YH�DX�H�xHc�4���H�H����H߹,f�HcU�H���\������ƅ������E1��L�������@A��Lt&H������A�L��H������H�
4P�P�v��D��L����ns��H�pL�0�
H�������vw��H�������
L���E��_w��H��������4���H�LcrHcU�L�DM��t_����D)�H�L9��0��H������1�D��L���7���H������J�|pHc�4���L�4H����L��,f�HcU�H����A�Lf;�������H������A�L��H������H�
�m�P�Ƃ��D��L��D���W}��<����������A�V9������A��Ct&H������A�L��H������H�
�N�P��t��E1���L����r��H�pL�0�
H�������'v��H�������
L���E��v��H��������4���H�LcrHcU�L�DM��t_����D)�H�L9�����H������1�D��L�����H������J�|pHc�4���L�4H����,L�f�HcU�H����A��A��tfH������A�L��H������H�
hl�P老������H������H��H���l���a���H������L����l��H���2���f�A�Cf;������A���D��������H��p���H��x���H��H9�����H������A�L��H������H�
�k�P�ڀ�����DH������H��H��=l�������H������L���!l��H������f�H������A�L��H������H�
�L�P��r���J���D������L��p����p��1�L��H���o��ƅ����H�H9�+���H�KH9H�����������H������H�������Mm��H��`���H������H��t��H�E�dH+%(uOH��`���H��x[A\A]A^A_]��H������H��H��%k�����H������H���k��H���]����dn��������f.���UH��ATSL�e�H��L��H��pdH�%(H�E�1��3j��H�]�H��t�CH�u�L���	z��H�}�H��t�ot1L���Al��L����x��H�E�dH+%(uH��p��[A\]�DH��P���m����H�������H������f���UH��AWAVAUATSH��H��H�XdH�%(H�E�1�H��t
�Xu��H��u+H�E�dH+%(�7H�Ĩ[A\A]A^A_]�fDL����1ɺL�+H�5�BL��HDž���z��H������1ɺI��H��H�5L@HDž����H��`�����y��L��L�����L����|��H�������r��H�����r��H������H�3A�H��A�H�
	���H��8����q��H�CXf�)�����H��H��H���)������Jt��H��@���HDžh���DžT���H������xu,I�}��r���Ao]p��T����Ao��)�����)�����L�����L��@����ƺ
L���j��H�S0�E�H�HcRL�lD���i��H��p���E����L�+1ɺL��H�5�AHDž���x��L���L��H��p����{��H�����p��1ɺL��H�5IL�+HDž���\x��L��`���1ɺH�5�>HDž����L���4x��L��L��L���!{��H�������Up��H�����Ip��H�3���L��A�A�H�
c	�p����T����
L���i��D�h	�E�D���th��H��x���I��E���H�sH���XH�S`H����H�ƠH�������Ty��H�sH��X���I��H��tH�S`H��tH�ƠH�������ur���
L��L��L�+�2o��L��L��HDž���‰E���o��L���L��H�E	�z��H�����Do���
L��L�3H��X�����n��L��L��HDž���‰E��ro��L���L��H��	�y��H������n��H�;���H��x���H�1	�y��H�3A�L��A�H�
R=����l��L���f��H��x����n��H��`�����f��H��p����n��H��h���H��h���H9�@�����H��h���H��H�����z��I�ŋ@��u����I�uL���;q��L���o��H�������T����qp��L����q���AoM8�AoUH)�����)��������f.�H�HH�<Df�H��H��f�A�H��;H9�u�HcE�I�NH�H����H�sH��)1�f�E�nf�HH�������HDžX���E1����f�1�fDH�
�Ef�f�LPH��H��u�H�s0H�H(HcFL�4H����J�1A�.fD�H�HHcE�L�4H��u}H��p���J�1�)1�f�0D�jf�x���HDžX���E1��H���DH��8����e�������H��L��H��X����c��H��X���H�����H��L��L����c��H���m���f�H��H��L���c��H���5����g����H�������H��������H�������H�������H���+����H�������H��������H�������H���	�����H��tH��Ðff.���UH��AWAVAUI��ATI��H��SM��$L��H���dH�%(H�E�1�I��$�H����u��L��L��@���H��I��$�I��L��H�����t��H��L��M�|$ H������
H�� ���H�������j��L��H��HDž ����‰E��uk��H�پ��L��H��
	�u��H�� �����j���
L��L��M�|$ �j��L��H��HDž ����‰E��"k��H�پ��L��H��
	�ku��H�� ����j��H������
L��M�t$ �6j��L��H��HDž ����‰E���j��H�پ��L��H�)
	�u��H�� ����Hj��H������
L��M�t$ ��i��L��H��HDž ����‰E��tj��H�پ��L��H��		�t��H�� �����i��I�t$ H��A�A�H�
�A����,g��H���b��H�E�dH+%(uH���[A\A]A^A_]��Nd����H��������H��������H�������H������ff.���Uf�H��AWAVI��AUL��@���ATI��SH�����H��H������H�� ���dH�%(H�E�1�)� ���fo�\)�0�����L�� ���I�D$ L��
L��H����h��L��H��HDž����‰E��i��H���H��H��	����_s��H������h��I�D$ �
L��H���H��(���H��H�����h��L��H��HDž����‰E��h��H���H��H�%	�����r��H������'h��I�D$ 1�H���H��0���H=���tL)�H�P�H�pHH�
L���g��L��H��HDž����‰E��3h��H���H��H�b	����xr��H������g��H��8���M�|$ 1�H=���tH����H)�H�P�H�pHH�
L���#g��L��H��HDž����‰E��g��H�پ��L��H��	�r��H������5g��H��������M�|$ M����Ic�H��I��$fHn�I��$�fl�H���)������i��L��H�����H�ƺ
H������yf��L��H��HDž����‰E��g��H�پ��L��H�D	�Wq��H������f��M�|$ H��A�L��A�H�
5�����c��H���^��H�E�dH+%(��H��[A\A]A^A_]�fDHc�����H��M�|$ I��$fHn�I��$�fl�H���)������h��L��H�����H�ƺ
H������e��L��H��HDž����‰E��f��H�پ��L��H�Z	�ep��H������e���m����?`����H���S�����H���j�����H��鋽����H��颽����H��龽����H���ս���fD��UH��AWAVI��AUL��@���ATI��H��SM��$H�� ���L��H���H�����dH�%(H�E�1�I��$�H����ln��L��H��I�D$ H������
H������id��L��H��HDž ����‰E��d��H�����H��H�M	����Co��H�� ����wd��I�D$ �
L��H�����H������d��L��H��HDž ����‰E��d��H�����H��H��	�����n��H�� ����d��Ic�I�D$ H��fHn�I��$�L��fl�H�����H�Ơ)� ����f��L��H��(���H�ƺ
H�� ����nc��L��H��HDž ����‰E��d��H�����H��H�B	����Hn��H�� ����|c��H��L��M�t$ Hc����fHn�I��$�fl�H���)� ����&f��L��H��(���H�ƺ
H�� �����b��L��H��HDž ����‰E��mc��H�پ��L��H��	�m��H�� �����b��I�t$ H��A�A�H�
5;����%`��H���
[��H�E�dH+%(uH���[A\A]A^A_]��G]����H���K�����H���b�����H���~�����H��镻���fD��UH��AWAVAUATI��H��SH��H��hdH�%(H�E�1��h����t*H�E�dH+%(�iH��h[A\A]A^A_]��H�L��p���I��$L��L�}��,H�fHn�I��$�fl�H���)�p����d��L��M�t$ H��x���H�ƺ
H��p�����f��L��L��HDžp����‰E���a��L���L��H��	�(l��H��p����\a��H��P �����������uLM�t$ 1ɺL��H�5�9HDžp�����h��L���L��H�:	�k��H��p�����`��H��@$�����������I�\$ 1ɺL��H�5=9HDžp����sh��L���H��H���\k��H��p����`���a���M�t$ 1ɺL��H�5�8HDžp����"h��L���L��H����k���I���fD���I���M�t$ 1ɺL��H�5a3HDžp�����g��L���L��H�7��j�����DI�\$ 1ɺL��H�53HDžp����g��L���H��H���sj�������YZ����H�������H��������H���5�����H���L�����H���h�����H���������UH��AWA��AVI���AUL�m�ATI��L��S��H��8dH�%(H�E�1��0f��E����L��L��L����L�u���L��M�|$ L�����H�]�1ɺH�E�H�5:H���f��L��H�ھ��L���}i��H�}��^��H�}��^��I�t$ H��A�A�H�
92�����[��H����V��L����T��H�E�dH+%(u'H��8[A\A]A^A_]��L��L���5X���7�����X����H��������H��酸���f���UH��AWAVI��AUATI��SH���dH�%(H�E�1�H��0���H��H��H�������d��H��L��L�����A�|$�ƅ+���uA�D$8����+���H��`���H�����H���#\��E1�A�|$8I���tM�D$0I�T$I�t$H���j��I�D$@�@����IcD$����A�D$H��������A�D$L���8���wI�D$I9D$ �H��@����1�HDž@���H��H�����DžH����b��I��I�T$H�����H��P���H�����I;T$ ��,@f.`=z	H�����t�X�<�H,�H�fHn�I���H�����H�����fl�H���)�P����5_��H��P���I��H��@���L��H���H��X����PH��t#H�����A�H�
�6L���BZ��H��@���H�M��@�
D��H��H�� �����,����a��H�� �����,���L��H�����A���g��I�T$I�D$ H��H)�H��H9�s>��f��f/����\�;�H,�H������L��H���f�H�����L��I�^ �}T��L��P���1ɺH��8���H�5�3L��HDžP�����b��L���H��H��8�����e��H��P����[��H��8����Z��H��@�����Z��H�������+���1�L��H���x���H���@Q��H�E�dH+%(�4H���[A\A]A^A_]�H��P���I�^ 1ɺI��H��H�53HDžP����9b��L�����H��H����"e��H��P����VZ���2����H��P���I�^ 1ɺI��H��H�5q-HDžP�����a��L�����H��H�G���d��H��P����Y��A�D$L������H��P���I�^ 1ɺI��H��H�5-HDžP����a��L�����H��H���jd���C���DH��P���I�^ 1ɺI��H��H�5�1HDžP����1a��L�����H��H����d���K���DfHn�I���I��H��@���fl�H���)�@����[��L�m�H��H���H�ƺ
L��I�^ H��@����)^��L��HDžP����‰E�H��P���I��H���4Y��L�����H��H�R��}c��H��P����X���_���@I�~ I�L$@���H����Nc���/����4S����H�������H���!�����H���(�����H���*�����H���ڲ����H���8�����H��������H���.���@��U�
H��AWAVL�u�AUATSH��H��H��(����wdH�%(H�E�1��F�GL���]��D�`
�E�D���6P��H��0���E���FL��@���H�s A�A�H�
����L���{W��H�{ H��0������H�l��/b��L��`���L�{ 1ɺH�5�%L��L��8���HDž`����^��1ɺ
L��H�5)HDž8�����^��L��L���L����a��H��8����V��H��`�����V��H�s L��A�A�H�
�(����,T��H��(����1�H���V���L���N��L���N��H��0����V��H�E�dH+%(ucH�ĸ[A\A]A^A_]�f�foxJ�@h_I��H�x@Lcm�M��u1�E�gfC�D/���@M�L��L���zM������P����H���3�����H���?�����H���^�����H���/����f���UH��AWAVAUATSH��hdH�%(H�E�1���u(H�E�dH+%(��H��h[A\A]A^A_]�fDL�m��
H��L���Z��D�`�E�D����M��H��p���I��E����L�k L��x���1ɺ	H�5�(L��HDžx����\��L���L��H��p�����_��H��x����U����M��H�s A�H��I��A�H�
,������T��L�kL�cM��tL���%M���L���L��H��p����T������1�H�
�0�f�fA�DVH��H��u�fo�HA�F"h_I�N&AFLc}�M��u!J�9�)1�f�E�ff�H���fDM�H��L��L���K��H������N����H��鏯����H��鏯����H��馯������UH��SH��H�_H��t*H�GH���*L��H��H�]����K���H�]���f.���UH��AUATI��SH��H��L�oM��tH�GL����K���L���SK��L���[O��f��uH��[A\A]]�L��H���-����CH�ߍp�H����pH��[A\A]]�;����f.���UA�.A�1ҹH��AWAVI��1�AUATL�e�SH��H��@L�o L��dH�%(H�E�1�H�E�jjj�#L��H�E�H�� H�������L�}����L��H�E�L��H����S]��H�}�L�m��R��L��H�E��P��L��H�E��O��H�u��L��H��*�]��A�~���L��L���~��H�u�H�U�L��H�E��M��H�u�H���ŭ��L���[O��H�}��R��H�{ L��H�������\��H�s A�L��A�H�
������Q��L���J��H�}��Q��H�}��Q��H�E�dH+%(u0H�e�[A\A]A^A_]�fD1ɺH�5 L���2Y���5����L�����)�����H���l����f����W��I��(\��(H��H��H��I��H�����W��H��H��H��I��H�����	��H��H��H��I���H����	�����UH�\�f�H�HpH��AUATI��SH��H��H�H�GfHn�H��0fHn�fl��GH�G0G H�:H�{8H��tH��PH�5K	H��@H��tz1�1�L�O2��H���'Y��M�$$A�|$tH�e�[A\A]]�H�5	H����H��H�%2��I�T$H��I�L$PL�
2��L��7���T[��XZH�e�[A\A]]���	��t%H�	H�=�
	H�0�oN��H�5�
	�Y���L�-�
	L���!K����t��8q��L��H��
	�N������
	��t%H��
	H�=O
	H�0�N��H�5@
	�3���L�-�
	L���J����t���p��L��H�n
	�N�����I���i���ff.���UH��AUI��ATSH���HH��dH�%(H�E�1��PE��H�]�I��H��tLH�H��PH�U�L��L�����L���4X��H�H��PH�E�dH+%(u-H��L��[A\A]]�fDH�U�L��H�����L����W�����*I����I���ƪ����I���ê����I��鷪��fD��UH��AWAVI��H��AUATSH���H��8���H��P���H��X���dH�%(H�E�1��I��f��u$H�E�dH+%(��H�e�[A\A]A^A_]�f�H������I�v A�A�H�
��H�Ǻ��H�� ����M��A�6�
H��@���H�ߍFA��R��D�`�E�D����E��H��`���I��E���wH������I�v A�A�H�
�����H��H������-M��I�~ H��`������H����W��fo
�@L�����H��8���f�L��)����)���)��)����)�p���)������eK��L��@���L��L��P���L��p���L�����L��L��L���U��H���L��L��L��0���H��H��(����E��I���I��L��H����U��L��H������H�������"L��D��H��L��h����Hi�ų��D��L����H�� D�)�i�A)��$G��1�L���K��H�������L��H��K��H������1�L��H���J��L�������L��L�h��J��H��H�����L��H=���LE�H������H��H��H���L�jD����Q��1�L��M�f �J��H�0�
H���%K��L��@���H��HDž����‰E�L���K��L���L��H�!��U��H������0K��1�L��M�f �2J��H�p�
H���J��H��L��HDž����‰E��VK��L���L��H����U��H�������J���L��M�f ��I��H�0�
H���bJ��H��L��HDž����‰E��J��L���L��H�U��@U��H������tJ���L��M�f �sI��H�p�
H���J��H��L��HDž����‰E��J��L���L��H�����T��H������J��I�^ 1ɺH�5XL��HDž����Q��L���H��H�-��T��H�������I��L����?��I�v ���H��0���A�A�H�
���I��H��X���f�HDž���)��H��tH�AH+H�� �)L��P���L���ZF���f���H�-g=�@HDž�����*�L��@���fn�L��H���H��(���fn���X���fb�L��L��H����f^=)�����^��� ����.q��L���F����Hf��L���@H��fn��*�L���^�X���fn�H�)�� ���fb���H������f^�<)������p��H��P���H���IE��H��D���}@��H��D���?��H��H��P���D���F��H��P������I��H��P�������X����zK��H��P����ȉ������G��H��P���f������>��AWD��X�����D����������AUATH��(���SH��@���H���F��H�� H���F��H���:J��H���rH��H����I��L�����L�� ���M9����5�;��X�����X����AYT$�A$$��P���f(���S����X����AY\$I��E��f(��S����X����AY\$H�����f(��S����P���H��H���L������	�D	뉝�������I�� M9��e���L�����M��tH��(���L��L)��>��H���H��tH�����H)��|>��H��0�����>��H�������>��H��`���D�`A��D����>��H�����H��E����I�~ H��@������H�C��P��H��8����1�L�����H������F��H��`����F��H�� ����T>������H�PH��H�pf�f�H��H��f�J�H9�u�HcE�I�}L�<H����1�E�efC�t=�6���D1�H�
>�f�f�TCH��H��
u�H��`���H�KHcPL�,H��uTJ�)�)1�f�D�cf�H���f�H��(���H����k�����@L��H���m<���b����H��H�pL���Q<��H����?����H��鑡����H���y�����H���e�����H���M�����H���A�����H���5�����H���)�����H��������H���q�����H���Y�����H���s����f���UH��AWAVAUATSH��XL�g(dH�%(H�E�1�M���WH���L�m���G��L��L��H��I�$�H�E��x�QL�=
&��L��E1�L����9��H�;L�e��E��H��L���?��H�0H�{0�)A��H�}�H��tH��PL�s(��q��H�E�H��M�������I�L��L��H�E��x�ޠ��L�e�L��L��H�E��q9��M����I�$L�}�L�e�L��L���P(L�u�M�������I�L���PH�}�L�u�H��tH��PI�L���PH�{8L�s8H��tH��PI�L���PH�E�dH+%(uiI�$L��H�@H��X[A\A]A^A_]��H�E�dH+%(u<H��X[A\A]A^A_]�f.�L�=�$��L��L�e�H�E�L���8������H=����H��隟��������;�����H���>�����H���|���fD��UH��AWAVAUATSH��H��H�HdH�%(H�E�1�H��tH�H�CH�PH�{@H��tH�H�C@�PH�{8ƃ�ƃ�H��taH��P��tWH�s8H�E�H��P���H��H��P H�E��xteH�=%	�G�L�e��=��E1�L�]�I���ä��f.�1�H�E�dH+%(��H�e؉�[A\A]A^A_]�f.�H�=�	L�u��FM��t�I�L�e�H��	L��L��H�E��x����L�m�H�#��L��H�E�H��H��X�����6��M���	
H��X���H��P���L��`�����6���8w��I��I�EL��L��L���H�E��x���L�u�H��X���L��H�E��6��M����I�H�5<L��1ɺL��h���L�x H�E��(H��L��L��A��H�}�A���S@��E���I�EL��PH�{@L�k@H��tH��P�}��I��I�EL��L��L���H�E��x�����L�u�H��X���L��H�E���5��M���QH��x���L��p���L��H��8���H��I��PH��x���L�=�L��1�L��H�H��@���L�B(�H�E�L��H����FG��H��@���L��H���L��A��H�}���H����c?����H������$I�L��L��P���1ɺH�@(L��H�E�H��H�����F��L��L��L��H��H�����H�E�H�U��@���������D�:H��X���L����4��H�}���>��H��x���L��1�ƃ�H�5�H�H�E�H��@���L�B(�H�E�L��H����NF��H��@���L��H���L��A��H�}���H����k>����H�������H�}�H��t#H��P(A9��,H�}�H��tH��PD�[l��I��I�EL��L��L��H�E��x����L�}�H��X���L��H�E���3��M����	H�E�L�}�L��H��H���H��I��P(L�u�M���E���I�L���PH�}�L�u�H��tH��PI�L���P��I����]L���PI�L���PH��x���H��tH��PH��p���H��tH��PL��h���M��tR�G@I�H�5UL��1ɺL�x H�E���D��L��L��A��H�}�A���=��E����I�L���P��@��L��L��H��I�E�H�E��xtyH��X���L��E1��2��H�;L�u��>��H��L���`8��H�}�I��H��tH��PI��P��uTL��`����M����I�EL��P���I�L��1�P��H��X���L��L�u�H�E��52���y���H�=��L�=���SI�EL��L��L��H�E��x�K���L�}�H��X���L��H�E���1��M���tI�L�}�L��L��P0H�}��G�����;��H��莸��1ɺ
L��L�+H�5�H�E��]C��H��P���1ɺH�5�	H�E��;C��L���L��H��P����$F��H�}��[;��H�}��R;��L�+1ɺH�5.L��H�E���B��L��L���L����E��H�}��;����3��H�3E1�E1�H�
����H��I����:��L�kpL�cpM��t`L���&3���L���2���I��:��H�1ɺH�5�L��H�E��ZB��L��L���H���GE��H�}��~:��I�L���P����H���H�=���6�����H��X���L���10��H�}��8:������L���PH�{HL�sHH��tH��PI�����H�1�H�=]��6�����D�:���H��L���T6������I�H��P����1�H�5}H�@(H�E�H��H����HA��H��P���L��L��H��H�����H�5�H����H��H�M���X���L�
=��H�U�L�!��H�}��D��H��X���L���/��H�}��!9��AYAZ���H�E�H�5�1ɺH��H��H���H�E��@��H��x���H��H���H��P(��tEI�H��H���L��L��P(H�E��x��H��X���L���.��ƃ�H�}��8���N���ƃ�H�5\�H���#H��P���1�L�[��1��4A��H�u�D��L��H��P0H�5%�H���IL��X���H��H�M�L����H��P���L�
��AWH�U��eC��L��L��A���-��_H�M�AXE����HcA����H�@L�y���H��L��H���A��H��@���M�4L��A������
��H��0I9�tEH��P��
u�H�xH�5��s.�����H�CH�S�@��������w�D�*�D��H��@���D��L��H���f�����f��f���H�M�ufE��tfA��w���f����)�f���H�5��H���,H��X���H�}��6;���A���fD�*�0���H�xH�5��-��������L��H�E��?4��H�C�x�H�}��w��tD��6������H��H�=��2��H�5������H��P����y�����H�r�H�=�H�0��4��H�5����H�E�H��X���L��D�0�,��E������`����p���������H��H�=��H�0�v4��H�5������������H���H�=��H�0�E4��H�5v����H�CL��H�0��2������00��L�5��L����0����� �����V��L��H����4������L�5q�L���0�����M�����V��L��H�Z��4���4���fǃ�ƃ����L�5,�L���l0�����9����V��L��H���@4��� �����H���ɓ����H���ד����H���#�����H���'�����H���&�����H���ē���/�����H��鱔����H���y���齔�����ڕ����H���~�����H���l�����H��鍕����H��阕����H��錕���2�����H��鬗����H���-�����H��������黖����H���ɘ���ј�����ڗ�����ڔ����H���\�������������ff.����UH��AWAVAUATSH��H���H�PdH�%(H�E�1�H��tH�H�CP�PH�{Hƃ�H���+H��P���H�sHH�E�ƃH�� ���H��H��P H�E��x�@H���H��(���E1�H��(���H�� ���L��8�����(��H��@���L��H�����H��I�E�PH�=B�L�5;��=I�EL�e�L��L��L��H�E��x��H��(���L���(��L��@���HDžH���M��tPI�H�5�L��1ɺL�p(H�E��:��L��L��A��H�}���up�C2��L��H���M��t	I�L���PL��8���H��@���H��tH��PM��t
I�EL��P�H�U�dH+%(��	H���[A\A]A^A_]�@��1��H���W/��H���K/��H��H��H������5/��L��H���M���n���I�L���PH�{PL�sPH��tH��PL��H����Mn��H��M��t)I�EL��L��H�E��x��H��(���L���,'��L��H�����1��(���f�H��(���L��L�u�H�E��&��L��@���L��H���M���p������f�L�m��m��H��M�������I�EL�e�L��L��H�E��x�eH����L��H��H��(����&���}����H��	�L���-������L�m�H��(���L��H�E��=&��L��P���M������I�EH�� ���L��PL�u�L�=�	L��1�L���	I�H�@(H�E�H������7��H�����L��L����H�}�A����/��H�}�H��tH��PI�EE��uI�EL��P�{����L�p(H�E�L���	I��H��1�H�E�H������D7��H�� ���L��L��A��H�E��xtRH�� ���H��(����G%��H�}��N/���@H�A��L��L�m�H�E�H��H��(����%������fDH�=`�L�u��[M��t�I�H�G�L��L��H�E��xt/H��(���L��H����$��H�� ���H���$��H�}��.����L��(���L�}�L��H�E�L��L������$��H�� ���L��L��X����k$��H�}��r.��M���������d��H�����H��L��H��H�E��x��H��(���L��E1��"$��I�EL��`���H��h���L��P(L��h���H��p���H��H������E�uM�}HDžp����z+��E����A�F�L�5�$M�l��9�I�?A�$�$H�{$�wH���8������I��M9�tVI�?A��L��wH����/����u�I�7��FH�E��H�L���w1��H��p���H�E�H��p����@-��H�����H��p����}*��H��p����G�������8��
�z�H�5��S�������ƃH��p�����,��H��h����(u#H�5��H����H��(���H��h����0��H��`���H��tH��PH��X���H��tH��PL��P���M��������0���@H��(���L��L�m�H�E��="�������L�=��H���L���#����t0�h��H�����H��L��H��H�E��xtnH��(���L����!��H��p����G������H���L���"�������H��p����G���f�I�7�$�FH�E��H��6���L�m�H��(���L��H�E��j!��L��x���M���v���H�E�L��H���H��I�E�PH�E�H��taH�H�����H�5�1�H�����L�r(�H�E���2��H�����H�����A�ք���H�}��*��H�}�H��tH��PI�EL��P���H���H�5��!��������H��p����G�������H���H�5��!���������H��p����G�l���DI�EL�� ����1�H�5�H�@(L��H�E�H������2��L��L��L��H�������H�E��xtBH��(���L���	 ��H�}��*��������-��H�=��H�0�(��H�5���.���H�E�H��(���L��D�0���H�}���)��H�}��)��E�������H�E�H�����H�511�H�H�����L�r(�H�E��@1��H�����H�����A�ք��g���I�EL�� ����1�H�5�H�@(L��H�E�H�������0��L��L��L��H�������H�E��x���H�E�H��(���L��D�0����H�}���(��H�}���(��E��H�qH�5B�HE�1�H�}�L���g5��H�E�H��H���(�����H��H�=���#%�����H���
H�5
��i���������H��p����]����#��H��p����	H�5���N����t2H�����1�L��H��P@H�E�H��H��H�}��(���1���H��p����H�5��N�������������d��H�����H��L��H��H�E��xt&H��(���L�����1�H�M�H�������1������1�L�u�L��H�u�H��(����|��L�u�M��t�H�� ���1�L��H���H�U��$��I�L��L��H�������P(H�U�H�E��ztH��(���L���*��H�}��1'���v���L�� ���H�0L���j$��H��(���L�����H�3L��L���"��H�E�H���H���H�}���&��H����xt�H��H���tH�;�(��H��L����2��L��H�����g*��H��M��t/I�L��H���L��L��H�E��x��H��(���L���`��E1�L��H��L�m��n���I��L�����I�E�@���
���������H���H���B��A���2��H���HcPH�H�LI�ULcjM��u/B�i D�`���H��(���1�L��L�m�H�E������d���K�D-H�rH��H���
��H��H������H��韊����H��颊����H��������H��銋����H��L��H���鱊����H��郋����H��阋����H��逋����H��L��H���钊����H��鎊����H��鎊����H��鄋����H��L��H���������H���ߊ����H���l�����H���Њ����H��L��H���������H���L�����H��饊�����UH��AVAUATSH��H��0dH�%(H�E�1��V���H��������L�m�H�E�L����!�����f���f����1ɺH�5�L����+��L�3L�e�1ɺH�5�L��H�E���+��L��L���L���.��H�}�L�m���#��L�31ɺH�5��L��H�E��+��1ɺL��H�5��H�E��h+��L��L���L���U.��H�}��#��H�}��#��H�}��z#���t�L�e�L�31ɺ
H�5��L��L�m�H�E��+��1ɺL��H�5@�H�E���*��L��L���L����-��H�}��
#��H�}��#��L���.��L��H��0�-#��L���e*������H�3E1�E1�H�
�����H��I���"��L�kpL�cpM��tL������L���y�����uƃ�H�E�dH+%(uMH��0[A\A]A^]�D1ɺH�5 �L���*���!���D1ɺH�5�L����)������������H��麈����H��鷈����H���Ԉ����H��������UH��AWAVAUL������ATL������SH��H��dH�%(H�E�1��G L���-��L��H��0��!��L���)��L�31ɺH�5s�L��HDž�����1)��1ɺL��H�5j�HDž�����)��L��L���L���+��H�������1!��H�������%!��H�CL��pL���b ��f����H��@���H����
L���H��H��0���� ���
L���E�H������H��H�� ����o ��L����4���� ��fIn�H��1��A�.A�L��H���H������HDž����fHn�H��p���fHn�fHn�H�
=�H��P���fHn�fHn�H��`���fl�fl�fHn�H��H���H�
+�f�)�����*�fl�fHn�fHn��0���� ���1��Y�fl�)���)��)����)� ���)�0���jjj�!��H������H�� H���%���fo�0���fo� ���L��@���L��fo����fo����L��H��H���fo��fo���)�P���)�`���)�p���)�����)�����)������:�H��H����.��H�;L���H�$���)��H��@����������H�3E1ɺ��A�H�
�H��I������L�khL�chM��tL������L�����H�E�dH+%(uH�e�H��[A\A]A^A_]����B����H��鲅����H���ʅ����H������ff.���UH��ATI��SH��H�� dH�%(H�E�H���H��p�+��H���3��I��$�H�}�H�E�I��$H�E�H�Ơ�� ��H��H�����H�E�dH+%(uH�� H��[A\]��|����I��銅����UH��AWAVAUATSH��HdH�%(H�E�1�H���u/H�E�dH+%(�T	H��H[A\A]A^A_]�f.�L������L�'1�H���L��H�5��HDž������$��H��p���1ɺI��H��H�5!�HDžp���H�����$��L��L��L���'��H��p�������H����������H�3���H��0���A�A�H��H������H�
����H������HDž����H��H��������H�����HDž���H��H����������H�����HDž���H��H����������H�����HDž���H��H���������L���M�����M�t$L�����H����H�ƺ
���L���E�����H�����H�ƺ
�x��HcUĉ�4���H�H�L��H���������H������I�ƅ���H�����L��������L�+1ɺ	H�5��L��HDž����� #��L�����L��H�������	&��H�������=��A�t$8�
H�����V ��D�h�E�D�����I��E����H�����L��������H�;���H������H�:��%��H�3A�L��A�H�
[�������L�����H�������H���������M�$$M���I�D$D�pA��D������I��E����H������L�������Y��L�+1ɺH�55�L��HDž�����!��L�����L��H�������$��H���������1ɺ
L��H�5
�L�+HDž�����!��L����1ɺH�5��HDžp���L���!��L��L��L���s$��H��p������H���������H��P���H�3A�A�H�
�����H��H������Z��H��@���I�t$0�
H��H�������I�t$(�
�E�H������H��H���������HcUĉ�4���H�L�lD���~��I��E����H�����L���������L�31ɺ	H�5`�L��HDž����� ��L�����L��H�������t#��H���������H�{I�T$ 1�E1�H�5'莂��H�3H����A�A�H�
������W��A�t$8H�;�	������I���L������L���M��A�D$8L�� ���L���HDž ���L��f�������n��H�{�����H�{I�t$�"��H�{L��L����������L��(���1�L��L���ǝ��H�1ɺL��H�5��HDž����H�����\��L��L�����H�����E"��H�������y��H�3���L��A�A�H�
����L�����H��(����B��H�{�Y��H�� ����-��L���
���n���H�PH��Df�H��H��f�J�H�
	�H9�u�Hc�4���I�NH�H����H�A�,fD�H�HHcE�H�H����H��)E1�f�8E�nfD�@���@1�fDH�
��f�fA�TEH��H��u�I�t$I�M LcFK�M����E1�E�ufF�A����f�1�H�
U��f�fA�TFH��H��u�HcM�I�~4H�	H���^1�E�nf�O����1�H�5b��f�fA�TFH��H��u�Hc�4���I�~H�H���[H��,f�0H�xHcE�L�,H���J�/�)f�A�N1�f�H����H���褺H������X��H������L��H������@��H�������4��H�������x
�����H����H��H�������Z��H������H���B���H�����H��H�������2��H������H�����H��H��L�����
��L����H���T���fDH����H���������H�����H�����fDH����L��H��������H�����H������H�����H������H���������H������H������H���u���������H���|����H���,|����H���|����H��� |����H���|����H���|����H���|����H���|����H���|����H���|����H���|���ff.���UH��ATSH���M���H�{(H��tH�H�C(�PH�{8H��tH�H�C8�PH�{@H��tH�H�C@�PL�chH�ChM��tL���o���L����
��H�������C H���j���H���2���H��[A\]���fD��Uf�H��AUATSH��H�0L�� H��H�w�H�O�H�W�H�G��G�G��,��f�H���C8CHCXChCx���1�1�ƃ�f���f�H���H���H���f���ǃ�Hǃ�ǃ�Hǃ�Hǃ�Hǃ�ǃ��?Hǃ�Hǃ�Hǃ����_��H���Hǃ��H��H��Hǃ�1��H��Hǃ���H��Hǃ���ƃL���d��H��0�X��H��[A\A]]���I���Vz����I���?z���@��UH��AUATSH��H�����H��0���H�� ���H������H������H������H�������H�������H����H���H���H���H9�t	H���t��H������L�cxM��tL�������L���J��L�cpM��tL������L���,��L�chM��tL������L�����H�{PH��tH��PH�{HH��tH��PH�{@H��tH��PH�{8H��tH��PH�{0����H�{(H��tH��PH�{H��t!H�Hx��ouH�H�@H��[A\A]]��H��[A\A]]���I���y������U�
H��AWI��AVI��AUATL�g(SH��H��(fo�dH�%(H�E�1�H�w f�GL���H�H�C0�@����H�S0H�C(��H������H��L�,���I�EfHn�H�fIn�fHn�fl�L�kxfl�K8L��CHKXCh����ǃ�H��L��H���L���H���H��L���L���L���Hǃ�H�E����� �!���1�1�H��I���
��L���L��L���'
��1�ƃH���1�f��Hǃ���L�}�1�L���
��L��L���E	��L�����H���H��t
H�H�R��DH���H���H��tH�Hx��ot+L��H�E�dH+%(uH��([A\A]A^A_]�fDH��P���;����I���Mx����H���x����I���x����I����x����I���x����I���|x����I���|x����H�E��Ox����I���w��ff.���UH��ATSH��H��L���dH�%(H�E�1�HLJ�L�e�M��t%I�$H�x�L��t��I�$L`��A�l$��H���S��H���H��tH�Hx��o��H����I���L���M��tL������L���8��H�{x����H�{(��L�cM��tBI�|$@�3��A�|$8��I�|$H��t
I�t$(H)�����L���x���PL������H�[H��tRH���:��H�E�dH+%(u~H��H�߾[A\]���fDI�$L��P�����H��P� ���DH�E�dH+%(u4H��[A\]��A�D$8I�|$0�@��I�|$H���E����M��������I���:w��ff.����UH��ATA��SH��H��0dH�%(H�E�1��u����E��E���A�� t�C`�E�H�C@L�c0H��(I9����E��U�A�D$A�$L���u<�U�H��(�E��E�A�T$ H�C0�}�uXH�E�dH+%(ujH��0[A\]�H�u�I�|$����A�D$H�C0�fDH�wPH�}��c���E��U���f.�H�}��E�����뙐H�u�H���t����������H���v��ff.���UH��AVAUATSH��H�� H�0dH�%(H�E�1�H9{t@H�C8H�SHI��H9���E�l$�A����A�� u8H9�t@H�G؀�H�C0��H�E�dH+%(�H�� [A\A]A^]ÐA�T$��S`H9�u����I��H�CHH�x�H�P�H�SHH������H�{8H�C@H���H�C0t�Ƈ�H�E�dH+%(��H���jL�u�L�����A�|$�L��uiH�{P���L���h��H�{0H�C8����L�b�I��������G�H�E�dH+%(u$H�� H�� [A\A]A^]����I�t$���4����H���u�����UH��AWAVL�u�AUI��ATI��SH��H����<���H�wL��dH�%(H�E�1����H�CL��pL���g����tL���[��H�sH��t2H�S`H��t)H�ƠL���z�����tƃ��E�1�1����u�H9��tG���uH���H��H9��jƃ�H�����H��H����ӄ�����L��p���t#A�f���fD���L��p���� L�{P���
��H��M��t+I�L��L��H��p����x��H�5�L�����E1�H�;L��p������H��L�����H��p���I��H��tH��RI�D�RE���%����H��P���1ɺHDžP���H��H�5��H��0����A��H���@���H���@����L�;1ɺL��H�5S�HDžp����
��L���L��H��0�������H��p������H��P����
��1�H���`}��H����H��tGL�;1ɺL��H�5�HDžp����
��L���L��H����w��H��p������H�{H��<���E1�1�H�5(�o����L�;u#���tH����P���X�H���@����1ɺ	H�5��L��HDžp�������H��P���1ɺH�5"�H��HDžP���H��0������L���L��H��0������H��P�������H��p�������H�3E1�E1�H�
ߤ���L�����H�H��H�xpH��P8L�����H�{E1�E1������1�L�����H��L����
��H�E�dH+%(��H�ĸ[A\A]A^A_]�f�H�59�L��L�}�H�E������$���H�{@��H�;����H��H�s@�1��H�s@�L��p���H��0������H��0���H��H��t(H�L��H��p����x�%H�5��L�����1�H�;H��p����m��H��L���B���H�8H��H����C���H��p���H��tH��PH��H���D�_E���]�X������1ɺH�5��L��HDžp�����
��H��P���1ɺH�5��H��HDžP���H��0����
��L���L��H��0����
��H��P�������H��p�������H�3E1�E1�H�
����L�����H�L��H�xpH��P8�����H�1ɺL��H�5q�HDžp���H��0����-
��L��L���H��0����
��H��p����J�����D��������H���1�H�ߺ�z�����D1ɺH�5]�L��HDžp����	��H��P���1ɺH�5��H��HDžP���H��0����	��L���L��H��0����i��H��P���L������H��p������H�;L�����H�Р�3��H�3H��0���E1�E1�H�
|�����B��H�;L�����H������H�3E1�E1�H�
%����L���~���H�L��H�xpH��P8L���V���H��0����J����_���D�������H��P���H��0���B��A���,
��H��P���H��A� HcPH�LPHcVfD�	H�yH��uh1�f�tD�x�1���fD���"���H��P���H��0���B��A������H��P���H��A� HcPH�LPHcVfD�H�yH��t�H�H��H�� ���H��(����l���H��P���H�� ���H��(����d���f�H��H���H���H��H��I���
��H���L��L��0����9�L��H��I��������<���1ɺL���o��H�5��A�E���AEfA�E(L�+HDžp����4��L���L��H��0����
��H��p���L��P����J���L�;1ɺH�5r�L��HDžp�������1ɺL��H�5�HDžP�������L��L���L���	��H��P������H��p�������H�3E1�E1�H�
����L�����L������H��H������L���!���.���@H�E�H�5��L��H�E�H��0����f�H��0������������H���#k����H���Jk����H���ik����H���Jk����H���_k����H���ik����H���Qk����H���_k����H����j����H���-k����H���k����H���k����H���#k����H���	k����H���j����H���k���@��UH��AWAVAUATSH��H��h���dH�%(H�E�H��@���V� ƅg���H��I���g���ƃ�t
�����H��p���L�m�HDžp�������������BH�sPH���5H�L��P0H��p���H�E�H�}�H��p�����������H��p����WA��A)�DH�I�4$�N)ȉ����t����FD)�L�NIc�A�ȉ�H�|GL���������b���H��p����f���H�CH��h���L��H�ߋ������g���t1H�E�dH+%(�JH�ĈH��[A\A]A^A_]��DH�E�dH+%(�H�Ĉ[A\A]A^A_]��������ƅg���ƃ���������H��������>���H�sPL��H��P0H��p���H�E�H�}�H��p���������H��p����_�W��tUI�4$��E1��N)ȉ���������H��H�5���0���8I�4$H��p���ƃ��N�W���L�sP��7��H��M��t(I�L��L��H�E��x�>H�5���L�����E1�I�L�u��	1�H�5D�L��L��x���H�@(H�E�H��P����e��H�E�L��L��H��X���H��H��P�����H�E��x��H�5s��E1�H��X���L�u��P�H�}��W���I�1�L��L��P@H��p���H�E�H�}�H��p����.���I�L���PI�L���PH��p����GE1����V����H��p����W����H���H�5T�����tƃ�I�4$H��p����N�W�!����H�5���L��L�}�H�E������H�=عL�u�tuM�������I�H���L��L��H�E��xt"H�5V��L��H��P����7�H��P�������H�54��L��L�u�H�E�H��P����	�H��P������H�p��H�=J�����n���I�4$�N�N�������H���Wf����H���sf����H���Rf����H���f���ff.���UH��AWI��AVAUATI��SH��H���H��h���L�vD������dH�%(H�E�H�L��p����@��x���H�H���H��@���H��p���H��H��H������H���HpH��H�������Z������
Hc�����I�L��p���H���H��L��H�����H����]��L�m f�H������H������H���HDžP���HDžh����X���M���jE1�E1������1�L����H��`����EL�eH��X�����P���H;�`���tH��`���L��H��=�GH��h���H��`���N�4�H��H)�H��L9���K�44H�������7�D�(L�hL��`���H������I��I9���H��`���H��h���E�,$H9�u�H��X���H��H)�H������I��H��P���H��������I��I9��|H9�������
K�6L9���E1�E1�H���5H��P���E�,M�lH����H��������L��X���L��`���L��h����6����jH��P���E1�1�jA�����L�����H��`���Y^L������L���:���f���H������L��@����
L������L���o���H������L��
�E��X���L�4������H�����fInޘ1�H���fHn�fIn�H��fHn�H�����H�����HDž0���fl�fHn�H�
%�A�.fHn�fl�H���)����fHn�H����fHn�1�fHn�H�����fl�)� ���fl�fHn�H�
��)�0���fl�f�fHn�)�P����*�fl�)�����L��0����Y��)������L��jA�jj��H��0���H�� H����b��fo�����fo�����L������L��fo�P���fo�0���L��H�����fo� ���fo����)����)���)��)����)����)�0�����H�������H�{ L��H���������H���������H������H���E1�1�H�5[���]��H�����H�s E1�A�H�
ߓ���H��H�� ������	�	D��x���A����H��X���A�E�f�f��H��*�P����*�H��H�������^��K���I�A�E�L���H��D,�L��0����DBL��HDž0���f�����H�����H��H��x���Mc��G�E1�E1������1�L��L�����H��0���I�I��H��`�����H��h���I9���M����!�H���„���
H����������H�����H�Ǿ��H������������E1���0���H����H������H��A�D��L��H���H������Dž��A�H��������PA��I�7XD��ZD)���D;f����PH���H��tH��PH�C ��j�zH����������uH�������I������VH������H��H��x�����f�f���*������Y>�f/���	f.�zI��������t�X���L,�M��LN�H�������)����f�f���*������Y��f/��W
f.��zH��������t
�X1��H,�L��x���L��p���1�L��I)����H��@���1�L��H���L��L��H�I)�L�p��H��`���H��@���L��H�T��H���1�L��I���s�H�@�L��I�F�^��L��I���N�H��L��I��;�1�L��I���.�H�H�L��L�H��H��I�F��1�L��I����H��L��I�����L��I�����H�@L��L��I�F�|��1�L��H���J���L����H�������6������7L��x���H��p���1�L��N�4`��H��@���1�L��H��n�L��L��H�I)�L�p�T�H��`���H��@���L��H�T��H��1�1�L��I���$�H�@�L��I�F���L��I����H��L��I����1�L��I�����L`�L��I��M�f���1�L��I����H��L��I�$���L��I����H�@L��L��I�D$�1��1�L��H�����L�����H��x����{�H�� �����H��X���H��h���H��tH)���H��H������H�E�dH+%(�
H�e�[A\A]A^A_]�fDH������L��@����
L�c L��L��0����z�L��L��HDž0����‰E���L���L��H����X���H��0�����H������L��L�c �
�$�L��L��HDž0����‰E���L���L��H�/�����H��0����6�H�s E1�L��A�H�
G������H�C L��H�xpH��P8L���L��!����������ƅh���D��L��HDž0���L��@������H��0����
L����0���H�����H�C H��P������L��L��HDž0����‰E����H��P���L��H�\�����"���H��0����V�H�C �
L��H������H��P������L��L��HDž0����‰E��|�H��P���L��H��������H��0�����H�s E1�L��A�H�
�������H�C H��x���H�xpH��P8L������h���u&H����������Dƅh������@H��X���A�D$�f�f��H��*�P����*��^��l�H�����L���,�H�fHn�H���fl�H���)�0����	�������H�����E��H��0���H��8���ȉ�0��������f�H�������4�������������H�H�p������DH������L��H��P����j�H��P���I��H������L��P���H)�H���g�L��P����9�I�?A��H����wH����������L���HDž�L������^�����I�7�U�L��0����N9���L�s 1ɺL��H�5A�L�����HDž0�����1ɺL��H�5طHDž����~�L��L�����L���k�H�����L��@�����H��0�����H������L��L�{ �
�$�L��L��HDž0����‰E���L���L��H�7���H��0����6�H������L��L�{ �
���L��L��HDž0����‰E��c�L���L��H�و��H��0������H�s E1�L��A�H�
������H�C L��H�xpH��P8L����H��������DI����H��������I9�LG�I��L����H��h���I��I�����H)�L��H���������H��X���H��`���I��L��h���H)�H���2H���PH������K�L5L��X���H��h���L�H��`��������\(��L,����fDI���������H���f�f��f�L��X���H�������H*�h����H*�`���N�d0�^��������8Df.(�z�����t
�X���H,�A��I��A�F�M9��g���D��P���f�f���A*�A*��^��+�f��,�f��*��Y�����f/�w��\E��H,��fDH��H��L��P���H���������H������L��P���L��H��H)�������fD�\���H,����L�-��L�������Y������L������B���HDž0���L��)��s�H���H��0���H����9��)���H��������H9�HG�L�4����H�E�dH+%(uH�=������H�E�dH+%(u�H�=Y������H����S����H����S����H���	T����H���	T����H���$T����H���*T����H���4T����H���BT����H���GT����H���cS����H���@T����H���ET����H���FT����H���KT����H���S����H���R����H���R����H���S����H���T����H���-T����H���2T���ff.���UH��AWAVI��AUI��ATL�e�SH��H��hH��x���H���L��dH�%(H�E�1���L������uL���������L�������H���Džt������D���A�������E�����AoML��)M��M�foE����of�W��oUH�� )E�L��H�u�H��$H�E H�D$D��t���H��x����0��o]E��$H�E H�D$H��x���L��L��H����H�� L����H�E�dH+%(�BH�e�[A\A]A^A_]��Džt���A�����,���L���p�����E�L���Lc���Mi����*I��"A)�A��Mc�����I�G��LE�H���E1�fIn�D���fl�E����A��H��H)�H��D����Hi��H�D������H��H�HH��H=��\�AoeH�� L��H���omH�u�f��)E�,$H�E H�D$H��x������H�� L�������u2�oeH�� E��L��L��H��$$H�E H�D$H��x�����H�� L�������~����AoEH�� L��H��H����ouL�}�f�8�L��D���)E�4$H�E H�D$H��x����1�H���L��L��H���AoE�o}f���D���)E�<$H�E H�D$H��x������I�E�ouL��L��H��H��fHn�H���AED���)E�4$H�E H�D$H��x�����H���L��L��H���AoE�o}f�|�D���)E�<$H�E H�D$H��x����X�I�E�A~EL��L���omH��H��fHn�H���fl�D���)E�,$H�E H�D$H��x�����I�E�A~EL��L���o}H��H��fHn�H���fl�D���)E�<$H�E H�D$H��x�����H���L��L��H���AoE�oef���D���)E�$$H�E H�D$H��x����q�I�E�omL��L��H��H��fHn�H���AED���)E�,$H�E H�D$H��x����&��ouA����4$H�E H�D$���f�f������L����������H����o}H�� D���<$H�E H�D$����A�������������H���N��@��UH��AWAVI��H��AUM��ATM��SH��H��xH�EH������H������H������dH�%(H�E�1�������I��H��tH�x��H������H��H��H�������d��H�CPH�����H��t����H�tP�H�CXI����H��t����L�DP��AoeI�$H����)�P���fI~�H��X���H��t����H�DB�L�I�|$H��`���H�����H��t����H�TW�H�L	�H��h�����H9����uL9�tH������H��P����r��H���������A�Ą�t?H�������H�������g�H�E�dH+%(��H�e�[A\A]A^A_]�DH�����������H��H��������H�����H��H���������H������t^H������L�8�!��H��M��t2I�L��p���L��L��H��p����x��H�5���L�����H�����������A���D
ƅ����ƅ�����okPH�CPf��f��)�p����H*��H*�x���f(��^��f(��^���_�f/��FE1���������H��������<����h����=��H�56�H������H����L������L�(�����L��������M��H�����HDž��H��H������Dž����H�����������PH����H��p����A�H�
M�H��H������H������L�����I���M��H������L��H�����I��I���H������H��L��H����C��H��@���L��M�f H��x���H�Ϻ
H������L��p���H����������H������L��HDžp����‰E��m��L���L��H��z��H��p�������H��H�������
M�f H�����H��L��HDžp����‰E�H�������
��L���L��H��z�V�H��p������L������H�������
I�^ L�����L��L������L��‰E�L�%�yHDžp������L��L���H�����H��p����#��H��x���H�������
I�^ ���H������L��HDžp����‰E��H��L���H��H�ny��H��p�������H�������'H��������H��H���H�ȇH�5ɇ1���H������H����
H��������H�I�^ �@����
1ɺH�5�L��HDžp�����H��0���1ɺH�5Y�H��HDž0���H���������L���H��H��������H��0�������H��p�������1ɺL��H�5�I�^ HDžp����x�H������1ɺH�5|�HDž0����S�L���H��H�������<�H��0����p��H��p����d��H���I�v A�A�H�
(����H��H��h������1ɺL��I�^ H�5
�HDžp�������H������1ɺH�5+�HDž0������L���H��H��������H��0���H��������H��p������I�v H��A�A�H�
�����H����������H������H�������
I�^ ���H������L��HDžp����‰E����L��L���H����H��p����-��L������H��x����
I�^ L�����L��L��HDžp����‰E��S��L���H��H�yv��H��p���L�%�����L��1ɺL��I�^ HDžp����h��L��1ɺL������HDž0���L���D��L��L���H��L�������*�H��0���L�%w��W��H��p����K��L��1ɺL��I�^ HDžp�������L��1ɺL������HDž0���L������L��L���H��L��������H��0���L�%�����H��p�������L��1ɺL��I�^ HDžp����l��L��1ɺL������HDž0���L���H��L��L���H���5�H��0����i��H��p����]��I�^ 1ɺH�5t�L��HDžp������1ɺL��H�5U�HDž0�������L��L���H������H��0������H��p�������H��p���H������I�^ ���1ɺL��H��0���H�5�HDžp����m��L��L���H���Z��H��p������H��0������I�v L��A�A�H�
�����L���������H������M�f ���H��1ɺL��H�5v�HDžp�������H��L���L������H��p���L��������I�^ 1ɺ	H�52�L��HDžp������1ɺL��H�5��HDž����w��L��L���H���d��H��������H��p������I�v L��A�A�H�
î�������L�����H���������H���������H��h��������H�����I��A��H�y�kH�AH��u�H�DH�H���7�D;xu�H�����I��HDž���H��H�������V��I���H������H��H����9��I��H��H��L	�ttH��@����
H��H�������0��L��
�E�H������H��H���������HcUĉ�4���H�L�l
D�����I��E���BH�����L������'��I���H������H��H�������H��0����
H������H��H������I��H�������~��H��L��L�����L��p���H������H��H��L�����L������H������H��L��L���������L���L���1�����L��fH~��3��1�������
DZfI~�fHn���������H���������H��H�����1�1�H������A�.A�H��HDž����jjj�\��H�����H�� H���XL�����H��H������1�1�HDž���A�.A��jjj�
��L�����H�� M����A��IcUHcCL�d
E���L���x��H���p��H�����D�@E����H��@���D���
H��H����������X	�Eĉ����H��P���I�ą��/	I�~ H��P������H�`o����H�����I�v A�A�H�
|����H��H���5��H�����H��P������H�������e��H�����������@ƅ����E1�L��p���H��L�����H�������L���@��H��x�������H�����H�WH�OH�H9��6
H��}�8��	�G�P��W���%E�����M��tI�(�T��L������`L������H�����H��t=H�WH�OH�H9���H�!}�8�p�G�P��W����
H�������������DI�^ 1ɺL��HDžp���H�5
�L��0����$��1ɺL��H�5C�HDž0������L��L���H������H��0����$��H��p������H��p���H������I�^ �!��L��H�Om���H��H��p������H��p�������I�v L��A�A�H�
��������L�����H�������H�������(u#H�5k�H����H������H�t������M��tI�(���L���	���`L���,��H�����H��t@H�WH�OH�H9��5H�~{�8���G�P��W��u�r��f�H�������4��H������8��H���������� ��H������A�H�
]�H���������H�y��1�H��H�L��I��M�����I��HA9�t*H�0H������NI��1҉�H��I9����H��A9�u�I�9�]�����fD�^ӿ`�^��H,�H��p����H,�H��x�������H��H��I������L��p���1�L��L������������q�L���P����I�~ H���������H��k�|���[�����
�fIn�������&����I����A�H���)����j���@H�����H������D`D�����H�����HcPH�|PH���H��H�pf�H��H��f�J�H9�u�IcEH��H�H����LcCH��, H�HK�M����H�����B�A)D�`�_����H���������H��H���1�������������L��p���H������L��������p����������ƅ����ƅ����H���������L������M��t?I�WI�OH�H9��7H��x�8�A�G�P�A�W���IA���<�E1�����������n���DH�PH��H�p
f�f�H��H��f�J�H9�u�Hc�4���I�HH�H����H��, H�HHcE�H�H���.H�A�)E1�fD�E�hfD�P�;���D��������V���f�L������H�5R���L��HDž�����/���L���M���(�I�L��L��HDž����PH��p���H�5��1�H�H��x���H��0���H��H������L�B(�HDž0���L���������H������H��x���L������A��H��0������������H��p���H��tH��P��������H�����H������H������L���G���H������L���X���H��x���H���8H�WH�OH�H9��aH��v�8�m�G�P��W���L���H�����H��tH��PM�����f�I�L���P���f�I�H�������1�H�5S�H�@(HDž0���H�������]��H������L��L��H��������H�5�H����H��H�����H�
e���H������L�
G���L� ���H��QH��p���H��x������H�52���L������H��0������ZY����H�����H��� ���H��P����DH�PH��H�p�f�H��H��f�J�H9�u�HcE�I�L$L�,H����J�)�)1�f�0A�\$f�x�z���f�L��p������@�H�������/��H�=H�H�0���H�59�H��������D����������f.�H�H�
���H�GH�PH9��kH�PH�
���H9��P�P�O���DH�H�
Ƨ��H�GH�PH9��JH�PH�
֧��H9��/�P���D����������f���������n���f���F��H�=_�H�0���H�5P����H��H�sL������襼��L������H���O���fDI�uH������耼��H������H������H������H��L���_���H���R���H�H�
ݦ��H�GH�PH9���H�PH�
��H9����P���H�H�
����H�GH�PH9��[H�PH�
����H9��9�PL�������H��H�=�����H�5����H������H��L������H������虻��L������H������H�����H������H��L������H�������f���L������H������H���M����k����P����a�������W�������ƅ����H��x����?��L��A�����H������H��L���r���6���������H��������H������H��}��������H��������H������H������������������L����N���H��������H������H��������H��������H������H��3�������������I�H�
��I�GH�PH9�u4H�PH�
����L��H9�u�P���L���?�������u��������L����I�����H���<2����H���$2����H���2���2����H���2����H���2����H����2����H����2����H���J2����H���&3����H����2����H����3����H���,3����H���r4����H���3����H���,3����H���13����H���w1����H���k1����H���_1����H���S1����H���S1�����G3����H���1����H���<3����H���g3�����3����H���1�����2����H���3����H���3����H���3����H���E2����H���92����H���E2����H���-2����H���2����H���2����H���x0����H���l0��@��UH��AWAVAUATSH�����t���H��h���H��x���H��P���L��`���L��H���dH�%(H�E�H��PƇ	���Mƅs���H��x���E1�HDž����L�%ڴ���DžX���I��H��tzH��x���L�����D�pH��A����A��c~7A�F���1w.Ic�L�>��@H��h���H��H���H��Pf�H������L�xL������M9�r�H�E�dH+%(�+H�e�[A\A]A^A_]��L��h���H�H��L��P���I���L��PI���L��L�����H����L��L��L��@�������L��H���k��L��谵��ƃL��豺��H������L�x�L������t����3���H�����H��H��@������A��l���zH�K@H�S0E1�H�sL��P���A��j�uA�L��蟷��H��@���L��� ��L���ش��H��@���H�����f��tYL��h���E1�1�I���I���H��lH��h�g(��L��P���H��L�������1�L��L����^��L��諴��H��@����_���H������L�x�J������t����+���H��h���E1�H���H���1�H��lH��h��'��H�C(L�CH=����(H��H�{ L)�H�NH�V�H�H�H��HH�H�S1�H�����t5I��I)�I�rM�J�I�H�M��IH�H�H��H��?H�H�H=���ID�H��P���J�H��h���H��H��?H�H��H�H��X���H��P���H����W��H������L�x�J������t����+���H��H���H�Sp��`���H�sL���L�������t������H��h�������FH���H���WH������L�x�������t��������H��h���L�{`f�L�sL��)�P���H����
��H��M��L��H�����H�����H�SpH�����L��P�����`���H��h�������H������_AXL�x�6�����t�������L��P���H�sL�����H��H�KHL����`���H��h���H�S8L�KhL�CX���AYH��x���AZ���L���W���H������L�x�������t��������H��h��������H���H���SH������L�x�{�����t����c���L�sL�����f�L��H�����H��h���)�����L���H���������H������L��L��P���H������H���������L��L��H������H�������˽��H��H�S8L����`���H��h���H������L�����L�������i������@��t��������H�C0�H�������H��h���L�{0H�@ ��k��L��h���L������L��L���ߛ��I���L��L��h����i)��H�� L�{0H�����1�HDžP���L��HDž`����oKHDžX���)����fo�P���H�D$$H��h������H�� L���;���H��h����oSL��H��P���H���)�P�����H������L�x���f���t��������H�s �S0H��P����F��9ЋS,HDžP���N��h���H��P����GH����������L��h���I�G ��k��
L�����L��L��襚��I���L��L��@����/(��H�� �K(H�sL��HDžP���L������HDžX���fo�P���L��HDž`���H�D$$����H��@���H�� ����H������耸��H������L�x�����t��������H�s �SdL��P���L���F��9ЋS`HDžP���N��U���H��P����WH�������t�L��h���I�F ��k�
L��L��蝙��I���L���.'��H�S0H�C8H�� H�s�K(L��H)�H����H�����H������1�fo���H���H�D$$����L��H�� ����H���������fD��t��������H�s �S,H��P����F��9ЋS(HDžP���N��h���H��P����wH�������������L��h���I�G ��k�HL�����L��L��襘��I���L��L��@����/&��H�� L������1�L��HDžP���H�sL��HDžX���fo�P���HDž`���H�D$$����������t��������H��H���g���f�������L��h���E1�1�I���I���H��lH��h�A ��L���1�H����V��H������L�x�J������t����+���L�sL�����f������L��h���H�|�E1�I���I���H��hH��@���1�����H�sL��L���SS��L��P���L��L���a����L��H�ߺ�,V��L����H������L�x���@��t��������D��t���H�SH�s1�H��h�����#H������L�x�a���fD��t����C���L�����H�sL��L��P���L��@���蒫��L��L��跮����t���H�S0E1�L��H��h����+L���C���L�����H������L�x�����t������L��h���E1�1�I���I���H��lH��h�~���K4�S0H�sL���K��H������L�x��@��t����k�L��h���E1�1�I���I���H��lH��h���L��H�s1�1��J��H������L�x�)�fD��t�����L��h���E1�I���I���H��hH��@���1�H�����H�S(H�s1�L����G��H������L�x���f�H������L�x��t������L��h���E1�I���I���H��hH��@���1�H���H��H�s1�L��H���gG���]�f�H������L�x��t����C�H��h���L�s 1�E1�L��L��H������H�sH��h���L��H���G������t�������t���H�SH�sE1�H��h����~)H������L�x���fD��t������L��P���H�sL�����1����tH���H��H�KxH�ShL��PD��t���L���H��h����6XL��Z����H������L�x�M�f���t����3�L�sPE1�L��褴���…���H��@���L��I��DH��L���m����xu�BH��I9�u����D��t������L�sL��藭��f�����H��h���f�f��H�����h�������l��������P����C�*��YI��7f/��xf.�z�3�
��f(��X��H,ˆ�����X��H,�H��h���H��P���E1�1�H�������S���H��������1�L��H���wQ��H������L�x����L��h���H�H��I���L���PI�(����A��腦��H������A�� L�x���H��H�[H��tH�@H��质���H���7���H��h���H����p�QZ���g�@L��h���H�H��D�sI����PI�(D���Ѥ��H������L�x�,�A����H�@�p�������|����H��h���H�Q ��ku
��t�����H�xA��H�B��E���A�ƅ����H�S�JH�Z�����H�B	H�t

1���H��H9����x� H��u�����HD������uCH�d�H9�tH�x��H�R������uH��h���ƀ	�q�fDƅs����f�L�sL��P���L��艸��f�L��L��H�����H�����)�����襱��H��H�KHL����`���H��h���H�S8L�����L�������F����f�H�sH�SpH��)�P���H���L�K`��`���L��P�����H�x�H���蘮�����t1�H��@���L��x���L�5q�H���@L��舺���P�����H��H������H�pH������L9�r�H�����H�����H��@�������SH�s f�L��P���)�����HDž���L��肳��H�����L��H��H��@������1�H������L��f������L�������*���L������������H��H��H��H9�s	f��������1�f��8���H������H��(���f��uI��������H�� f�C�f(�f�C�H�����f��8�����8���f;�������H��(���L��L������触��H������L��蘦��H������L��艦��H������L���z���������������������H�����H������� ���H���������������H9��,���H������H��H)�H��0���H��������H������H��H9��QH��0���H9���H�H9��UH����������H������1�E1�f����f����@1�H��0����o2H�� H�� p��oz�x�H9�u�H��0���H)�I�\ H��0���H��t'H�����H��H��0���H)��.���H��0����L������H�����H������M���H��h���L������H�sL��H����e���H�������t�H��h���H�����H�sH����;���H������J�H��h���L������H�sL��H��������H�C�p�������H�x�H���������H�C�p���H��@���H�s�#�����H�x�H��蹪����u��t���%����H�C�p�K������'L���������V��	�sM�~�%�f.���t����d���L��x���1��"�L���X����P����LH��H������H�pH������L9�r�H��������L�pL��P���H��@���L���7���f�L��L��H�����H�����)������S���H��L����`���H��h���H���H���L�����L�����������Z����eH������H�����L��������t���H��h���M��H�PH�p�H��@����N���L������H������H�����H�����H)�臠�����H�{ H�S1�H��������L��1����C���E���L��h���I�wH��tZL���>J��M�wI�GM��t>I�~@�D���A�~8��I�~H��tI�v(H)�����L��茞���PL������CH�s L��P����¹L����H��@���H��H��0���H���)���H��L���ެ����\������*ƅ8������`��8���u �5DH��x����$����x�KH������H�pH������L9�r�H�]�H��t=H�KH�SH�H9���
H��U�8��
�C�P��S����H��0���莝��L���V���H������L�x�1�H�x�H����a�����u��t���%��tH�C�p�����C��t�H�s L��P�����H�����L���詬��H��H��@�������L�������L��L��8���菭��H�������H��H��(����t���H��L������L��H���ޫ��H��(���H���O���H������H��H��0���I���Ư��L��H��苭��H��h���H�{H������H�[f���
H��h���H����G��H��h���H�XH�@H���]H�{@����{8�z
H�{H��tH�s(H)�聝��H���	����PH���l���H��h���H�@H�������Y����f��H��h���H���f/���h�P�w	f.��z�����t�
z��X��H,��� ���f�ɈPf/��&	f.��z�����t�
?��X��H,ЉPH��@���H�p�c���H��h�����,���H�x���t1���������(����GH���t
1�������GL�x���f����	H��h���H�sH��tYH���GF��H��H�[H�@H��t=H�{@�J����{8��H�{H��tH�s(H)�����H��蓚���PH������H������H�X��u*�DH��x���H���y����x�PH��H������L9�r�H��0�����H��(����$���H��8�������H��8���H��tH��H���H)��m���H�������H��������H��@���虙��L��L�{蝩����A�L���*�����L��P���H�K@E1�A�H�S0H�sL�������]�f/��yf.ʃz��
J����H���cH��������H9�HG�H��H���H���L�������l���H������������I��H���H�f����f����H�BH��0���H9�����H�X ������H�����f�H������H��H��@���H���B���H��0���H��賥��H������f���$�P踚���H��H������H�C����f�H�{@�CH�C(�C8H�C@C�T���H��h���H�CHL�pH�XM��t>I�~@蟡��A�~8��I�~H��tI�v(H)��_���L������PL���J�����s�����H��h���H��@���H�{�6����^�f��H�C�Y�P�����H����Pf/���f.Ӂz�����t�
R��X��H,Ѐ�8����P�{ƅ8���H��@����F����!����
�f(��\��H,ˆ�����\��H,���H�x�
�����H���
L��
�����o��������1�L��P���HDžP���L�����D��H�޹LA�L���z���H��P����HD�qD��蔘��H�����H��E����L��P���L������H��h������H�����H�@?H�{ 蟪��H�s A�L��A�H�
\n�������L������H�����觟��H������L�x����H��A��A)�����H������H������L��P���H�x
�#f�CIcHH�	H���-E1�D�sfD�O�2���H�@�x�����H�x��H��z脟������8����V���ƅ������������H�x�H��s�P�����tH�C�p��H��`���H��tOH�=�^H���H��t9H�L��P���H��^H��L���H��P����x��H�5}���L���e���H��h���L������M��H���H����Y��D��t����@H��x���D��L��H������yH������L9�r�I���F��L�������9��H��x���L��H��I������H���|�����H��`���H�5���L��HDž`���躓��H��P���H���E���H�H��PH��h���H���H���H��tH��PH��h���H��H���H��H��H��P����@8��8������s���H������L�p�)H��h���H�Y�S8=�tZ��}tlI���{8�=���L������M9��-���H��x���L��藩��I���@=u�I�@�x��H��h���H�X�H�{0I�p��u����C8��H�{0I�p0��t��C8H�� ���H��(����u���H�� ���H��(����ƒ}�ƅ8����4���ƅ8�������
�|�\��H,��i�����X����
�F��X���H���H��H��(����h���H��P�����4���H�H�HcRH�\��膔��I�ƅ���H��h���H�@H�x@L�p@�����ƅ8��������
*|�\��H,�����
|�\��H,����H�Rp�H�=�[�.�������
�{����H�@�x�����H�GwH�x���ԛ�������I���H�@�x
���H�x�
�
H��v袛�����������DI�pH��8���L��@����Y���H��8���L��@���H�����H��8����ז��f��uH��(����Ɩ��f���N���H��h���H�w�<��H��h��������H�@�PH�H�PH�PH;P tH�P H��8���H�@HH���n���f��t0H��h���H��H�x�V�����s�����H��h���H�w�)<��H��(����-���H��h���H�Yf���NH��h���H�@H�������H���9������A�F8I�~0�Ɯ���]���H�x�H��u�L��(����@��������L��(���A�@�i�����������w�H�H�
�{��H�CH�PH9��H�PH�
�{��H��H9����P�B�P�����H��H���b���H�C����f�H�{@�CH�C(�C8H�C@C讖��H��h���H�CHH�xH�XH��t�-�����s���L��������H��0���L��蚒��H��h���L��H�{���L���/���H�C�>�H�x�H�xm������tH�C�p��H��h���M�~H���������1�H�����H��0���H�����������H��h���H�X�P�H���p��C8H�{0����t�H�HH��P���H�HcPL�H���$Hc�4���L�f�_H�yH�H����A�^f�D����H��(���H��輑����s����yH��h���H�sH���9��H�[�z���A�F8I�~0�e����W�H�x�	�	H�zo�������H�C�x	�]�H�x�	�	H�/s趗�����;�H��x���I�w辣���x��L�������/H��h�����t���L��H��x���H���H�������vL9�����r�L���������H��x���I�w�T����xtnH�������*H��h�����t���H��H��x���L���L���<��yL9�����r��L����������H��x���L��L��I���*��L���q���x��H�@�xu�H�x��H�k虖�����f�����H��������H9�HG�H��H����,��X���H��@����
H��H��X����^����H������L���E�H��P���H������H�EmH������H������fHn��X���)������O,H��h���H������H�@H�x@H�P@�p�����X����|����C8H�{0�(�����H��軌������X���L��@����
L���^�Y���fIn�L������H�������E�H��P���L��H������H��lH������H������fHn�fl�)������+H��h���H������H�@H�x@H�P@蹔����X�������Y���H�E�dH+%(u�H�=bL������藔�����V�H���H����L��������������H��I������t��H�@�x	����H�x�	�	H�%l葔�����������H��(���H�����H�� ����J���H�����H�� ������L��H��H�pL�� ����!���L�� ���H�������X���L��@����
L���^�՘��fIn�L������H�������E�H��P���L��H������H�kH������H������fHn�fl�)������*H��h���H������H�@H�x@H�P@�5�����X���������H�������H�������H�������H�������H��������H��������I��������H�������H���T����H���l����H���m����H�������H��������H��������H�������H�������H�������H��L�����������I�������H���(����H��L������������H���	����H���1����H���I����H�������H�������H��������H���V����H���-����H�������H���a����H���5����H�������H�����@��UH��AWAVAUATSH��H��H��H��h���H��`���H��H���D��\���dH�%(H�E�1��"���f��u-H�E�dH+%(�BH�ĸ[A\A]A^A_]��H������H�s A�A�H�
1H�Ǻ��H��@���辐���s�
L��@���L��F�C���D�`�E�D������H��x���I��E����H������H�s A�A�H�
�0���H��H��8����M���H�{ H��x������H�>0����f�L��P���H��h���)����fo�L��)� ���衎��H�����L��H�����L������
L��L�s L��蔏��L��L��HDžP����‰E��)���L���L��H��/�r���H��P���規��H�����L��L�s �
H��H��P����4���L��L��HDžP����‰E��ɏ��L���L��H�?/����H��P����F���H�� ���L�s 1�H=���tL)�H�P�H�pHH�
L���Ŏ��L��L��HDžP����‰E��Z���L���L��H��.裙��H��P����׎��H��(���L�s 1�H=���tH��P���H)�H�P�H�pHH�
L���O���L��L��HDžP����‰E����L���L��H�
.�-���H��P���L��0����Z���H�C 1ɺH�5�\L��HDž0���H��0������1ɺL��H�5�\HDžP����͕��L��L���H��0���趘��H��P������H��0����ލ��H�����H�s A�A�H�
2\���H��H��0�������H��P����
L��H���E���L���
�E�H������H��H��H��P����!���HcUĉ�4���H�L�|D���ȅ��H������E���H�{ H���������H�9-���L���H�s A�A�H�
F-���L����L��蹃��H��`���H���	H���H��h���L����HDž0���L���P���E1�E1�L��\���L��H������H��0���蚌��L���b���L���ڄ��H�������~���H��0����„��H��8���趄��H��x���D�hA��D��迄��H��P���I��E����H�{ L���H�),���H��h����1�H���,��H��P�������H��x������H��@����:������DH��H���H�������L������L����H��h���L���B���L��L��L��蔓��L���l��������H�PH�,dH�p
�f�H��H��f�J�H9�u�H��x���I�NHcFL�<H����J�9�)1�f�E�nf�H���@1�H�=-e�f�f�LPH��H��
u�H�xHc�4���H�H����H�A�,fD�H�xHcE�H�H����H�H�������)1�f�0D�zf�x�g����H�YH�HH�rf�f�H��H��f�A�H9�u�HcE�I�~L�<H���~E1�E�ffG�L>����@H��H��L��葁��H�����f�L��H��P����q���H��P���H���A���f�H��P���H��(����M���H��(���H�����fDL��L���-����r���胄����H�������H�������H��������H�������H�������H���m�����H��������H�������H��������H��������H�������H�������H�������fD��UH��AWA��AVM��AUI��ATI��H��SH��H�������t
H�������u#H��L��H��L��[L��A\A]A^A_]�:��@H��E��H��L��[L��1�A\A]A^A_]�/����ff.���UH��AWI��AVAUI��ATI��SH��H�����L�uD�����L����dH�%(H�E�1�H�����HDž���H��H�����ƅ��L���ޅ��L��H���#����9��A�t$H�]��
H�ߍFA�D$�+���D�p�E�D���\���H�����H��E���	I�t$ H�� ���A�A�H�
�'���H��H������薇��I�|$ H��������H��'�I���I�t$ H��@���A�A�H�
bc���H��H�����趄��H�����I��oH����)�`���H��t����H�DB�fH~�H�I�WH��p���H����H����L��`���L�����H��x���L��L���ב��H�����L��H������H���̓���H�߉�������}��H��A���b���H��H���}��H���~����H��脉��H������H�����A��H������H����f�HDžp���)�`���H��tH��L������L������L����L����H��L��L�狍�����H��`���H��tH��p���H)���}��H���ψ��L���g|��H������;~��H�������/~��H������@D�hD���9~��H��E����H�����H�����誅��H�����螅��I�|$ H�������H��%�A���H������u���H�E�dH+%(��H�e�[A\A]A^A_]������H�TB�fH~�H��.���D1�H�
$a�f�f�TCH��H��
u�H�����H�KHcFL�4H����J�1�)1�f�D�kf�H����D1�H�5�`�f�f�DQH��H��u�HcE�H�yH�H���O1�D�qf�t����L���x������df��H��`���H��H)�H���H�@HDž`���HiɗH�H��H�HH�����*��^
;x�\�M��tZH��A�.1�1�jA��jj�N}��H��`���H�� H��� ���I�>I��σ��H������Ã���I���fDH��A�.1�1�jA��jj��|��L��`���H�� M���B���A�F�X	����{��I�Ņ�ukH�����L������X���L���P������H��H������H������z��H������H���������H��H��L���Yz��H�������H�PH��^H�p	�f�H��H��f�J�H9�u�IcFI�}L�<H��u1�A�]fC�|=�N���I�vL���y�����V}����H�������H���w�����H�������H���s����������I���7�����I���3����@��Uf�H��AWI��AVAUATSH��H��H��H��H���H��(�����0���dH�%(H�E�1�)�`���蜄��I��H�CH���H��P���H��H��@������H�{�������7���I�L�pH��8���M9���E1�H��H���L���+���I�ċ@=���o~Y��p��#wQH�
�vHc�H�>��=u9I�|$�G��	����u#H����H�V詁����tDI��M9��y���ƅH���A�E1�H�{H���H��8���H����H�S`H�����fDH��p���I�t$H��H��8����E�����0���H��8���H��X���H��HDžX����N�����uiE1�H�{H���A��$�tM��$�H��I�T$xI�t$hD��0���PI��$����H��8���XE1�E1�Z����ƅH����"���DH��8���I����M9��m������f�I�$H�sL��PI��A��M9��G�������@I�$H�sL��PI��M9��#�������I�$H�sL��PI��A��M9�������y���@�AoT$pH�{)�`���H����H���H��8���H�S`H����ƅH���E1�E1�H���H��`����҈��H��8���H�H�QE����H��(��������L�0E���sH��@����v��H�E�dH+%(�@H�e؉�[A\A]A^A_]��AoL$8H�{)�`���H���H���1�E��~��~��H�{A��u�H��@�����t����7���H�{�=�����s���I�D$0f�x�@����Aod$)�`����{fA�|$0�#����Aot$H�{)�`���H�������1��q����fA�|$d���Aol$H�{)�`���H�������1��A����fA�|$,�����Ao\$)�`���H�{H���H��8���H���[���1�����H�S`H����H��(���ƅH���L�0f���H��������f�H���	�	H�_Y��}����tKI�|$�G��	�	���H���	�	H�KU�}����tZI�|$�G����fDH�{�g���ƅH���A�A����H���ƅH���E1�E1�H��8���A����H��X���L��p���HDžX����[z��H���I��A�Ą�tcH�sPL��H��P0H��p���H��X���H��X���H��p����|��H��X����B��t���u�H�zH�5�V��Ss����t�ƃ��H����9��L��p�����uCH��X���A��1|��ƅH�������H�xH�5�V�s����tƃ�f.�H���HH����t�H�sPL��H��P0H��p���H��X���H��X���H��p�����{��H��X����P��t���u���\v����H������H������H�������UH��AWAVAUI��ATI��SH��H�~ H��HH�EH�M�L�E�D�M�H�E�dH�%(H�E�1�����I�T$(L�8L�pI�D$0H���\H����I�uI�UL)�L)�H��H	���D���L��8E�����E�E1�H��8�H����H��L��H��jL�M�D�E�H�M�H�U���X�Z�Ks��H�s A�H��I��A�H�
�����dz��H�������S���H�M�H�E�H��H�M���w��H�M��U�E1�E1�L��H���S���H�}��*z��H����>z��M��tL���ar���L����q��E����H�E�dH+%(�*H�e�[A\A]A^A_]�f�E1��T����H�M�f��f��H*��H*�^�H��t1H�M�f��f��H*��H*I�^���Yf.�z[uY�G@��Yf.�z�I���f(��9fDH�M�f��f��H*��H*I�^���Yf.�z����f(�f(�L���M��U��W���f��U��M��I*��Y�f��f/��f.�YzI��������t
�XY�L,�f��I*��Y�f�f/���f.
\YzI���������w����X
�X�L,��e����L�������j���L���s��H��L��H��H��8PL�M�D�E�H�M�H�U���^_�E��L���fDH��8L���au��H�E�dH+%(uDH�e�L��[A\A]A^A_]��w��@�\
0X�L,�����fD�\X�L,�����ir����H���S���H���]���H���v���H���8���H���?��ff.����UH��AWI��AVI��AUATL�e�SH��L��H��H�EH��h���H�q D��d���H��P���H�EL��X���H��H���dH�%(H�E�1��%v��I�F(I�N0L��H��p���H��x�����m��H�L��H�U��@�E��|��H�H������H�U��@�E��|��L�m�1�L���Fv��L��L��L���xy��L��H��@���I���6n��H��p���L��L���dt��L�}�L��L���et��L��L���p��H��x���H��@���L���4t��L�}�L��L���5t��L��L����{��L�}�1�L���u��H��h���L��L�����L��H�E�H�U��m��L����{���of�E�L��L��)E��z���H���L���l��L�kH�CM��t>I�}@�u��A�}8�I�}H��tI�u(H)��qm��L���k���PL���\m��L��H���L��P���L��H��H��X�����d����v���H�����L�kM��tH�CL���m���L���m��H�sH��tWH������L�kH�CM��t>I�}@�t��A�}8��I�}H��tI�u(H)��l��L���Ak���PL���l��H�����t��L���`l��H�E�dH+%(uTH�Ę[A\A]A^A_]��A�E8I�}0�Jw��I�}H�����������A�E8I�}0�"w���_����n����H���2���H���M���H���"�@��U�H��AWI��AVL��0���AUL�����ATI��L��SH��H�2dH�%(H�E�1�HcVH����y��L���j��H�����L��H���cu��1�L��H���vz�����i��I�L$@I�t$8L��H��H���t3��H����|��L��H���a!��H�H��U��H��H�@H9�u;�Fk��L���x��L���y��H�E�dH+%(uH��[A\A]A^A_]�D������m����H���J���I���+���I���V���I�������H��(������j�����H��0�j����H��(�j����H�� �j����UH��AVAUI��ATI��SH��H��dH�%(H�E�1���2��t:H��2I��H��L��L���b~��H�E�dH+%(u>H��L��[A\A]A^]�L�5Y2L���m����t�H�&/L��H�D2�Wq����l����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���1��t9H��1I��H��L��L���}��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�1L����l����t�H��.L��H��1�p����l����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��]1��t9H�Z1I��H��L��L���!}��H�E�dH+%(u=H��L��[A\A]A^]�f�L�51L���Al����t�H��-L��H�1�p����`k����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���0��t9H��0I��H��L��L���|��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5y0L���k����t�H�F-L��H�d0�wo����j�����wy�����H��0�cy����H�� �Sy����H��(�Cy����H�=$0H�0t�f.�UH��H��F�H���(l��H��/]�f.�D��UH��SH��H��H�5I-H��t$H��L�JQ��1�1��!x��H��H�]������r��H�=-H�0��m��H�5-�ff.���UH��SH��H��H�5�,H��t$H��L��P��1�1��w��H��H�]������r��H�=�,H�0�Wm��H�5�,�f.�@��UH��ATSH��H��dH�%(H�E�1���.��t4H�5�.H���er��H�E�dH+%(uAH��H��[A\]�f.�L�%y.L���i����t�H�F+L��H�d.�wm����h����UH��ATSH��H��dH�%(H�E�1��(.��t4H�5%.H����q��H�E�dH+%(uAH��H��[A\]�f.�L�%�-L���i����t�H��*L��H��-��l����0h����UH��SH��H�� H���e��H�{H��t1H�WH�OH�H9�t'H���8t[�G�P��W��t]H�]����H�H�
�N��H�GH�PH9�uUH�PH�
O��H9�u5H�@H�]���f.���������DH�]���6d��fDH�]���f�H�}��H�}�H�뜐��UH��SH��H��H�xH��t1H�WH�OH�H9�t0H���8tT�G�P��W��tVH��H�]���b��f�H�H�
N��H�GH�PH9�u=H�PH�
*N��H9�u%�P뺸�������D�kc���f����@H�}��H�}�H��f���H�H��tH�wH��H)��c��D�f.�D��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����UH��AWAVAUI��ATI��SH��(H�H�H�RH�Hc��H�PH�H�Hc��H�@H�\
H�Hc@HÉ��c��I�$��uH��([A\A]A^A_]��H��I�EM�}H�L�hH�L�AH�L�pH�L�IH�0H�x1��f�f�LBH��H��u�H�7H�JHcFH�H��upfA�H�H�Jf�Ic��H�H����H�fA�H�Hf�Ic��L�4H��u]fA�J�1f�I�$�Z1�f�PH��([A\A]A^A_]�DH��H��L�M�L�E�H�U���`��L�M�L�E�H�U�H���d���@H��L��L����`��H���DH��L��L�E�H�U��`��L�E�H�U�H���H���f.���UH��AWAVAUATI��SH��H��H�H�H�HcPH�FHc@DL�lD���sa��H�E��uH��[A\A]A^A_]�@H�HI�$M�t$L�`H�H�0HcFL�<H��uDfA�$McfDJ�9H�Hf�K�$M��u>H�D�h1�fB�aH��[A\A]A^A_]�f�H��H��L���_��H���@H��L���_��H������UH��AVAUATI��SH��H��H�wdH�%(H�E�1�H��t(H�W`H��tH�ƠI�|$8�q��H���H�����H���B����ƃ�tƃ�ƃ�L��L��P�����
L����a��H�S0�E�H�HcRL�lD���_��H�� ���E���DL�+L��0���1ɺH�5Q8L��HDž0����o��L���L��H�� ����q��H��0���L��(����'g��L�31ɺH�52CL��HDž0�����n��1ɺL��H�5�4HDž(����n��L��L���L���q��H��(�����f��H��0����f��H�3E1�E1�H�
����L���f��L����^��L�cxH�CxM��tL����^���L���L^��H�� ����`f��H�E�dH+%(��H��[A\A]A^]�DH�9BH�HH�zf�f�2H��H��f�q�H9�u�H�s0H�H.HcFL�4H��uFJ�1�.f�0H�HHcE�L�4H��uAJ�1�)1�f�H�� ���D�jf�H�;����H��H��L����\��H���@H��L��L����\��H���H��(����ye��H��0����me��H�� ����ae��H�E�dH+%(t"�_����H�����H������H����H���f�����UH��AVAUATI��SH��H��H�wdH�%(H�E�1�H��t(H�W`H��tH�ƠI�|$p�bn��H���H�����H�������ƃ�tƃ�ƃ�L��L��P������
L�����]��H�S0�E�H�HcRL�lD����\��H�� ���E���DL�+L��0���1ɺH�5!5L��HDž0�����k��L���L��H�� �����n��H��0���L��(����c��L�31ɺH�5@L��HDž0����k��1ɺL��H�5�1HDž(����rk��L��L���L���_n��H��(����c��H��0����c��H�3E1�E1�H�
����L���Zc��L���[��L�cxH�CxM��tL���[���L���[��H�� ����0c��H�E�dH+%(��H��[A\A]A^]�DH�	?H�HH�zf�f�2H��H��f�q�H9�u�H�s0H�H.HcFL�4H��uFJ�1�.f�0H�HHcE�L�4H��uAJ�1�)1�f�H�� ���D�jf�H�;����H��H��L���Y��H���@H��L��L���Y��H���H��(����Ib��H��0����=b��H�� ����1b��H�E�dH+%(t"��\����H�����H������H����H����b�����H�H�wH��0H9�tH��H���Y���f.�D��UH��AWAVAUATI��SH��H��L�wHH�w(H�G0H+G8H���������M��H��I)�H��L��H��I��H��H��H�IH��H�C H+CH��H��H�H�fffffffH9��IH�H�{L��H)�I��H��I)�I��������Y��I�FA�$L�k0A�EA�D$A�E���/A�D$ H�SHA�$A�D$ A�E H�BH��fHn�fHn�H�fl�C0fHn�fl�C@H��[A\A]A^A_]�DL�zK�?H9���H���&H��L�4?L��H��<�!H���Y��H��H�E�L��L)�H��L�<�H�CHH�s(H�PH)�H����L����X��H�CH�;H�4���W��H�E�L�sH�I�H�CO�4/H�H�C I�L�{(H���fHn�L�sHfHn�fl�C8���fDI�t$I�}��f��A�E����L)�I�VH��H)�L�<�I9�sH��~zL���<X��I��s���@K�|/H��~FH)��X��I��T���D�A����I��=tA�\��D����H�I��������H�H�G�I��	�������H�I�����tV��H�=e*�^�����UH��AVAUATI��SH��H����H��I��H��<��L�4�L���QW��L��1�H��I���Y��M�T$0I�t$I�D$H��taE1�M�L$��H�H�H�H�H��t?H��1�H�6H�A@H��I�D�H�8H��u�I�|$H�9I�L$L�H�9tK�L�I��H��u�I�<$I�t$L9�t	H����U��I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�5[���@U����H����T��I�EI�D$(�b����H���
a��H���^��f���UH��AWI��AVAUATI��SH��(dH�%(H�E�H�HcX��~%H�Xf�H��H��H���XH�H9�u�H��1�I�t$I�$L��I��L�,�M����M�0I�N@�.f�I�6H����H�N@1�M��H��I�t$I9�uvI��H9�u�I�?I�V�w;ru�L�M�H9�tH��H����L�E��W��L�E�L�M���u�I�H��t/L�xH�E�dH+%(�0H��(L��[A\A]A^A_]�fD�H�U��I�?H�I��H�xM�~�W��1�f�L��A�F fA�F8AFAF(�h��I�D$(f�I�T$A�F I�t$AF(I�|$ �H�E��d��H�ք�u5I�$I�^@I�I�EH��tAH�I�I�EL�0I�D$�&���f�H�U�L������H��1�I�t$L�,��I�D$M�t$I�H��tH�@@1�I�t$L�4�I�D$I�E���^��H�E�dH+%(tv�U����H���	��H���2I�~�0[��H���HR���HL���R��H�E�dH+%(u��g_��L���b��I�~�Z���HL����R��H�E�dH+%(u�H����[����H���b���fD��UH��AUI��ATSH��H�_H��t/I��H�I�|$�b��I�|$�Z���HL���YR��H��u�I�EI�}1�H���MU��I�EI�EH��[A\A]]�f���UH��AWAVAUATSH��8H�O0H�G(H�}�H�WHL�o8H�M�H�O L�`H�U�H�_H�M�H�E�I9�sJfDM�<$M����I��(M9�tA�t�A�GI�I��(�>a��M9�u�H�E�I��I9�r�H�M�H9M���H�E�H9�u�5H��(H9]�t(�{t��CH�{��`����A�EI�}��`��I��(L9m�tA�}t����H�E�H�8H��tXH�E�H�HHH�X(L�aH�M�L9�s H�;��H����P��L9�r�H�E�H�8H�E�H�pH��8[A\H��A]A^A_]��P��H��8[A\A]A^A_]�H�E�H9�u�f.�H��(H9]��j����{t��CH�{�`������H��H���com.sun.star.comp.Draw.SVGFiltercom.sun.star.document.ImportFiltercom.sun.star.document.ExportFiltercom.sun.star.document.ExtendedTypeDetectioncom.sun.star.beans.PropertyValuecom.sun.star.beans.PropertyStatecom.sun.star.beans.XPropertySetcom.sun.star.beans.XPropertySet::getPropertySetInfocom.sun.star.beans.XPropertySet::setPropertyValuecom.sun.star.beans.XPropertySet::getPropertyValuecom.sun.star.beans.XPropertySet::addPropertyChangeListenercom.sun.star.beans.XPropertySet::removePropertyChangeListenercom.sun.star.beans.XPropertySet::addVetoableChangeListenercom.sun.star.beans.XPropertySet::removeVetoableChangeListenercom.sun.star.beans.UnknownPropertyExceptioncom.sun.star.beans.PropertyVetoExceptioncom.sun.star.lang.IllegalArgumentExceptioncom.sun.star.lang.WrappedTargetExceptioncom.sun.star.beans.XPropertySetInfocom.sun.star.beans.XPropertyChangeListenercom.sun.star.beans.XVetoableChangeListenercom.sun.star.view.XSelectionSuppliercom.sun.star.frame.XControllercom.sun.star.drawing.XDrawPagesSuppliercom.sun.star.drawing.XDrawPagecom.sun.star.drawing.XDrawViewcom.sun.star.drawing.framework.XControllerManagerprivate:resource/view/SlideSortercom.sun.star.drawing.XMasterPagesSuppliercom.sun.star.drawing.XMasterPageTarget./include/com/sun/star/uno/Reference.hxxstatic interface_type* com::sun::star::uno::Reference< <template-parameter-1-1> >::iset_throw(interface_type*) [with interface_type = com::sun::star::frame::XController]static interface_type* com::sun::star::uno::Reference< <template-parameter-1-1> >::iset_throw(interface_type*) [with interface_type = com::sun::star::frame::XFrame]./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/frame/Desktop.hppstatic com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> com::sun::star::frame::Desktop::create(const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>&)static com::sun::star::uno::XInterface* com::sun::star::uno::BaseReference::iquery_throw(com::sun::star::uno::XInterface*, const com::sun::star::uno::Type&)com.sun.star.document.XImportercom.sun.star.document.XExportercom.sun.star.document.XExtendedFilterDetectioncom.sun.star.lang.XTypeProvidercom.sun.star.lang.XTypeProvider::getTypescom.sun.star.lang.XTypeProvider::getImplementationIdcom.sun.star.uno.RuntimeExceptioncom.sun.star.lang.XServiceInfocom.sun.star.lang.XServiceInfo::getImplementationNamecom.sun.star.lang.XServiceInfo::supportsServicecom.sun.star.lang.XServiceInfo::getSupportedServiceNamescom.sun.star.uno.DeploymentExceptioncomponent context fails to supply service com.sun.star.drawing.framework.XResourceIdcom.sun.star.container.XEnumerationAccesscom.sun.star.container.XElementAccesscom.sun.star.container.XElementAccess::getElementTypecom.sun.star.container.XElementAccess::hasElementscom.sun.star.container.XEnumerationAccess::createEnumerationcom.sun.star.container.XEnumerationcom.sun.star.container.XEnumeration::hasMoreElementscom.sun.star.container.XEnumeration::nextElementcom.sun.star.container.NoSuchElementExceptioncom.sun.star.xml.sax.XExtendedDocumentHandlerhttp://xml.openoffice.org/svg/exporthttp://sun.com/xmlns/staroffice/presentationhttp://www.w3.org/2001/SMIL20/urn:oasis:names:tc:opendocument:xmlns:animation:1.0urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0urn:oasis:names:tc:opendocument:xmlns:office:1.0urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0com.sun.star.animations.XAnimationNodeSuppliercom.sun.star.animations.XAnimationNodeM 580,1141 L 1163,571 580,0 -4,571 580,1141 ZM 8,1128 L 1137,1128 1137,0 8,0 8,1128 ZM 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 ZM 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 ZM 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 ZM 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 ZM 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 ZM 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 ZM -4,459 L 1135,459 1135,606 -4,606 -4,459 ZM 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Zcom.sun.star.drawing.FillStylecom.sun.star.drawing.GraphicObjectShapecom.sun.star.lang.XComponent::disposecom.sun.star.lang.XComponent::addEventListenercom.sun.star.lang.XComponent::removeEventListenercom.sun.star.lang.XEventListenercannot create std::vector larger than max_size()com.sun.star.presentation.XPresentationSuppliercom.sun.star.task.XStatusIndicatorcom.sun.star.text.TextGraphicObjectstatic interface_type* com::sun::star::uno::Reference< <template-parameter-1-1> >::iset_throw(interface_type*) [with interface_type = com::sun::star::container::XEnumeration]./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/drawing/ShapeCollection.hppstatic com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> com::sun::star::drawing::ShapeCollection::create(const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>&)./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/xml/sax/Writer.hppstatic com::sun::star::uno::Reference<com::sun::star::xml::sax::XWriter> com::sun::star::xml::sax::Writer::create(const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>&)./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/drawing/GraphicExportFilter.hppstatic com::sun::star::uno::Reference<com::sun::star::drawing::XGraphicExportFilter> com::sun::star::drawing::GraphicExportFilter::create(const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>&)com.sun.star.lang.XInitializationcom.sun.star.lang.XInitialization::initializecom.sun.star.drawing.GraphicExportFiltercom.sun.star.drawing.XGraphicExportFiltercom.sun.star.drawing.ShapeCollectioncom.sun.star.comp.Draw.SVGWritercom.sun.star.text.XTextContentcom.sun.star.container.XIndexReplacecannot create std::deque larger than max_size()com.sun.star.document.XFilterlongHandleDIRECT_VALUEDEFAULT_VALUEAMBIGUOUS_VALUEStateaPropertyNameaValuevoidxListeneraListenerSelectionOnlycom.sun.star.frame.XFramecom.sun.star.drawing.XShapescom.sun.star.io.XInputStreamPagePosIsPreviewFilterNameimpress_svg_Exportwriter_svg_Exportcalc_svg_Exportdraw_svgz_Export[]type[]byteServiceNameboolean[]stringcom.sun.star.frame.Desktopcom.sun.star.frame.XDesktop2 of type com.sun.star.lang.XUnoTunnelvector::_M_realloc_insertvector::_M_default_appendFooterFieldFixedTextFieldVariableTextFieldFixedDateTimeFieldVariableDateTimeFieldclassBackgroundBitmapsdefs#bitmap(BackgroundPatternsbg-pattern.heightuserSpaceOnUsepatternUnitspattern scale(transformxlink:hrefuse0nonestrokefillrectdrawing.GroupShapedrawing.GraphicObjectShapedrawing.OLE2ShapeOLE2drawing.TextShapepresentation.HeaderShapeHeaderpresentation.FooterShapeFooterpresentation.DateTimeShapeDateTimepresentation.SlideNumberShapePageNumberpresentation.TitleTextShapeTitleTextpresentation.OutlinerShapeOutlineIsBackgroundVisibleIsBackgroundObjectsVisibleIsPageNumberVisibleIsHeaderVisibleIsFooterVisibleIsDateTimeVisibleIsDateTimeFixedDateTimeFormatTextEmbeddedBitmapsBoundRectcom.sun.star.awt.Rectangletext/ecmascript1.2versiontinybaseProfile0 0 viewBoxxMidYMidpreserveAspectRatioevenoddfill-rulestroke-widthstroke-linejoinxmlnsxmlns:ooohttp://www.w3.org/1999/xlinkxmlns:xlinkxmlns:presentationxmlns:smilxmlns:animxmlns:svgpreservexml:spaceClipPathGrouppresentation_clip_pathclipPathUnitsclipPathpresentation_clip_path_shrinkxmlns:officepresentation-animationsTransitionTypeAnimations1.1EmbeddedBulletCharsSVG_DISABLE_FONT_EMBEDDINGTextShapeIndexIsEmptyPresentationObjecthiddenvisibilityParaAdjustleftcenterrightTitletitleDescriptiondescBookmarkBoundingBoxcom.sun.star.drawing.XShapeMaster_SlidePageSlideBackgroundBackgroundObjectsbg-dummy-master-pagebo-dummy-master-pagecontainer-DummySlidedummy-slideclip-pathdummy-pageSlideGroupSTR_FILTER_DOC_SAVINGSaving: flttruealpha-upperalpha-lowerroman-upperroman-lowerfalseLinkDisplayNameFillStylevisibleDateTimeTextFooterTextChangeHighResDurationTransitionSubtypecom.sun.star.graphic.XGraphiccom.sun.star.text.XTextXTEXT_PAINTSHAPE_BEGINXTEXT_PAINTSHAPE_END-variable0123456789.:/-APMQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmIVXLCDMivxlcdm0123456789SVMcom.sun.star.io.XOutputStreamExportOnlyBackgroundcom.sun.star.lang.XComponentFillBitmapTileFillBitmapOffsetXFillBitmapOffsetYWidthHeightFileNameFilterDataStatusIndicatorGraphicPreviewTransformedGraphiccom.sun.star.container.XNamedaArguments[]anycom.sun.star.uno.Exceptioncom.sun.star.xml.sax.Writercom.sun.star.xml.sax.XWriterunicodehoriz-adv-x embeddedEmbeddedFont_fontboldnormalitalicfont-familyunits-per-emfont-weightfont-styleascentdescentfont-facemissing-glyphcom.sun.star.svg.XSVGWritercom.sun.star.svg.SVGWriterrgb(Gradient_radialGradientfill-opacitystroke-opacity, monospace, serif, sans-serifobliqueunderline line-through XTEXT_EOPunderlineline-throughTextPositionHyperlinkIdListC L  Zembedded-bitmap(EmbeddedBitmapellipsemiterbevelsquarestroke-dasharraystop-color:gradientfill:url(#com.sun.star.text.ParagraphNumberingLevelNumberingRulesNumberingIsNumberNumberingTypeBulletCharcom.sun.star.text.Tablecom.sun.star.text.XTextRangeTextParagraphTextPortionTypecom.sun.star.text.XTextFieldIsFixedIsDatePageNamePageCountURLbullet-styleimage-stylenumber-styleooo:numbering-typeListItemSVGTextShape)rotate(translate(bullet-char-#bullet-char-template-.bpBulletPlaceholderPlaceholderTextUrlFieldwhite-space: pre
	vector::reservedata:image/jpeg;base64,data:image/png;base64,http://www.w3.org/2000/svgimageoverflowforeignObjecthttp://www.w3.org/1999/xhtmlbodyautoplaycontrolsloopautopreloadpostervideosrcvideo/mp4sourceBGRAD_SEQ_BEGINBGRAD_SEQ_ENDXGRAD_SEQ_BEGINXGRAD_SEQ_ENDXPATHFILL_SEQ_BEGINXPATHSTROKE_SEQ_BEGINXPATHFILL_SEQ_ENDXPATHSTROKE_SEQ_ENDXTEXT_EOLopacity: maskmask:url(#bitmap-placeholder(BitmapPlaceholderN3com3sun4star3uno10XInterfaceEN3com3sun4star3uno16RuntimeExceptionEN3com3sun4star3uno9ExceptionEN3com3sun4star3uno19DeploymentExceptionEN3com3sun4star4lang13XTypeProviderEN3com3sun4star8document7XFilterEN3com3sun4star8document9XImporterEN3com3sun4star8document9XExporterEN3com3sun4star8document24XExtendedFilterDetectionEN3com3sun4star4lang12XServiceInfoEN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE9SVGFilterN3com3sun4star2io11IOExceptionE@svg_Scalable_Vector_Graphics@!svg_Scalable_Vector_Graphics_Draw@InputStream�?�?�����A����?{�G�z�?F���8<@@?��������@�@0C{�G�zt?�C���������������?�p=
ף�?�@��@ffffff@�?, )M P��P���O���O���O��0P��0P���<��CP��*N12_GLOBAL__N_19TextFieldE*N12_GLOBAL__N_114FixedTextFieldE*N12_GLOBAL__N_118FixedDateTimeFieldE*N12_GLOBAL__N_111FooterFieldE*N12_GLOBAL__N_117VariableTextFieldE*N12_GLOBAL__N_121VariableDateTimeFieldE@ooo:slide-duration@ooo:display-name@ooo:has-custom-background@UsePositionedCharacters@Opacity@UseNativeTextDecoration@
EmbedFonts@	DTDString@TinyMode

ElapsedTime.prototype.getTimeBase = function()
{
return this.aTimeBase;
};

ElapsedTime.prototype.reset = function()
{
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
};

ElapsedTime.prototype.getElapsedTime = function()
{
this.nLastQueriedTime = this.getElapsedTimeImpl();
return this.nLastQueriedTime;
};

ElapsedTime.prototype.pauseTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
this.bInPauseMode = true;
};

ElapsedTime.prototype.continueTimer = function()
{
this.bInPauseMode = false;

var nPauseDuration = this.getElapsedTimeImpl() - this.nFrozenTime;

this.nStartTime += nPauseDuration;
};

ElapsedTime.prototype.adjustTimer = function( nOffset, bLimitToLastQueriedTime )
{
if( bLimitToLastQueriedTime == undefined )
bLimitToLastQueriedTime = true;

this.nStartTime -= nOffset;

if( this.bInHoldMode || this.bInPauseMode )
this.nFrozenTime += nOffset;
};

ElapsedTime.prototype.holdTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
this.bInHoldMode = true;
};

ElapsedTime.prototype.releaseTimer = function()
{
this.bInHoldMode = false;
};

ElapsedTime.prototype.getSystemTime = function()
{
return ( getCurrentSystemTime() / 1000.0 );
};

ElapsedTime.prototype.getCurrentTime = function()
{
var nCurrentTime;
if ( !this.aTimeBase )
{
nCurrentTime = this.getSystemTime();
}
else
{
nCurrentTime = this.aTimeBase.getElapsedTimeImpl();
}

assert( ( typeof( nCurrentTime ) === typeof( 0 ) ) && isFinite( nCurrentTime ),
'ElapsedTime.getCurrentTime: assertion failed: nCurrentTime == ' + nCurrentTime );


return nCurrentTime;
};

ElapsedTime.prototype.getElapsedTimeImpl = function()
{
if( this.bInHoldMode || this.bInPauseMode )
{
return this.nFrozenTime;
}

var nCurTime = this.getCurrentTime();
return ( nCurTime - this.nStartTime );
};


/*****
* @libreofficeend
*
* Several parts of the above code are the result of the porting,
* started on August 2011, of the C++ code included in the source files
* placed under the folder '/slideshow/source' and subfolders.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/

]]>}
else if ( aLhsEventEntry.nActivationTime < aRhsEventEntry.nActivationTime )
{
return 1;
}
else
{
return 0;
}
};


function ActivityQueue( aTimer )
{
this.aTimer = aTimer;
this.aCurrentActivityWaitingSet = [];
this.aCurrentActivityReinsertSet = [];
this.aDequeuedActivitySet = [];
}


ActivityQueue.prototype.dispose = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dispose();

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dispose();
};

ActivityQueue.prototype.addActivity = function( aActivity )
{
if( !aActivity )
{
log( 'ActivityQueue.addActivity: activity is not valid' );
return false;
}

this.aCurrentActivityWaitingSet.push( aActivity );
aActivityQueueDebugPrinter.print( 'ActivityQueue.addActivity: activity appended' );
return true;
};

ActivityQueue.prototype.process = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var nLag = 0.0;
for( var i = 0; i < nSize; ++i )
{
nLag = Math.max( nLag,this.aCurrentActivityWaitingSet[i].calcTimeLag()  );
}

if( nLag > 0.0 )
this.aTimer.adjustTimer( -nLag, true );


while( this.aCurrentActivityWaitingSet.length != 0 )
{
var aActivity = this.aCurrentActivityWaitingSet.shift();
var bReinsert = false;

bReinsert = aActivity.perform();

if( bReinsert )
{
this.aCurrentActivityReinsertSet.push( aActivity );
}
else
{
this.aDequeuedActivitySet.push( aActivity );
}
}

if( this.aCurrentActivityReinsertSet.length != 0 )
{
this.aCurrentActivityWaitingSet = this.aCurrentActivityReinsertSet;
this.aCurrentActivityReinsertSet = [];
}
};

ActivityQueue.prototype.processDequeued = function()
{
var nSize = this.aDequeuedActivitySet.length;
for( var i = 0; i < nSize; ++i )
this.aDequeuedActivitySet[i].dequeued();

this.aDequeuedActivitySet = [];
};

ActivityQueue.prototype.isEmpty = function()
{
return ( ( this.aCurrentActivityWaitingSet.length == 0 ) &&
( this.aCurrentActivityReinsertSet.length == 0 ) );
};

ActivityQueue.prototype.clear = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.clear invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dequeued();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dequeued();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.endAll = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.endAll invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].end();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].end();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.getTimer = function()
{
return this.aTimer;
};

ActivityQueue.prototype.size = function()
{
return ( this.aCurrentActivityWaitingSet.length +
this.aCurrentActivityReinsertSet.length +
this.aDequeuedActivitySet.length );
};


function ElapsedTime( aTimeBase )
{
this.aTimeBase = aTimeBase;
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
}
{
this.bIsActive = false;
};


function NextEffectEventArray()
{
this.aEventArray = [];
}


NextEffectEventArray.prototype.size = function()
{
return this.aEventArray.length;
};

NextEffectEventArray.prototype.at = function( nIndex )
{
return this.aEventArray[ nIndex ];
};

NextEffectEventArray.prototype.appendEvent = function( aEvent )
{
var nSize = this.size();
for( var i = 0; i < nSize; ++i )
{
if( this.aEventArray[i].getId() == aEvent.getId() )
{
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') already present' );
return false;
}
}
this.aEventArray.push( aEvent );
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') appended' );
return true;
};

NextEffectEventArray.prototype.clear = function( )
{
this.aEventArray = [];
};


function TimerEventQueue( aTimer )
{
this.aTimer = aTimer;
this.aEventSet = new PriorityQueue( EventEntry.compare );
}


TimerEventQueue.prototype.addEvent = function( aEvent )
{
this.DBG( 'TimerEventQueue.addEvent event(' + aEvent.getId() + ') appended.' );
if( !aEvent )
{
log( 'TimerEventQueue.addEvent: null event' );
return false;
}

var nTime = aEvent.getActivationTime( this.aTimer.getElapsedTime() );
var aEventEntry = new EventEntry( aEvent, nTime );
this.aEventSet.push( aEventEntry );

return true;
};

TimerEventQueue.prototype.forceEmpty = function()
{
this.process_(true);
};


TimerEventQueue.prototype.process = function()
{
this.process_(false);
};

TimerEventQueue.prototype.process_ = function( bFireAllEvents )
{
var nCurrentTime = this.aTimer.getElapsedTime();

while( !this.isEmpty() && ( bFireAllEvents || ( this.aEventSet.top().nActivationTime <= nCurrentTime ) ) )
{
var aEventEntry = this.aEventSet.top();
this.aEventSet.pop();

var aEvent = aEventEntry.aEvent;
if( aEvent.isCharged() )
aEvent.fire();
}
};

TimerEventQueue.prototype.isEmpty = function()
{
return this.aEventSet.isEmpty();
};

TimerEventQueue.prototype.nextTimeout = function()
{
var nTimeout = Number.MAX_VALUE;
var nCurrentTime = this.aTimer.getElapsedTime();
if( !this.isEmpty() )
nTimeout = this.aEventSet.top().nActivationTime - nCurrentTime;
return nTimeout;
};

TimerEventQueue.prototype.clear = function()
{
this.DBG( 'TimerEventQueue.clear invoked' );
this.aEventSet.clear();
};

TimerEventQueue.prototype.getTimer = function()
{
return this.aTimer;
};

TimerEventQueue.prototype.DBG = function( sMessage, nTime )
{
aTimerEventQueueDebugPrinter.print( sMessage, nTime );
};


TimerEventQueue.prototype.insert = function( aEventEntry )
{
var nHoleIndex = this.aEventSet.length;
var nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );

while( ( nHoleIndex > 0 ) && this.aEventSet[ nParent ].compare( aEventEntry ) )
{
this.aEventSet[ nHoleIndex ] = this.aEventSet[ nParent ];
nHoleIndex = nParent;
nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );
}
this.aEventSet[ nHoleIndex ] = aEventEntry;
};


function EventEntry( aEvent, nTime )
{
this.aEvent = aEvent;
this.nActivationTime = nTime;
}


EventEntry.compare = function( aLhsEventEntry, aRhsEventEntry )
{
if ( aLhsEventEntry.nActivationTime > aRhsEventEntry.nActivationTime )
{
return -1;
if( nOldSlide > nNewSlide )
{
this.aSlideViewElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', this.aSlideViewElement, 'href', '#' + aOldMetaSlide.slideContainerId );
aNewMetaSlide.aVisibilityStatusElement.parentNode.insertBefore( this.aSlideViewElement, aNewMetaSlide.aVisibilityStatusElement );
aOldMetaSlide.hide();
}

var aLeavingSlide = aOldMetaSlide;
var aEnteringSlide = aNewMetaSlide;
var aTransitionEndEvent = makeEvent( bind2( this.notifyTransitionEnd, this, nNewSlide ) );

var aTransitionActivity =
this.createSlideTransition( aSlideTransitionHandler, aLeavingSlide,
aEnteringSlide, aTransitionEndEvent );

if( aTransitionActivity )
{
this.bIsTransitionRunning = true;
this.aActivityQueue.addActivity( aTransitionActivity );
this.update();
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}

};

SlideShow.prototype.update = function()
{
this.aTimer.holdTimer();

this.aTimerEventQueue.process();
this.aActivityQueue.process();

this.aFrameSynchronization.synchronize();

this.aActivityQueue.processDequeued();

this.aTimer.releaseTimer();

var bActivitiesLeft = ( ! this.aActivityQueue.isEmpty() );
var bTimerEventsLeft = ( ! this.aTimerEventQueue.isEmpty() );
var bEventsLeft = ( bActivitiesLeft || bTimerEventsLeft );


if( bEventsLeft )
{
var nNextTimeout;
if( bActivitiesLeft )
{
nNextTimeout = MINIMUM_TIMEOUT;
this.aFrameSynchronization.activate();
}
else
{
nNextTimeout = this.aTimerEventQueue.nextTimeout();
if( nNextTimeout < MINIMUM_TIMEOUT )
nNextTimeout = MINIMUM_TIMEOUT;
else if( nNextTimeout > MAXIMUM_TIMEOUT )
nNextTimeout = MAXIMUM_TIMEOUT;
this.aFrameSynchronization.deactivate();
}

this.bIsIdle = false;
window.setTimeout( 'aSlideShow.update()', nNextTimeout * 1000 );
}
else
{
this.bIsIdle = true;
}
};

SlideShow.prototype.dispose = function()
{
this.aTimerEventQueue.clear();
this.aActivityQueue.clear();
this.aNextEffectEventArray = null;
this.aEventMultiplexer = null;
};

SlideShow.prototype.getContext = function()
{
return this.aContext;
};

var aSlideShow = null;


function SlideShowContext( aTimerEventQueue, aEventMultiplexer, aNextEffectEventArray, aInteractiveAnimationSequenceMap, aActivityQueue)
{
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMultiplexer = aEventMultiplexer;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aActivityQueue = aActivityQueue;
this.bIsSkipping = false;
}


function FrameSynchronization( nFrameDuration )
{
this.nFrameDuration = nFrameDuration;
this.aTimer = new ElapsedTime();
this.nNextFrameTargetTime = 0.0;
this.bIsActive = false;

this.markCurrentFrame();
}


FrameSynchronization.prototype.markCurrentFrame = function()
{
this.nNextFrameTargetTime = this.aTimer.getElapsedTime() + this.nFrameDuration;
};

FrameSynchronization.prototype.synchronize = function()
{
if( this.bIsActive )
{
while( this.aTimer.getElapsedTime() < this.nNextFrameTargetTime )
;
}

this.markCurrentFrame();

};

FrameSynchronization.prototype.activate = function()
{
this.bIsActive = true;
};

FrameSynchronization.prototype.deactivate = function()
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
}
this.update();

i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
}
}
else  // there is no playing effect
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
if( aEffect.isEnded() )  // Well that is almost an assertion.
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
}

this.bIsRewinding = false;
};

SlideShow.prototype.rewindToPreviousSlide = function()
{
if( this.isTransitionPlaying() )
{
this.rewindTransition();
return;
}
if( this.isAnyEffectPlaying() )
return;
var nNewSlide = nCurSlide - 1;
this.displaySlide( nNewSlide, true );
this.skipAllEffects();
};

SlideShow.prototype.rewindAllEffects = function()
{
if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

while( this.hasAnyEffectStarted() )
{
this.rewindEffect();
}
};

SlideShow.prototype.exitSlideShowInApp = function()
{
if (window.webkit !== undefined &&
window.webkit.messageHandlers !== undefined &&
window.webkit.messageHandlers.lok !== undefined)
window.webkit.messageHandlers.lok.postMessage('EXITSLIDESHOW', '*');
}

SlideShow.prototype.displaySlide = function( nNewSlide, bSkipSlideTransition )
{
var aMetaDoc = theMetaDoc;
var nSlides = aMetaDoc.nNumberOfSlides;
if( nNewSlide < 0 && nSlides > 0 )
nNewSlide = nSlides - 1;
else if( nNewSlide >= nSlides ) {
nNewSlide = 0;
this.exitSlideShowInApp();
}

if( ( currentMode === INDEX_MODE ) && ( nNewSlide === nCurSlide ) )
{
aMetaDoc.getCurrentSlide().show();
return;
}

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

var nOldSlide = nCurSlide;
if( nOldSlide !== undefined )
{
var oldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
if( this.isEnabled() )
{
if( oldMetaSlide.aSlideAnimationsHandler.isAnimated() )
{
oldMetaSlide.aSlideAnimationsHandler.end( bSkipSlideTransition );

this.dispose();
}
}

if( this.automaticAdvanceTimeout !== null )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = null;
}
}

this.notifySlideStart( nNewSlide, nOldSlide );

if( this.isEnabled() && !bSkipSlideTransition  )
{
if ( ( ( nOldSlide !== undefined ) &&
( ( nNewSlide > nOldSlide ) ||
( ( nNewSlide == 0) && ( nOldSlide == (aMetaDoc.nNumberOfSlides - 1) ) ) ) ) ||
(  ( nOldSlide === undefined ) &&  ( nNewSlide == 0) )  // for transition on first slide
)
{

var aOldMetaSlide = null;
if( nOldSlide === undefined ) // for transition on first slide
{
aOldMetaSlide = aMetaDoc.theMetaDummySlide;
}
else
{
aOldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
}
var aNewMetaSlide = aMetaDoc.aMetaSlideSet[nNewSlide];

var aSlideTransitionHandler = aNewMetaSlide.aTransitionHandler;
if( aSlideTransitionHandler && aSlideTransitionHandler.isValid() )
{
var sRef = 'url(#' + aPresentationClipPathShrinkId + ')';
aOldMetaSlide.slideElement.setAttribute( 'clip-path', sRef );

{
if( aEffect.isMainEffect() )
this.aEventMultiplexer.notifySkipEffectEvent();
else
this.aEventMultiplexer.notifySkipInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipNextEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

assert( !this.isAnyEffectPlaying(),
'SlideShow.skipNextEffect' );

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.bIsSkipping = true;
this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
this.aEventMultiplexer.notifySkipEffectEvent();
++this.nCurrentEffect;
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipPlayingOrNextEffect = function()
{
if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
return this.skipAllPlayingEffects();
else
return this.skipNextEffect();
};


SlideShow.prototype.skipAllEffects = function()
{
if( this.bIsSkippingAll )
return true;

this.bIsSkippingAll = true;

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
}
else if( !this.aNextEffectEventArray
|| ( this.nCurrentEffect >= this.aNextEffectEventArray.size() ) )
{
this.bIsSkippingAll = false;
return false;
}

while( this.nCurrentEffect < this.aNextEffectEventArray.size() )
{
this.skipNextEffect();
}
this.bIsSkippingAll = false;
return true;
};

SlideShow.prototype.rewindTransition = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsRewinding = true;
this.aActivityQueue.endAll();
this.update();
this.bIsRewinding = false;
};

SlideShow.prototype.rewindEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

if( this.automaticAdvanceTimeout !== null && !this.automaticAdvanceTimeout['rewindedEffect'] )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = { 'rewindedEffect': this.nCurrentEffect };
}

if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

this.bIsRewinding = true;

var nFirstPlayingEffectIndex = undefined;

var i = 0;
for( ; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
nFirstPlayingEffectIndex = i;
break;
}
}

if( nFirstPlayingEffectIndex !== undefined )
{
i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindCurrentEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindRunningInteractiveEffectEvent( aEffect.getId() );
}
}
else if( aEffect.isEnded() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
var nTimeout = Math.ceil(theMetaDoc.aMetaSlideSet[nCurSlide].fDuration * 1000);
if( nTimeout < 0 )
return;

this.automaticAdvanceTimeout = window.setTimeout('switchSlide(1, false)', nTimeout);
};

SlideShow.prototype.notifySlideStart = function( nNewSlideIndex, nOldSlideIndex )
{
this.nCurrentEffect = 0;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;

var aAnimatedElementMap;
var sId;
if( nOldSlideIndex !== undefined )
{
aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nOldSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideEnd();
}

aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nNewSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideStart( this.aContext );
};

SlideShow.prototype.notifyTransitionEnd = function( nSlideIndex )
{
if( theMetaDoc.getCurrentSlide() )
{
var sRef = 'url(#' + aPresentationClipPathId + ')';
theMetaDoc.getCurrentSlide().slideElement.setAttribute('clip-path', sRef);
}

this.bIsTransitionRunning = false;
if( this.bIsRewinding )
{
theMetaDoc.aMetaSlideSet[nSlideIndex].hide();
var nIndex = nCurSlide !== undefined ? nCurSlide : -1;
this.displaySlide( nIndex, true );
this.skipAllEffects();
this.bIsRewinding = false;
return;
}

theMetaDoc.setCurrentSlide(nSlideIndex);

if( this.aSlideViewElement )
{
theMetaDoc.getCurrentSlide().aVisibilityStatusElement.parentNode.removeChild( this.aSlideViewElement );
this.aSlideViewElement = null;
}
if( this.isEnabled() )
{
this.dispose();

var aCurrentSlide = theMetaDoc.getCurrentSlide();
if( aCurrentSlide.aSlideAnimationsHandler.elementsParsed() )
{
aCurrentSlide.aSlideAnimationsHandler.start();
this.aEventMultiplexer.registerAnimationsEndHandler( bind2( SlideShow.prototype.notifyAnimationsEnd, this ) );
}
else
this.notifyAnimationsEnd();

this.update();
}
else
this.notifyAnimationsEnd();
};

SlideShow.prototype.notifyInteractiveAnimationSequenceStart = function( nNodeId )
{
++this.nTotalInteractivePlayingEffects;
var aEffect = new Effect( nNodeId );
aEffect.start();
this.aStartedEffectIndexMap[ nNodeId ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );
};

SlideShow.prototype.notifyInteractiveAnimationSequenceEnd = function( nNodeId )
{
assert( this.isInteractiveEffectPlaying(),
'SlideShow.notifyInteractiveAnimationSequenceEnd: no interactive effect playing.' );

this.aStartedEffectList[ this.aStartedEffectIndexMap[ nNodeId ] ].end();
--this.nTotalInteractivePlayingEffects;
};

SlideShow.prototype.nextEffect = function()
{
if( !this.isEnabled() )
return false;

if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
return true;
}

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
++this.nCurrentEffect;
this.update();
return true;
};

SlideShow.prototype.skipTransition  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsSkipping = true;

this.aActivityQueue.endAll();
this.aTimerEventQueue.forceEmpty();
this.aActivityQueue.endAll();
this.update();
this.bIsSkipping = false;
};

SlideShow.prototype.skipAllPlayingEffects  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

this.bIsSkipping = true;
for( var i = 0; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
this.bIsNextEffectRunning = false;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;
this.automaticAdvanceTimeout = null;
}

SlideShow.prototype.setSlideEvents = function( aNextEffectEventArray,
aInteractiveAnimationSequenceMap,
aEventMultiplexer )
{
if( !aNextEffectEventArray )
log( 'SlideShow.setSlideEvents: aNextEffectEventArray is not valid' );

if( !aInteractiveAnimationSequenceMap )
log( 'SlideShow.setSlideEvents:aInteractiveAnimationSequenceMap  is not valid' );

if( !aEventMultiplexer )
log( 'SlideShow.setSlideEvents: aEventMultiplexer is not valid' );

this.aContext.aNextEffectEventArray = aNextEffectEventArray;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aContext.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aContext.aEventMultiplexer = aEventMultiplexer;
this.aEventMultiplexer = aEventMultiplexer;
this.nCurrentEffect = 0;
};

SlideShow.prototype.createSlideTransition = function( aSlideTransitionHandler, aLeavingSlide, aEnteringSlide, aTransitionEndEvent )
{
if( !aEnteringSlide )
{
log( 'SlideShow.createSlideTransition: entering slide element is not valid.' );
return null;
}

if( this.bNoSlideTransition ) return null;

var aAnimatedLeavingSlide = null;
if( aLeavingSlide )
aAnimatedLeavingSlide = new AnimatedSlide( aLeavingSlide );
var aAnimatedEnteringSlide = new AnimatedSlide( aEnteringSlide );

var aSlideTransition = aSlideTransitionHandler.createSlideTransition( aAnimatedLeavingSlide, aAnimatedEnteringSlide );
if( !aSlideTransition ) return null;

var nDuration = 0.001;
if( aSlideTransitionHandler.getDuration().isValue() )
{
nDuration = aSlideTransitionHandler.getDuration().getValue();
}
else
{
log( 'SlideShow.createSlideTransition: duration is not a number' );
}

var aCommonParameterSet = new ActivityParamSet();
aCommonParameterSet.aEndEvent = aTransitionEndEvent;
aCommonParameterSet.aTimerEventQueue = this.aTimerEventQueue;
aCommonParameterSet.aActivityQueue = this.aActivityQueue;
aCommonParameterSet.nMinDuration = nDuration;
aCommonParameterSet.nMinNumberOfFrames = aSlideTransitionHandler.getMinFrameCount();
aCommonParameterSet.nSlideWidth = WIDTH;
aCommonParameterSet.nSlideHeight = HEIGHT;

return new SimpleActivity( aCommonParameterSet, aSlideTransition, FORWARD );

};

SlideShow.prototype.isEnabled = function()
{
return this.bIsEnabled;
};

SlideShow.prototype.isRunning = function()
{
return !this.bIsIdle;
};

SlideShow.prototype.isTransitionPlaying = function()
{
return this.bIsTransitionRunning;
};

SlideShow.prototype.isMainEffectPlaying = function()
{
return this.bIsNextEffectRunning;
};

SlideShow.prototype.isInteractiveEffectPlaying = function()
{
return ( this.nTotalInteractivePlayingEffects > 0 );
};

SlideShow.prototype.isAnyEffectPlaying = function()
{
return ( this.isMainEffectPlaying() || this.isInteractiveEffectPlaying() );
};

SlideShow.prototype.hasAnyEffectStarted = function()
{
return ( this.aStartedEffectList.length > 0 );
};

SlideShow.prototype.notifyNextEffectStart = function()
{
assert( !this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectStart: an effect is already started.' );
this.bIsNextEffectRunning = true;
this.aEventMultiplexer.registerNextEffectEndHandler( bind2( SlideShow.prototype.notifyNextEffectEnd, this ) );
var aEffect = new Effect();
aEffect.start();
this.aStartedEffectIndexMap[ -1 ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );

var aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler.aAnimatedElementMap;
for( var sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifyNextEffectStart( this.nCurrentEffect );
};

SlideShow.prototype.notifyNextEffectEnd = function()
{
assert( this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectEnd: effect already ended.' );
this.bIsNextEffectRunning = false;

this.aStartedEffectList[ this.aStartedEffectIndexMap[ -1 ] ].end();
if( this.automaticAdvanceTimeout !== null )
{
if( this.automaticAdvanceTimeout['rewindedEffect'] === this.nCurrentEffect )
{
this.automaticAdvanceTimeout = null;
this.notifyAnimationsEnd();
}
}
};

SlideShow.prototype.notifyAnimationsEnd = function()
{
if( nCurSlide + 1 === theMetaDoc.nNumberOfSlides )
return;

assert (this.automaticAdvanceTimeout === null,
'SlideShow.notifyAnimationsEnd: Timeout already set.')

case NUMBER_PROPERTY :
evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight );
break;
case BOOL_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
var aValue = booleanParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
case STRING_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case ENUM_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case COLOR_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValue = colorParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
case TUPLE_NUMBER_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
if( typeof aValueSet[i] === 'string' )
{
var aTuple = aValueSet[i].split(',');
aValue = [];
evalValuesAttribute(aValue, aTuple, aBBox, nSlideWidth, nSlideHeight);
aValueList.push(aValue);
}
else
{
aValueList.push( undefined );
}
}
break;
default:
log( 'createValueListActivity: unexpected value type: ' + eValueType );
}

}


function evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var width = aBBox.width / nSlideWidth;
var height = aBBox.height / nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / nSlideHeight;

var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;

for( var i = 0; i < aValueSet.length; ++i )
{
var sValue = aValueSet[i];
if(sValue)
{
sValue = sValue.replace(reMath, 'Math.$&');
sValue = sValue.replace(/pi(?!\w)/g, 'Math.PI');
sValue = sValue.replace(/e(?!\w)/g, 'Math.E');
}
var aValue =  eval( sValue );
aValueList.push( aValue );
}
}


var BACKWARD    = 0;
var FORWARD     = 1;

var MAXIMUM_FRAME_COUNT                 = 60;
var MINIMUM_TIMEOUT                     = 1.0 / MAXIMUM_FRAME_COUNT;
var MAXIMUM_TIMEOUT                     = 4.0;
var MINIMUM_FRAMES_PER_SECONDS          = 10;
var PREFERRED_FRAMES_PER_SECONDS        = 50;
var PREFERRED_FRAME_RATE                = 1.0 / PREFERRED_FRAMES_PER_SECONDS;


function Effect( nId )
{
this.nId = ( typeof( nId ) === typeof( 1 ) ) ? nId : -1;
this.eState = Effect.NOT_STARTED;
}
Effect.NOT_STARTED = 0;
Effect.PLAYING = 1;
Effect.ENDED = 2;

Effect.prototype.getId = function()
{
return this.nId;
};

Effect.prototype.isMainEffect = function()
{
return ( this.nId === -1 );
};

Effect.prototype.isPlaying = function()
{
return ( this.eState === Effect.PLAYING );
};

Effect.prototype.isEnded = function()
{
return ( this.eState === Effect.ENDED );
};

Effect.prototype.start = function()
{
assert( this.eState === Effect.NOT_STARTED, 'Effect.start: wrong state.' );
this.eState = Effect.PLAYING;
};

Effect.prototype.end = function()
{
assert( this.eState === Effect.PLAYING, 'Effect.end: wrong state.' );
this.eState = Effect.ENDED;
};


function SlideShow()
{
this.aTimer = new ElapsedTime();
this.aFrameSynchronization = new FrameSynchronization( PREFERRED_FRAME_RATE );
this.aTimerEventQueue = new TimerEventQueue( this.aTimer );
this.aActivityQueue = new ActivityQueue( this.aTimer );
this.aNextEffectEventArray = null;
this.aInteractiveAnimationSequenceMap = null;
this.aEventMultiplexer = null;

this.aContext = new SlideShowContext( this.aTimerEventQueue,
this.aEventMultiplexer,
this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aActivityQueue );
this.bIsIdle = true;
this.bIsEnabled = true;
this.bNoSlideTransition = false;
this.bIsTransitionRunning = false;

this.nCurrentEffect = 0;
}

aActivityParamSet.aDiscreteTimes = aAnimationNode.getKeyTimes();

var aValueSet = aAnimationNode.getValues();
var nValueSetSize = aValueSet.length;

if( nValueSetSize != 0 )
{

if( aActivityParamSet.aDiscreteTimes.length == 0 )
{
for( var i = 0; i < nValueSetSize; ++i )
aActivityParamSet.aDiscreteTimes[i].push( i / nValueSetSize );
}

switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );

return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteValueListActivity,
bAccumulate,
eValueType );

default:
log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearValueListActivity,
bAccumulate,
eValueType );
}
}
else
{
switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
log( 'createActivity: discrete calculation case not yet implemented' );
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteFromToByActivity,
bAccumulate,
eValueType );

default:
log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearFromToByActivity,
bAccumulate,
eValueType );
}
}
}


function createValueListActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{
var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createValueListActivity: no operator set found' );

var aValueSet = aAnimationNode.getValues();

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

for( var i = 0; i < aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + aValueList[i] );
}

return new ClassTemplateInstance( aValueList, aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function createFromToByActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createFromToByActivity: no operator set found' );

var aValueSet = [];
aValueSet[0] = aAnimationNode.getFromValue();
aValueSet[1] = aAnimationNode.getToValue();
aValueSet[2] = aAnimationNode.getByValue();

ANIMDBG.print( 'createFromToByActivity: value type: ' + aValueTypeOutMap[eValueType] +
', aFrom = ' + aValueSet[0] +
', aTo = ' + aValueSet[1] +
', aBy = ' + aValueSet[2] );

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

ANIMDBG.print( 'createFromToByActivity: ' +
', aFrom = ' + aValueList[0] +
', aTo = ' + aValueList[1] +
', aBy = ' + aValueList[2] );

return new ClassTemplateInstance( aValueList[0], aValueList[1], aValueList[2],
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function extractAttributeValues( eValueType, aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var i;
switch( eValueType )
{
{
ValueListActivity.superclass.activate.call( this, aEndEvent );
for( var i = 0; i < this.aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + this.aValueList[i] );
}
};

ValueListActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation )
{
var aValue = this.aValueList[0];
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform(aValue);
}
};

ValueListActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.startAnimation: activity disposed or not valid animation' );
return;
}

ValueListActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

ValueListActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();
};

ValueListActivity.prototype.performContinuousHook = function( nIndex, nFractionalIndex, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}

assert( ( nIndex + 1 ) < this.aValueList.length,
'ValueListActivity.performContinuousHook: assertion (nIndex + 1 < this.aValueList.length) failed' );


var aValue = this.aInterpolator( this.aValueList[ nIndex ],
this.aValueList[ nIndex+1 ],
nFractionalIndex );

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performDiscreteHook = function( nFrame, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performDiscreteHook: activity disposed or not valid animation' );
return;
}

assert( nFrame < this.aValueList.length,
'ValueListActivity.performDiscreteHook: assertion ( nFrame < this.aValueList.length) failed' );

var aValue = this.aValueList[nFrame];

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.aFormula ? this.aFormula( this.aLastValue ) : this.aLastValue;
this.aAnimation.perform( aValue );
}
};

ValueListActivity.prototype.dispose = function()
{
ValueListActivity.superclass.dispose.call( this );
};


return ValueListActivity;
}


var LinearValueListActivity = instantiate( ValueListActivityTemplate, ContinuousKeyTimeActivityBase );
var DiscreteValueListActivity = instantiate( ValueListActivityTemplate, DiscreteActivityBase );


function createActivity( aActivityParamSet, aAnimationNode, aAnimation, aInterpolator )
{
var eCalcMode = aAnimationNode.getCalcMode();

var sAttributeName = aAnimationNode.getAttributeName();
var aAttributeProp = aAttributeMap[ sAttributeName ];

var eValueType = aAttributeProp[ 'type' ];
var eValueSubtype = aAttributeProp[ 'subtype' ];

if( ! aInterpolator )
{
aInterpolator = aInterpolatorHandler.getInterpolator( eCalcMode,
eValueType,
eValueSubtype );
}

var bAccumulate = ( aAnimationNode.getAccumulate() === ACCUMULATE_MODE_SUM )
&& !( eValueType === BOOL_PROPERTY ||
eValueType === STRING_PROPERTY ||
eValueType === ENUM_PROPERTY );

if( aAnimationNode.getFormula() )
{
var sFormula =  aAnimationNode.getFormula();
var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;
sFormula = sFormula.replace(reMath, 'Math.$&');
sFormula = sFormula.replace(/pi(?!\w)/g, 'Math.PI');
sFormula = sFormula.replace(/e(?!\w)/g, 'Math.E');
sFormula = sFormula.replace(/\$/g, '__PARAM0__');

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aBBox = aAnimatedElement.getBaseBBox();

var width = aBBox.width / aActivityParamSet.nSlideWidth;
var height = aBBox.height / aActivityParamSet.nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / aActivityParamSet.nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / aActivityParamSet.nSlideHeight;

aActivityParamSet.aFormula = function( __PARAM0__ ) {

return eval(sFormula);
};
}

FromToByActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );


var aAnimationStartValue = this.aAnimation.getUnderlyingValue();

if( this.aFrom )
{
if( this.aTo )
{
this.aStartValue = this.aFrom;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = this.aFrom;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}
else
{
this.aStartValue = aAnimationStartValue;
this.aStartInterpolationValue = this.aStartValue;

if( this.aTo )
{

this.bDynamicStartValue = true;
this.aPreviousValue = this.aStartValue;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = aAnimationStartValue;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}

ANIMDBG.print( 'FromToByActivity.startAnimation: aStartValue = ' + this.aStartValue + ', aEndValue = ' + this.aEndValue );
};

FromToByActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();
};

FromToByActivity.prototype.performContinuousHook = function( nModifiedTime, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}


if( this.bDynamicStartValue )
{
if( this.nIteration != nRepeatCount )
{
this.nIteration = nRepeatCount;
this.aStartInterpolationValue =  this.aStartValue;
}
else
{
var aActualValue = this.aAnimation.getUnderlyingValue();
if( !this.equal( aActualValue, this.aPreviousValue ) )
this.aStartInterpolationValue = aActualValue;
}
}

var aValue = this.aInterpolator( this.aStartInterpolationValue,
this.aEndValue, nModifiedTime );

if( this.bCumulative && !this.bDynamicStartValue )
{
aValue = this.add( this.scale( nRepeatCount, this.aEndValue ), aValue );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );

if( this.bDynamicStartValue )
{
this.aPreviousValue = this.aAnimation.getUnderlyingValue();
}

};

FromToByActivity.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
if (this.isDisposed() || !this.aAnimation) {
log('FromToByActivity.performDiscreteHook: activity disposed or not valid animation');
return;
}
};

FromToByActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.isAutoReverse() ? this.aStartValue : this.aEndValue;
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
}
};

FromToByActivity.prototype.dispose = function()
{
FromToByActivity.superclass.dispose.call( this );
};


return FromToByActivity;
}


var LinearFromToByActivity = instantiate( FromToByActivityTemplate, ContinuousActivityBase );
var DiscreteFromToByActivity = instantiate( FromToByActivityTemplate, DiscreteActivityBase );


function  ValueListActivityTemplate( BaseType ) // template parameter
{

function ValueListActivity( aValueList, aActivityParamSet,
aAnimation, aInterpolator,
aOperatorSet, bAccumulate )
{
assert( aAnimation, 'ValueListActivity constructor: invalid animation object' );
assert( aValueList.length != 0, 'ValueListActivity: value list is empty' );

ValueListActivity.superclass.constructor.call( this, aActivityParamSet );

this.aValueList = aValueList;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bCumulative = bAccumulate;
this.aLastValue = this.aValueList[ this.aValueList.length - 1 ];
this.aFormula = aActivityParamSet.aFormula;
}
extend( ValueListActivity, BaseType );

ValueListActivity.prototype.activate = function( aEndEvent )
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.front() == 0.0) failed' );

assert( aCommonParamSet.aDiscreteTimes[ nSize - 1 ] <= 1.0,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.back() <= 1.0) failed' );

ContinuousKeyTimeActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aLerper = new KeyStopLerp( aCommonParamSet.aDiscreteTimes );
}
extend( ContinuousKeyTimeActivityBase, SimpleContinuousActivityBase );


ContinuousKeyTimeActivityBase.prototype.activate = function( aEndElement )
{
ContinuousKeyTimeActivityBase.superclass.activate.call( this, aEndElement );

this.aLerper.reset();
};

ContinuousKeyTimeActivityBase.prototype.performContinuousHook = function( /*nIndex, nFractionalIndex, nRepeatCount*/ )
{
throw ( 'ContinuousKeyTimeActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousKeyTimeActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
var nAlpha = this.calcAcceleratedTime( nSimpleTime );

var aLerpResult = this.aLerper.lerp( nAlpha );

this.performContinuousHook( aLerpResult.nIndex, aLerpResult.nLerp, nRepeatCount );
};


function ContinuousActivityBase( aCommonParamSet )
{
ContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

}
extend( ContinuousActivityBase, SimpleContinuousActivityBase );


ContinuousActivityBase.prototype.performContinuousHook = function( /*nModifiedTime, nRepeatCount*/ )
{
throw ( 'ContinuousActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
this.performContinuousHook( this.calcAcceleratedTime( nSimpleTime ), nRepeatCount );
};


function SimpleActivity( aCommonParamSet, aNumberAnimation, eDirection )
{
assert( ( eDirection == BACKWARD ) || ( eDirection == FORWARD ),
'SimpleActivity constructor: animation direction is not valid' );

assert( aNumberAnimation, 'SimpleActivity constructor: animation object is not valid' );

SimpleActivity.superclass.constructor.call( this, aCommonParamSet );

this.aAnimation = aNumberAnimation;
this.nDirection = ( eDirection == FORWARD ) ? 1.0 : 0.0;
}
extend( SimpleActivity, ContinuousActivityBase );


SimpleActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation )
return;

ANIMDBG.print( 'SimpleActivity.startAnimation invoked' );
SimpleActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

SimpleActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();

};

SimpleActivity.prototype.performContinuousHook = function( nModifiedTime /*, nRepeatCount*/ )
{

if( this.isDisposed() || !this.aAnimation )
return;

var nT = 1.0 - this.nDirection + nModifiedTime * ( 2.0*this.nDirection - 1.0 );
this.aAnimation.perform( nT );
};

SimpleActivity.prototype.performEnd = function()
{
if( this.aAnimation )
this.aAnimation.perform( this.nDirection );
};


function FromToByActivityTemplate( BaseType ) // template parameter
{

function FromToByActivity( aFromValue, aToValue, aByValue,
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate )
{
assert( aAnimation, 'FromToByActivity constructor: invalid animation object' );
assert( ( aToValue != undefined ) || ( aByValue != undefined ),
'FromToByActivity constructor: one of aToValue or aByValue must be valid' );

FromToByActivity.superclass.constructor.call( this, aActivityParamSet );

this.aFrom = aFromValue;
this.aTo = aToValue;
this.aBy = aByValue;
this.aStartValue = null;
this.aEndValue = null;
this.aPreviousValue = null;
this.aStartInterpolationValue = null;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.equal = aOperatorSet.equal;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bDynamicStartValue = false;
this.nIteration = 0;
this.bCumulative = bAccumulate;
this.aFormula = aActivityParamSet.aFormula;
}
extend( FromToByActivity, BaseType );

FromToByActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation && this.aFrom )
{
var aValue = this.aFormula ? this.aFormula( this.aFrom ) : this.aFrom;
this.aAnimation.perform(aValue);
}
};

FromToByActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.startAnimation: activity disposed or not valid animation' );
return;
this.aWakeupEvent.setNextTimeout( nNextTimeout );

this.getEventQueue().addEvent( this.aWakeupEvent );
}
else
{
this.aWakeupEvent = null;

this.endActivity();
}

return false; // remove from queue, will be added back by the wakeup event.
};

DiscreteActivityBase.prototype.dispose = function()
{
if( this.aWakeupEvent )
this.aWakeupEvent.dispose();

this.aWakeupEvent = null;

DiscreteActivityBase.superclass.dispose.call(this);
};


function SimpleContinuousActivityBase( aCommonParamSet )
{
SimpleContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aTimer = new ElapsedTime( aCommonParamSet.aActivityQueue.getTimer() );
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nMinNumberOfFrames = aCommonParamSet.nMinNumberOfFrames;
this.nCurrPerformCalls = 0;

}
extend( SimpleContinuousActivityBase, ActivityBase );


SimpleContinuousActivityBase.prototype.startAnimation = function()
{
this.aTimer.reset();
};

SimpleContinuousActivityBase.prototype.calcTimeLag = function()
{
SimpleContinuousActivityBase.superclass.calcTimeLag.call( this );

if( !this.isActive() )
return 0.0;

var nCurrElapsedTime = this.aTimer.getElapsedTime();


var nFractionElapsedTime = nCurrElapsedTime / this.nMinSimpleDuration;

var nFractionRequiredCalls = this.nCurrPerformCalls / this.nMinNumberOfFrames;


if( nFractionElapsedTime < nFractionRequiredCalls )
{
return 0.0;
}
else
{
return ( ( nFractionElapsedTime - nFractionRequiredCalls ) * this.nMinSimpleDuration );
}
};

SimpleContinuousActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nCurrElapsedTime = this.aTimer.getElapsedTime();
var nT = nCurrElapsedTime / this.nMinSimpleDuration;


var bActivityEnding = false;

if( this.isRepeatCountValid() )
{

var nRepeatCount = this.getRepeatCount();
var nEffectiveRepeat = this.isAutoReverse() ? 2.0 * nRepeatCount : nRepeatCount;

if( nEffectiveRepeat <= nT )
{
bActivityEnding = true;

nT = nEffectiveRepeat;
}
}


var nRepeats;
var nRelativeSimpleTime;
if( this.isAutoReverse() )
{
nRepeats = Math.floor( nT );
var nFractionalActiveDuration =  nT - nRepeats;

if( nRepeats % 2 )
{
nRelativeSimpleTime = 1.0 - nFractionalActiveDuration;
}
else
{
nRelativeSimpleTime = nFractionalActiveDuration;
}

nRepeats /= 2;
}
else
{

nRepeats = Math.floor( nT );
nRelativeSimpleTime = nT - nRepeats;

if( this.isRepeatCountValid() && ( nRepeats >= this.getRepeatCount() ) )
{

nRelativeSimpleTime = 1.0;
nRepeats -= 1.0;
}
}


this.simplePerform( nRelativeSimpleTime, nRepeats );

if( bActivityEnding )
this.endActivity();

++this.nCurrPerformCalls;

return this.isActive();
};

SimpleContinuousActivityBase.prototype.simplePerform = function( /*nSimpleTime, nRepeatCount*/ )
{
throw ( 'SimpleContinuousActivityBase.simplePerform: abstract method invoked' );
};


function ContinuousKeyTimeActivityBase( aCommonParamSet )
{
var nSize = aCommonParamSet.aDiscreteTimes.length;
assert( nSize > 1,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.length > 1) failed' );

assert( aCommonParamSet.aDiscreteTimes[0] == 0.0,
nTPrime += 1.0 - this.nAccelerationFraction - this.nDecelerationFraction; // full second interval

var nTRelative = nT - 1.0 + this.nDecelerationFraction;

nTPrime += nTRelative - 0.5*nTRelative*nTRelative / this.nDecelerationFraction;
}
}

nT = nTPrime / nC;

}
return nT;
};

ActivityBase.prototype.getEventQueue = function()
{
return this.aTimerEventQueue;
};

ActivityBase.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

ActivityBase.prototype.isRepeatCountValid = function()
{
return !!this.nRepeats; // first ! convert to bool
};

ActivityBase.prototype.getRepeatCount = function()
{
return this.nRepeats;
};

ActivityBase.prototype.isAutoReverse = function()
{
return this.bAutoReverse;
};

ActivityBase.prototype.end = function()
{
if( !this.isActive() || this.isDisposed() )
return;

if( this.bFirstPerformCall )
{
this.bFirstPerformCall = false;
this.startAnimation();
}

this.performEnd();
this.endAnimation();
this.endActivity();
};

ActivityBase.prototype.performEnd = function()
{
throw ( 'ActivityBase.performEnd: abstract method invoked' );
};


function DiscreteActivityBase( aCommonParamSet )
{
DiscreteActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aOriginalWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aOriginalWakeupEvent.setActivity( this );
this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aDiscreteTimes = aCommonParamSet.aDiscreteTimes;
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nCurrPerformCalls = 0;
}
extend( DiscreteActivityBase, ActivityBase );


DiscreteActivityBase.prototype.activate = function( aEndElement )
{
DiscreteActivityBase.superclass.activate.call( this, aEndElement );

this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent.setNextTimeout( 0 );
this.nCurrPerformCalls = 0;
};

DiscreteActivityBase.prototype.startAnimation = function()
{
this.aWakeupEvent.start();
};

DiscreteActivityBase.prototype.calcFrameIndex = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
var nFrameIndex = nCurrCalls % (2 * nVectorSize);

if( nFrameIndex >= nVectorSize )
nFrameIndex = 2*nVectorSize - nFrameIndex; // invert sweep

return nFrameIndex;
}
else
{
return nCurrCalls % nVectorSize;
}
};

DiscreteActivityBase.prototype.calcRepeatCount = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
return Math.floor( nCurrCalls / (2*nVectorSize) ); // we've got 2 cycles per repeat
}
else
{
return Math.floor( nCurrCalls / nVectorSize );
}
};

DiscreteActivityBase.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
throw ( 'DiscreteActivityBase.performDiscreteHook: abstract method invoked' );
};

DiscreteActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nVectorSize = this.aDiscreteTimes.length;

var nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
this.performDiscreteHook( nFrameIndex, nRepeatCount );

++this.nCurrPerformCalls;

var nCurrRepeat = this.nCurrPerformCalls / nVectorSize;

if( this.isAutoReverse() )
nCurrRepeat /= 2;

if( !this.isRepeatCountValid() || nCurrRepeat < this.getRepeatCount() )
{


nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nCurrentRepeatTime = this.aDiscreteTimes[nFrameIndex];
nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
var nNextTimeout = this.nMinSimpleDuration * ( nRepeatCount + this.calcAcceleratedTime( nCurrentRepeatTime ) );

SetActivity.prototype.isActive = function()
{
return this.bIsActive;
};

SetActivity.prototype.dequeued = function()
{
};

SetActivity.prototype.end = function()
{
this.perform();
};

SetActivity.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'SetActivity.setTargets: target element is not valid' );
this.aTargetElement = aTargetElement;
};


function ActivityBase( aCommonParamSet )
{
ActivityBase.superclass.constructor.call( this );

this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.nRepeats = aCommonParamSet.nRepeatCount;
this.nAccelerationFraction = aCommonParamSet.nAccelerationFraction;
this.nDecelerationFraction = aCommonParamSet.nDecelerationFraction;
this.bAutoReverse = aCommonParamSet.bAutoReverse;

this.bFirstPerformCall = true;
this.bIsActive = true;

}
extend( ActivityBase, AnimationActivity );


ActivityBase.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bFirstPerformCall = true;
this.bIsActive = true;
};

ActivityBase.prototype.dispose = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aEndEvent.dispose();

this.aEndEvent = null;
};

ActivityBase.prototype.perform = function()
{
if( !this.isActive() )
return false; // no, early exit.

assert( !this.bFirstPerformCall, 'ActivityBase.perform: assertion (!this.FirstPerformCall) failed' );

return true;
};

ActivityBase.prototype.calcTimeLag = function()
{
if( this.isActive() && this.bFirstPerformCall )
{
this.bFirstPerformCall = false;

this.startAnimation();
}
return 0.0;
};

ActivityBase.prototype.isActive = function()
{
return this.bIsActive;
};

ActivityBase.prototype.isDisposed = function()
{
return ( !this.bIsActive && !this.aEndEvent );
};

ActivityBase.prototype.dequeued = function()
{
if( !this.isActive() )
this.endAnimation();
};

ActivityBase.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'ActivityBase.setTargets: target element is not valid' );

this.aTargetElement = aTargetElement;
};

ActivityBase.prototype.startAnimation = function()
{
throw ( 'ActivityBase.startAnimation: abstract method invoked' );
};

ActivityBase.prototype.endAnimation = function()
{
throw ( 'ActivityBase.endAnimation: abstract method invoked' );
};

ActivityBase.prototype.endActivity = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

this.aEndEvent = null;

};

ActivityBase.prototype.calcAcceleratedTime = function( nT )
{


nT = clamp( nT, 0.0, 1.0 );

if( ( this.nAccelerationFraction > 0.0 || this.nDecelerationFraction > 0.0 ) &&
( this.nAccelerationFraction + this.nDecelerationFraction <= 1.0 ) )
{
var nC = 1.0 - 0.5*this.nAccelerationFraction - 0.5*this.nDecelerationFraction;

var nTPrime = 0.0;

if( nT < this.nAccelerationFraction )
{
nTPrime += 0.5 * nT * nT / this.nAccelerationFraction; // partial first interval
}
else
{
nTPrime += 0.5 * this.nAccelerationFraction; // full first interval

if( nT <= ( 1.0 - this.nDecelerationFraction ) )
{
nTPrime += nT - this.nAccelerationFraction; // partial second interval
}
else
{
return c;
};

aOperatorSetMap[ COLOR_PROPERTY ].scale = function( k, v )
{
var r = v.clone();
r.scale( k );
return r;
};

aOperatorSetMap[ ENUM_PROPERTY ] = {};

aOperatorSetMap[ ENUM_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ ENUM_PROPERTY ].add = function( a )
{
return a;
};

aOperatorSetMap[ ENUM_PROPERTY ].scale = function( k, v )
{
return v;
};

aOperatorSetMap[ STRING_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];

aOperatorSetMap[ BOOL_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ] = {};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].equal = function( a, b )
{
assert( a.length === b.length, 'Tuples length mismatch.' );
return ( a.toString() === b.toString() );
};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].add = function( a, b )
{
assert( a.length === b.length, 'Tuples length mismatch.' );
var r = [];
for( var i = 0; i < a.length; ++i )
{
r.push(a[i] + b[i]);
}
return r;
};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].scale = function( k, v )
{
var r = [];
for( var i = 0; i < v.length; ++i )
{
r.push(k * v[i]);
}
return r;
};


function ActivityParamSet()
{
this.aEndEvent = null;
this.aWakeupEvent = null;
this.aTimerEventQueue = null;
this.aActivityQueue = null;
this.nMinDuration = undefined;
this.nMinNumberOfFrames = MINIMUM_FRAMES_PER_SECONDS;
this.bAutoReverse = false;
this.nRepeatCount = 1.0;
this.nAccelerationFraction = 0.0;
this.nDecelerationFraction = 0.0;
this.nSlideWidth = undefined;
this.nSlideHeight = undefined;
this.aFormula = null;
this.aDiscreteTimes = [];
}


function AnimationActivity()
{
this.nId = AnimationActivity.getUniqueId();
}


AnimationActivity.CURR_UNIQUE_ID = 0;

AnimationActivity.getUniqueId = function()
{
++AnimationActivity.CURR_UNIQUE_ID;
return AnimationActivity.CURR_UNIQUE_ID;
};

AnimationActivity.prototype.getId = function()
{
return this.nId;
};


function SetActivity( aCommonParamSet, aAnimation, aToAttr  )
{
SetActivity.superclass.constructor.call( this );

this.aAnimation = aAnimation;
this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.aToAttr = aToAttr;
this.bIsActive = true;
}
extend( SetActivity, AnimationActivity );


SetActivity.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bIsActive = true;
};

SetActivity.prototype.dispose = function()
{
this.bIsActive = false;
if( this.aEndEvent && this.aEndEvent.isCharged() )
this.aEndEvent.dispose();
};

SetActivity.prototype.calcTimeLag = function()
{
return 0.0;
};

SetActivity.prototype.perform = function()
{
if( !this.isActive() )
return false;

this.bIsActive = false;

if( this.aAnimation && this.aTargetElement )
{
this.aAnimation.start( this.aTargetElement );
this.aAnimation.perform( this.aToAttr );
this.aAnimation.end();
}

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

};
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_RGB ] =
function ( nFrom, nTo, nT )
{
return RGBColor.interpolate( nFrom, nTo, nT );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_HSL ] =
function ( bCCW  )
{
return  function ( nFrom, nTo, nT )
{
return HSLColor.interpolate( nFrom, nTo, nT, bCCW );
};
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ TUPLE_NUMBER_PROPERTY ] =
function ( aFrom, aTo, nT )
{
var aRes = [];
for( var i = 0; i < aFrom.length; ++i )
{
aRes.push( ( 1.0 - nT )* aFrom[i] + nT * aTo[i] );
}
return aRes;
};


function KeyStopLerp( aValueList )
{
KeyStopLerp.validateInput( aValueList );

this.aKeyStopList = [];
this.nLastIndex = 0;
this.nKeyStopDistance = aValueList[1] - aValueList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

for( var i = 0; i < aValueList.length; ++i )
this.aKeyStopList.push( aValueList[i] );

this.nUpperBoundIndex = this.aKeyStopList.length - 2;
}


KeyStopLerp.validateInput = function( aValueList )
{
var nSize = aValueList.length;
assert( nSize > 1, 'KeyStopLerp.validateInput: key stop vector must have two entries or more' );

for( var i = 1; i < nSize; ++i )
{
if( aValueList[i-1] > aValueList[i] )
log( 'KeyStopLerp.validateInput: time vector is not sorted in ascending order!' );
}
};

KeyStopLerp.prototype.reset = function()
{
KeyStopLerp.validateInput( this.aKeyStopList );
this.nLastIndex = 0;
this.nKeyStopDistance = this.aKeyStopList[1] - this.aKeyStopList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

};

KeyStopLerp.prototype.lerp = function( nAlpha )
{
if( nAlpha > this.aKeyStopList[ this.nLastIndex + 1 ] )
{
do
{
var nIndex = this.nLastIndex + 1;
this.nLastIndex = clamp( nIndex, 0, this.nUpperBoundIndex );
this.nKeyStopDistance = this.aKeyStopList[ this.nLastIndex + 1 ] - this.aKeyStopList[ this.nLastIndex ];
}
while( ( this.nKeyStopDistance <= 0 ) && ( this.nLastIndex < this.nUpperBoundIndex ) );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) / this.nKeyStopDistance;

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};

KeyStopLerp.prototype.lerp_ported = function( nAlpha )
{
if( ( this.aKeyStopList[ this.nLastIndex ] < nAlpha ) ||
( this.aKeyStopList[ this.nLastIndex + 1 ] >= nAlpha ) )
{
var i = 0;
for( ; i < this.aKeyStopList.length; ++i )
{
if( this.aKeyStopList[i] >= nAlpha )
break;
}
if( this.aKeyStopList[i] > nAlpha )
--i;
var nIndex = i - 1;
this.nLastIndex = clamp( nIndex, 0, this.aKeyStopList.length - 2 );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) /
( this.aKeyStopList[ this.nLastIndex+1 ] - this.aKeyStopList[ this.nLastIndex ] );

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};


var aOperatorSetMap = [];

aOperatorSetMap[ NUMBER_PROPERTY ] = {};

aOperatorSetMap[ NUMBER_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].add = function( a, b )
{
return ( a + b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].scale = function( k, v )
{
return ( k * v );
};

aOperatorSetMap[ COLOR_PROPERTY ] = {};

aOperatorSetMap[ COLOR_PROPERTY ].equal = function( a, b )
{
return a.equal( b );
};

aOperatorSetMap[ COLOR_PROPERTY ].add = function( a, b )
{
var c = a.clone();
c.add( b );
{
if( this.aSkipEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aSkipEffectEvent );
this.aSkipEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindCurrentEffectEvent = function( aEvent )
{
this.aRewindCurrentEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindCurrentEffectEvent = function()
{
if( this.aRewindCurrentEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindCurrentEffectEvent );
this.aRewindCurrentEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindLastEffectEvent = function( aEvent )
{
this.aRewindLastEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindLastEffectEvent = function()
{
if( this.aRewindLastEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindLastEffectEvent );
this.aRewindLastEffectEvent = null;
}
};

EventMultiplexer.prototype.registerSkipInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aSkipInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifySkipInteractiveEffectEvent = function( nNotifierId )
{
if( this.aSkipInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aSkipInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindRunningInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindRunningInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindEndedInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindEndedInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindedEffectHandler = function( aNotifierId, aHandler )
{
this.aRewindedEffectHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyRewindedEffectEvent = function( aNotifierId )
{
if( this.aRewindedEffectHandlerSet[ aNotifierId ] )
{
(this.aRewindedEffectHandlerSet[ aNotifierId ])();
}
};

EventMultiplexer.prototype.registerElementChangedHandler = function( aNotifierId, aHandler )
{
this.aElementChangedHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyElementChangedEvent = function( aNotifierId, aElement )
{
if( this.aElementChangedHandlerSet[ aNotifierId ] )
{
(this.aElementChangedHandlerSet[ aNotifierId ])( aElement );
}
};

EventMultiplexer.DEBUG = aEventMultiplexerDebugPrinter.isEnabled();

EventMultiplexer.prototype.DBG = function( sMethodName, eEventType, aNotifierId, nTime )
{
if( EventMultiplexer.DEBUG )
{
var sInfo = 'EventMultiplexer.' + sMethodName;
sInfo += '( type: ' + aEventTriggerOutMap[ eEventType ];
sInfo += ', notifier: ' + aNotifierId + ' )';
aEventMultiplexerDebugPrinter.print( sInfo, nTime );
}
};


var aInterpolatorHandler = {};

aInterpolatorHandler.getInterpolator = function( eCalcMode, eValueType, eValueSubtype )
{
var bHasSubtype = ( typeof( eValueSubtype ) === typeof( 0 ) );

if( !bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ];
}
else if( bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ];
}
else
{
log( 'aInterpolatorHandler.getInterpolator: not found any valid interpolator for calc mode '
+ aCalcModeOutMap[eCalcMode]  + ' and value type ' + aValueTypeOutMap[eValueType]  );
return null;
}
};

aInterpolatorHandler.aLerpFunctorMap = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_DISCRETE ] = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ] = [];


aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ NUMBER_PROPERTY ] =
function ( nFrom, nTo, nT )
{
return ( ( 1.0 - nT )* nFrom + nT * nTo );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ] = [];

};

InteractiveAnimationSequence.prototype.end = function()
{
aSlideShow.notifyInteractiveAnimationSequenceEnd( this.getId() );
this.bIsRunning = false;
};


function PriorityEntry( aValue, nPriority )
{
this.aValue = aValue;
this.nPriority = nPriority;
}

PriorityEntry.compare = function( aLhsEntry, aRhsEntry )
{
if ( aLhsEntry.nPriority < aRhsEntry.nPriority )
{
return -1;
}
else if (aLhsEntry.nPriority > aRhsEntry.nPriority)
{
return 1;
}
else
{
return 0;
}
};


function EventMultiplexer( aTimerEventQueue )
{
this.nId = EventMultiplexer.getUniqueId();
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMap = {};
this.aAnimationsEndHandler = null;
this.aSkipEffectEndHandlerSet = [];
this.aMouseClickHandlerSet = new PriorityQueue( PriorityEntry.compare );
this.aSkipEffectEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
this.aSkipInteractiveEffectEventSet = {};
this.aRewindRunningInteractiveEffectEventSet = {};
this.aRewindEndedInteractiveEffectEventSet = {};
this.aRewindedEffectHandlerSet = {};
this.aElementChangedHandlerSet = {};
}

EventMultiplexer.CURR_UNIQUE_ID = 0;

EventMultiplexer.getUniqueId = function()
{
++EventMultiplexer.CURR_UNIQUE_ID;
return EventMultiplexer.CURR_UNIQUE_ID;
};

EventMultiplexer.prototype.getId = function()
{
return this.nId;
};

EventMultiplexer.prototype.hasRegisteredMouseClickHandlers = function()
{
return !this.aMouseClickHandlerSet.isEmpty();
};

EventMultiplexer.prototype.registerMouseClickHandler = function( aHandler, nPriority )
{
var aHandlerEntry = new PriorityEntry( aHandler, nPriority );
this.aMouseClickHandlerSet.push( aHandlerEntry );
};

EventMultiplexer.prototype.notifyMouseClick = function( aMouseEvent )
{
var aMouseClickHandlerSet = this.aMouseClickHandlerSet.clone();
while( !aMouseClickHandlerSet.isEmpty() )
{
var aHandlerEntry = aMouseClickHandlerSet.top();
aMouseClickHandlerSet.pop();
if( aHandlerEntry.aValue.handleClick( aMouseEvent ) )
break;
}
};

EventMultiplexer.prototype.registerEvent = function( eEventType, aNotifierId, aEvent )
{
this.DBG( 'registerEvent', eEventType, aNotifierId );
if( !this.aEventMap[ eEventType ] )
{
this.aEventMap[ eEventType ] = {};
}
if( !this.aEventMap[ eEventType ][ aNotifierId ] )
{
this.aEventMap[ eEventType ][ aNotifierId ] = [];
}
this.aEventMap[ eEventType ][ aNotifierId ].push( aEvent );
};


EventMultiplexer.prototype.notifyEvent = function( eEventType, aNotifierId )
{
this.DBG( 'notifyEvent', eEventType, aNotifierId );
if( this.aEventMap[ eEventType ] )
{
if( this.aEventMap[ eEventType ][ aNotifierId ] )
{
var aEventArray = this.aEventMap[ eEventType ][ aNotifierId ];
var nSize = aEventArray.length;
for( var i = 0; i < nSize; ++i )
{
this.aTimerEventQueue.addEvent( aEventArray[i] );
}
}
}
};

EventMultiplexer.prototype.registerAnimationsEndHandler = function( aHandler )
{
this.aAnimationsEndHandler = aHandler;
};

EventMultiplexer.prototype.notifyAnimationsEndEvent = function()
{
if( this.aAnimationsEndHandler )
this.aAnimationsEndHandler();
};

EventMultiplexer.prototype.registerNextEffectEndHandler = function( aHandler )
{
this.aSkipEffectEndHandlerSet.push( aHandler );
};

EventMultiplexer.prototype.notifyNextEffectEndEvent = function()
{
var nSize = this.aSkipEffectEndHandlerSet.length;
for( var i = 0; i < nSize; ++i )
{
(this.aSkipEffectEndHandlerSet[i])();
}
this.aSkipEffectEndHandlerSet = [];
};

EventMultiplexer.prototype.registerSkipEffectEvent = function( aEvent )
{
this.aSkipEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifySkipEffectEvent = function()
}

this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;
this.nTargetSlideIndex = undefined;

this.sURL = getNSAttribute( 'xlink', this.aElement, 'href' );
if( this.sURL )
{
if( this.sURL[0] === '#' )
{
if( this.sURL.substr(1, 5) === 'Slide' )
{
var sSlideIndex = this.sURL.split( ' ' )[1];
this.nTargetSlideIndex = parseInt( sSlideIndex ) - 1;
}
}

this.aEventMultiplexer.registerElementChangedHandler( this.sId, bind2( HyperlinkElement.prototype.onElementChanged, this) );
this.aEventMultiplexer.registerMouseClickHandler( this, 1100 );

this.bIsPointerOver = false;
this.mouseEnterHandler = bind2( HyperlinkElement.prototype.onMouseEnter, this);
this.mouseLeaveHandler = bind2( HyperlinkElement.prototype.onMouseLeave, this);
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
else
{
log( 'warning: HyperlinkElement(' + this.sId + '): url is empty' );
}
}

HyperlinkElement.prototype.onElementChanged = function( aElement )
{
if( !aElement )
{
log( 'error: HyperlinkElement: passed element is not valid' );
return;
}

if( this.sURL )
{
this.aElement.removeEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.removeEventListener( 'mouseout', this.mouseLeaveHandler, false );
this.aElement = aElement;
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
};

HyperlinkElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

HyperlinkElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

HyperlinkElement.prototype.handleClick = function( )
{
if( !this.bIsPointerOver ) return false;

if( this.nTargetSlideIndex !== undefined )
{
aSlideShow.displaySlide( this.nTargetSlideIndex, true );
}
else
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
aWindowObject.open( this.sURL, this.sId );
}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

return true;
};

HyperlinkElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

HyperlinkElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function InteractiveAnimationSequence( nId )
{
this.nId = nId;
this.bIsRunning = false;
this.aStartEvent = null;
this.aEndEvent = null;
}

InteractiveAnimationSequence.prototype.getId = function()
{
return this.nId;
};

InteractiveAnimationSequence.prototype.getStartEvent = function()
{
if( !this.aStartEvent )
{
this.aStartEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.start, this ) );
}
return this.aStartEvent;
};

InteractiveAnimationSequence.prototype.getEndEvent = function()
{
if( !this.aEndEvent )
{
this.aEndEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.end, this ) );
}
return this.aEndEvent;
};

InteractiveAnimationSequence.prototype.chargeEvents = function()
{
if( this.aStartEvent )      this.aStartEvent.charge();
if( this.aEndEvent )        this.aEndEvent.charge();
};

InteractiveAnimationSequence.prototype.isRunning = function()
{
return this.bIsRunning;
};

InteractiveAnimationSequence.prototype.start = function()
{
aSlideShow.notifyInteractiveAnimationSequenceStart( this.getId() );
this.bIsRunning = true;
}

var bEventRegistered = false;
switch( eEventType )
{
case EVENT_TRIGGER_ON_CLICK:
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aEvent );
aEventMultiplexer.registerRewindedEffectHandler( aSourceEventElement.getId(),
bind2( aSourceEventElement.charge, aSourceEventElement ) );
bEventRegistered = true;
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
if( bEventRegistered )
{
var aStartEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getStartEvent();
var aEndEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getEndEvent();
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aStartEvent );
aEventMultiplexer.registerEvent( EVENT_TRIGGER_END_EVENT, nNodeId, aEndEvent );
aEventMultiplexer.registerRewindedEffectHandler(
nNodeId,
bind2( InteractiveAnimationSequence.prototype.chargeEvents,
aInteractiveAnimationSequenceMap[ nNodeId ] )
);
}
}
else  // no base event element present
{
switch( eEventType )
{
case EVENT_TRIGGER_ON_NEXT_EFFECT:
aNextEffectEventArray.appendEvent( aEvent );
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
}
break;
case SYNCBASE_TIMING:
eEventType = aTiming.getEventType();
sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aAnimationNode = aNodeContext.aAnimationNodeMap[ sEventBaseElemId ];
if( !aAnimationNode )
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
aEventMultiplexer.registerEvent( eEventType, aAnimationNode.getId(), aEvent );
}
else
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not specified' );
}
break;
default:
log( 'generateEvent: not handled timing type: ' + eTimingType );
}
}
}

registerEvent.DEBUG = aRegisterEventDebugPrinter.isEnabled();

registerEvent.DBG = function( aTiming, nTime )
{
if( registerEvent.DEBUG )
{
aRegisterEventDebugPrinter.print( 'registerEvent( timing: ' + aTiming.info() + ' )', nTime );
}
};


function SourceEventElement( sId, aElement, aEventMultiplexer )
{
this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;

this.aEventMultiplexer.registerMouseClickHandler( this, 1000 );

this.bClickHandled = false;
this.bIsPointerOver = false;
this.aElement.addEventListener( 'mouseover', bind2( SourceEventElement.prototype.onMouseEnter, this), false );
this.aElement.addEventListener( 'mouseout', bind2( SourceEventElement.prototype.onMouseLeave, this), false );
}

SourceEventElement.prototype.getId = function()
{
return this.sId;
};

SourceEventElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

SourceEventElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

SourceEventElement.prototype.charge = function()
{
this.bClickHandled = false;
this.setPointerCursor();
};

SourceEventElement.prototype.handleClick = function( /*aMouseEvent*/ )
{
if( !this.bIsPointerOver ) return false;

if( this.bClickHandled )
return false;

this.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_ON_CLICK, this.getId() );
aSlideShow.update();
this.bClickHandled = true;
this.setDefaultCursor();
return true;
};

SourceEventElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

SourceEventElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function HyperlinkElement( sId, aEventMultiplexer )
{
var aElement = document.getElementById( sId );
if( !aElement )
{
log( 'error: HyperlinkElement: no element with id: <' + sId + '> found' );
return;
}
if( !aEventMultiplexer )
{
log( 'AnimatedElement constructor: event multiplexer is not valid' );
return true;
};

DelayEvent.prototype.isCharged = function()
{
return !this.bWasFired;
};

DelayEvent.prototype.getActivationTime = function( nCurrentTime )
{
return ( this.nTimeout + nCurrentTime );
};

DelayEvent.prototype.dispose = function()
{
if( this.isCharged() )
this.bWasFired = true;
};

DelayEvent.prototype.charge = function()
{
if( !this.isCharged() )
this.bWasFired = false;
};


function WakeupEvent( aTimer, aActivityQueue )
{
WakeupEvent.superclass.constructor.call( this );

this.aTimer = new ElapsedTime( aTimer );
this.nNextTime = 0.0;
this.aActivity = null;
this.aActivityQueue = aActivityQueue;
}
extend( WakeupEvent, Event );


WakeupEvent.prototype.clone = function()
{
var aWakeupEvent = new WakeupEvent( this.aTimer.getTimeBase(), this.aActivityQueue );
aWakeupEvent.nNextTime = this.nNextTime;
aWakeupEvent.aActivity = this.aActivity;
return aWakeupEvent;
};

WakeupEvent.prototype.dispose = function()
{
this.aActivity = null;
};

WakeupEvent.prototype.fire = function()
{
if( !this.aActivity )
return false;

return this.aActivityQueue.addActivity( this.aActivity );
};

WakeupEvent.prototype.isCharged = function()
{
return true;
};

WakeupEvent.prototype.getActivationTime = function( nCurrentTime )
{
var nElapsedTime = this.aTimer.getElapsedTime();

return Math.max( nCurrentTime, nCurrentTime - nElapsedTime + this.nNextTime );
};

WakeupEvent.prototype.start = function()
{
this.aTimer.reset();
};

WakeupEvent.prototype.setNextTimeout = function( nNextTime )
{
this.nNextTime = nNextTime;
};

WakeupEvent.prototype.setActivity = function( aActivity )
{
this.aActivity = aActivity;
};


function makeEvent( aFunctor )
{
return new DelayEvent( aFunctor, 0.0 );
}


function makeDelay( aFunctor, nTimeout )
{
return new DelayEvent( aFunctor, nTimeout );
}


function registerEvent( nNodeId, aTiming, aEvent, aNodeContext )
{
var aSlideShowContext = aNodeContext.aContext;
var eTimingType = aTiming.getType();

registerEvent.DBG( aTiming );

if( eTimingType == OFFSET_TIMING )
{
aSlideShowContext.aTimerEventQueue.addEvent( aEvent );
}
else if ( aNodeContext.bFirstRun )
{
var aEventMultiplexer = aSlideShowContext.aEventMultiplexer;
if( !aEventMultiplexer )
{
log( 'registerEvent: event multiplexer not initialized' );
return;
}
var aNextEffectEventArray = aSlideShowContext.aNextEffectEventArray;
if( !aNextEffectEventArray )
{
log( 'registerEvent: next effect event array not initialized' );
return;
}
var aInteractiveAnimationSequenceMap =
aSlideShowContext.aInteractiveAnimationSequenceMap;
if( !aInteractiveAnimationSequenceMap )
{
log( 'registerEvent: interactive animation sequence map not initialized' );
return;
}

switch( eTimingType )
{
case EVENT_TIMING:
var eEventType = aTiming.getEventType();
var sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aEventBaseElem = document.getElementById( sEventBaseElemId );
if( !aEventBaseElem )
{
log( 'generateEvent: EVENT_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
var aSourceEventElement = aNodeContext.makeSourceEventElement( sEventBaseElemId, aEventBaseElem );

if( !aInteractiveAnimationSequenceMap[ nNodeId ] )
{
aInteractiveAnimationSequenceMap[ nNodeId ] = new InteractiveAnimationSequence(nNodeId);
if( !aAnimationRootElement )
return false;

this.aRootNode = createAnimationTree( aAnimationRootElement, this.aContext );

return ( this.aRootNode ? true : false );
};

SlideAnimations.prototype.parseElements = function()
{
if( !this.aRootNode )
return false;

if( !this.aRootNode.parseElement() )
return false;
else
this.bElementsParsed = true;
};

SlideAnimations.prototype.elementsParsed = function()
{
return this.bElementsParsed;
};

SlideAnimations.prototype.isFirstRun = function()
{
return this.aContext.bFirstRun;
};

SlideAnimations.prototype.isAnimated = function()
{
if( !this.bElementsParsed )
return false;

return this.aRootNode.hasPendingAnimation();
};

SlideAnimations.prototype.start = function()
{
if( !this.bElementsParsed )
return false;

this.chargeSourceEvents();
this.chargeInterAnimEvents();

aSlideShow.setSlideEvents( this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aEventMultiplexer );

if( this.aContext.bFirstRun == undefined )
this.aContext.bFirstRun = true;
else if( this.aContext.bFirstRun )
this.aContext.bFirstRun = false;

this.aContext.bIsInvalid = !this.aRootNode.init();
if( this.aContext.bIsInvalid )
return false;

return this.aRootNode.resolve();
};

SlideAnimations.prototype.end = function( bLeftEffectsSkipped )
{
if( !this.bElementsParsed )
return; // no animations there

this.aRootNode.deactivate();
this.aRootNode.end();

if( bLeftEffectsSkipped && this.isFirstRun() )
{
this.aContext.bFirstRun = undefined;
}
else if( this.isFirstRun() )
{
this.aContext.bFirstRun = false;
}

this.aContext.bIsInvalid = false;
};

SlideAnimations.prototype.dispose = function()
{
if( this.aRootNode )
{
this.aRootNode.dispose();
}
};

SlideAnimations.prototype.clearNextEffectEvents = function()
{
ANIMDBG.print( 'SlideAnimations.clearNextEffectEvents: current slide: ' + nCurSlide );
this.aNextEffectEventArray.clear();
this.aContext.bFirstRun = undefined;
};

SlideAnimations.prototype.chargeSourceEvents = function()
{
for( var id in this.aSourceEventElementMap )
{
this.aSourceEventElementMap[id].charge();
}
};

SlideAnimations.prototype.chargeInterAnimEvents = function()
{
for( var id in this.aInteractiveAnimationSequenceMap )
{
this.aInteractiveAnimationSequenceMap[id].chargeEvents();
}
};


function Event()
{
this.nId = Event.getUniqueId();
}


Event.CURR_UNIQUE_ID = 0;

Event.getUniqueId = function()
{
++Event.CURR_UNIQUE_ID;
return Event.CURR_UNIQUE_ID;
};

Event.prototype.getId = function()
{
return this.nId;
};


function DelayEvent( aFunctor, nTimeout )
{
DelayEvent.superclass.constructor.call( this );

this.aFunctor = aFunctor;
this.nTimeout = nTimeout;
this.bWasFired = false;
}
extend( DelayEvent, Event );


DelayEvent.prototype.fire = function()
{
assert( this.isCharged(), 'DelayEvent.fire: assertion isCharged failed' );

this.bWasFired = true;
this.aFunctor();
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( this.bIsValid && aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType] === undefined )
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition not valid: type: ' + sTypeAttr + ' subtype: ' + sSubTypeAttr );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.sFadeColor = null;
if( this.eTransitionType == FADE_TRANSITION &&
( this.eTransitionSubType == FADEFROMCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADEOVERCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADETOCOLOR_TRANS_SUBTYPE ) )
{
var sColorAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fadeColor' );
if( sColorAttr )
this.sFadeColor = sColorAttr;
else
this.sFadeColor='#000000';
}


this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
this.aDuration = new Duration( null ); // duration == 0.0
}

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;

};

SlideTransition.prototype.isValid = function()
{
return this.bIsValid;
};

SlideTransition.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

SlideTransition.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

SlideTransition.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

SlideTransition.prototype.getFadeColor = function()
{
return this.sFadeColor;
};

SlideTransition.prototype.isDirectionForward = function()
{
return !this.bReverseDirection;
};

SlideTransition.prototype.getDuration = function()
{
return this.aDuration;
};

SlideTransition.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

SlideTransition.prototype.info = function()
{

var sInfo ='slide transition <' + this.sSlideId + '>: ';
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( !this.isDirectionForward() )
sInfo += ';  direction: reverse';

sInfo += '; mode: ' + aTransitionModeOutMap[ this.getTransitionMode() ];

if( this.getDuration() )
sInfo += '; duration: ' + this.getDuration().info();

return sInfo;
};


function SlideAnimations( aSlideShowContext )
{
this.aContext = new NodeContext( aSlideShowContext );
this.aAnimationNodeMap = {};
this.aAnimatedElementMap = {};
this.aSourceEventElementMap = {};
this.aNextEffectEventArray = new NextEffectEventArray();
this.aInteractiveAnimationSequenceMap = {};
this.aEventMultiplexer = new EventMultiplexer( aSlideShowContext.aTimerEventQueue );
this.aRootNode = null;
this.bElementsParsed = false;

this.aContext.aAnimationNodeMap = this.aAnimationNodeMap;
this.aContext.aAnimatedElementMap = this.aAnimatedElementMap;
this.aContext.aSourceEventElementMap = this.aSourceEventElementMap;

this.aEventMultiplexer.registerMouseClickHandler( document, 100 );
}


SlideAnimations.prototype.importAnimations = function( aAnimationRootElement )
{

function SlideTransition( aAnimationsRootElement, aSlideId )
{
this.sSlideId = aSlideId;
this.bIsValid = false;
this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = false;
this.eTransitionMode = TRANSITION_MODE_IN;
this.sFadeColor = null;
this.aDuration = null;
this.nMinFrameCount = undefined;

if( aAnimationsRootElement )
{
if( aAnimationsRootElement.firstElementChild &&
( aAnimationsRootElement.firstElementChild.getAttributeNS( NSS['smil'], 'begin' ) === (this.sSlideId + '.begin') ) )
{
var aTransitionFilterElement = aAnimationsRootElement.firstElementChild.firstElementChild;
if( aTransitionFilterElement && ( aTransitionFilterElement.localName === 'transitionFilter' ) )
{
this.aElement = aTransitionFilterElement;
this.parseElement();
}
aAnimationsRootElement.removeChild( aAnimationsRootElement.firstElementChild );
}
}
}

SlideTransition.prototype.createSlideTransition = function( aLeavingSlide, aEnteringSlide )
{
if( !this.isValid() )
return null;
if( this.eTransitionType == 0 )
return null;

if( !aEnteringSlide )
{
log( 'SlideTransition.createSlideTransition: invalid entering slide.' );
return null;
}

var aTransitionInfo = aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'SlideTransition.createSlideTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( this.eTransitionType, this.eTransitionSubType );
return new ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, this.isDirectionForward() );

case TRANSITION_SPECIAL:
switch( this.eTransitionType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition class: TRANSITION_SPECIAL, ' +
'unknown transition type: ' + this.eTransitionType );
return null;

case PUSHWIPE_TRANSITION:
{
var aDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: PUSHWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aDirection = { x: -1.0, y: 0.0 };
break;
}
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aDirection, aDirection );
}

case SLIDEWIPE_TRANSITION:
{
var aInDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: SLIDEWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aInDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aInDirection = { x: -1.0, y: 0.0 };
break;
}
var aNoDirection = { x: 0.0, y: 0.0 };
if( !this.bReverseDirection )
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aNoDirection, aInDirection );
}
else
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aInDirection, aNoDirection );
}
}

case FADE_TRANSITION:
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: FADE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case CROSSFADE_TRANS_SUBTYPE:
return new FadingSlideChange( aLeavingSlide, aEnteringSlide );
case FADEOVERCOLOR_TRANS_SUBTYPE:
return new FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, this.getFadeColor() );
}
}
}
};

SlideTransition.prototype.parseElement = function()
{
this.bIsValid = true;
var aAnimElem = this.aElement;

this.eTransitionType = undefined;
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
aAnimatableElement.setAttribute( 'visibility', sVisibilityAttr );
aParagraphElement.setAttribute( 'visibility', 'inherit' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
if( aBulletCharElem )
aBulletCharElem.setAttribute( 'visibility', 'hidden' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapElemSet[i] )
aBitmapElemSet[i].setAttribute( 'visibility', 'hidden' );
}


aTextElement.appendChild( aParagraphElement );
aAnimatableElement.appendChild( aTextElement );

if( aBulletCharClone )
this.aGraphicGroupElement.appendChild( aBulletCharClone );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
this.aGraphicGroupElement.appendChild( aBitmapCloneSet[i] );
}
aAnimatableElement.appendChild( this.aGraphicGroupElement );
aAnimatedElementGroup.appendChild( aAnimatableElement );

this.aParentTextElement = aElement.parentNode;
this.aParagraphElement = aElement;
this.aAnimatedElementGroup = aAnimatedElementGroup;
this.nRunningAnimations = 0;

this.aHyperlinkIdSet = [];
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var sHyperlinkId;
for( i = 0; i < aHyperlinkElementSet.length; ++i )
{
sHyperlinkId = aHyperlinkElementSet[i].getAttribute( 'id' );
if( sHyperlinkId )
this.aHyperlinkIdSet.push( sHyperlinkId );
else
log( 'error: AnimatedTextElement constructor: hyperlink element has no id' );
}

AnimatedTextElement.superclass.constructor.call( this, aAnimatableElement, aEventMultiplexer );

}
extend( AnimatedTextElement, AnimatedElement );


AnimatedTextElement.prototype.setToElement = function( aElement )
{
var bRet = AnimatedTextElement.superclass.setToElement.call( this, aElement );
if( bRet )
{
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
}
return ( bRet && this.aGraphicGroupElement );
};

AnimatedTextElement.prototype.notifySlideStart = function( aSlideShowContext )
{
DBGLOG( 'AnimatedTextElement.notifySlideStart' );
AnimatedTextElement.superclass.notifySlideStart.call( this, aSlideShowContext );
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
this.restoreBaseTextParagraph();
};

AnimatedTextElement.prototype.notifySlideEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifySlideEnd' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
};

AnimatedTextElement.prototype.restoreBaseTextParagraph = function()
{
var aActiveParagraphElement = this.aActiveElement.firstElementChild.firstElementChild;
if( aActiveParagraphElement )
{
var sVisibilityAttr = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityAttr || ( sVisibilityAttr === 'visible' ) )
sVisibilityAttr = 'inherit';
if( sVisibilityAttr === 'inherit' )
this.aGraphicGroupElement.setAttribute( 'visibility', 'visible' );
else
this.aGraphicGroupElement.setAttribute( 'visibility', 'hidden' );

var aParagraphClone = aActiveParagraphElement.cloneNode( true );
aParagraphClone.setAttribute( 'id', this.sParagraphId );
aParagraphClone.setAttribute( 'visibility', sVisibilityAttr );
this.aParentTextElement.replaceChild( aParagraphClone, this.aParagraphElement );
this.aParagraphElement = aParagraphClone;


var aEventMultiplexer = this.aSlideShowContext.aEventMultiplexer;
var aHyperlinkIdSet = this.aHyperlinkIdSet;
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var i = 0;
for( ; i < aHyperlinkIdSet.length; ++i )
{
aEventMultiplexer.notifyElementChangedEvent( aHyperlinkIdSet[i], aHyperlinkElementSet[i] );
}
}
this.aActiveElement.setAttribute( 'visibility', 'hidden' );
};

AnimatedTextElement.prototype.notifyAnimationStart = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationStart' );
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
this.aParagraphElement.setAttribute( 'visibility', 'hidden' );
}
++this.nRunningAnimations;
};

AnimatedTextElement.prototype.notifyAnimationEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationEnd' );
--this.nRunningAnimations;
if( this.nRunningAnimations === 0 )
{
this.restoreBaseTextParagraph();
}
};

AnimatedTextElement.prototype.saveState = function( nAnimationNodeId )
{
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
}
AnimatedTextElement.superclass.saveState.call( this, nAnimationNodeId );
};

AnimatedTextElement.prototype.restoreState = function( nAnimationNodeId )
{
var bRet = AnimatedTextElement.superclass.restoreState.call( this, nAnimationNodeId );
if( bRet )
this.restoreBaseTextParagraph();
return bRet;
};

for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
break;
}

return colorParser( sStrokeColorValue );
};

AnimatedElement.prototype.setStrokeColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sStrokeColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'stroke', sValue );
}
}
};

AnimatedElement.prototype.getFontColor = function()
{
return new RGBColor( 0, 0, 0 );
};

AnimatedElement.prototype.setFontColor = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFontColor(' + sValue + ')' );
};

AnimatedElement.prototype.DBG = function( sMessage, nTime )
{
aAnimatedElementDebugPrinter.print( 'AnimatedElement(' + this.getId() + ')' + sMessage, nTime );
};


function AnimatedTextElement( aElement, aEventMultiplexer )
{
var theDocument = document;

var sTextType = aElement.getAttribute( 'class' );
var bIsListItem = ( sTextType === 'ListItem' );
if( ( sTextType !== 'TextParagraph' ) && !bIsListItem )
{
log( 'AnimatedTextElement: passed element is not a paragraph.' );
return;
}
var aTextShapeElement = aElement.parentNode;
sTextType = aTextShapeElement.getAttribute( 'class' );
if( sTextType !== 'SVGTextShape' )
{
log( 'AnimatedTextElement: element parent is not a text shape.' );
return;
}
var aTextShapeGroup = aTextShapeElement.parentNode;
var aAnimatedElementGroup = getElementByClassName( aTextShapeGroup, 'AnimatedElements' );
if( !aAnimatedElementGroup )
{
aAnimatedElementGroup = theDocument.createElementNS( NSS['svg'], 'g' );
aAnimatedElementGroup.setAttribute( 'class', 'AnimatedElements' );
aTextShapeGroup.appendChild( aAnimatedElementGroup );
}

var aAnimatableElement = theDocument.createElementNS( NSS['svg'], 'g' );
var aTextElement = theDocument.createElementNS( NSS['svg'], 'text' );
var aParagraphElement = aElement.cloneNode( true );

this.aGraphicGroupElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aGraphicGroupElement.setAttribute( 'class', 'GraphicGroup' );

var aBulletCharClone = null;
var aBulletCharElem = null;
var bIsBulletCharStyle =
( aElement.getAttributeNS( NSS['ooo'], aOOOAttrListItemNumberingType ) === 'bullet-style' );
if( bIsBulletCharStyle )
{
var aBulletCharGroupElem = getElementByClassName( aTextShapeGroup, 'BulletChars' );
if( aBulletCharGroupElem )
{
var aBulletPlaceholderElem = getElementByClassName( aElement, 'BulletPlaceholder' );
if( aBulletPlaceholderElem )
{
var sId = aBulletPlaceholderElem.getAttribute( 'id' );
sId = 'bullet-char-' + sId;
aBulletCharElem = theDocument.getElementById( sId );
if( aBulletCharElem )
{
aBulletCharClone = aBulletCharElem.cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
else
{
log( 'AnimatedTextElement: no bullet placeholder found' );
}
}
else
{
log( 'AnimatedTextElement: no bullet char group found' );
}
}

var aBitmapElemSet = [];
var aBitmapCloneSet = [];
var aBitmapPlaceholderSet = getElementsByClassName( aElement, 'BitmapPlaceholder' );
var i;
if( aBitmapPlaceholderSet )
{
for( i = 0; i < aBitmapPlaceholderSet.length; ++i )
{
sId = aBitmapPlaceholderSet[i].getAttribute( 'id' );
var sBitmapChecksum = sId.substring( 'bitmap-placeholder'.length + 1, sId.length - 1 );
sId = 'embedded-bitmap(' + sBitmapChecksum + ')';
aBitmapElemSet[i] = theDocument.getElementById( sId );
if( aBitmapElemSet[i] )
{
aBitmapCloneSet[i] = aBitmapElemSet[i].cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
}


this.sParagraphId = sId = aParagraphElement.getAttribute( 'id' );
aParagraphElement.removeAttribute( 'id' );
aAnimatableElement.setAttribute( 'id', sId +'.a' );
if( aBulletCharClone )
aBulletCharClone.removeAttribute( 'id' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
aBitmapCloneSet[i].removeAttribute( 'id' );
}

var sVisibilityAttr = aElement.getAttribute( 'visibility' );
if( nScaleFactorY == this.nScaleFactorY ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( this.nScaleFactorX, nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorY = nScaleFactorY;
};

AnimatedElement.prototype.setSize= function( aNewSize )
{
var nNewWidth = aNewSize[0];
var nNewHeight = aNewSize[1];
ANIMDBG.print( 'AnimatedElement.setSize:  = [' + nNewWidth + ',' + nNewHeight + ']');
if( nNewWidth < 0 )
{
log('AnimatedElement(' + this.getId() + ').setSize: negative width!');
nNewWidth = 0;
}
if( nNewHeight < 0 )
{
log('AnimatedElement(' + this.getId() + ').setSize: negative height!');
nNewHeight = 0;
}

var nBaseWidth = this.getBaseBBox().width;
var nScaleFactorX = nNewWidth / nBaseWidth;
if( nScaleFactorX < 1e-5 ) nScaleFactorX = 1e-5;

var nBaseHeight = this.getBaseBBox().height;
var nScaleFactorY = nNewHeight / nBaseHeight;
if( nScaleFactorY < 1e-5 ) nScaleFactorY = 1e-5;

if( nScaleFactorX == this.nScaleFactorX && nScaleFactorY == this.nScaleFactorY ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( nScaleFactorX, nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorX = nScaleFactorX;
this.nScaleFactorY = nScaleFactorY;
};

AnimatedElement.prototype.getOpacity = function()
{
return this.aActiveElement.getAttribute( 'opacity' );
};

AnimatedElement.prototype.setOpacity = function( nValue )
{
this.aActiveElement.setAttribute( 'opacity', nValue );
};

AnimatedElement.prototype.getRotationAngle = function()
{
return this.nRotationAngle;
};

AnimatedElement.prototype.setRotationAngle = function( nNewRotAngle )
{
this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(nNewRotAngle)
.scaleNonUniform( this.nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nRotationAngle = nNewRotAngle;
};

AnimatedElement.prototype.getVisibility = function()
{

var sVisibilityValue = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityValue || ( sVisibilityValue === 'inherit' ) )
return 'visible'; // TODO: look for parent visibility!
else
return sVisibilityValue;
};

AnimatedElement.prototype.setVisibility = function( sValue )
{
if( sValue == 'visible' )
sValue = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sValue );
};

AnimatedElement.prototype.getStrokeStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setStrokeStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setStrokeStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setFillStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFillStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
break;
}

return colorParser( sFillColorValue );
};

AnimatedElement.prototype.setFillColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'fill', sValue );
}
}
};

AnimatedElement.prototype.getStrokeColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sStrokeColorValue = '';
nStrokeWidth = nSW;
}
}

if( nStrokeWidth == 0 )
{
sStrokeWidth = ROOT_NODE.getAttribute( 'stroke-width' );
nStrokeWidth = parseFloat( sStrokeWidth );
}
if( nStrokeWidth != 0 )
{
nStrokeWidth *= 1.1;
var nHalfStrokeWidth = nStrokeWidth / 2;
var nDoubleStrokeWidth = nStrokeWidth * 2;

var aEBBox = document.documentElement.createSVGRect();
aEBBox.x = aBBox.x - nHalfStrokeWidth;
aEBBox.y = aBBox.y - nHalfStrokeWidth;
aEBBox.width = aBBox.width + nDoubleStrokeWidth;
aEBBox.height = aBBox.height + nDoubleStrokeWidth;
aBBox = aEBBox;
}
return aBBox;
};

AnimatedElement.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var aTranslation = SVGIdentityMatrix.translate( this.aClippingBBox.x,
this.aClippingBBox.y);
aClipPathContent.matrixTransform( aTranslation );
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


AnimatedElement.prototype.getX = function()
{
return this.nCenterX;
};

AnimatedElement.prototype.getY = function()
{
return this.nCenterY;
};

AnimatedElement.prototype.getPos = function()
{
return [this.getX(), this.getY()];
};

AnimatedElement.prototype.getWidth = function()
{
return this.nScaleFactorX * this.getBaseBBox().width;
};

AnimatedElement.prototype.getHeight = function()
{
return this.nScaleFactorY * this.getBaseBBox().height;
};

AnimatedElement.prototype.getSize = function()
{
return [this.getWidth(), this.getHeight()];
};

AnimatedElement.prototype.updateTransformAttribute = function()
{
this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
};

AnimatedElement.prototype.setX = function( nNewCenterX )
{
if( nNewCenterX === this.nCenterX ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( nNewCenterX - this.nCenterX, 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterX = nNewCenterX;
};

AnimatedElement.prototype.setY = function( nNewCenterY )
{
if( nNewCenterY === this.nCenterY ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( 0, nNewCenterY - this.nCenterY );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterY = nNewCenterY;
};

AnimatedElement.prototype.setPos = function( aNewPos )
{
var nNewCenterX = aNewPos[0];
var nNewCenterY = aNewPos[1];

if( nNewCenterX === this.nCenterX && nNewCenterY === this.nCenterY ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( nNewCenterX - this.nCenterX, nNewCenterY - this.nCenterY );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterX = nNewCenterX;
this.nCenterY = nNewCenterY;
};

AnimatedElement.prototype.setWidth = function( nNewWidth )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewWidth = ' + nNewWidth );
if( nNewWidth < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative width!');
nNewWidth = 0;
}

var nBaseWidth = this.getBaseBBox().width;
var nScaleFactorX = nNewWidth / nBaseWidth;

if( nScaleFactorX < 1e-5 ) nScaleFactorX = 1e-5;
if( nScaleFactorX == this.nScaleFactorX ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorX = nScaleFactorX;
};

AnimatedElement.prototype.setHeight = function( nNewHeight )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewHeight = ' + nNewHeight );
if( nNewHeight < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative height!');
nNewHeight = 0;
}

var nBaseHeight = this.getBaseBBox().height;
var nScaleFactorY = nNewHeight / nBaseHeight;

if( nScaleFactorY < 1e-5 ) nScaleFactorY = 1e-5;
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedElement.prototype.getId = function()
{
return this.aActiveElement.getAttribute( 'id' );
};

AnimatedElement.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimatedElement.prototype.setAdditiveMode = function( eAdditiveMode )
{
this.eAdditiveMode = eAdditiveMode;
};

AnimatedElement.prototype.setToElement = function( aElement )
{
if( !aElement )
{
log( 'AnimatedElement(' + this.getId() + ').setToElement: element is not valid' );
return false;
}

var aClone = aElement.cloneNode( true );
this.aPreviousElement = this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

return true;
};

AnimatedElement.prototype.notifySlideStart = function( aSlideShowContext )
{
if( !aSlideShowContext )
{
log( 'AnimatedElement.notifySlideStart: slideshow context is not valid' );
}
this.aSlideShowContext = aSlideShowContext;

var aClone = this.aBaseElement.cloneNode( true );
this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

this.initElement();
this.DBG( '.notifySlideStart invoked' );
};

AnimatedElement.prototype.notifySlideEnd = function()
{
};

AnimatedElement.prototype.notifyAnimationStart = function()
{
};

AnimatedElement.prototype.notifyAnimationEnd = function()
{
};

AnimatedElement.prototype.notifyNextEffectStart = function( /*nEffectIndex*/ )
{
};

AnimatedElement.prototype.saveState = function( nAnimationNodeId )
{
ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').saveState(' + nAnimationNodeId +')' );
if( !this.aStateSet[ nAnimationNodeId ] )
{
this.aStateSet[ nAnimationNodeId ] = {};
}
var aState = this.aStateSet[ nAnimationNodeId ];
aState.aElement = this.aActiveElement.cloneNode( true );
aState.nCenterX = this.nCenterX;
aState.nCenterY = this.nCenterY;
aState.nScaleFactorX = this.nScaleFactorX;
aState.nScaleFactorY = this.nScaleFactorY;
aState.nRotationAngle = this.nRotationAngle;

};

AnimatedElement.prototype.restoreState = function( nAnimationNodeId )
{
if( !this.aStateSet[ nAnimationNodeId ] )
{
log( 'AnimatedElement(' + this.getId() + ').restoreState: state '
+nAnimationNodeId  + ' is not valid' );
return false;
}

ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').restoreState(' + nAnimationNodeId +')' );
var aState = this.aStateSet[ nAnimationNodeId ];
var bRet = this.setToElement( aState.aElement );
if( bRet )
{
this.nCenterX = aState.nCenterX;
this.nCenterY = aState.nCenterY;
this.nScaleFactorX = aState.nScaleFactorX;
this.nScaleFactorY = aState.nScaleFactorY;
this.nRotationAngle = aState.nRotationAngle;
}
return bRet;
};

AnimatedElement.prototype.getBaseBBox = function()
{
return this.aBaseBBox;
};

AnimatedElement.prototype.getBaseCenterX = function()
{
return this.nBaseCenterX;
};

AnimatedElement.prototype.getBaseCenterY = function()
{
return this.nBaseCenterY;
};

AnimatedElement.prototype.getBBox = function()
{
return this.aActiveElement.parentNode.getBBox();
};

AnimatedElement.prototype.getBBoxWithStroke = function()
{
var aBBox = this.aActiveElement.parentNode.getBBox();

var aChildrenSet = this.aActiveElement.childNodes;

var sStroke, sStrokeWidth;
var nStrokeWidth = 0;
var i;
for( i = 0; i < aChildrenSet.length; ++i )
{
if( ! aChildrenSet[i].getAttribute  )
continue;

sStroke = aChildrenSet[i].getAttribute( 'stroke' );
if( sStroke && sStroke != 'none' )
{
sStrokeWidth = aChildrenSet[i].getAttribute( 'stroke-width' );
var nSW = parseFloat( sStrokeWidth );
if( nSW > nStrokeWidth )

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aSlideElement.parentNode.setAttribute( 'clip-path', sRef );
};

AnimatedSlide.prototype.cleanClipPath = function()
{
this.aSlideElement.parentNode.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedSlide.prototype.insertBefore = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.insertBefore( aElement, this.aSlideElement );
}
};

AnimatedSlide.prototype.appendElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.appendChild( aElement );
}
};

AnimatedSlide.prototype.removeElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.removeChild( aElement );
}
};

AnimatedSlide.prototype.getWidth = function()
{
return WIDTH;
};

AnimatedSlide.prototype.getHeight = function()
{
return HEIGHT;
};

AnimatedSlide.prototype.setOpacity = function( nValue )
{
this.aSlideElement.setAttribute( 'opacity', nValue );
};

AnimatedSlide.prototype.translate = function( nDx, nDy )
{
var sTransformAttr = 'translate(' + nDx + ',' + nDy + ')';
this.aSlideElement.setAttribute( 'transform', sTransformAttr );
};

AnimatedSlide.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


function AnimatedElement( aElement )
{
if( !aElement )
{
log( 'AnimatedElement constructor: element is not valid' );
}

this.aSlideShowContext = null;

this.aBaseElement = aElement.cloneNode( true );
this.aActiveElement = aElement;
this.sElementId = this.aActiveElement.getAttribute( 'id' );

this.aBaseBBox = this.aActiveElement.getBBox();
this.nBaseCenterX = this.aBaseBBox.x + this.aBaseBBox.width / 2;
this.nBaseCenterY = this.aBaseBBox.y + this.aBaseBBox.height / 2;


this.aClipPathElement = null;
this.aClipPathContent = null;

this.aPreviousElement = null;
this.aStateSet = {};

this.eAdditiveMode = ADDITIVE_MODE_REPLACE;
this.bIsUpdated = true;

this.aTMatrix = document.documentElement.createSVGMatrix();
this.aCTM = document.documentElement.createSVGMatrix();
this.aICTM = document.documentElement.createSVGMatrix();

this.initElement();
}

AnimatedElement.prototype.initElement = function()
{
this.nCenterX = this.nBaseCenterX;
this.nCenterY = this.nBaseCenterY;
this.nScaleFactorX = 1.0;
this.nScaleFactorY = 1.0;
this.nRotationAngle = 0.0;

this.aActiveElement.setAttribute( 'transform', makeMatrixString( 1, 0, 0, 1, 0, 0 ) );
};

AnimatedElement.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sElementId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
this.aClippingBBox = this.getBBoxWithStroke();
var nWidth = this.aClippingBBox.width;
var nHeight = this.aClippingBBox.height;
var sPathData = 'M ' + this.aClippingBBox.x + ' ' + this.aClippingBBox.y +
' h ' + nWidth + ' v ' + nHeight + ' h -' + nWidth + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aActiveElement.setAttribute( 'clip-path', sRef );
};

AnimatedElement.prototype.cleanClipPath = function()
{
this.aActiveElement.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
var len   = Math.floor( (e - edge/2) * edge1 * 4);
var w     = Math.PI / 2;

while(len > 0) {
var alen = Math.min(len, edge1);
len -= alen;
poly = createUnitSquarePath();
aTransform = SVGIdentityMatrix.scale(
pruneScaleValue( alen / this.sqrtElements ),
pruneScaleValue( 1.0 / this.sqrtElements ));
aTransform = aTransform.translate(
- pruneScaleValue( (edge / 2) / this.sqrtElements ),
pruneScaleValue( (edge / 2) / this.sqrtElements ));
aTransform = aTransform.rotate( w );
w -= Math.PI / 2;
aTransform = aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
}

return res;
}

SpiralWipePath.prototype.perform = function( nT ) {
var res         = createUnitSquarePath();
var innerSpiral = this.calcNegSpiral( 1.0 - nT );
innerSpiral.changeOrientation();
res.appendPath(innerSpiral);

return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function BoxSnakesWipePath(nElements, bFourBox) {
SpiralWipePath.call(this, nElements);
this.bFourBox = bFourBox;
}

BoxSnakesWipePath.prototype = Object.create(SpiralWipePath);

BoxSnakesWipePath.prototype.perform = function( nT ) {
var res = createUnitSquarePath(), aTransform;
var innerSpiral = SpiralWipePath.prototype.calcNegSpiral.call(this, 1.0 - nT);
innerSpiral.changeOrientation();

if(this.bFourBox) {
aTransform = SVGIdentityMatrix.scale(0.5, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
innerSpiral = flipOnYAxis(innerSpiral);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
else {
aTransform = SVGIdentityMatrix.scale(1.0, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function VeeWipePath() { }

VeeWipePath.prototype.perform = function( nT ) {
const d = pruneScaleValue(2.0 * nT);
var polyPath = 'M ' + 0.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 0.5 + ' ' + d + ' ';
polyPath += 'L ' + 1.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';

var aPolyPolyPath = document.createElementNS( NSS['svg'], 'path');
aPolyPolyPath.setAttribute('d', polyPath);
return aPolyPolyPath;
}


function AnimatedSlide( aMetaSlide )
{
if( !aMetaSlide )
{
log( 'AnimatedSlide constructor: meta slide is not valid' );
}

this.aMetaSlide = aMetaSlide;
this.aSlideElement = this.aMetaSlide.slideElement;
this.sSlideId = this.aMetaSlide.slideId;

this.aUsedAttributeSet = [];

this.aClipPathElement = null;
this.aClipPathContent = null;
this.bIsClipped = false;
}

AnimatedSlide.prototype.show = function()
{
this.aMetaSlide.show();
};

AnimatedSlide.prototype.hide = function()
{
this.aMetaSlide.hide();
};

AnimatedSlide.prototype.notifyUsedAttribute = function( sName )
{
if( sName == 'clip-path' )
{
this.initClipPath();
this.bIsClipped = true;
}
else
{
this.aUsedAttributeSet.push( sName );
}
};

AnimatedSlide.prototype.reset = function()
{
if( this.bIsClipped )
{
this.cleanClipPath();
this.bIsClipped = false;
}

var i;
for( i = 0; i < this.aUsedAttributeSet.length; ++i )
{
var sAttrName = this.aUsedAttributeSet[i];
this.aSlideElement.removeAttribute( sAttrName );
}
this.aUsedAttributeSet = [];
};

AnimatedSlide.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sSlideId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
var sPathData = 'M 0 0 h ' + WIDTH + ' v ' + HEIGHT + ' h -' + WIDTH + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.rotate((Math.PI)/2 + (Math.PI)/4);
aTransform.translate(edge + this.elementEdge, 0.0);
}
else {
aTransform = SVGIdentityMatrix.translate(-a, 0.0);
aTransform.rotate(-(Math.PI/4));
aTransform.translate(0.0, edge);
}

poly.matrixTransform(aTransform);
res.appendPath(poly);
}
else { //out
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(Math.floor(sqrtArea2)/this.sqrtElements);

let aPath, aPoint = document.documentElement.createSVGPoint();
if(edge != 0) {
aPoint.y = 1.0;
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 1.0;
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = ((1.0 - nT) * Math.SQRT2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.translate(0.0, -height);
aTransform.rotate(Math.PI/2 + Math.PI/4);
aTransform.translate(1.0, edge);
}
else {
aTransform = SVGIdentityMatrix.rotate(-(Math.PI/4));
aTransform = aTransform.translate(edge, 1.0);
}
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
return res;
}

SnakeWipePath.prototype.perform = function(nT) {
var res = createEmptyPath();
if(this.diagonal) {
if(nT >= 0.5) {
res.appendPath(this.calcHalfDiagonalSnake(1.0, true));
res.appendPath(this.calcHalfDiagonalSnake(2.0*(nT-0.5), false));
}
else
res.appendPath(this.calcHalfDiagonalSnake(2.0*nT, true));
}
else
res = this.calcSnake(nT);

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function ParallelSnakesWipePath(nElements, bDiagonal, bFlipOnYAxis, bOpposite) {
SnakeWipePath.call(this, nElements, bDiagonal, bFlipOnYAxis);
this.bOpposite = bOpposite;
}

ParallelSnakesWipePath.prototype = Object.create(SnakeWipePath);

ParallelSnakesWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath(), half, aTransform;
if(this.diagonal) {
assert(this.bOpposite);
half = SnakeWipePath.prototype.calcHalfDiagonalSnake.call(this, nT, false);
aTransform = SVGIdentityMatrix.scale(1, -1);
aTransform.translate(-0.5, 0.5);
aTransform.rotate(Math.PI/2);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
half.changeOrientation();
res.appendPath(half);

aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(half);
}
else {
half = SnakeWipePath.prototype.calcSnake.call(this, nT / 2.0 );
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI/2);
aTransform = aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(flipOnYAxis(half));
res.appendPath(this.bOpposite ? flipOnXAxis(half) : half);
}

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function SpiralWipePath(nElements, bFlipOnYAxis) {
this.nElements    = nElements;
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.bFlipOnYAxis = bFlipOnYAxis;
}

SpiralWipePath.prototype.calcNegSpiral = function( nT ) {
var area  = nT * this.nElements;
var e     = (Math.sqrt(area) / 2.0);
var edge  = Math.floor(e) * 2;

var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
var edge_ = pruneScaleValue(edge / this.sqrtElements);

aTransform = aTransform.scale(edge_, edge_);
aTransform = aTransform.translate(0.5, 0.5);
var poly = createUnitSquarePath();
poly.matrixTransform(aTransform);
var res = poly.cloneNode(true);

if(1.0 - nT != 0) {
var edge1 = edge + 1;
this.nElements = nElements;
this.aBasePath = createUnitSquarePath();
this.aPositionArray = new Array( nElements );
this.aClipPath = createEmptyPath();
this.nAlreadyAppendedElements = 0;

var fEdgeLength, nPos, aTransform;

if( bRandomBars ) // random bar wipe
{
fEdgeLength = 1.0 / nElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = { x: 0.0, y: pruneScaleValue( nPos * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scaleNonUniform( 1.0, pruneScaleValue( fEdgeLength ) );
}
else // dissolve wipe
{
var nSqrtElements = Math.round( Math.sqrt( nElements ) );
fEdgeLength = 1.0 / nSqrtElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = {
x: pruneScaleValue( ( nPos % nSqrtElements ) * fEdgeLength ),
y: pruneScaleValue( ( nPos / nSqrtElements ) * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scale( pruneScaleValue( fEdgeLength ) );
}
this.aBasePath.matrixTransform( aTransform );

var nPos1, nPos2;
var tmp;
for( nPos1 = nElements - 1; nPos1 > 0; --nPos1 )
{
nPos2 = getRandomInt( nPos1 + 1 );
tmp = this.aPositionArray[nPos1];
this.aPositionArray[nPos1] = this.aPositionArray[nPos2];
this.aPositionArray[nPos2] = tmp;
}
}

RandomWipePath.prototype.perform = function( nT )
{
var aPolyPath = createEmptyPath();
var aPoint;
var aPath;
var aTransform;
var nElements = Math.round( nT * this.nElements );
if( nElements === 0 )
{
return aPolyPath;
}
if( this.nAlreadyAppendedElements >= nElements )
{
this.nAlreadyAppendedElements = 0;
this.aClipPath = createEmptyPath();
}
var nPos;
for( nPos = this.nAlreadyAppendedElements; nPos < nElements; ++nPos )
{
aPoint = this.aPositionArray[nPos];
aPath = this.aBasePath.cloneNode( true );
aTransform = SVGIdentityMatrix.translate( aPoint.x, aPoint.y );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}

this.nAlreadyAppendedElements = nElements;
this.aClipPath.appendPath( aPolyPath );

return this.aClipPath.cloneNode( true );
};

function SnakeWipePath(nElements, bDiagonal, bflipOnYAxis)
{
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.elementEdge  = (1.0 / this.sqrtElements);
this.diagonal     = bDiagonal;
this.flipOnYAxis  = bflipOnYAxis;
this.aBasePath    = createUnitSquarePath();
}

SnakeWipePath.prototype.calcSnake = function(t)
{
var aPolyPath = createEmptyPath();
const area   = (t * this.sqrtElements * this.sqrtElements);
const line_  = Math.floor(area) / this.sqrtElements;
const line   = pruneScaleValue(line_ / this.sqrtElements);
const col    = pruneScaleValue((area - (line_ * this.sqrtElements)) / this.sqrtElements);

if(line != 0) {
let aPath = 'M '+ 0.0 + ' ' + 0.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + 0.0 + ' ';
aPath += 'L 0 0 ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}
if(col != 0) {
var offset = 0.0;
if((line_ & 1) == 1) {
offset = (1.0 - col);
}
let aPath = 'M ' + offset + ' ' + line + ' ';
aPath += 'L '+ offset + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + line + ' ';
aPath += 'L ' + offset + ' ' + line + ' ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}

return aPolyPath;
}

SnakeWipePath.prototype.calcHalfDiagonalSnake = function(nT, bIn) {
var res = createEmptyPath();

if(bIn) {
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(sqrtArea2 / this.sqrtElements);

var aPath, aPoint = document.documentElement.createSVGPoint();
if(edge) {
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = (nT * Math.SQRT1_2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
WaterfallWipePath.prototype.perform = function( nT ) {
var poly = this.aBasePath.cloneNode(true);
var aTransform = SVGIdentityMatrix.translate(0.0, pruneScaleValue(2.0 * nT));
poly.matrixTransform(aTransform);
var aHead = 'M ' + 0.0 + ' ' + -1.0 + ' ';
var aHeadPath= document.createElementNS( NSS['svg'], 'path');
aHeadPath.setAttribute('d', aHead);

var aTail = 'M ' + 1.0 + ' ' + -1.0 + ' ';
var aTailPath = document.createElementNS( NSS['svg'], 'path');
aTailPath.setAttribute('d', aTail);

poly.prependPath(aHeadPath);
poly.appendPath(aTailPath);

return this.bFlipOnYAxis ? flipOnYAxis(poly) : poly;
}

function DoubleDiamondWipePath() { }

DoubleDiamondWipePath.prototype.perform = function( nT ) {
var a = pruneScaleValue(0.25 + (nT * 0.75));
var aPath = 'M ' + (0.5 + a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - a) + ' ';
aPath += 'L ' + (0.5 - a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + a) + ' ';
aPath += 'L ' + (0.5 + a) + ' ' + 0.5 + ' ';
var poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
var res = poly.cloneNode(true);

var b = pruneScaleValue( (1.0 - nT) * 0.25);
aPath = 'M ' + (0.5 + b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + b) + ' ';
aPath += 'L ' + (0.5 - b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - b) + ' ';
aPath += 'L ' + (0.5 + b) + ' ' + 0.5 + ' ';
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);

return res;
}

function IrisWipePath(unitRect) {
this.unitRect = unitRect;
this.aBasePath = createUnitSquarePath();
}


IrisWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.multiply(SVGIdentityMatrix.scaleNonUniform(d, d).translate(0.5, 0.5));
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function ZigZagWipePath(nZigs) {
this.zigEdge = 1.0/nZigs;
const d = this.zigEdge;
const d2 = (d / 2.0);
this.aBasePath = 'M ' + (-1.0 - d) + ' ' + -d + ' ';
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + (1.0 + d) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (1.0 + d) + ' ';

for(var pos = (nZigs + 2); pos--; ) {
this.aBasePath += 'L ' + 0.0 + ' ' + ((pos - 1) * d + d2) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (pos - 1) * d + ' ';
}
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + -d + ' ';
}

ZigZagWipePath.prototype.perform = function( nT ) {
var res = document.createElementNS( NSS['svg'], 'path');
res.setAttribute('d', this.aBasePath);
res.matrixTransform(SVGIdentityMatrix.translate((1.0 + this.zigEdge) * nT, 0.0));
return res;
}

function BarnZigZagWipePath( nZigs ) { ZigZagWipePath.call(this, nZigs); }

BarnZigZagWipePath.prototype = Object.create(ZigZagWipePath);

BarnZigZagWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath();
var poly = document.createElementNS( NSS['svg'], 'path');
var aTransform = SVGIdentityMatrix.translate(
((1.0 + this.zigEdge) * (1.0 - nT)) / 2.0, 0.0);
poly.setAttribute('d', this.aBasePath);
poly.changeOrientation();
poly.matrixTransform(aTransform);
res.appendPath(poly);

aTransform = SVGIdentityMatrix.scale(-1.0, 1.0);
aTransform.translate(1.0, this.zigEdge / 2.0);
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', this.aBasePath);
poly.matrixTransform(aTransform);
res.appendPath(poly);

return res;
}

function CheckerBoardWipePath( unitsPerEdge )
{
this.unitsPerEdge = unitsPerEdge;
if( this.unitsPerEdge === undefined || this.unitsPerEdge < 1 )
this.unitsPerEdge = 10;
this.aBasePath = createUnitSquarePath();
}

CheckerBoardWipePath.prototype.perform = function( nT )
{
var d = pruneScaleValue(1.0 / this.unitsPerEdge);
var aMatrix = SVGIdentityMatrix.scaleNonUniform(pruneScaleValue( d*2.0*nT ),
pruneScaleValue( d ) );

var aPolyPath = null;
var i, j;
var aTransform;
var aPath;
for ( i = this.unitsPerEdge; i--; )
{
aTransform = SVGIdentityMatrix;

if ((i % 2) == 1) // odd line
aTransform = aTransform.translate( -d, 0.0 );

aTransform = aTransform.multiply( aMatrix );

for ( j = (this.unitsPerEdge / 2) + 1; j--;)
{
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
if (aPolyPath == null) aPolyPath = aPath;
else aPolyPath.appendPath( aPath );
aTransform = SVGIdentityMatrix.translate( d*2.0, 0.0 ).multiply( aTransform );
}

aMatrix = SVGIdentityMatrix.translate( 0.0, d ).multiply( aMatrix ); // next line
}

return aPolyPath;
};


function RandomWipePath( nElements, bRandomBars )
{
var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( nT ).translate( -0.5, -0.5 );
var aEllipse = this.aBasePath.cloneNode( true );
aEllipse.matrixTransform( aTransform );

return aEllipse;
};

function FanWipePath(bIsCenter, bIsSingle, bIsFanIn) {
this.bCenter = bIsCenter;
this.bSingle = bIsSingle;
this.bFanIn  = bIsFanIn;
this.aBasePath = createUnitSquarePath();
}

FanWipePath.prototype.perform = function( nT ) {
var res = this.aBasePath.cloneNode(true);
var poly = PinWheelWipePath.calcCenteredClock(
nT / ((this.bCenter && this.bSingle) ? 2.0 : 4.0), 1.0);
res.appendPath(poly);
var aTransform = SVGIdentityMatrix.flipY();
aTransform = aTransform.scaleNonUniform(-1.0, 1.0);
poly.matrixTransform(aTransform);
res.appendPath(poly);

if(this.bCenter) {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
res.matrixTransform(aTransform);

if(!this.bSingle)
res.appendPath(flipOnXAxis(res));
}
else {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 1.0).translate(0.5, 1.0);
res.matrixTransform(aTransform);
}
return res;
}

function ClockWipePath() { }

ClockWipePath.prototype.perform = function( nT ) {
const aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
var aPolyPath = PinWheelWipePath.calcCenteredClock(nT, 1.0);
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
}

function PinWheelWipePath( nBlades )
{
this.nBlades = nBlades;
if( !this.nBlades || this.nBlades < 1 )
this.nBlades = 1;
}

PinWheelWipePath.calcCenteredClock = function( nT, nE )
{
var nMAX_EDGE = 2;

var aTransform = SVGIdentityMatrix.rotate( nT * 360 );

var aPoint = document.documentElement.createSVGPoint();
aPoint.y = -nMAX_EDGE;
aPoint = aPoint.matrixTransform( aTransform );

var sPathData = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
if( nT >= 0.875 )
sPathData += 'L ' + '-' + nE + ' -' + nE + ' ';
if( nT >= 0.625 )
sPathData += 'L ' + '-' + nE + ' ' + nE + ' ';
if( nT >= 0.375 )
sPathData += 'L ' + nE + ' ' + nE + ' ';
if( nT >= 0.125 )
sPathData += 'L ' + nE + ' -' + nE + ' ';

sPathData += 'L 0 -' + nE + ' ';
sPathData += 'L 0 0 ';
sPathData += 'L '  + aPoint.x + ' ' + aPoint.y;

var aPath = document.createElementNS( NSS['svg'], 'path' );
aPath.setAttribute( 'd', sPathData );
return aPath;
};

PinWheelWipePath.prototype.perform = function( nT )
{
var aBasePath = PinWheelWipePath.calcCenteredClock( nT / this.nBlades,
2.0 /* max edge when rotating */  );

var aPolyPath = aBasePath.cloneNode( true );
var aPath;
var aRotation;
var i;
for( i = this.nBlades - 1; i > 0; --i )
{
aRotation = SVGIdentityMatrix.rotate( (i * 360) / this.nBlades );
aPath = aBasePath.cloneNode( true );
aPath.matrixTransform( aRotation );
aPolyPath.appendPath( aPath );
}

var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( 0.5 );
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
};

function BarnDoorWipePath(doubled) {
this.aBasePath = createUnitSquarePath();
this.doubled   = doubled;
}

BarnDoorWipePath.prototype.perform = function( nT ) {
if(this.doubled)
nT /= 2.0;
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.scaleNonUniform(pruneScaleValue(nT), 1.0).translate(0.5, 0.5);
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
var res = aPath;

if(this.doubled) {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI / 2).translate(0.5, 0.5);
aPath.matrixTransform(aTransform);
res.appendPath(aPath);
}
return res;
}

function WaterfallWipePath(nElements, bFlipOnYAxis) {
this.bFlipOnYAxis = bFlipOnYAxis;

var sqrtElements = Math.floor(Math.sqrt(nElements));
var elementEdge = 1.0/sqrtElements;

var aPath = 'M '+ 0.0 + ' ' + -1.0 + ' ';
for(var pos = sqrtElements; pos--; ) {
var xPos = sqrtElements - pos - 1;
var yPos = pruneScaleValue( ((pos+1) * elementEdge) - 1.0);

aPath += 'L ' + pruneScaleValue(xPos * elementEdge) + ' ' + yPos + ' ';
aPath += 'L ' + pruneScaleValue((xPos+1)*elementEdge) + ' ' + yPos + ' ';
}
aPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';
this.aBasePath = document.createElementNS( NSS['svg'], 'path');
this.aBasePath.setAttribute('d', aPath);
}

{
var i;
var aTransform;
var aPath;
for( i = this.nBars - 1; i > 0; --i )
{
aTransform = SVGIdentityMatrix.translate( i / this.nBars, 0.0 );
aTransform = aTransform.multiply( aMatrix );
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}
}
return aPolyPath;
};


function BoxWipePath(bIsTopCentered) {
this.bIsTopCentered = bIsTopCentered;
this.aBasePath = createUnitSquarePath();
}

BoxWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix;
if(this.bIsTopCentered) {
aTransform = aTransform.translate(-0.5, 0.0).scale(d, d).translate(0.5, 0.0);
}
else {
aTransform = aTransform.scale(d, d);
}
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function SweepWipePath(bCenter, bSingle, bOppositeVertical, bFlipOnYAxis) {
this.bCenter = bCenter;
this.bSingle = bSingle;
this.bOppositeVertical = bOppositeVertical;
this.bFlipOnYAxis = bFlipOnYAxis;
this.aBasePath = createUnitSquarePath();
}

SweepWipePath.prototype.perform = function( nT ) {
nT /= 2.0;
if(!this.bCenter)
nT /= 2.0;
if(!this.bSingle && !this.bOppositeVertical)
nT /= 2.0;

var poly = PinWheelWipePath.calcCenteredClock( nT + 0.25, 1.0 );
var aTransform;

if(this.bCenter) {
aTransform = SVGIdentityMatrix.translate(0.5, 0.0);
poly.matrixTransform(aTransform);
}
var res = poly;

if(!this.bSingle) {
if(this.bOppositeVertical) {
aTransform = SVGIdentityMatrix.scale(1.0, -1.0);
aTransform.translate(0.0, 1.0);
poly.matrixTransform(aTransform);
poly.changeOrientation();
}
else {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
}
res.appendPath(poly);
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function FourBoxWipePath( bCornersOut )
{
this.bCornersOut = bCornersOut;
this.aBasePath = createUnitSquarePath();
}

FourBoxWipePath.prototype.perform = function( nT )
{
var aMatrix;
var d = pruneScaleValue( nT / 2.0 );

if( this.bCornersOut )
{
aMatrix = SVGIdentityMatrix.translate( -0.25, -0.25 ).scale( d ).translate( -0.5, -0.5 );
}
else
{
aMatrix = SVGIdentityMatrix.translate( -0.5, -0.5 ).scale( d );
}


var aTransform = aMatrix;
var aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
var aPolyPath = aSquare;
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipX();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );

aMatrix = SVGIdentityMatrix.translate( 0.5, 0.5 );
aMatrix = aMatrix.scale( 1.1 );
aPolyPath.matrixTransform( aMatrix );

return aPolyPath;
};


function EllipseWipePath( eSubtype )
{
this.eSubtype = eSubtype;

var sPathData = 'M 0.5 -0.207107 ' +
'C 0.687536 -0.207107 0.867392 -0.132608 1 0 ' +
'C 1.13261 0.132608 1.20711 0.312464 1.20711 0.5 ' +
'C 1.20711 0.687536 1.13261 0.867392 1 1 ' +
'C 0.867392 1.13261 0.687536 1.20711 0.5 1.20711 ' +
'C 0.312464 1.20711 0.132608 1.13261 0 1 ' +
'C -0.132608 0.867392 -0.207107 0.687536 -0.207107 0.5 ' +
'C -0.207107 0.312464 -0.132608 0.132608 0 0 ' +
'C 0.132608 -0.132608 0.312464 -0.207107 0.5 -0.207107';

this.aBasePath = document.createElementNS( NSS['svg'], 'path' );
this.aBasePath.setAttribute( 'd', sPathData );
}

EllipseWipePath.prototype.perform = function( nT )
{

case THREEBLADE_TRANS_SUBTYPE:
nBlades = 3;
break;
case FOURBLADE_TRANS_SUBTYPE:
nBlades = 4;
break;
case EIGHTBLADE_TRANS_SUBTYPE:
nBlades = 8;
break;
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
return new PinWheelWipePath( nBlades );
case CLOCKWIPE_TRANSITION:
return new ClockWipePath();
case RANDOMBARWIPE_TRANSITION:
return new RandomWipePath( 128, true /* bars */ );
case CHECKERBOARDWIPE_TRANSITION:
return new CheckerBoardWipePath( 10 );
case ZIGZAGWIPE_TRANSITION:
return new ZigZagWipePath( 5 );
case BARNZIGZAGWIPE_TRANSITION:
return new BarnZigZagWipePath( 5 );
case IRISWIPE_TRANSITION:
switch(nSubtype)
{
case RECTANGLE_TRANS_SUBTYPE:
return new IrisWipePath(0);
case DIAMOND_TRANS_SUBTYPE:
return new IrisWipePath(1);
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
case BARNDOORWIPE_TRANSITION:
return new BarnDoorWipePath(false);
case SINGLESWEEPWIPE_TRANSITION:
return new SweepWipePath(
nSubtype == CLOCKWISETOP_TRANS_SUBTYPE ||
nSubtype == CLOCKWISERIGHT_TRANS_SUBTYPE ||
nSubtype == CLOCKWISEBOTTOM_TRANS_SUBTYPE ||
nSubtype == CLOCKWISELEFT_TRANS_SUBTYPE,
true,
false,
nSubtype == COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE ||
nSubtype == COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE );
case WATERFALLWIPE_TRANSITION:
return new WaterfallWipePath(128, // flipOnYAxis
nSubtype == VERTICALRIGHT_TRANS_SUBTYPE ||
nSubtype == HORIZONTALLEFT_TRANS_SUBTYPE);
case MISCDIAGONALWIPE_TRANSITION:
switch(nSubtype) {
case DOUBLEBARNDOOR_TRANS_SUBTYPE:
return new BarnDoorWipePath(true /* Doubled */);
case DOUBLEDIAMOND_TRANS_SUBTYPE:
return new DoubleDiamondWipePath();
default:
log( 'createClipPolyPolygon: unhandled subtype: ' + nSubtype );
return null;
}
case DISSOLVE_TRANSITION:
return new RandomWipePath( 16 * 16, false /* dissolve */ );
case VEEWIPE_TRANSITION:
return new VeeWipePath();
case SNAKEWIPE_TRANSITION:
return new SnakeWipePath( 8 * 8, // diagonal
nSubtype == TOPLEFTDIAGONAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE   ,
nSubtype == TOPLEFTVERTICAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE
);
case PARALLELSNAKESWIPE_TRANSITION:
return new ParallelSnakesWipePath(
8 * 8, // elements
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
nSubtype == VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE    ||
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE
);

case SPIRALWIPE_TRANSITION:
return new SpiralWipePath(
8 * 8, // elements
nSubtype == TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE );

case BOXSNAKESWIPE_TRANSITION:
return new BoxSnakesWipePath(
8 * 8,
nSubtype == FOURBOXVERTICAL_TRANS_SUBTYPE ||
nSubtype == FOURBOXHORIZONTAL_TRANS_SUBTYPE );
}
}


function createUnitSquarePath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 1 0 L 1 1 L 0 1 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function createEmptyPath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function pruneScaleValue( nVal )
{
if( nVal < 0.0 )
return (nVal < -0.00001 ? nVal : -0.00001);
else
return (nVal > 0.00001 ? nVal : 0.00001);
}


function BarWipePath( nBars /* nBars > 1: blinds effect */ )
{
this.nBars = nBars;
if( this.nBars === undefined || this.nBars < 1 )
this.nBars = 1;
this.aBasePath = createUnitSquarePath();
}

BarWipePath.prototype.perform = function( nT )
{

var aMatrix = SVGIdentityMatrix.scaleNonUniform( pruneScaleValue( nT / this.nBars ), 1.0 );

var aPolyPath = this.aBasePath.cloneNode( true );
aPolyPath.matrixTransform( aMatrix );

if( this.nBars > 1 )
this.aStaticTransformation = null;
this.bForwardParameterSweep = true;
this.bSubtractPolygon = false;
this.bScaleIsotropically = aTransitionInfo.scaleIsotropically;
this.bFlip = false;

assert( this.aParametricPolyPolygon,
'ClippingFunctor: parametric polygon is not valid' );

if( aTransitionInfo.rotationAngle != 0.0 ||
aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
{
this.aStaticTransformation = SVGIdentityMatrix.translate( 0.5, 0.5 );
if( aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
this.aStaticTransformation
= this.aStaticTransformation.scaleNonUniform( aTransitionInfo.scaleX,
aTransitionInfo.scaleY );
if( aTransitionInfo.rotationAngle != 0.0 )
this.aStaticTransformation
= this.aStaticTransformation.rotate( aTransitionInfo.rotationAngle );
this.aStaticTransformation = this.aStaticTransformation.translate( -0.5, -0.5 );
}
else
{
this.aStaticTransformation = document.documentElement.createSVGMatrix();
}

if( !bIsDirectionForward )
{
var aMatrix = null;
switch( aTransitionInfo.reverseMethod )
{
default:
log( 'ClippingFunctor: unexpected reverse method.' );
break;
case REVERSEMETHOD_IGNORE:
break;
case REVERSEMETHOD_INVERT_SWEEP:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
break;
case REVERSEMETHOD_SUBTRACT_POLYGON:
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_SUBTRACT_AND_INVERT:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_ROTATE_180:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.setToRotationAroundPoint( 0.5, 0.5, 180 );
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
break;
case REVERSEMETHOD_FLIP_X:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.a = -1; aMatrix.e = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
case REVERSEMETHOD_FLIP_Y:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.d = -1; aMatrix.f = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
}
}

if( !bIsModeIn )
{
if( aTransitionInfo.outInvertsSweep )
{
this.bForwardParameterSweep = !this.bForwardParameterSweep;
}
else
{
this.bSubtractPolygon = !this.bSubtractPolygon;
}
}
}

ClippingFunctor.aBoundingPath = document.createElementNS( NSS['svg'], 'path' );
ClippingFunctor.aBoundingPath.setAttribute( 'd', 'M -1 -1 L 2 -1 L 2 2 L -1 2 L -1 -1' );

ClippingFunctor.prototype.perform = function( nT, nWidth, nHeight )
{
var aClipPoly = this.aParametricPolyPolygon.perform( this.bForwardParameterSweep ? nT : (1 - nT) );


if( this.bSubtractPolygon )
{
aClipPoly.changeOrientation();
aClipPoly.prependPath( ClippingFunctor.aBoundingPath );
}

var aMatrix;
if( this.bScaleIsotropically )
{
var nScaleFactor = Math.max( nWidth, nHeight );
aMatrix = SVGIdentityMatrix.translate( -( nScaleFactor - nWidth ) / 2.0,
-( nScaleFactor - nHeight ) / 2.0 );
aMatrix = aMatrix.scale( nScaleFactor );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}
else
{
aMatrix = SVGIdentityMatrix.scaleNonUniform( nWidth, nHeight );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}

aClipPoly.matrixTransform( aMatrix );

return aClipPoly;
};


function createClipPolyPolygon( nType, nSubtype )
{
switch( nType )
{
default:
log( 'createClipPolyPolygon: unknown transition type: ' + nType );
return null;
case BARWIPE_TRANSITION:
return new BarWipePath( 1 );
case FOURBOXWIPE_TRANSITION:
return new FourBoxWipePath( nSubtype === CORNERSOUT_TRANS_SUBTYPE );
case BOXWIPE_TRANSITION:
return new BoxWipePath( nSubtype == LEFTCENTER_TRANS_SUBTYPE ||
nSubtype == TOPCENTER_TRANS_SUBTYPE ||
nSubtype == RIGHTCENTER_TRANS_SUBTYPE ||
nSubtype == BOTTOMCENTER_TRANS_SUBTYPE );
case ELLIPSEWIPE_TRANSITION:
return new EllipseWipePath( nSubtype );
case FANWIPE_TRANSITION:
return new FanWipePath(nSubtype == CENTERTOP_TRANS_SUBTYPE ||
nSubtype == CENTERRIGHT_TRANS_SUBTYPE, true, false);
case PINWHEELWIPE_TRANSITION:
var nBlades;
switch( nSubtype )
{
case ONEBLADE_TRANS_SUBTYPE:
nBlades = 1;
break;
case DEFAULT_TRANS_SUBTYPE:
case TWOBLADEVERTICAL_TRANS_SUBTYPE:
nBlades = 2;
break;
case TWOBLADEHORIZONTAL_TRANS_SUBTYPE:
nBlades = 2;
break;
};


function FadingSlideChange( aLeavingSlide, aEnteringSlide )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.bFirstRun = true;
}
extend( FadingSlideChange, SlideChangeBase );

FadingSlideChange.prototype.start = function()
{
FadingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( nT );
};

FadingSlideChange.prototype.performOut = function( nT )
{

this.aLeavingSlide.setOpacity( 1 - nT );
};


function FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, sFadeColor )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.sFadeColor = sFadeColor;
if( !this.sFadeColor )
{
log( 'FadingOverColorSlideChange: sFadeColor not valid.' );
this.sFadeColor = '#000000';
}
this.aColorPlaneElement = this.createColorPlaneElement();
}
extend( FadingOverColorSlideChange, SlideChangeBase );

FadingOverColorSlideChange.prototype.start = function()
{
FadingOverColorSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.insertBefore( this.aColorPlaneElement );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingOverColorSlideChange.prototype.end = function()
{
FadingOverColorSlideChange.superclass.end.call( this );
this.aLeavingSlide.removeElement( this.aColorPlaneElement );
};

FadingOverColorSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( (nT > 0.55) ? 2.0*(nT-0.55) : 0.0 );
};

FadingOverColorSlideChange.prototype.performOut = function( nT )
{
this.aLeavingSlide.setOpacity( (nT > 0.45) ? 0.0 : 2.0*(0.45-nT) );
};

FadingOverColorSlideChange.prototype.createColorPlaneElement = function()
{
var aColorPlaneElement = document.createElementNS( NSS['svg'], 'rect' );
aColorPlaneElement.setAttribute( 'width', String( this.aLeavingSlide.getWidth() ) );
aColorPlaneElement.setAttribute( 'height', String( this.aLeavingSlide.getHeight() ) );
aColorPlaneElement.setAttribute( 'fill', this.sFadeColor );
return aColorPlaneElement;
};


function MovingSlideChange( aLeavingSlide, aEnteringSlide,
aLeavingDirection, aEnteringDirection )
{
MovingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.aLeavingDirection = aLeavingDirection;
this.aEnteringDirection = aEnteringDirection;
}
extend( MovingSlideChange, SlideChangeBase );

MovingSlideChange.prototype.start = function()
{
MovingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'transform' );
this.aLeavingSlide.notifyUsedAttribute( 'transform' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

MovingSlideChange.prototype.performIn = function( nT )
{
var nS = nT - 1;
var dx = nS * this.aEnteringDirection.x * this.aEnteringSlide.getWidth();
var dy = nS * this.aEnteringDirection.y * this.aEnteringSlide.getHeight();
this.aEnteringSlide.translate( dx, dy );
};

MovingSlideChange.prototype.performOut = function( nT )
{
var dx = nT * this.aLeavingDirection.x * this.aLeavingSlide.getWidth();
var dy = nT * this.aLeavingDirection.y * this.aLeavingSlide.getHeight();
this.aLeavingSlide.translate( dx, dy );
};


function ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, bIsDirectionForward )
{
ClippedSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );

var bIsModeIn = true;
this.aClippingFunctor= new ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn );
}
extend( ClippedSlideChange, SlideChangeBase );

ClippedSlideChange.prototype.start = function()
{
ClippedSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'clip-path' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

ClippedSlideChange.prototype.performIn = function( nT )
{
var nWidth = this.aEnteringSlide.getWidth();
var nHeight = this.aEnteringSlide.getHeight();
var aPolyPolygonElement = this.aClippingFunctor.perform( nT, nWidth, nHeight );
this.aEnteringSlide.setClipPath( aPolyPolygonElement );
};

ClippedSlideChange.prototype.performOut = function( )
{
};


function ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn)
{
this.aParametricPolyPolygon = aParametricPolyPolygon;
this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;
};

GenericAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

GenericAnimation.prototype.perform = function( aValue )
{
if( this.aSetModifier )
aValue = this.aSetModifier( aValue );

this.aSetValueFunc( aValue );
};

GenericAnimation.prototype.getUnderlyingValue = function()
{
var aValue = this.aGetValueFunc();
if( this.aGetModifier )
aValue = this.aGetModifier( aValue );
return aValue;
};


function TupleAnimation( aGetValueFunc, aSetValueFunc, aDefaultValue, aReferenceSize )
{
TupleAnimation.superclass.constructor.call( this, aGetValueFunc, aSetValueFunc );
assert( aDefaultValue && aReferenceSize,
'TupleAnimation constructor: default value functor and/or reference size are not valid' );

this.aDefaultValue = aDefaultValue;
this.aReferenceSize = aReferenceSize;
}
extend( TupleAnimation, GenericAnimation );

TupleAnimation.prototype.perform = function( aNormValue )
{
assert(aNormValue.length === this.aReferenceSize.length);

var aValue = [];
for( var i = 0; i < aNormValue.length; ++i )
{
aValue.push( aNormValue[i] * this.aReferenceSize[i] );
}

this.aSetValueFunc( aValue );
};

TupleAnimation.prototype.getUnderlyingValue = function()
{
var aValue = this.aGetValueFunc();
assert(aValue.length === this.aReferenceSize.length);

var aNormValue = [];
for( var i = 0; i < aValue.length; ++i )
{
aNormValue.push( aValue[i] / this.aReferenceSize[i] );
}

return aNormValue;
};


function HSLAnimationWrapper( aColorAnimation )
{
assert( aColorAnimation,
'HSLAnimationWrapper constructor: invalid color animation delegate' );

this.aAnimation = aColorAnimation;
}


HSLAnimationWrapper.prototype.start = function( aAnimatableElement )
{
this.aAnimation.start( aAnimatableElement );
};

HSLAnimationWrapper.prototype.end = function()
{
this.aAnimation.end();
};
HSLAnimationWrapper.prototype.perform = function( aHSLValue )
{
this.aAnimation.perform( aHSLValue.convertToRGB() );
};

HSLAnimationWrapper.prototype.getUnderlyingValue = function()
{
return this.aAnimation.getUnderlyingValue().convertToHSL();
};


function SlideChangeBase(aLeavingSlide, aEnteringSlide)
{
this.aLeavingSlide = aLeavingSlide;
this.aEnteringSlide = aEnteringSlide;
this.bIsFinished = false;
}

SlideChangeBase.prototype.start = function()
{
};

SlideChangeBase.prototype.end = function()
{
if( this.bIsFinished )
return;

this.aLeavingSlide.hide();
this.aEnteringSlide.reset();
this.aLeavingSlide.reset();

this.bIsFinished = true;
};

SlideChangeBase.prototype.perform = function( nValue )
{
if( this.bIsFinished ) return false;

if( this.aLeavingSlide )
this.performOut( nValue );

if( this.aEnteringSlide )
this.performIn( nValue );

return true;
};

SlideChangeBase.prototype.getUnderlyingValue = function()
{
return 0.0;
};

SlideChangeBase.prototype.performIn = function( )
{
log( 'SlideChangeBase.performIn: abstract method called' );
};

SlideChangeBase.prototype.performOut = function( )
{
log( 'SlideChangeBase.performOut: abstract method called' );
aGetModifier,
aSetModifier);
}


function createPairPropertyAnimation( sTransformType, aAnimatedElement, nWidth, nHeight )
{
var aFunctorSet = aAttributeMap[ sTransformType ];
var sGetValueMethod = aFunctorSet.get;
var sSetValueMethod = aFunctorSet.set;

var aDefaultValue = [];
var aSizeReference = [];
if( sTransformType === 'scale' )
{
aDefaultValue[0] = aSizeReference[0] = aAnimatedElement.getBaseBBox().width;
aDefaultValue[1] = aSizeReference[1] = aAnimatedElement.getBaseBBox().height;
}
else if( sTransformType === 'translate' )
{
aDefaultValue[0] = aAnimatedElement.getBaseCenterX();
aDefaultValue[1] = aAnimatedElement.getBaseCenterY();
aSizeReference[0] = nWidth;
aSizeReference[1] = nHeight;
}
else
{
log( 'createPairPropertyAnimation: transform type is not handled' );
return null;
}

return new TupleAnimation( bind( aAnimatedElement, aAnimatedElement[ sGetValueMethod ] ),
bind( aAnimatedElement, aAnimatedElement[ sSetValueMethod ] ),
aDefaultValue,
aSizeReference );
}


function createShapeTransition( aActivityParamSet, aAnimatedElement,
nSlideWidth, nSlideHeight,
aAnimatedTransitionFilterNode )
{
if( !aAnimatedTransitionFilterNode )
{
log( 'createShapeTransition: the animated transition filter node is not valid.' );
return null;
}
var eTransitionType = aAnimatedTransitionFilterNode.getTransitionType();
var eTransitionSubType = aAnimatedTransitionFilterNode.getTransitionSubType();
var bDirectionForward = ! aAnimatedTransitionFilterNode.getReverseDirection();
var bModeIn = ( aAnimatedTransitionFilterNode.getTransitionMode() == FORWARD );

var aTransitionInfo = aTransitionInfoTable[eTransitionType][eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'createShapeTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( eTransitionType, eTransitionSubType );
var aClippingAnimation
= new ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn );
return new SimpleActivity( aActivityParamSet, aClippingAnimation, true );

case TRANSITION_SPECIAL:
switch( eTransitionType )
{
default:
var aAnimation
= createPropertyAnimation( 'opacity',
aAnimatedElement,
nSlideWidth,
nSlideHeight );
return new SimpleActivity( aActivityParamSet, aAnimation, bModeIn );
}
}

}


function ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn )
{
this.aClippingFunctor = new ClippingFunctor( aParametricPolyPolygon,
aTransitionInfo,
bDirectionForward, bModeIn );
this.bAnimationStarted = false;
}

ClippingAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement,
'ClippingAnimation.start: animatable element is not valid' );
this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.initClipPath();
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;

};

ClippingAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.aAnimatableElement.cleanClipPath();
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

ClippingAnimation.prototype.perform = function( nValue )
{
var nWidth = this.aAnimatableElement.aClippingBBox.width;
var nHeight = this.aAnimatableElement.aClippingBBox.height;
var aPolyPolygonElement = this.aClippingFunctor.perform( nValue, nWidth, nHeight );
this.aAnimatableElement.setClipPath( aPolyPolygonElement );
};

ClippingAnimation.prototype.getUnderlyingValue = function()
{
return 0.0;
};


function GenericAnimation( aGetValueFunc, aSetValueFunc, aGetModifier, aSetModifier )
{
assert( aGetValueFunc && aSetValueFunc,
'GenericAnimation constructor: get value functor and/or set value functor are not valid' );

this.aGetValueFunc = aGetValueFunc;
this.aSetValueFunc = aSetValueFunc;
this.aGetModifier = aGetModifier;
this.aSetModifier = aSetModifier;
this.aAnimatableElement = null;
this.bAnimationStarted = false;
}


GenericAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement, 'GenericAnimation.start: animatable element is not valid' );


return sInfo;
};


function createAnimationTree( aRootElement, aNodeContext )
{
return createAnimationNode( aRootElement, null, aNodeContext );
}


function createAnimationNode( aElement, aParentNode, aNodeContext )
{
assert( aElement, 'createAnimationNode: invalid animation element' );

var eAnimationNodeType = getAnimationElementType( aElement );

var aCreatedNode = null;
var aCreatedContainer = null;

switch( eAnimationNodeType )
{
case ANIMATION_NODE_PAR:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ITERATE:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SEQ:
aCreatedNode = aCreatedContainer =
new SequentialTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATE:
aCreatedNode = new PropertyAnimationNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SET:
aCreatedNode = new AnimationSetNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATEMOTION:
log( 'createAnimationNode: ANIMATEMOTION not implemented' );
return null;
case ANIMATION_NODE_ANIMATECOLOR:
aCreatedNode = new AnimationColorNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATETRANSFORM:
aCreatedNode = new AnimationTransformNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_TRANSITIONFILTER:
aCreatedNode = new AnimationTransitionFilterNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_AUDIO:
log( 'createAnimationNode: AUDIO not implemented' );
return null;
case ANIMATION_NODE_COMMAND:
log( 'createAnimationNode: COMMAND not implemented' );
return null;
default:
log( 'createAnimationNode: invalid Animation Node Type: ' + eAnimationNodeType );
return null;
}

if( aCreatedContainer )
{
if( eAnimationNodeType == ANIMATION_NODE_ITERATE )
{
createIteratedNodes( aElement, aCreatedContainer, aNodeContext );
}
else
{
var aChildrenArray = getElementChildren( aElement );
for( var i = 0; i < aChildrenArray.length; ++i )
{
if( !createChildNode( aChildrenArray[i], aCreatedContainer, aNodeContext ) )
{
aCreatedContainer.removeAllChildrenNodes();
break;
}
}
}
}

return aCreatedNode;
}


function createChildNode( aElement, aParentNode, aNodeContext )
{
var aChildNode = createAnimationNode( aElement, aParentNode, aNodeContext );

if( !aChildNode )
{
log( 'createChildNode: child node creation failed' );
return false;
}
else
{
aParentNode.appendChildNode( aChildNode );
return true;
}
}


function createIteratedNodes( /*aElement, aContainerNode, aNodeContext*/ )
{
}


function makeScaler( nScale )
{
if( ( typeof( nScale ) !== typeof( 0 ) ) || !isFinite( nScale ) )
{
log( 'makeScaler: not valid param passed: ' + nScale );
return null;
}

return  function( nValue )
{
return ( nScale * nValue );
};
}


function createPropertyAnimation( sAttrName, aAnimatedElement, nWidth, nHeight )
{
if( !aAttributeMap[ sAttrName ] )
{
log( 'createPropertyAnimation: attribute is unknown' );
return null;
}


var aFunctorSet = aAttributeMap[ sAttrName ];

var sGetValueMethod =   aFunctorSet.get;
var sSetValueMethod =   aFunctorSet.set;

if( !sGetValueMethod || !sSetValueMethod  )
{
log( 'createPropertyAnimation: attribute is not handled' );
return null;
}

var aGetModifier =  eval( aFunctorSet.getmod );
var aSetModifier =  eval( aFunctorSet.setmod );


return new GenericAnimation( bind( aAnimatedElement, aAnimatedElement[ sGetValueMethod ] ),
bind( aAnimatedElement, aAnimatedElement[ sSetValueMethod ] ),
COLOR_SPACE_HSL );
aInterpolator = aInterpolatorMaker( this.getColorInterpolationDirection() );
}
else
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space rgb'  );
aColorAnimation = aAnimation;
aInterpolator = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
COLOR_PROPERTY,
COLOR_SPACE_RGB );
}

return createActivity( aActivityParamSet, this, aColorAnimation, aInterpolator );
};

AnimationColorNode.prototype.getColorInterpolation = function()
{
return this.eColorInterpolation;
};

AnimationColorNode.prototype.getColorInterpolationDirection = function()
{
return this.eColorInterpolationDirection;
};

AnimationColorNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationColorNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  color-interpolation: ' + aColorSpaceOutMap[ this.getColorInterpolation() ];

sInfo += ';  color-interpolation-direction: ' + aClockDirectionOutMap[ this.getColorInterpolationDirection() ];
}
return sInfo;
};


function AnimationTransitionFilterNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationTransitionFilterNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationTransitionFilterNode';

this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = undefined;
this.eTransitionMode = undefined;
}
extend( AnimationTransitionFilterNode, AnimationBaseNode );


AnimationTransitionFilterNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

return createShapeTransition( aActivityParamSet,
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight,
this );
};

AnimationTransitionFilterNode.prototype.parseElement = function()
{
var bRet = AnimationTransitionFilterNode.superclass.parseElement.call( this );
var bIsValidTransition = true;

var aAnimElem = this.aElement;

this.eTransitionType = undefined;
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined  ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( !bIsValidTransition )
{
this.eTransitionType = FADE_TRANSITION;
this.eTransitionSubType = CROSSFADE_TRANS_SUBTYPE;
log( 'AnimationTransitionFilterNode.parseElement: in place of the invalid transition a crossfade transition is used' );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.eTransitionMode = TRANSITION_MODE_IN;
var sModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'mode' );
if( sModeAttr === 'out' )
this.eTransitionMode = TRANSITION_MODE_OUT;

return bRet;
};

AnimationTransitionFilterNode.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

AnimationTransitionFilterNode.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

AnimationTransitionFilterNode.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

AnimationTransitionFilterNode.prototype.getReverseDirection = function()
{
return this.bReverseDirection;
};

AnimationTransitionFilterNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationTransitionFilterNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( this.getReverseDirection() )
sInfo += ';  direction: reverse';
}
this.sClassName = 'PropertyAnimationNode';
}
extend( PropertyAnimationNode, AnimationBaseNode3 );


PropertyAnimationNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aInterpolator = null;  // createActivity will compute it;
return createActivity( aActivityParamSet, this, aAnimation, aInterpolator );
};


function isValidTransformation( sType )
{
return ( sType === 'translate' || sType === 'scale' || sType === 'rotate'
|| sType === 'skewX' || sType === 'skewY' );
}

function AnimationTransformNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationTransformNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationTransformNode';
}
extend( AnimationTransformNode, AnimationBaseNode3 );


AnimationTransformNode.prototype.parseElement = function()
{
var bRet = AnimationTransformNode.superclass.parseElement.call(this);

var aAnimElem = this.aElement;

var sTransformType = aAnimElem.getAttribute( 'svg:type' );
if( !isValidTransformation( sTransformType ) )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationTransformNode.parseElement: transformation type not found: ' + sTransformType );
}
else
{
this.sAttributeName = sTransformType;
}

return bRet;
}

AnimationTransformNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();
var aAnimation;

if( this.getAttributeName() === 'scale' || this.getAttributeName() === 'translate' )
{
aAnimation = createPairPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

}
else
{
aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );
}

var aInterpolator = null;  // createActivity will compute it;
return createActivity( aActivityParamSet, this, aAnimation, aInterpolator );
};


function AnimationSetNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationSetNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationSetNode';
}
extend( AnimationSetNode, AnimationBaseNode2 );


AnimationSetNode.prototype.createActivity = function()
{
var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aActivityParamSet = this.fillActivityParams();

return new SetActivity( aActivityParamSet, aAnimation, this.getToValue() );
};


function AnimationColorNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationColorNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationColorNode';

this.eColorInterpolation = undefined;
this.eColorInterpolationDirection = undefined;
}
extend( AnimationColorNode, AnimationBaseNode3 );


AnimationColorNode.prototype.parseElement = function()
{
var bRet = AnimationColorNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eColorInterpolation = COLOR_SPACE_RGB;
var sColorInterpolationAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation' );
if( sColorInterpolationAttr && aColorSpaceInMap[ sColorInterpolationAttr ] )
this.eColorInterpolation = aColorSpaceInMap[ sColorInterpolationAttr ];

this.eColorInterpolationDirection = CLOCKWISE;
var sColorInterpolationDirectionAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation-direction' );
if( sColorInterpolationDirectionAttr && aClockDirectionInMap[ sColorInterpolationDirectionAttr ] )
this.eColorInterpolationDirection = aClockDirectionInMap[ sColorInterpolationDirectionAttr ];

return bRet;
};

AnimationColorNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aColorAnimation;
var aInterpolator;
if( this.getColorInterpolation() === COLOR_SPACE_HSL )
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space hsl'  );
aColorAnimation = new HSLAnimationWrapper( aAnimation );
var aInterpolatorMaker = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
COLOR_PROPERTY,
assert( this.nFinishedChildren < this.aChildrenArray.length,
'SequentialTimeContainer.notifyDeactivating: assertion (this.nFinishedChildren < this.aChildrenArray.length) failed' );

var aNextChild = this.aChildrenArray[ this.nFinishedChildren ];

assert( aNextChild.getState() == UNRESOLVED_NODE,
'SequentialTimeContainer.notifyDeactivating: assertion (aNextChild.getState == UNRESOLVED_NODE) failed' );

if( !this.resolveChild( aNextChild ) )
{
this.deactivate();
}
};

SequentialTimeContainer.prototype.skipEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
var aEvent = makeEvent( bind2( aChildNode.deactivate, aChildNode ) );
this.getContext().aTimerEventQueue.addEvent( aEvent );
}
else
{
log( 'SequentialTimeContainer.skipEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindCurrentEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindCurrentEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
this.getContext().aActivityQueue.endAll();

aChildNode.end();
aChildNode.removeEffect();
aChildNode.init();
this.resolveChild( aChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindCurrentEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindLastEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindLastEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().aActivityQueue.clear();
aChildNode.end();

--this.nFinishedChildren;
var aPreviousChildNode = this.aChildrenArray[ this.nFinishedChildren ];

aPreviousChildNode.removeEffect();
aPreviousChildNode.init();
aChildNode.init();
this.resolveChild( aPreviousChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindLastEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.resolveChild = function( aChildNode )
{
var bResolved = aChildNode.resolve();

if( bResolved && ( this.isMainSequenceRootNode() || this.isInteractiveSequenceRootNode() ) )
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();
this.aCurrentSkipEvent = makeEvent( bind2( SequentialTimeContainer.prototype.skipEffect, this, aChildNode ) );

if( this.aRewindCurrentEffectEvent )
this.aRewindCurrentEffectEvent.dispose();
this.aRewindCurrentEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindCurrentEffect, this, aChildNode ) );

if( this.aRewindLastEffectEvent )
this.aRewindLastEffectEvent.dispose();
this.aRewindLastEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindLastEffect, this, aChildNode ) );

if( this.isMainSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipEffectEvent( this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindCurrentEffectEvent( this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindLastEffectEvent( this.aRewindLastEffectEvent );
}
else if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipInteractiveEffectEvent( aChildNode.getId(), this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindRunningInteractiveEffectEvent( aChildNode.getId(), this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindEndedInteractiveEffectEvent( aChildNode.getId(), this.aRewindLastEffectEvent );
}
}
return bResolved;
};

SequentialTimeContainer.prototype.notifyRewindedEvent = function( aChildNode )
{
if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( aChildNode.getId() );

var sId = aChildNode.getBegin().getEventBaseElementId();
if( sId )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( sId );
}
}
};

SequentialTimeContainer.prototype.dispose = function()
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();

SequentialTimeContainer.superclass.dispose.call( this );
};


function PropertyAnimationNode(  aAnimElem, aParentNode, aNodeContext )
{
PropertyAnimationNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.aChildrenArray[i].removeEffect();
}
};

BaseContainerNode.prototype.saveStateOfAnimatedElement = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].saveStateOfAnimatedElement();
}
};

BaseContainerNode.prototype.forEachChildNode = function( aFunction, eNodeStateMask )
{
if( !eNodeStateMask )
eNodeStateMask = -1;

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( ( eNodeStateMask != -1 ) && ( ( this.aChildrenArray[i].getState() & eNodeStateMask ) == 0 ) )
continue;
aFunction( this.aChildrenArray[i] );
}
};

BaseContainerNode.prototype.dispose = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].dispose();
}

BaseContainerNode.superclass.dispose.call( this );
};

BaseContainerNode.prototype.getImpressNodeType = function()
{
return this.eImpressNodeType;
};

BaseContainerNode.prototype.info = function( bVerbose )
{
var sInfo = BaseContainerNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getImpressNodeType() )
sInfo += ';  node-type: ' + aImpressNodeTypeOutMap[ this.getImpressNodeType() ];
}

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
sInfo += '\n';
sInfo += this.aChildrenArray[i].info( bVerbose );
}

return sInfo;
};


function ParallelTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
ParallelTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'ParallelTimeContainer';
}
extend( ParallelTimeContainer, BaseContainerNode );


ParallelTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
var nResolvedChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].resolve() )
{
++nResolvedChildren;
}
}

if( nChildrenCount != nResolvedChildren )
{
log( 'ParallelTimeContainer.activate_st: resolving all children failed' );
return;
}


if( this.isDurationIndefinite() && ( nChildrenCount == 0  ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else
{
this.scheduleDeactivationEvent();
}
};

ParallelTimeContainer.prototype.notifyDeactivating = function( aAnimationNode )
{
this.notifyDeactivatedChild( aAnimationNode );
};


function SequentialTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
SequentialTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'SequentialTimeContainer';
this.bIsRewinding = false;
this.aCurrentSkipEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
}
extend( SequentialTimeContainer, BaseContainerNode );


SequentialTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( ; this.nFinishedChildren < nChildrenCount; ++this.nFinishedChildren )
{
if( this.resolveChild( this.aChildrenArray[ this.nFinishedChildren ] ) )
break;
else
log( 'SequentialTimeContainer.activate_st: resolving child failed!' );
}

if( this.isDurationIndefinite() && ( ( nChildrenCount == 0 ) || ( this.nFinishedChildren >= nChildrenCount ) ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else
{
this.scheduleDeactivationEvent();
}
};

SequentialTimeContainer.prototype.notifyDeactivating = function( aNotifier )
{
if( this.bIsRewinding )
return;

if( this.notifyDeactivatedChild( aNotifier ) )
return;

};

BaseContainerNode.prototype.removeAllChildrenNodes = function()
{
this.aChildrenArray = [];
};

BaseContainerNode.prototype.init_st = function()
{
this.nLeftIterations = this.getRepeatCount();

return this.init_children();
};

BaseContainerNode.prototype.init_children = function()
{
this.nFinishedChildren = 0;
var nChildrenCount = this.aChildrenArray.length;
var nInitChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].init() )
{
++nInitChildren;
}
}
return ( nChildrenCount == nInitChildren );
};


BaseContainerNode.prototype.deactivate_st = function( eDestState )
{
this.nLeftIterations = 0;
if( eDestState == FROZEN_NODE )
{
this.forEachChildNode( mem_fn( 'deactivate' ), ~( FROZEN_NODE | ENDED_NODE ) );
}
else
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
if( this.getFillMode() == FILL_MODE_REMOVE )
this.removeEffect();
}
};

BaseContainerNode.prototype.hasPendingAnimation = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].hasPendingAnimation() )
return true;
}
return false;
};

BaseContainerNode.prototype.activate_st = function()
{
log( 'BaseContainerNode.activate_st: abstract method called' );
};

BaseContainerNode.prototype.notifyDeactivating = function( /*aAnimationNode*/ )
{
log( 'BaseContainerNode.notifyDeactivating: abstract method called' );
};

BaseContainerNode.prototype.isDurationIndefinite = function()
{
return this.bDurationIndefinite;
};

BaseContainerNode.prototype.isChildNode = function( aAnimationNode )
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].getId() == aAnimationNode.getId() )
return true;
}
return false;
};

BaseContainerNode.prototype.notifyDeactivatedChild = function( aChildNode )
{
assert( ( aChildNode.getState() == FROZEN_NODE ) || ( aChildNode.getState() == ENDED_NODE ),
'BaseContainerNode.notifyDeactivatedChild: passed child node is neither in FROZEN nor in ENDED state' );

assert( this.getState() != INVALID_NODE,
'BaseContainerNode.notifyDeactivatedChild: this node is invalid' );

if( !this.isChildNode( aChildNode ) )
{
log( 'BaseContainerNode.notifyDeactivatedChild: unknown child notifier!' );
return false;
}

var nChildrenCount = this.aChildrenArray.length;

assert( ( this.nFinishedChildren < nChildrenCount ),
'BaseContainerNode.notifyDeactivatedChild: assert(this.nFinishedChildren < nChildrenCount) failed' );

++this.nFinishedChildren;
var bFinished = ( this.nFinishedChildren >= nChildrenCount );

if( bFinished && this.isDurationIndefinite() )
{
if( this.nLeftIterations >= 1.0 )
{
this.nLeftIterations -= 1.0;
}
if( this.nLeftIterations >= 1.0 )
{
bFinished = false;
var aRepetitionEvent = makeDelay( bind( this, this.repeat ), 0.0 );
this.aContext.aTimerEventQueue.addEvent( aRepetitionEvent );
}
else
{
this.deactivate();
}
}

return bFinished;
};

BaseContainerNode.prototype.repeat = function()
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
this.removeEffect();
var bInitialized = this.init_children();
if( bInitialized )
this.activate_st();
return bInitialized;
};

BaseContainerNode.prototype.removeEffect = function()
{
var nChildrenCount = this.aChildrenArray.length;
if( nChildrenCount == 0 )
return;
for( var i = nChildrenCount - 1; i >= 0; --i )
{
if( ( this.aChildrenArray[i].getState() & ( FROZEN_NODE | ENDED_NODE ) ) == 0 )
{
log( 'BaseContainerNode.removeEffect: child(id:'
+ this.aChildrenArray[i].getId() + ') is neither frozen nor ended;'
+ ' state: '
+ aTransitionModeOutMap[ this.aChildrenArray[i].getState() ] );
continue;
}
{
var aKeyTimes = sKeyTimesAttr.split( ';' );
for( var i = 0; i < aKeyTimes.length; ++i )
this.aKeyTimes.push( parseFloat( aKeyTimes[i] ) );
}

var sValuesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'values' );
if( sValuesAttr )
{
this.aValues = sValuesAttr.split( ';' );
}
else
{
this.aValues = [];
}

this.aFormula = aAnimElem.getAttributeNS( NSS['anim'], 'formula' );

return bRet;
};

AnimationBaseNode3.prototype.getAccumulate = function()
{
return this.eAccumulate;
};

AnimationBaseNode3.prototype.getCalcMode = function()
{
return this.eCalcMode;
};

AnimationBaseNode3.prototype.getFromValue = function()
{
return this.aFromValue;
};

AnimationBaseNode3.prototype.getByValue = function()
{
return this.aByValue;
};

AnimationBaseNode3.prototype.getKeyTimes = function()
{
return this.aKeyTimes;
};

AnimationBaseNode3.prototype.getValues = function()
{
return this.aValues;
};

AnimationBaseNode3.prototype.getFormula = function()
{
return this.aFormula;
};

AnimationBaseNode3.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode3.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getAccumulate() )
sInfo += ';  accumulate: ' + aAccumulateModeOutMap[ this.getAccumulate() ];

sInfo += ';  calcMode: ' + aCalcModeOutMap[ this.getCalcMode() ];

if( this.getFromValue() )
sInfo += ';  from: ' + this.getFromValue();

if( this.getByValue() )
sInfo += ';  by: ' + this.getByValue();

if( this.getKeyTimes().length )
sInfo += ';  keyTimes: ' + this.getKeyTimes().join( ',' );

if( this.getValues().length )
sInfo += ';  values: ' + this.getValues().join( ',' );

if( this.getFormula() )
sInfo += ';  formula: ' + this.getFormula();
}

return sInfo;
};


function BaseContainerNode( aAnimElem, aParentNode, aNodeContext )
{
BaseContainerNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'BaseContainerNode';
this.bIsContainer = true;
this.aChildrenArray = [];
this.nFinishedChildren = 0;
this.bDurationIndefinite = false;
this.nLeftIterations = 1;

this.eImpressNodeType = undefined;
this.ePresetClass =  undefined;
this.ePresetId =  undefined;
}
extend( BaseContainerNode, BaseNode );


BaseContainerNode.prototype.parseElement= function()
{
var bRet = BaseContainerNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eImpressNodeType = IMPRESS_DEFAULT_NODE;
var sNodeTypeAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'node-type' );
if( sNodeTypeAttr && aImpressNodeTypeInMap[ sNodeTypeAttr ] )
this.eImpressNodeType = aImpressNodeTypeInMap[ sNodeTypeAttr ];
this.bMainSequenceRootNode = ( this.eImpressNodeType == IMPRESS_MAIN_SEQUENCE_NODE );
this.bInteractiveSequenceRootNode = ( this.eImpressNodeType == IMPRESS_INTERACTIVE_SEQUENCE_NODE );

this.ePresetClass =  undefined;
var sPresetClassAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-class' );
if( sPresetClassAttr && aPresetClassInMap[ sPresetClassAttr ] )
this.ePresetClass = aPresetClassInMap[ sPresetClassAttr ];

this.ePresetId =  undefined;
var sPresetIdAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-id' );
if( sPresetIdAttr && aPresetIdInMap[ sPresetIdAttr ] )
this.ePresetId = aPresetIdInMap[ sPresetIdAttr ];


var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].parseElement();
}


this.bDurationIndefinite
= ( !this.getDuration() || this.getDuration().isIndefinite()  ) &&
( !this.getEnd() || ( this.getEnd().getType() != OFFSET_TIMING ) );

return bRet;
};

BaseContainerNode.prototype.appendChildNode = function( aAnimationNode )
{
if( ! this.checkValidNode() )
return ;

if( aAnimationNode.registerDeactivatingListener( this ) )
this.aChildrenArray.push( aAnimationNode );
AnimationBaseNode.prototype.removeEffect = function()
{
this.getAnimatedElement().restoreState( this.getId() );
};

AnimationBaseNode.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

AnimationBaseNode.prototype.getAnimatedElement = function()
{
return this.aAnimatedElement;
};

AnimationBaseNode.prototype.dispose= function()
{
if( this.aActivity )
this.aActivity.dispose();

AnimationBaseNode.superclass.dispose.call( this );
};

AnimationBaseNode.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

AnimationBaseNode.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimationBaseNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getMinFrameCount() )
sInfo += ';  min frame count: ' + this.getMinFrameCount();

sInfo += ';  additive: ' + aAddittiveModeOutMap[ this.getAdditiveMode() ];

if( this.getTargetElement() )
{
var sElemId = this.getTargetElement().getAttribute( 'id' );
sInfo += ';  targetElement: ' +  sElemId;
}
}

return sInfo;
};


function AnimationBaseNode2( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode2.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sAttributeName = '';
this.aToValue = null;

}
extend( AnimationBaseNode2, AnimationBaseNode );


AnimationBaseNode2.prototype.parseElement = function()
{
var bRet = AnimationBaseNode2.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.sAttributeName = aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' );
if( !this.sAttributeName )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode2.parseElement: target attribute name not found: ' + this.sAttributeName );
}

this.aToValue = aAnimElem.getAttributeNS( NSS['smil'], 'to' );

return bRet;
};

AnimationBaseNode2.prototype.getAttributeName = function()
{
return this.sAttributeName;
};

AnimationBaseNode2.prototype.getToValue = function()
{
return this.aToValue;
};

AnimationBaseNode2.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode2.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getAttributeName() )
sInfo += ';  attributeName: ' + this.getAttributeName();

if( this.getToValue() )
sInfo += ';  to: ' + this.getToValue();
}

return sInfo;
};


function AnimationBaseNode3( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode3.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.eAccumulate = undefined;
this.eCalcMode = undefined;
this.aFromValue = null;
this.aByValue = null;
this.aKeyTimes = null;
this.aValues = null;
this.aFormula= null;
}
extend( AnimationBaseNode3, AnimationBaseNode2 );


AnimationBaseNode3.prototype.parseElement = function()
{
var bRet = AnimationBaseNode3.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eAccumulate = ACCUMULATE_MODE_NONE;
var sAccumulateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accumulate' );
if( sAccumulateAttr == 'sum' )
this.eAccumulate = ACCUMULATE_MODE_SUM;

this.eCalcMode = CALC_MODE_LINEAR;
var sCalcModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'calcMode' );
if( sCalcModeAttr && aCalcModeInMap[ sCalcModeAttr ] )
this.eCalcMode = aCalcModeInMap[ sCalcModeAttr ];

this.aFromValue = aAnimElem.getAttributeNS( NSS['smil'], 'from' );

this.aByValue = aAnimElem.getAttributeNS( NSS['smil'], 'by' );

this.aKeyTimes = [];
var sKeyTimesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'keyTimes' );
sKeyTimesAttr = removeWhiteSpaces( sKeyTimesAttr );
if( sKeyTimesAttr )
if( !this.aTargetElement )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode.parseElement: target element not found: ' + sTargetElementAttr );
}

var sSubItemAttr = aAnimElem.getAttributeNS( NSS['anim'], 'sub-item' );
this.bIsTargetTextElement = ( sSubItemAttr && ( sSubItemAttr === 'text' ) );

var sAdditiveAttr = aAnimElem.getAttributeNS( NSS['smil'], 'additive' );
if( sAdditiveAttr && aAddittiveModeInMap[sAdditiveAttr] )
this.eAdditiveMode = aAddittiveModeInMap[sAdditiveAttr];
else
this.eAdditiveMode = ADDITIVE_MODE_REPLACE;

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;


if( this.aTargetElement )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' ) === 'visibility' )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'to' ) === 'visible' )
this.aTargetElement.setAttribute( 'visibility', 'hidden' );
}

if( !this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ] )
{
if( this.bIsTargetTextElement )
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedTextElement( this.aTargetElement );
}
else
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedElement( this.aTargetElement );
}
}
this.aAnimatedElement = this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ];

this.aAnimatedElement.setAdditiveMode( this.eAdditiveMode );
}


return bRet;
};

AnimationBaseNode.prototype.init_st = function()
{
if( this.aActivity )
this.aActivity.activate( makeEvent( bind( this, this.deactivate ) ) );
else
this.aActivity = this.createActivity();
return true;
};

AnimationBaseNode.prototype.resolve_st = function()
{
return true;
};

AnimationBaseNode.prototype.activate_st = function()
{
if( this.aActivity )
{
this.saveStateOfAnimatedElement();
this.aActivity.setTargets( this.getAnimatedElement() );
if( this.getContext().bIsSkipping  )
{
this.aActivity.end();
}
else
{
this.getContext().aActivityQueue.addActivity( this.aActivity );
}
}
else
{
AnimationBaseNode.superclass.scheduleDeactivationEvent.call( this );
}
};

AnimationBaseNode.prototype.deactivate_st = function( eDestState )
{
if( eDestState == FROZEN_NODE )
{
if( this.aActivity )
this.aActivity.end();
}
if( eDestState == ENDED_NODE )
{
if( this.aActivity )
this.aActivity.dispose();
if( ( this.getFillMode() == FILL_MODE_REMOVE ) && this.getAnimatedElement()  )
this.removeEffect();
}
};

AnimationBaseNode.prototype.createActivity = function()
{
log( 'AnimationBaseNode.createActivity: abstract method called' );
};

AnimationBaseNode.prototype.fillActivityParams = function()
{

var nDuration = 0.001;
if( this.getDuration().isValue() )
{
nDuration = this.getDuration().getValue();
}
else
{
log( 'AnimationBaseNode.fillActivityParams: duration is not a number' );
}

var aActivityParamSet = new ActivityParamSet();

aActivityParamSet.aEndEvent             = makeEvent( bind( this, this.deactivate ) );
aActivityParamSet.aTimerEventQueue      = this.aContext.aTimerEventQueue;
aActivityParamSet.aActivityQueue        = this.aContext.aActivityQueue;
aActivityParamSet.nMinDuration          = nDuration;
aActivityParamSet.nMinNumberOfFrames    = this.getMinFrameCount();
aActivityParamSet.bAutoReverse          = this.isAutoReverseEnabled();
aActivityParamSet.nRepeatCount          = this.getRepeatCount();
aActivityParamSet.nAccelerationFraction = this.getAccelerateValue();
aActivityParamSet.nDecelerationFraction = this.getDecelerateValue();
aActivityParamSet.nSlideWidth           = this.aNodeContext.aSlideWidth;
aActivityParamSet.nSlideHeight          = this.aNodeContext.aSlideHeight;

return aActivityParamSet;
};

AnimationBaseNode.prototype.hasPendingAnimation = function()
{
return true;
};

AnimationBaseNode.prototype.saveStateOfAnimatedElement = function()
{
this.getAnimatedElement().saveState( this.getId() );
};

return this.aContext;
};

BaseNode.prototype.isTransition = function( eFromState, eToState )
{
return ( ( this.aStateTransTable[ eFromState ] & eToState ) != 0 );
};

BaseNode.prototype.inStateOrTransition = function( nMask )
{
return ( ( ( this.eCurrentState & nMask ) != 0 ) || ( ( this.nCurrentStateTransition & nMask ) != 0 ) );
};

BaseNode.prototype.isContainer = function()
{
return this.bIsContainer;
};

BaseNode.prototype.getBegin = function()
{
return this.aBegin;
};

BaseNode.prototype.getDuration = function()
{
return this.aDuration;
};

BaseNode.prototype.getEnd = function()
{
return this.aEnd;
};

BaseNode.prototype.getFillMode = function()
{
return this.eFillMode;
};

BaseNode.prototype.getRestartMode = function()
{
return this.eRestartMode;
};

BaseNode.prototype.getRepeatCount = function()
{
return this.nRepeatCount;
};

BaseNode.prototype.getAccelerateValue = function()
{
return this.nAccelerate;
};

BaseNode.prototype.getDecelerateValue = function()
{
return this.nDecelerate;
};

BaseNode.prototype.isAutoReverseEnabled = function()
{
return this.bAutoreverse;
};

BaseNode.prototype.info = function( bVerbose )
{
var sInfo = 'class name: ' + this.sClassName;
sInfo += ';  element name: ' + this.aElement.localName;
sInfo += ';  id: ' + this.getId();
sInfo += ';  state: ' + getNodeStateName( this.getState() );

if( bVerbose )
{
sInfo += ';  is container: ' + this.isContainer();

if( this.getBegin() )
sInfo += ';  begin: ' + this.getBegin().info();

if( this.getDuration() )
sInfo += ';  dur: ' + this.getDuration().info();

if( this.getEnd() )
sInfo += ';  end: ' + this.getEnd().info();

if( this.getFillMode() )
sInfo += ';  fill: ' + aFillModeOutMap[ this.getFillMode() ];

if( this.getRestartMode() )
sInfo += ';  restart: ' + aRestartModeOutMap[ this.getRestartMode() ];

if( this.getRepeatCount() && ( this.getRepeatCount() != 1.0 ) )
sInfo += ';  repeatCount: ' + this.getRepeatCount();

if( this.getAccelerateValue() )
sInfo += ';  accelerate: ' + this.getAccelerateValue();

if( this.getDecelerateValue() )
sInfo += ';  decelerate: ' + this.getDecelerateValue();

if( this.isAutoReverseEnabled() )
sInfo += ';  autoReverse: true';

}

return sInfo;
};

BaseNode.prototype.callInfo = function( sMethodName )
{
var sInfo = this.sClassName +
'( ' + this.getId() +
', ' + getNodeStateName( this.getState() ) +
' ).' + sMethodName;
return sInfo;
};

BaseNode.prototype.DBG = function( sMessage, nTime )
{
ANIMDBG.print( sMessage, nTime );
};


function AnimationBaseNode( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationBaseNode';
this.bIsContainer = false;
this.aTargetElement = null;
this.bIsTargetTextElement = false;
this.aAnimatedElement = null;
this.aActivity = null;

this.nMinFrameCount = undefined;
this.eAdditiveMode = undefined;

}
extend( AnimationBaseNode, BaseNode );


AnimationBaseNode.prototype.parseElement = function()
{
var bRet = AnimationBaseNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.aTargetElement = null;
var sTargetElementAttr = aAnimElem.getAttributeNS( NSS['smil'], 'targetElement' );
if( sTargetElementAttr )
this.aTargetElement = document.getElementById( sTargetElementAttr );

this.end();
}
};

BaseNode.prototype.end = function()
{
var bIsFrozenOrInTransitionToFrozen = this.inStateOrTransition( FROZEN_NODE );
if( this.inStateOrTransition( ENDED_NODE ) || !this.checkValidNode() )
return;

if( !(this.isTransition( this.eCurrentState, ENDED_NODE ) ) )
log( 'BaseNode.end: end state not reachable in transition table' );

this.DBG( this.callInfo( 'end' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( ENDED_NODE, true /* FORCE */ ) )
{
this.deactivate_st( ENDED_NODE );
aStateTrans.commit();

if( !bIsFrozenOrInTransitionToFrozen )
this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
};

BaseNode.prototype.dispose = function()
{
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
this.aDeactivatingListenerArray = [];
};

BaseNode.prototype.getState = function()
{
return this.eCurrentState;
};

BaseNode.prototype.registerDeactivatingListener = function( aNotifiee )
{
if (! this.checkValidNode())
return false;

if( !aNotifiee )
{
log( 'BaseNode.registerDeactivatingListener(): invalid notifiee' );
return false;
}
this.aDeactivatingListenerArray.push( aNotifiee );

return true;
};

BaseNode.prototype.notifyDeactivating = function( aNotifier )
{
assert( ( aNotifier.getState() == FROZEN_NODE ) || ( aNotifier.getState() == ENDED_NODE ),
'BaseNode.notifyDeactivating: Notifier node is neither in FROZEN nor in ENDED state' );
};

BaseNode.prototype.isMainSequenceRootNode = function()
{
return this.bMainSequenceRootNode;
};

BaseNode.prototype.isInteractiveSequenceRootNode = function()
{
return this.bInteractiveSequenceRootNode;
};

BaseNode.prototype.makeDeactivationEvent = function( nDelay )
{
if( this.aDeactivationEvent )
{
this.aDeactivationEvent.charge();
}
else
{
if( typeof( nDelay ) == typeof(0) )
this.aDeactivationEvent = makeDelay( bind( this, this.deactivate ), nDelay );
else
this.aDeactivationEvent = null;
}
return this.aDeactivationEvent;
};

BaseNode.prototype.scheduleDeactivationEvent = function( aEvent )
{
this.DBG( this.callInfo( 'scheduleDeactivationEvent' ) );

if( !aEvent )
{
if( this.getDuration() && this.getDuration().isValue() )
aEvent = this.makeDeactivationEvent( this.getDuration().getValue() );
}
if( aEvent )
{
this.aContext.aTimerEventQueue.addEvent( aEvent );
}
};

BaseNode.prototype.checkValidNode = function()
{
return ( this.eCurrentState != INVALID_NODE );
};

BaseNode.prototype.init_st = function()
{
return true;
};

BaseNode.prototype.resolve_st = function()
{
return true;
};

BaseNode.prototype.activate_st = function()
{
this.scheduleDeactivationEvent();
};

BaseNode.prototype.deactivate_st = function( /*aNodeState*/ )
{
};

BaseNode.prototype.notifyEndListeners = function()
{
var nDeactivatingListenerCount = this.aDeactivatingListenerArray.length;

for( var i = 0; i < nDeactivatingListenerCount; ++i )
{
this.aDeactivatingListenerArray[i].notifyDeactivating( this );
}

this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_END_EVENT, this.getId() );
if( this.getParentNode() && this.getParentNode().isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyNextEffectEndEvent();

if( this.isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyAnimationsEndEvent();
};

BaseNode.prototype.getContext = function()
{
this.nAccelerate = 0.0;

this.nDecelerate = 0.0;
var sDecelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'decelerate' );
if( sDecelerateAttr )
this.nDecelerate = parseFloat( sDecelerateAttr );
if( isNaN(this.nDecelerate) )
this.nDecelerate = 0.0;

this.bAutoreverse = false;
var sAutoReverseAttr = aAnimElem.getAttributeNS( NSS['smil'], 'autoReverse' );
if( sAutoReverseAttr == 'true' )
this.bAutoreverse = true;


if( this.eFillMode == FILL_MODE_DEFAULT )
if( this.getParentNode() )
this.eFillMode = this.getParentNode().getFillMode();
else
this.eFillMode = FILL_MODE_AUTO;

if( this.eFillMode ==  FILL_MODE_AUTO ) // see SMIL recommendation document
{
this.eFillMode = ( this.aEnd ||
( this.nRepeatCount != 1) ||
( this.aDuration && !this.aDuration.isIndefinite() ) )
? FILL_MODE_REMOVE
: FILL_MODE_FREEZE;
}

if( this.eRestartMode == RESTART_MODE_DEFAULT )
if( this.getParentNode() )
this.eRestartMode = this.getParentNode().getRestartMode();
else
this.eRestartMode = RESTART_MODE_ALWAYS;

if( ( this.nAccelerate + this.nDecelerate ) > 1.0 )
{
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
}

this.aStateTransTable = getTransitionTable( this.getRestartMode(), this.getFillMode() );

return true;
};

BaseNode.prototype.getParentNode = function()
{
return this.aParentNode;
};

BaseNode.prototype.init = function()
{
this.DBG( this.callInfo( 'init' ) );
if( ! this.checkValidNode() )
return false;
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();

this.eCurrentState = UNRESOLVED_NODE;

return this.init_st();
};

BaseNode.prototype.resolve = function()
{
if( this.aNodeContext.bIsInvalid || ! this.checkValidNode() )
return false;

this.DBG( this.callInfo( 'resolve' ) );

if( this.eCurrentState == RESOLVED_NODE )
log( 'BaseNode.resolve: already in RESOLVED state' );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( RESOLVED_NODE ) &&
this.isTransition( RESOLVED_NODE, ACTIVE_NODE ) &&
this.resolve_st() )
{
aStateTrans.commit();

if( this.aActivationEvent )
{
this.aActivationEvent.charge();
}
else
{
this.aActivationEvent = makeDelay( bind( this, this.activate ), this.getBegin().getOffset() + this.nStartDelay );
}
registerEvent( this.getId(), this.getBegin(), this.aActivationEvent, this.aNodeContext );

return true;
}

return false;
};

BaseNode.prototype.activate = function()
{
if( ! this.checkValidNode() )
return false;

if( this.eCurrentState == ACTIVE_NODE )
log( 'BaseNode.activate: already in ACTIVE state' );

this.DBG( this.callInfo( 'activate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( ACTIVE_NODE ) )
{
this.activate_st();
aStateTrans.commit();
if( !this.aContext.aEventMultiplexer )
log( 'BaseNode.activate: this.aContext.aEventMultiplexer is not valid' );
this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_BEGIN_EVENT, this.getId() );
return true;
}
return false;
};

BaseNode.prototype.deactivate = function()
{
if( this.inStateOrTransition( ENDED_NODE | FROZEN_NODE ) || !this.checkValidNode() )
return;

if( this.isTransition( this.eCurrentState, FROZEN_NODE ) )
{
this.DBG( this.callInfo( 'deactivate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( FROZEN_NODE, true /* FORCE */ ) )
{
this.deactivate_st( FROZEN_NODE );
aStateTrans.commit();

this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
}
else
{
function StateTransition( aBaseNode )
{
this.aNode = aBaseNode;
this.eToState = INVALID_NODE;
}

StateTransition.prototype.enter = function( eNodeState, bForce )
{
if( !bForce ) bForce = false;

if( this.eToState != INVALID_NODE )
{
log( 'StateTransition.enter: commit() before enter()ing again!' );
return false;
}
if( !bForce && !this.aNode.isTransition( this.aNode.getState(), eNodeState  ) )
return false;

if( ( this.aNode.nCurrentStateTransition & eNodeState ) != 0 )
return false; // already in wanted transition

this.aNode.nCurrentStateTransition |= eNodeState;
this.eToState = eNodeState;
return true;
};

StateTransition.prototype.commit = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.eCurrentState = this.eToState;
this.clear();
}
};

StateTransition.prototype.clear = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.nCurrentStateTransition &= ~this.eToState;
this.eToState = INVALID_NODE;
}
};


function BaseNode( aAnimElem, aParentNode, aNodeContext )
{
this.nId = getUniqueId();
this.sClassName = 'BaseNode';

if( !aAnimElem )
log( 'BaseNode(id:' + this.nId + ') constructor: aAnimElem is not valid' );

if( !aNodeContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext is not valid' );

if( !aNodeContext.aContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext.aContext is not valid' );


this.bIsContainer = false;
this.aElement = aAnimElem;
this.aParentNode = aParentNode;
this.aNodeContext = aNodeContext;
this.aContext = aNodeContext.aContext;
this.nStartDelay = aNodeContext.nStartDelay;
this.eCurrentState = UNRESOLVED_NODE;
this.nCurrentStateTransition = 0;
this.aDeactivatingListenerArray = [];
this.aActivationEvent = null;
this.aDeactivationEvent = null;

this.aBegin = null;
this.aDuration = null;
this.aEnd = null;
this.bMainSequenceRootNode = false;
this.bInteractiveSequenceRootNode = false;
this.eFillMode = FILL_MODE_FREEZE;
this.eRestartMode = RESTART_MODE_NEVER;
this.nRepeatCount = undefined;
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
this.bAutoReverse = false;

}
extend( BaseNode, AnimationNode );


BaseNode.prototype.getId = function()
{
return this.nId;
};

BaseNode.prototype.parseElement = function()
{
var aAnimElem = this.aElement;

var sIdAttr = aAnimElem.getAttributeNS( NSS['xml'], 'id' );
if( sIdAttr )
this.aNodeContext.aAnimationNodeMap[ sIdAttr ] = this;

this.aBegin = null;
var sBeginAttr = aAnimElem.getAttributeNS( NSS['smil'], 'begin' );
this.aBegin = new Timing( this, sBeginAttr );
this.aBegin.parse();

this.aEnd = null;
var sEndAttr = aAnimElem.getAttributeNS( NSS['smil'], 'end' );
if( sEndAttr )
{
this.aEnd = new Timing( this, sEndAttr );
this.aEnd.parse();
}

this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
if( this.isContainer() )
this.aDuration = null;
else
this.aDuration = new Duration( 'indefinite' );
}

var sFillAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fill' );
if( sFillAttr && aFillModeInMap[ sFillAttr ])
this.eFillMode = aFillModeInMap[ sFillAttr ];
else
this.eFillMode = FILL_MODE_DEFAULT;

var sRestartAttr = aAnimElem.getAttributeNS( NSS['smil'], 'restart' );
if( sRestartAttr && aRestartModeInMap[ sRestartAttr ] )
this.eRestartMode = aRestartModeInMap[ sRestartAttr ];
else
this.eRestartMode = RESTART_MODE_DEFAULT;

var sRepeatCount = aAnimElem.getAttributeNS( NSS['smil'], 'repeatCount' );
if( !sRepeatCount )
this.nRepeatCount = 1;
else
this.nRepeatCount = parseFloat( sRepeatCount );
if( ( isNaN(this.nRepeatCount) ) && ( sRepeatCount != 'indefinite' ) )
this.nRepeatCount = 1;

this.nAccelerate = 0.0;
var sAccelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accelerate' );
if( sAccelerateAttr )
this.nAccelerate = parseFloat( sAccelerateAttr );
if( isNaN(this.nAccelerate) )
{
sInfo = 'description: ' + this.sTimingDescription + ', ';

sInfo += ', type: ' +  aTimingTypeOutMap[ this.getType() ];
sInfo += ', offset: ' + this.getOffset();
sInfo += ', event base element id: ' + this.getEventBaseElementId();
sInfo += ', timing event type: ' + aEventTriggerOutMap[ this.getEventType() ];
}
else
{
switch( this.getType() )
{
case INDEFINITE_TIMING:
sInfo += 'indefinite';
break;
case OFFSET_TIMING:
sInfo += this.getOffset();
break;
case EVENT_TIMING:
case SYNCBASE_TIMING:
if( this.getEventBaseElementId() )
sInfo += this.getEventBaseElementId() + '.';
sInfo += aEventTriggerOutMap[ this.getEventType() ];
if( this.getOffset() )
{
if( this.getOffset() > 0 )
sInfo += '+';
sInfo += this.getOffset();
}
}
}

return sInfo;
};


function Duration( sDurationAttribute )
{
this.bIndefinite = false;
this.bMedia = false;
this.nValue = undefined;
this.bDefined = false;

if( !sDurationAttribute )
return;

if( sDurationAttribute == 'indefinite' )
this.bIndefinite = true;
else if( sDurationAttribute == 'media' )
this.bMedia = true;
else
{
this.nValue = Timing.parseClockValue( sDurationAttribute );
if( this.nValue <= 0.0 )
this.nValue = 0.001;  // duration must be always greater than 0
}
this.bDefined = true;
}


Duration.prototype.isSet = function()
{
return this.bDefined;
};

Duration.prototype.isIndefinite = function()
{
return this.bIndefinite;
};

Duration.prototype.isMedia = function()
{
return this.bMedia;
};

Duration.prototype.isValue = function()
{
return this.nValue != undefined;
};

Duration.prototype.getValue= function()
{
return this.nValue;
};

Duration.prototype.info= function()
{
var sInfo;

if( this.isIndefinite() )
sInfo = 'indefinite';
else if( this.isMedia() )
sInfo = 'media';
else if( this.getValue() )
sInfo = this.getValue();

return sInfo;
};


function AnimationNode()
{
}

AnimationNode.prototype.init = function() {};
AnimationNode.prototype.resolve = function() {};
AnimationNode.prototype.activate = function() {};
AnimationNode.prototype.deactivate = function() {};
AnimationNode.prototype.end = function() {};
AnimationNode.prototype.getState = function() {};
AnimationNode.prototype.registerDeactivatingListener = function() {};
AnimationNode.prototype.notifyDeactivating = function() {};


function NodeContext( aSlideShowContext )
{
this.aContext = aSlideShowContext;
this.aAnimationNodeMap = null;
this.aAnimatedElementMap = null;
this.aSourceEventElementMap = null;
this.nStartDelay = 0.0;
this.bFirstRun = undefined;
this.bIsInvalid = false;
this.aSlideHeight = HEIGHT;
this.aSlideWidth = WIDTH;
}


NodeContext.prototype.makeSourceEventElement = function( sId, aEventBaseElem )
{
if( !aEventBaseElem )
{
log( 'NodeContext.makeSourceEventElement: event base element is not valid' );
return null;
}

if( !this.aContext.aEventMultiplexer )
{
log( 'NodeContext.makeSourceEventElement: event multiplexer not initialized' );
return null;
}

if( !this.aSourceEventElementMap[ sId ] )
{
this.aSourceEventElementMap[ sId ] = new SourceEventElement( sId, aEventBaseElem, this.aContext.aEventMultiplexer );
}
return this.aSourceEventElementMap[ sId ];
};



var TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.eTimingType = OFFSET_TIMING;
this.nOffset = bPositiveOffset ? TimeInSec : -TimeInSec;
}
}
else
{
var aTimingSplit = [];
bPositiveOffset = true;
if( this.sTimingDescription.indexOf( '+' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '+' );
}
else if( this.sTimingDescription.indexOf( '-' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '-' );
bPositiveOffset = false;
}
else
{
aTimingSplit[0] = this.sTimingDescription;
aTimingSplit[1] = '';
}

if( aTimingSplit[0].indexOf( '.' ) != -1 )
{
var aEventSplit = aTimingSplit[0].split( '.' );
this.sEventBaseElementId = aEventSplit[0];
this.eEventType = getEventTriggerType( aEventSplit[1] );
}
else
{
this.eEventType = getEventTriggerType( aTimingSplit[0] );
}

if( this.eEventType == EVENT_TRIGGER_UNKNOWN )
return;

if( ( this.eEventType == EVENT_TRIGGER_BEGIN_EVENT ) ||
( this.eEventType == EVENT_TRIGGER_END_EVENT ) )
{
this.eTimingType = SYNCBASE_TIMING;
}
else
{
this.eTimingType = EVENT_TIMING;
}

if( aTimingSplit[1] )
{
sClockValue = aTimingSplit[1];
TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.nOffset = ( bPositiveOffset ) ? TimeInSec : -TimeInSec;
}
else
{
this.eTimingType = UNKNOWN_TIMING;
}

}
}
}

};

Timing.parseClockValue = function( sClockValue )
{
if( !sClockValue )
return 0.0;

var nTimeInSec = undefined;

var reFullClockValue = /^([0-9]+):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var rePartialClockValue = /^([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var reTimeCountValue = /^([0-9]+)(.[0-9]+)?(h|min|s|ms)?$/;

if( reFullClockValue.test( sClockValue ) )
{
var aClockTimeParts = reFullClockValue.exec( sClockValue );

var nHours = parseInt( aClockTimeParts[1] );
var nMinutes = parseInt( aClockTimeParts[2] );
var nSeconds = parseInt( aClockTimeParts[3] );
if( aClockTimeParts[4] )
nSeconds += parseFloat( aClockTimeParts[4] );

nTimeInSec = ( ( nHours * 60 ) +  nMinutes ) * 60 + nSeconds;

}
else if( rePartialClockValue.test( sClockValue ) )
{
aClockTimeParts = rePartialClockValue.exec( sClockValue );

nMinutes = parseInt( aClockTimeParts[1] );
nSeconds = parseInt( aClockTimeParts[2] );
if( aClockTimeParts[3] )
nSeconds += parseFloat( aClockTimeParts[3] );

nTimeInSec = nMinutes * 60 + nSeconds;
}
else if( reTimeCountValue.test( sClockValue ) )
{
aClockTimeParts = reTimeCountValue.exec( sClockValue );

var nTimeCount = parseInt( aClockTimeParts[1] );
if( aClockTimeParts[2] )
nTimeCount += parseFloat( aClockTimeParts[2] );

if( aClockTimeParts[3] )
{
if( aClockTimeParts[3] == 'h' )
{
nTimeInSec = nTimeCount * 3600;
}
else if( aClockTimeParts[3] == 'min' )
{
nTimeInSec = nTimeCount * 60;
}
else if( aClockTimeParts[3] == 's' )
{
nTimeInSec = nTimeCount;
}
else if( aClockTimeParts[3] == 'ms' )
{
nTimeInSec = nTimeCount / 1000;
}
}
else
{
nTimeInSec = nTimeCount;
}

}

if( nTimeInSec )
nTimeInSec = parseFloat( nTimeInSec.toFixed( 3 ) );
return nTimeInSec;
};

Timing.prototype.info = function( bVerbose )
{

var sInfo = '';

if( bVerbose )
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

return aSTT;
}

var aStateTransitionTable = createStateTransitionTable();


function getTransitionTable( eRestartMode, eFillMode )
{
if( eRestartMode == RESTART_MODE_DEFAULT )
{
log( 'getTransitionTable: unexpected restart mode: ' + eRestartMode
+ '. Used NEVER instead.');
eRestartMode = RESTART_MODE_NEVER;
}

if( eFillMode == FILL_MODE_DEFAULT ||
eFillMode == FILL_MODE_AUTO )
{
eFillMode = FILL_MODE_REMOVE;
}

return aStateTransitionTable[eRestartMode][eFillMode];
}


var EVENT_TRIGGER_UNKNOWN               = 0;
var EVENT_TRIGGER_ON_SLIDE_BEGIN        = 1; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_SLIDE_END          = 2; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_BEGIN_EVENT           = 3;
var EVENT_TRIGGER_END_EVENT             = 4;
var EVENT_TRIGGER_ON_CLICK              = 5;
var EVENT_TRIGGER_ON_DBL_CLICK          = 6; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_ENTER        = 7; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_LEAVE        = 8; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_NEXT_EFFECT        = 9;
var EVENT_TRIGGER_ON_PREV_EFFECT        = 10;
var EVENT_TRIGGER_REPEAT                = 11; // eslint-disable-line no-unused-vars

var aEventTriggerOutMap = [ 'unknown', 'slideBegin', 'slideEnd', 'begin', 'end', 'click',
'doubleClick', 'mouseEnter', 'mouseLeave', 'next', 'previous', 'repeat' ];


function getEventTriggerType( sEventTrigger )
{
if( sEventTrigger == 'begin' )
return EVENT_TRIGGER_BEGIN_EVENT;
else if( sEventTrigger == 'end' )
return EVENT_TRIGGER_END_EVENT;
else if( sEventTrigger == 'next' )
return EVENT_TRIGGER_ON_NEXT_EFFECT;
else if( sEventTrigger == 'prev' )
return EVENT_TRIGGER_ON_PREV_EFFECT;
else if( sEventTrigger == 'click' )
return EVENT_TRIGGER_ON_CLICK;
else
return EVENT_TRIGGER_UNKNOWN;
}


var UNKNOWN_TIMING          = 0;
var OFFSET_TIMING           = 1;
var WALLCLOCK_TIMING        = 2; // eslint-disable-line no-unused-vars
var INDEFINITE_TIMING       = 3;
var EVENT_TIMING            = 4;
var SYNCBASE_TIMING         = 5;
var MEDIA_TIMING            = 6; // eslint-disable-line no-unused-vars

var aTimingTypeOutMap = [ 'unknown', 'offset', 'wallclock', 'indefinite', 'event', 'syncbase', 'media' ];


var CHARCODE_PLUS       = '+'.charCodeAt(0);
var CHARCODE_MINUS      = '-'.charCodeAt(0);
var CHARCODE_0          = '0'.charCodeAt(0);
var CHARCODE_9          = '9'.charCodeAt(0);


function Timing( aAnimationNode, sTimingAttribute )
{
this.aAnimationNode = aAnimationNode;     // the node, the timing attribute belongs to
this.sTimingDescription = removeWhiteSpaces( sTimingAttribute );
this.eTimingType = UNKNOWN_TIMING;
this.nOffset = 0.0;                       // in seconds
this.sEventBaseElementId = '';            // the element id for event based timing
this.eEventType = EVENT_TRIGGER_UNKNOWN;  // the event type
}

Timing.prototype.getAnimationNode = function()
{
return this.aAnimationNode;
};

Timing.prototype.getType = function()
{
return this.eTimingType;
};

Timing.prototype.getOffset = function()
{
return this.nOffset;
};

Timing.prototype.getEventBaseElementId = function()
{
return this.sEventBaseElementId;
};

Timing.prototype.getEventType = function()
{
return this.eEventType;
};

Timing.prototype.parse = function()
{
if( !this.sTimingDescription )
{
this.eTimingType = OFFSET_TIMING;
return;
}

if( this.sTimingDescription == 'indefinite' )
this.eTimingType = INDEFINITE_TIMING;
else
{
var nFirstCharCode = this.sTimingDescription.charCodeAt(0);
var bPositiveOffset = !( nFirstCharCode == CHARCODE_MINUS );
if ( ( nFirstCharCode == CHARCODE_PLUS ) ||
( nFirstCharCode == CHARCODE_MINUS ) ||
( ( nFirstCharCode >= CHARCODE_0 ) && ( nFirstCharCode <= CHARCODE_9 ) ) )
{
var sClockValue
= ( ( nFirstCharCode == CHARCODE_PLUS ) || ( nFirstCharCode == CHARCODE_MINUS ) )
? this.sTimingDescription.substr( 1 )
: this.sTimingDescription;
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SLIDEWIPE_TRANSITION] = {};
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FADE_TRANSITION] = {};
aTransitionInfoTable[FADE_TRANSITION][CROSSFADE_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADETOCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEFROMCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEOVERCOLOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[RANDOMBARWIPE_TRANSITION] = {};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION] = {};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][ACROSS_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[DISSOLVE_TRANSITION] = {};
aTransitionInfoTable[DISSOLVE_TRANSITION][DEFAULT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};


function createStateTransitionTable()
{
var aSTT = {};

aSTT[RESTART_MODE_NEVER] = {};
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE] = {};
aSTT[RESTART_MODE_ALWAYS] = {};

var aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = ENDED_NODE;    // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = ENDED_NODE;
aTable[ENDED_NODE]          = ENDED_NODE;   // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][BOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[PINWHEELWIPE_TRANSITION] = {};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][ONEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEVERTICAL_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][THREEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][FOURBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][EIGHTBLADE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};

aTransitionInfoTable[PUSHWIPE_TRANSITION] = {};
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION] = {};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISERIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISELEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[ELLIPSEWIPE_TRANSITION] = {};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][CIRCLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CLOCKWIPE_TRANSITION] = {};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETWELVE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETHREE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISESIX_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISENINE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[VEEWIPE_TRANSITION] = {};
aTransitionInfoTable[VEEWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][UP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FANWIPE_TRANSITION] = {};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][TOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
aTransitionInfoTable[BARWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[WATERFALLWIPE_TRANSITION] = {};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][RIGHTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][LEFTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FOURBOXWIPE_TRANSITION] = {};
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSIN_TRANS_SUBTYPE] =
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSOUT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNDOORWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 90.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALTOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': -45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION] = {};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEBARNDOOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEDIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1,
'scaleY': 1,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION] = {};
aTransitionInfoTable[IRISWIPE_TRANSITION][RECTANGLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION][DIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[ZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARWIPE_TRANSITION] = {};
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SPIRALWIPE_TRANSITION] = {};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
{
'class' : TRANSITION_INVALID,
'rotationAngle' : 0.0,
'scaleX' : 0.0,
'scaleY' : 0.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[SNAKEWIPE_TRANSITION] = {};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
}

aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALLEFTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALRIGHTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
var COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE    = 58; // 45
var CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE          = 59; // 46
var COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE      = 60; // 47
var VERTICALLEFT_TRANS_SUBTYPE                  = 61; // 93
var VERTICALRIGHT_TRANS_SUBTYPE                 = 62; // 94
var HORIZONTALLEFT_TRANS_SUBTYPE                = 63; // 95
var HORIZONTALRIGHT_TRANS_SUBTYPE               = 64; // 96
var TOPLEFTCLOCKWISE_TRANS_SUBTYPE              = 65; // 69
var TOPRIGHTCLOCKWISE_TRANS_SUBTYPE             = 66; // 70
var BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE          = 67; // 71
var BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE           = 68; // 72
var TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE       = 69; // 73
var TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE      = 70; // 74
var BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE   = 71; // 75
var BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE    = 72; // 76
var DOUBLEBARNDOOR_TRANS_SUBTYPE                = 73; // 17
var DOUBLEDIAMOND_TRANS_SUBTYPE                 = 74; // 18
var VERTICALTOPSAME_TRANS_SUBTYPE               = 75; // 77
var VERTICALBOTTOMSAME_TRANS_SUBTYPE            = 76; // 78
var VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 77; // 79
var VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 78; // 80
var HORIZONTALLEFTSAME_TRANS_SUBTYPE            = 79; // 81
var HORIZONTALRIGHTSAME_TRANS_SUBTYPE           = 80; // 82
var HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE     = 81; // 83
var HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE    = 82; // 84
var DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 83; // 85
var DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 84; // 86
var TWOBOXTOP_TRANS_SUBTYPE                     = 85; // 87
var TWOBOXBOTTOM_TRANS_SUBTYPE                  = 86; // 88
var TWOBOXLEFT_TRANS_SUBTYPE                    = 87; // 89
var TWOBOXRIGHT_TRANS_SUBTYPE                   = 88; // 90
var FOURBOXVERTICAL_TRANS_SUBTYPE               = 89; // 91
var FOURBOXHORIZONTAL_TRANS_SUBTYPE             = 90; // 92

var aTransitionSubtypeInMap = {
'default'                       : DEFAULT_TRANS_SUBTYPE,
'leftToRight'                   : LEFTTORIGHT_TRANS_SUBTYPE,
'topToBottom'                   : TOPTOBOTTOM_TRANS_SUBTYPE,
'cornersIn'                     : CORNERSIN_TRANS_SUBTYPE,
'cornersOut'                    : CORNERSOUT_TRANS_SUBTYPE,
'vertical'                      : VERTICAL_TRANS_SUBTYPE,
'centerTop'                     : CENTERTOP_TRANS_SUBTYPE,
'centerRight'                   : CENTERRIGHT_TRANS_SUBTYPE,
'top'                           : TOP_TRANS_SUBTYPE,
'right'                         : RIGHT_TRANS_SUBTYPE,
'bottom'                        : BOTTOM_TRANS_SUBTYPE,
'left'                          : LEFT_TRANS_SUBTYPE,
'horizontal'                    : HORIZONTAL_TRANS_SUBTYPE,
'down'                          : DOWN_TRANS_SUBTYPE,
'circle'                        : CIRCLE_TRANS_SUBTYPE,
'clockwiseTwelve'               : CLOCKWISETWELVE_TRANS_SUBTYPE,
'clockwiseThree'                : CLOCKWISETHREE_TRANS_SUBTYPE,
'clockwiseSix'                  : CLOCKWISESIX_TRANS_SUBTYPE,
'clockwiseNine'                 : CLOCKWISENINE_TRANS_SUBTYPE,
'clockwiseRight'                : CLOCKWISERIGHT_TRANS_SUBTYPE,
'clockwiseTop'                  : CLOCKWISETOP_TRANS_SUBTYPE,
'clockwiseBottom'               : CLOCKWISEBOTTOM_TRANS_SUBTYPE,
'clockwiseLeft'                 : CLOCKWISELEFT_TRANS_SUBTYPE,
'clockwiseTopLeft'              : CLOCKWISETOPLEFT_TRANS_SUBTYPE,
'counterClockwiseBottomLeft'    : COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE,
'clockwiseBottomRight'          : CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE,
'counterClockwiseTopRight'      : COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE,
'twoBladeVertical'              : TWOBLADEVERTICAL_TRANS_SUBTYPE,
'twoBladeHorizontal'            : TWOBLADEHORIZONTAL_TRANS_SUBTYPE,
'fourBlade'                     : FOURBLADE_TRANS_SUBTYPE,
'fromLeft'                      : FROMLEFT_TRANS_SUBTYPE,
'fromTop'                       : FROMTOP_TRANS_SUBTYPE,
'fromRight'                     : FROMRIGHT_TRANS_SUBTYPE,
'fromBottom'                    : FROMBOTTOM_TRANS_SUBTYPE,
'crossfade'                     : CROSSFADE_TRANS_SUBTYPE,
'fadeToColor'                   : FADETOCOLOR_TRANS_SUBTYPE,
'fadeFromColor'                 : FADEFROMCOLOR_TRANS_SUBTYPE,
'fadeOverColor'                 : FADEOVERCOLOR_TRANS_SUBTYPE,
'threeBlade'                    : THREEBLADE_TRANS_SUBTYPE,
'eightBlade'                    : EIGHTBLADE_TRANS_SUBTYPE,
'oneBlade'                      : ONEBLADE_TRANS_SUBTYPE,
'across'                        : ACROSS_TRANS_SUBTYPE,
'topLeftVertical'               : TOPLEFTVERTICAL_TRANS_SUBTYPE,
'topLeftHorizontal'             : TOPLEFTHORIZONTAL_TRANS_SUBTYPE,
'topLeftDiagonal'               : TOPLEFTDIAGONAL_TRANS_SUBTYPE,
'topRightDiagonal'              : TOPRIGHTDIAGONAL_TRANS_SUBTYPE,
'bottomRightDiagonal'           : BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE,
'topLeftClockwise'              : TOPLEFTCLOCKWISE_TRANS_SUBTYPE,
'topRightClockwise'             : TOPRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomRightClockwise'          : BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftClockwise'           : BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE,
'topLeftCounterClockwise'       : TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'topRightCounterClockwise'      : TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomRightCounterClockwise'   : BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftCounterClockwise'    : BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftDiagonal'            : BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE,
'rectangle'                     : RECTANGLE_TRANS_SUBTYPE,
'diamond'                       : DIAMOND_TRANS_SUBTYPE,
'topLeft'                       : TOPLEFT_TRANS_SUBTYPE,
'topRight'                      : TOPRIGHT_TRANS_SUBTYPE,
'bottomRight'                   : BOTTOMRIGHT_TRANS_SUBTYPE,
'bottomLeft'                    : BOTTOMLEFT_TRANS_SUBTYPE,
'topCenter'                     : TOPCENTER_TRANS_SUBTYPE,
'rightCenter'                   : RIGHTCENTER_TRANS_SUBTYPE,
'bottomCenter'                  : BOTTOMCENTER_TRANS_SUBTYPE,
'leftCenter'                    : LEFTCENTER_TRANS_SUBTYPE,
'up'                            : UP_TRANS_SUBTYPE,
'diagonalBottomLeft'            : DIAGONALBOTTOMLEFT_TRANS_SUBTYPE,
'diagonalTopLeft'               : DIAGONALTOPLEFT_TRANS_SUBTYPE,
'verticalLeft'                  : VERTICALLEFT_TRANS_SUBTYPE,
'verticalRight'                 : VERTICALRIGHT_TRANS_SUBTYPE,
'horizontalLeft'                : HORIZONTALLEFT_TRANS_SUBTYPE,
'horizontalRight'               : HORIZONTALRIGHT_TRANS_SUBTYPE,
'doubleBarnDoor'                : DOUBLEBARNDOOR_TRANS_SUBTYPE,
'doubleDiamond'                 : DOUBLEDIAMOND_TRANS_SUBTYPE,
'verticalTopSame'               : VERTICALTOPSAME_TRANS_SUBTYPE,
'verticalBottomSame'            : VERTICALBOTTOMSAME_TRANS_SUBTYPE,
'verticalTopLeftOpposite'       : VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'verticalBottomLeftOpposite'    : VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalLeftSame'            : HORIZONTALLEFTSAME_TRANS_SUBTYPE,
'horizontalRightSame'           : HORIZONTALRIGHTSAME_TRANS_SUBTYPE,
'horizontalTopLeftOpposite'     : HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalTopRightOpposite'    : HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE,
'diagonalBottomLeftOpposite'    : DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'diagonalTopLeftOpposite'       : DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'twoBoxTop'                     : TWOBOXTOP_TRANS_SUBTYPE,
'twoBoxBottom'                  : TWOBOXBOTTOM_TRANS_SUBTYPE,
'twoBoxLeft'                    : TWOBOXLEFT_TRANS_SUBTYPE,
'twoBoxRight'                   : TWOBOXRIGHT_TRANS_SUBTYPE,
'fourBoxVertical'               : FOURBOXVERTICAL_TRANS_SUBTYPE,
'fourBoxHorizontal'             : FOURBOXHORIZONTAL_TRANS_SUBTYPE
};

var TRANSITION_MODE_IN  = 1;
var TRANSITION_MODE_OUT = 0;

var aTransitionModeOutMap = [ 'out', 'in' ];


var REVERSEMETHOD_IGNORE                    = 0;
var REVERSEMETHOD_INVERT_SWEEP              = 1;
var REVERSEMETHOD_SUBTRACT_POLYGON          = 2;
var REVERSEMETHOD_SUBTRACT_AND_INVERT       = 3;
var REVERSEMETHOD_ROTATE_180                = 4;
var REVERSEMETHOD_FLIP_X                    = 5;
var REVERSEMETHOD_FLIP_Y                    = 6;

var aReverseMethodOutMap = ['ignore', 'invert sweep', 'subtract polygon',
'subtract and invert', 'rotate 180', 'flip x', 'flip y'];


var aTransitionInfoTable = {};

aTransitionInfoTable[0] = {};
aTransitionInfoTable[0][0] =
'y':                {   'type':         NUMBER_PROPERTY,
'get':          'getY',
'set':          'setY',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'fill':             {   'type':         ENUM_PROPERTY,
'get':          'getFillStyle',
'set':          'setFillStyle'                  },

'stroke':           {   'type':         ENUM_PROPERTY,
'get':          'getStrokeStyle',
'set':          'setStrokeStyle'                },

'visibility':       {   'type':         ENUM_PROPERTY,
'get':          'getVisibility',
'set':          'setVisibility'                 },

'fill-color':       {   'type':         COLOR_PROPERTY,
'get':          'getFillColor',
'set':          'setFillColor'                  },

'stroke-color':     {   'type':         COLOR_PROPERTY,
'get':          'getStrokeColor',
'set':          'setStrokeColor'                },

'color':            {   'type':         COLOR_PROPERTY,
'get':          'getFontColor',
'set':          'setFontColor'                  }

};


var TRANSITION_INVALID              = 0;    // Invalid type
var TRANSITION_CLIP_POLYPOLYGON     = 1;    // Transition expressed by parametric clip polygon
var TRANSITION_SPECIAL              = 2;    // Transition expressed by hand-crafted function


var BARWIPE_TRANSITION              = 1;
var BOXWIPE_TRANSITION              = 2;
var FOURBOXWIPE_TRANSITION          = 3;
var ELLIPSEWIPE_TRANSITION          = 4; // 17
var CLOCKWIPE_TRANSITION            = 5; // 22
var PINWHEELWIPE_TRANSITION         = 6; // 23
var PUSHWIPE_TRANSITION             = 7; // 35
var SLIDEWIPE_TRANSITION            = 8; // 36
var FADE_TRANSITION                 = 9; // 37
var RANDOMBARWIPE_TRANSITION        = 10; // 38
var CHECKERBOARDWIPE_TRANSITION     = 11; // 39
var DISSOLVE_TRANSITION             = 12; // 40
var SNAKEWIPE_TRANSITION            = 13; // 30
var PARALLELSNAKESWIPE_TRANSITION   = 14; // 32
var IRISWIPE_TRANSITION             = 15; // 12
var BARNDOORWIPE_TRANSITION         = 16; // 4
var VEEWIPE_TRANSITION              = 17; // 8
var ZIGZAGWIPE_TRANSITION           = 18; // 10
var BARNZIGZAGWIPE_TRANSITION       = 19; // 11
var FANWIPE_TRANSITION              = 20; // 25
var SINGLESWEEPWIPE_TRANSITION      = 21; // 24
var WATERFALLWIPE_TRANSITION        = 22; // 34
var SPIRALWIPE_TRANSITION           = 23; // 31
var MISCDIAGONALWIPE_TRANSITION     = 24; // 7
var BOXSNAKESWIPE_TRANSITION        = 25; // 33

var aTransitionTypeInMap = {
'barWipe'           : BARWIPE_TRANSITION,
'boxWipe'           : BOXWIPE_TRANSITION,
'barnDoorWipe'      : BARNDOORWIPE_TRANSITION,
'fourBoxWipe'       : FOURBOXWIPE_TRANSITION,
'ellipseWipe'       : ELLIPSEWIPE_TRANSITION,
'clockWipe'         : CLOCKWIPE_TRANSITION,
'pinWheelWipe'      : PINWHEELWIPE_TRANSITION,
'miscDiagonalWipe'  : MISCDIAGONALWIPE_TRANSITION,
'pushWipe'          : PUSHWIPE_TRANSITION,
'slideWipe'         : SLIDEWIPE_TRANSITION,
'fade'              : FADE_TRANSITION,
'fanWipe'           : FANWIPE_TRANSITION,
'randomBarWipe'     : RANDOMBARWIPE_TRANSITION,
'checkerBoardWipe'  : CHECKERBOARDWIPE_TRANSITION,
'dissolve'          : DISSOLVE_TRANSITION,
'singleSweepWipe'   : SINGLESWEEPWIPE_TRANSITION,
'snakeWipe'         : SNAKEWIPE_TRANSITION,
'parallelSnakesWipe': PARALLELSNAKESWIPE_TRANSITION,
'spiralWipe'        : SPIRALWIPE_TRANSITION,
'boxSnakesWipe'     : BOXSNAKESWIPE_TRANSITION,
'irisWipe'          : IRISWIPE_TRANSITION,
'veeWipe'           : VEEWIPE_TRANSITION,
'zigZagWipe'        : ZIGZAGWIPE_TRANSITION,
'barnZigZagWipe'    : BARNZIGZAGWIPE_TRANSITION,
'waterfallWipe'     : WATERFALLWIPE_TRANSITION
};

var DEFAULT_TRANS_SUBTYPE                       = 0;
var LEFTTORIGHT_TRANS_SUBTYPE                   = 1;
var TOPTOBOTTOM_TRANS_SUBTYPE                   = 2;
var CORNERSIN_TRANS_SUBTYPE                     = 3; // 11
var CORNERSOUT_TRANS_SUBTYPE                    = 4;
var VERTICAL_TRANS_SUBTYPE                      = 5;
var HORIZONTAL_TRANS_SUBTYPE                    = 6; // 14
var DOWN_TRANS_SUBTYPE                          = 7; // 19
var CIRCLE_TRANS_SUBTYPE                        = 8; // 27
var CLOCKWISETWELVE_TRANS_SUBTYPE               = 9; // 33
var CLOCKWISETHREE_TRANS_SUBTYPE                = 10;
var CLOCKWISESIX_TRANS_SUBTYPE                  = 11;
var CLOCKWISENINE_TRANS_SUBTYPE                 = 12;
var TWOBLADEVERTICAL_TRANS_SUBTYPE              = 13;
var TWOBLADEHORIZONTAL_TRANS_SUBTYPE            = 14;
var FOURBLADE_TRANS_SUBTYPE                     = 15; // 39
var FROMLEFT_TRANS_SUBTYPE                      = 16; // 97
var FROMTOP_TRANS_SUBTYPE                       = 17;
var FROMRIGHT_TRANS_SUBTYPE                     = 18;
var FROMBOTTOM_TRANS_SUBTYPE                    = 19;
var CROSSFADE_TRANS_SUBTYPE                     = 20;
var FADETOCOLOR_TRANS_SUBTYPE                   = 21;
var FADEFROMCOLOR_TRANS_SUBTYPE                 = 22;
var FADEOVERCOLOR_TRANS_SUBTYPE                 = 23;
var THREEBLADE_TRANS_SUBTYPE                    = 24;
var EIGHTBLADE_TRANS_SUBTYPE                    = 25;
var ONEBLADE_TRANS_SUBTYPE                      = 26; // 107
var ACROSS_TRANS_SUBTYPE                        = 27;
var TOPLEFTVERTICAL_TRANS_SUBTYPE               = 28; // 109
var TOPLEFTHORIZONTAL_TRANS_SUBTYPE             = 29; // 64
var TOPLEFTDIAGONAL_TRANS_SUBTYPE               = 30; // 65
var TOPRIGHTDIAGONAL_TRANS_SUBTYPE              = 31; // 66
var BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE           = 32; // 67
var BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE            = 33; // 68
var RECTANGLE_TRANS_SUBTYPE                     = 34; // 101
var DIAMOND_TRANS_SUBTYPE                       = 35; // 102
var TOPLEFT_TRANS_SUBTYPE                       = 36; // 3
var TOPRIGHT_TRANS_SUBTYPE                      = 37; // 4
var BOTTOMRIGHT_TRANS_SUBTYPE                   = 38; // 5
var BOTTOMLEFT_TRANS_SUBTYPE                    = 39; // 6
var TOPCENTER_TRANS_SUBTYPE                     = 40; // 7
var RIGHTCENTER_TRANS_SUBTYPE                   = 41; // 8
var BOTTOMCENTER_TRANS_SUBTYPE                  = 42; // 9
var LEFTCENTER_TRANS_SUBTYPE                    = 43; // 10
var LEFT_TRANS_SUBTYPE                          = 44; // 20
var UP_TRANS_SUBTYPE                            = 45; // 21
var RIGHT_TRANS_SUBTYPE                         = 46; // 22
var DIAGONALBOTTOMLEFT_TRANS_SUBTYPE            = 47; // 15
var DIAGONALTOPLEFT_TRANS_SUBTYPE               = 48; // 16
var CENTERTOP_TRANS_SUBTYPE                     = 49; // 48
var CENTERRIGHT_TRANS_SUBTYPE                   = 50; // 49
var TOP_TRANS_SUBTYPE                           = 51; // 50
var BOTTOM_TRANS_SUBTYPE                        = 52; // 52
var CLOCKWISETOP_TRANS_SUBTYPE                  = 53; // 40
var CLOCKWISERIGHT_TRANS_SUBTYPE                = 54; // 41
var CLOCKWISEBOTTOM_TRANS_SUBTYPE               = 55; // 42
var CLOCKWISELEFT_TRANS_SUBTYPE                 = 56; // 43
var CLOCKWISETOPLEFT_TRANS_SUBTYPE              = 57; // 44
'interactive-sequence'      : IMPRESS_INTERACTIVE_SEQUENCE_NODE
};

var aImpressNodeTypeOutMap = [ 'default', 'on-click', 'with-previous', 'after-previous',
'main-sequence', 'timing-root', 'interactive-sequence' ];


var aPresetClassInMap = {};


var aPresetIdInMap = {};


var RESTART_MODE_DEFAULT            = 0;
var RESTART_MODE_INHERIT            = 0; // eslint-disable-line no-unused-vars
var RESTART_MODE_ALWAYS             = 1;
var RESTART_MODE_WHEN_NOT_ACTIVE    = 2;
var RESTART_MODE_NEVER              = 3;

var aRestartModeInMap = {
'inherit'       : RESTART_MODE_DEFAULT,
'always'        : RESTART_MODE_ALWAYS,
'whenNotActive' : RESTART_MODE_WHEN_NOT_ACTIVE,
'never'         : RESTART_MODE_NEVER
};

var aRestartModeOutMap = [ 'inherit','always', 'whenNotActive', 'never' ];


var FILL_MODE_DEFAULT           = 0;
var FILL_MODE_INHERIT           = 0; // eslint-disable-line no-unused-vars
var FILL_MODE_REMOVE            = 1;
var FILL_MODE_FREEZE            = 2;
var FILL_MODE_HOLD              = 3;
var FILL_MODE_TRANSITION        = 4;
var FILL_MODE_AUTO              = 5;

var aFillModeInMap = {
'inherit'       : FILL_MODE_DEFAULT,
'remove'        : FILL_MODE_REMOVE,
'freeze'        : FILL_MODE_FREEZE,
'hold'          : FILL_MODE_HOLD,
'transition'    : FILL_MODE_TRANSITION,
'auto'          : FILL_MODE_AUTO
};

var aFillModeOutMap = [ 'inherit', 'remove', 'freeze', 'hold', 'transition', 'auto' ];


var ADDITIVE_MODE_UNKNOWN       = 0; // eslint-disable-line no-unused-vars
var ADDITIVE_MODE_BASE          = 1;
var ADDITIVE_MODE_SUM           = 2;
var ADDITIVE_MODE_REPLACE       = 3;
var ADDITIVE_MODE_MULTIPLY      = 4;
var ADDITIVE_MODE_NONE          = 5;

var aAddittiveModeInMap = {
'base'          : ADDITIVE_MODE_BASE,
'sum'           : ADDITIVE_MODE_SUM,
'replace'       : ADDITIVE_MODE_REPLACE,
'multiply'      : ADDITIVE_MODE_MULTIPLY,
'none'          : ADDITIVE_MODE_NONE
};

var aAddittiveModeOutMap = [ 'unknown', 'base', 'sum', 'replace', 'multiply', 'none' ];


var ACCUMULATE_MODE_NONE        = 0;
var ACCUMULATE_MODE_SUM         = 1;

var aAccumulateModeOutMap = [ 'none', 'sum' ];

var CALC_MODE_DISCRETE          = 1;
var CALC_MODE_LINEAR            = 2;
var CALC_MODE_PACED             = 3;
var CALC_MODE_SPLINE            = 4;

var aCalcModeInMap = {
'discrete'      : CALC_MODE_DISCRETE,
'linear'        : CALC_MODE_LINEAR,
'paced'         : CALC_MODE_PACED,
'spline'        : CALC_MODE_SPLINE
};

var aCalcModeOutMap = [ 'unknown', 'discrete', 'linear', 'paced', 'spline' ];


var COLOR_SPACE_RGB = 0;
var COLOR_SPACE_HSL = 1;

var aColorSpaceInMap = { 'rgb': COLOR_SPACE_RGB, 'hsl': COLOR_SPACE_HSL };

var aColorSpaceOutMap = [ 'rgb', 'hsl' ];


var CLOCKWISE               = 0;
var COUNTERCLOCKWISE        = 1;

var aClockDirectionInMap = { 'clockwise': CLOCKWISE, 'counter-clockwise': COUNTERCLOCKWISE };

var aClockDirectionOutMap = [ 'clockwise', 'counter-clockwise' ];


var UNKNOWN_PROPERTY        = 0; // eslint-disable-line no-unused-vars
var NUMBER_PROPERTY         = 1;
var ENUM_PROPERTY           = 2;
var COLOR_PROPERTY          = 3;
var STRING_PROPERTY         = 4;
var BOOL_PROPERTY           = 5;
var TUPLE_NUMBER_PROPERTY   = 6;

var aValueTypeOutMap = [ 'unknown', 'number', 'enum', 'color', 'string', 'boolean' ];


var aAttributeMap =
{
'height':           {   'type':         NUMBER_PROPERTY,
'get':          'getHeight',
'set':          'setHeight',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'opacity':          {   'type':         NUMBER_PROPERTY,
'get':          'getOpacity',
'set':          'setOpacity'                    },

'scale':           {   'type':          TUPLE_NUMBER_PROPERTY,
'get':          'getSize',
'set':          'setSize'                       },

'translate':       {   'type':          TUPLE_NUMBER_PROPERTY,
'get':          'getPos',
'set':          'setPos'                        },

'rotate':           {   'type':         NUMBER_PROPERTY,
'get':          'getRotationAngle',
'set':          'setRotationAngle'              },

'width':            {   'type':         NUMBER_PROPERTY,
'get':          'getWidth',
'set':          'setWidth',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

'x':                {   'type':         NUMBER_PROPERTY,
'get':          'getX',
'set':          'setX',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

default:
log( 'SVGPathSeg.changeOrientation: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
return null;
}
}
}
else throw e;
}

function SVGPathMatrixTransform( aPath, aSVGMatrix )
{
var nX = aPath.x;
aPath.x = aSVGMatrix.a * nX + aSVGMatrix.c * aPath.y + aSVGMatrix.e;
aPath.y = aSVGMatrix.b * nX + aSVGMatrix.d * aPath.y + aSVGMatrix.f;
}


function PriorityQueue( aCompareFunc )
{
this.aSequence = [];
this.aCompareFunc = aCompareFunc;
}

PriorityQueue.prototype.clone = function()
{
var aCopy = new PriorityQueue( this.aCompareFunc );
var src = this.aSequence;
var dest = [];
var i, l;
for( i = 0, l = src.length; i < l; ++i )
{
if( i in src )
{
dest.push( src[i] );
}
}
aCopy.aSequence = dest;
return aCopy;
};

PriorityQueue.prototype.top = function()
{
return this.aSequence[this.aSequence.length - 1];
};

PriorityQueue.prototype.isEmpty = function()
{
return ( this.aSequence.length === 0 );
};

PriorityQueue.prototype.push = function( aValue )
{
this.aSequence.unshift( aValue );
this.aSequence.sort(this.aCompareFunc);
};

PriorityQueue.prototype.clear = function()
{
this.aSequence = [];
};

PriorityQueue.prototype.pop = function()
{
return this.aSequence.pop();
};


var ANIMATION_NODE_CUSTOM               = 0;
var ANIMATION_NODE_PAR                  = 1;
var ANIMATION_NODE_SEQ                  = 2;
var ANIMATION_NODE_ITERATE              = 3;
var ANIMATION_NODE_ANIMATE              = 4;
var ANIMATION_NODE_SET                  = 5;
var ANIMATION_NODE_ANIMATEMOTION        = 6;
var ANIMATION_NODE_ANIMATECOLOR         = 7;
var ANIMATION_NODE_ANIMATETRANSFORM     = 8;
var ANIMATION_NODE_TRANSITIONFILTER     = 9;
var ANIMATION_NODE_AUDIO                = 10;
var ANIMATION_NODE_COMMAND              = 11;

var aAnimationNodeTypeInMap = {
'par'               : ANIMATION_NODE_PAR,
'seq'               : ANIMATION_NODE_SEQ,
'iterate'           : ANIMATION_NODE_ITERATE,
'animate'           : ANIMATION_NODE_ANIMATE,
'set'               : ANIMATION_NODE_SET,
'animatemotion'     : ANIMATION_NODE_ANIMATEMOTION,
'animatecolor'      : ANIMATION_NODE_ANIMATECOLOR,
'animatetransform'  : ANIMATION_NODE_ANIMATETRANSFORM,
'transitionfilter'  : ANIMATION_NODE_TRANSITIONFILTER,
'audio'             : ANIMATION_NODE_AUDIO,
'command'           : ANIMATION_NODE_COMMAND
};


function getAnimationElementType( aElement )
{
var sName = aElement.localName.toLowerCase();

if( sName && aAnimationNodeTypeInMap[ sName ] )
return aAnimationNodeTypeInMap[ sName ];
else
return ANIMATION_NODE_CUSTOM;
}


var INVALID_NODE                = 0;
var UNRESOLVED_NODE             = 1;
var RESOLVED_NODE               = 2;
var ACTIVE_NODE                 = 4;
var FROZEN_NODE                 = 8;
var ENDED_NODE                  = 16;

function getNodeStateName( eNodeState )
{
switch( eNodeState )
{
case INVALID_NODE:
return 'INVALID';
case UNRESOLVED_NODE:
return 'UNRESOLVED';
case RESOLVED_NODE:
return 'RESOLVED';
case ACTIVE_NODE:
return 'ACTIVE';
case FROZEN_NODE:
return 'FROZEN';
case ENDED_NODE:
return 'ENDED';
default:
return 'UNKNOWN';
}
}


var IMPRESS_DEFAULT_NODE                    = 0;
var IMPRESS_ON_CLICK_NODE                   = 1;
var IMPRESS_WITH_PREVIOUS_NODE              = 2;
var IMPRESS_AFTER_PREVIOUS_NODE             = 3;
var IMPRESS_MAIN_SEQUENCE_NODE              = 4;
var IMPRESS_TIMING_ROOT_NODE                = 5;
var IMPRESS_INTERACTIVE_SEQUENCE_NODE       = 6;

var aImpressNodeTypeInMap = {
'on-click'                  : IMPRESS_ON_CLICK_NODE,
'with-previous'             : IMPRESS_WITH_PREVIOUS_NODE,
'after-previous'            : IMPRESS_AFTER_PREVIOUS_NODE,
'main-sequence'             : IMPRESS_MAIN_SEQUENCE_NODE,
'timing-root'               : IMPRESS_TIMING_ROOT_NODE,

var aPathSeg = aPathSegList.getItem( 0 );
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.removeItem( 0 );
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList.getItem( i );
var aPoint = aPathSeg.changeOrientation( nCurrentX, nCurrentY );
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
}


for( i = nLength - 2; i >= 0; --i )
{
aPathSeg = aPathSegList.removeItem( i );
aPathSegList.appendItem( aPathSeg );
}

var aMovePathSeg = this.createSVGPathSegMovetoAbs( nCurrentX, nCurrentY );
aPathSegList.insertItemBefore( aMovePathSeg, 0 );

};


try
{   // Firefox, Google Chrome, Internet Explorer, Safari.

SVGPathSegMovetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegLinetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegCurvetoQuadraticAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
};

SVGPathSegCurvetoCubicAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
};


SVGPathSegMovetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegLinetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegCurvetoQuadraticAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegCurvetoCubicAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
return aPoint;
};

}
catch( e )
{   // Opera

if( e.name == 'ReferenceError' )
{
SVGPathSeg.prototype.matrixTransform = function( aSVGMatrix )
{
var nX;
switch( this.pathSegTypeAsLetter )
{
case 'C':
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
case 'Q':
nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
case 'M':
case 'L':
SVGPathMatrixTransform( this, aSVGMatrix );
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
}
};

SVGPathSeg.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
switch( this.pathSegTypeAsLetter )
{
case 'C':
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;

var nHue = this.nHue % 360;
if( nHue < 0 ) nHue += 360;
var nSaturation =  clamp( this.nSaturation, 0.0, 1.0 );
var nLuminance = clamp( this.nLuminance, 0.0, 1.0 );


if( nSaturation === 0 )
{
return new RGBColor( nLuminance, nLuminance, nLuminance );
}

var nVal1 = ( nLuminance <= 0.5 ) ?
( nLuminance * (1.0 + nSaturation) ) :
( nLuminance + nSaturation - nLuminance * nSaturation );

var nVal2 = 2.0 * nLuminance - nVal1;

var nRed    = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue + 120 );
var nGreen  = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue );
var nBlue   = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue - 120 );

return new RGBColor( nRed, nGreen, nBlue );
};

HSLColor.hsl2rgbHelper = function( nValue1, nValue2, nHue )
{
nHue = nHue % 360;
if( nHue < 0 )
nHue += 360;

if( nHue < 60.0 )
return nValue1 + ( nValue2 - nValue1 ) * nHue / 60.0;
else if( nHue < 180.0 )
return nValue2;
else if( nHue < 240.0 )
return ( nValue1 + ( nValue2 - nValue1 ) * ( 240.0 - nHue ) / 60.0 );
else
return nValue1;
};

HSLColor.interpolate = function( aFrom, aTo, nT, bCCW )
{
var nS = 1.0 - nT;

var nHue = 0.0;
if( aFrom.nHue <= aTo.nHue && !bCCW )
{
nHue = nS * (aFrom.nHue + 360.0) + nT * aTo.nHue;
}
else if( aFrom.nHue > aTo.nHue && bCCW )
{
nHue = nS * aFrom.nHue + nT * (aTo.nHue + 360.0);
}
else
{
nHue = nS * aFrom.nHue + nT * aTo.nHue;
}

var nSaturation = nS * aFrom.nSaturation + nT * aTo.nSaturation;
var nLuminance = nS * aFrom.nLuminance + nT * aTo.nLuminance;

return new HSLColor( nHue, nSaturation, nLuminance );
};


var SVGIdentityMatrix = document.documentElement.createSVGMatrix();

SVGMatrix.prototype.setToIdentity = function()
{
this.a = this.d = 1;
this.b = this.c = this.d = this.e = 0;
};

SVGMatrix.prototype.setToRotationAroundPoint = function( nX, nY, nAngle )
{
nAngle = Math.PI * nAngle / 180;
var nSin = Math.sin( nAngle );
var nCos = Math.cos( nAngle );

this.a = nCos; this.c = -nSin; this.e = nX * (1 - nCos) + nY * nSin;
this.b = nSin; this.d =  nCos; this.f = nY * (1 - nCos) - nX * nSin;
};


SVGPathElement.prototype.prependPath = function( aPath )
{
var sPathData = aPath.getAttribute( 'd' );
sPathData += ( ' ' + this.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

SVGPathElement.prototype.appendPath = function( aPath )
{
var sPathData = this.getAttribute( 'd' );
sPathData += ( ' ' + aPath.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

function flipOnYAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.a = -1;
aTransform.e = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

function flipOnXAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.d = -1;
aTransform.f = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

SVGPathElement.prototype.matrixTransform = function( aSVGMatrix )
{
if( SVGPathSegList.prototype.matrixTransform )
{
this.pathSegList.matrixTransform( aSVGMatrix );
return;
}

var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
var i;
for( i = 0; i < nLength; ++i )
{
aPathSegList.getItem( i ).matrixTransform( aSVGMatrix );
}
};

SVGPathElement.prototype.changeOrientation = function()
{
var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
if( nLength == 0 ) return;

if( SVGPathSegList.prototype.changeOrientation )
{
aPathSegList.changeOrientation();
return;
}

var nCurrentX = 0;
var nCurrentY = 0;
this.nGreen *= aT;
this.nBlue *= aT;
return this;
};

RGBColor.clamp = function( aRGBColor )
{
var aClampedRGBColor = new RGBColor( 0, 0, 0 );

aClampedRGBColor.nRed   = clamp( aRGBColor.nRed, 0.0, 1.0 );
aClampedRGBColor.nGreen = clamp( aRGBColor.nGreen, 0.0, 1.0 );
aClampedRGBColor.nBlue  = clamp( aRGBColor.nBlue, 0.0, 1.0 );

return aClampedRGBColor;
};

RGBColor.prototype.convertToHSL = function()
{
var nRed   = clamp( this.nRed, 0.0, 1.0 );
var nGreen = clamp( this.nGreen, 0.0, 1.0 );
var nBlue  = clamp( this.nBlue, 0.0, 1.0 );

var nMax = Math.max( nRed, nGreen, nBlue );
var nMin = Math.min( nRed, nGreen, nBlue );
var nDelta = nMax - nMin;

var nLuminance  = ( nMax + nMin ) / 2.0;
var nSaturation = 0.0;
var nHue = 0.0;
if( nDelta !== 0 )
{
nSaturation = ( nLuminance > 0.5 ) ?
( nDelta / ( 2.0 - nMax - nMin) ) :
( nDelta / ( nMax + nMin ) );

if( nRed == nMax )
nHue = ( nGreen - nBlue ) / nDelta;
else if( nGreen == nMax )
nHue = 2.0 + ( nBlue - nRed ) / nDelta;
else if( nBlue == nMax )
nHue = 4.0 + ( nRed - nGreen ) / nDelta;

nHue *= 60.0;

if( nHue < 0.0 )
nHue += 360.0;
}

return new HSLColor( nHue, nSaturation, nLuminance );

};

RGBColor.prototype.toString = function( bClamped )
{
var aRGBColor;
if( bClamped )
{
aRGBColor = RGBColor.clamp( this );
}
else
{
aRGBColor = this;
}

var nRed = Math.round( aRGBColor.nRed * 255 );
var nGreen = Math.round( aRGBColor.nGreen * 255 );
var nBlue = Math.round( aRGBColor.nBlue * 255 );

return ( 'rgb(' + nRed + ',' + nGreen + ',' + nBlue + ')' );
};

RGBColor.interpolate = function( aStartRGB , aEndRGB, nT )
{
var aResult = aStartRGB.clone();
var aTEndRGB = aEndRGB.clone();
aResult.scale( 1.0 - nT );
aTEndRGB.scale( nT );
aResult.add( aTEndRGB );

return aResult;
};


function HSLColor( nHue, nSaturation, nLuminance )
{
this.eColorSpace = COLOR_SPACE_HSL;
this.nHue = nHue;
this.nSaturation = nSaturation;
this.nLuminance = nLuminance;

this.normalizeHue();
}


HSLColor.prototype.clone = function()
{
return new HSLColor( this.nHue, this.nSaturation, this.nLuminance );
};

HSLColor.prototype.equal = function( aHSLColor )
{
return ( this.nHue == aHSLColor.nHue ) &&
( this.nSaturation += aHSLColor.nSaturation ) &&
( this.nLuminance += aHSLColor.nLuminance );
};

HSLColor.prototype.add = function( aHSLColor )
{
this.nHue += aHSLColor.nHue;
this.nSaturation += aHSLColor.nSaturation;
this.nLuminance += aHSLColor.nLuminance;
this.normalizeHue();
return this;
};

HSLColor.prototype.scale = function( aT )
{
this.nHue *= aT;
this.nSaturation *= aT;
this.nLuminance *= aT;
this.normalizeHue();
return this;
};

HSLColor.clamp = function( aHSLColor )
{
var aClampedHSLColor = new HSLColor( 0, 0, 0 );

aClampedHSLColor.nHue = aHSLColor.nHue % 360;
if( aClampedHSLColor.nHue < 0 )
aClampedHSLColor.nHue += 360;
aClampedHSLColor.nSaturation = clamp( aHSLColor.nSaturation, 0.0, 1.0 );
aClampedHSLColor.nLuminance = clamp( aHSLColor.nLuminance, 0.0, 1.0 );
};

HSLColor.prototype.normalizeHue = function()
{
this.nHue = this.nHue % 360;
if( this.nHue < 0 ) this.nHue += 360;
};

HSLColor.prototype.toString = function()
{
return 'hsl(' + this.nHue.toFixed( 3 ) + ','
+ this.nSaturation.toFixed( 3 ) + ','
+ this.nLuminance.toFixed( 3 ) + ')';
};

HSLColor.prototype.convertToRGB = function()
{
s += e + ', ';
s += f + ')';

return s;
}

function matrixToString( aSVGMatrix )
{
return makeMatrixString( aSVGMatrix.a, aSVGMatrix.b, aSVGMatrix.c,
aSVGMatrix.d, aSVGMatrix.e, aSVGMatrix.f );
}


function numberParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;
if( sValue === '.' )
return undefined;
var reFloatNumber = /^[+-]?[0-9]*[.]?[0-9]*$/;

if( reFloatNumber.test( sValue ) )
return parseFloat( sValue );
else
return undefined;
}

function booleanParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;

sValue = sValue.toLowerCase();
if( sValue === 'true' )
return true;
else if( sValue === 'false' )
return false;
else
return undefined;
}

function colorParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;


function hsl( nHue, nSaturation, nLuminance )
{
return new HSLColor( nHue, nSaturation / 100, nLuminance / 100 );
}

function rgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 255, nGreen / 255, nBlue / 255 );
}

function prgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 100, nGreen / 100, nBlue / 100 );
}

var sCommaPattern = ' *[,] *';
var sIntegerPattern = '[+-]?[0-9]+';
var sHexDigitPattern = '[0-9A-Fa-f]';

var sHexColorPattern = '#(' + sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})';

var sRGBIntegerPattern = 'rgb[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + sCommaPattern
+ sIntegerPattern + ' *[)]';

var sRGBPercentPattern = 'rgb[(] *' + sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var sHSLPercentPattern = 'hsl[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var reHexColor = new RegExp( sHexColorPattern );
var reRGBInteger = new RegExp( sRGBIntegerPattern );
var reRGBPercent = new RegExp( sRGBPercentPattern );
var reHSLPercent = new RegExp( sHSLPercentPattern );

if( reHexColor.test( sValue ) )
{
var aRGBTriple = reHexColor.exec( sValue );

var nRed    = parseInt( aRGBTriple[1], 16 ) / 255;
var nGreen  = parseInt( aRGBTriple[2], 16 ) / 255;
var nBlue   = parseInt( aRGBTriple[3], 16 ) / 255;

return new RGBColor( nRed, nGreen, nBlue );
}
else if( reHSLPercent.test( sValue ) )
{
sValue = sValue.replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else if( reRGBInteger.test( sValue ) )
{
return eval( sValue );
}
else if( reRGBPercent.test( sValue ) )
{
sValue = 'p' + sValue.replace( '%', '' ).replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else
{
return null;
}
}


function RGBColor( nRed, nGreen, nBlue )
{
this.eColorSpace = COLOR_SPACE_RGB;
this.nRed = nRed;
this.nGreen = nGreen;
this.nBlue = nBlue;
}


RGBColor.prototype.clone = function()
{
return new RGBColor( this.nRed, this.nGreen, this.nBlue );
};

RGBColor.prototype.equal = function( aRGBColor )
{
return ( this.nRed == aRGBColor.nRed ) &&
( this.nGreen == aRGBColor.nGreen ) &&
( this.nBlue == aRGBColor.nBlue );
};

RGBColor.prototype.add = function( aRGBColor )
{
this.nRed += aRGBColor.nRed;
this.nGreen += aRGBColor.nGreen;
this.nBlue += aRGBColor.nBlue;
return this;
};

RGBColor.prototype.scale = function( aT )
{
this.nRed *= aT;
currentMode = SLIDE_MODE;
}
}

function abandonIndexMode()
{
theSlideIndexPage.selectedSlideIndex = nCurSlide;
toggleSlideIndex();
}


var CURR_UNIQUE_ID = 0;

function getUniqueId()
{
++CURR_UNIQUE_ID;
return CURR_UNIQUE_ID;
}

function mem_fn( sMethodName )
{
return  function( aObject )
{
var aMethod = aObject[ sMethodName ];
if( aMethod )
aMethod.call( aObject );
else
log( 'method sMethodName not found' );
};
}

function bind( aObject, aMethod )
{
return  function()
{
return aMethod.call( aObject, arguments[0] );
};
}

function bind2( aFunction )
{
if( !aFunction  )
log( 'bind2: passed function is not valid.' );

var aBoundArgList = arguments;

var aResultFunction = null;

switch( aBoundArgList.length )
{
case 1: aResultFunction = function()
{
return aFunction.call( arguments[0], arguments[1],
arguments[2], arguments[3],
arguments[4] );
};
break;
case 2: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], arguments[0],
arguments[1], arguments[2],
arguments[3] );
};
break;
case 3: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
arguments[0], arguments[1],
arguments[2] );
};
break;
case 4: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], arguments[0],
arguments[1] );
};
break;
case 5: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], aBoundArgList[4],
arguments[0] );
};
break;
default:
log( 'bind2: arity not handled.' );
}

return aResultFunction;
}

function getCurrentSystemTime()
{
return ( new Date() ).getTime();
}

function getSlideAnimationsRoot( sSlideId )
{
return theMetaDoc.aSlideAnimationsMap[ sSlideId ];
}

function getElementChildren( aElement )
{
var aChildrenArray = [];

var nSize = aElement.childNodes.length;

for( var i = 0; i < nSize; ++i )
{
if( aElement.childNodes[i].nodeType == 1 )
aChildrenArray.push( aElement.childNodes[i] );
}

return aChildrenArray;
}

function removeWhiteSpaces( str )
{
if( !str )
return '';

var re = / */;
var aSplitString = str.split( re );
return aSplitString.join('');
}

function clamp( nValue, nMinimum, nMaximum )
{
if( nValue < nMinimum )
{
return nMinimum;
}
else if( nValue > nMaximum )
{
return nMaximum;
}
else
{
return nValue;
}
}

function makeMatrixString( a, b, c, d, e, f )
{
var s = 'matrix(';
s += a + ', ';
s += b + ', ';
s += c + ', ';
s += d + ', ';
if( ( currentMode == INDEX_MODE ) && ( this.container.curThumbnailIndex !=  this.index ) )
{
this.container.setSelection( this.index );
}
};


function init()
{
var VIEWBOX = ROOT_NODE.getAttribute('viewBox');

if( VIEWBOX )
{
WIDTH = ROOT_NODE.viewBox.animVal.width;
HEIGHT = ROOT_NODE.viewBox.animVal.height;
}

aSlideShow = new SlideShow();
theMetaDoc =  new MetaDocument();
aSlideShow.bIsEnabled = theMetaDoc.bIsAnimated;
theSlideIndexPage = new SlideIndexPage();
aSlideShow.displaySlide( theMetaDoc.nStartSlideNumber, false );

var hammer = new Hammer(ROOT_NODE);
hammer.on('swipeleft', function() {
switchSlide(1, false);
});
hammer.on('swiperight', function() {
switchSlide(-1, false);
});
hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });
hammer.on('swipeup', function() {
aSlideShow.exitSlideShowInApp();
});
hammer.on('swipedown', function() {
aSlideShow.exitSlideShowInApp();
});
}

function presentationEngineStop(message)
{
alert( message + '\nThe presentation engine will be stopped' );
document.onkeydown = null;
document.onkeypress = null;
document.onclick = null;
window.onmousewheel = null;
}

function assert( condition, message )
{
if (!condition)
{
presentationEngineStop( message );
if (typeof console == 'object')
console.trace();
throw new Error( message );
}
}

function dispatchEffects(dir)
{

if( dir == 1 )
{
var bRet = aSlideShow.nextEffect();

if( !bRet )
{
switchSlide( 1, false );
}
}
else
{
switchSlide( dir, false );
}
}

function skipAllEffects()
{
var bRet = aSlideShow.skipAllEffects();
if( !bRet )
{
switchSlide( 1, true );
}
}

function skipEffects(dir)
{
if( dir == 1 )
{
var bRet = aSlideShow.skipPlayingOrNextEffect();

if( !bRet )
{
switchSlide( 1, true );
}
}
else
{
switchSlide( dir, true );
}
}

function switchSlide( nOffset, bSkipTransition )
{
var nNextSlide = nCurSlide + nOffset;
aSlideShow.displaySlide( nNextSlide, bSkipTransition );
}

function displayIndex( offsetNumber )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
offsetNumber = getSafeIndex( offsetNumber, 0, aMetaSlideSet.length - 1 );

var nTotalThumbnails = theSlideIndexPage.getTotalThumbnails();
var nEnd = Math.min( offsetNumber + nTotalThumbnails, aMetaSlideSet.length);

var aThumbnailSet = theSlideIndexPage.aThumbnailSet;
var j = 0;
for( var i = offsetNumber; i < nEnd; ++i, ++j )
{
aThumbnailSet[j].update( i );
aThumbnailSet[j].show();
}
for( ; j < nTotalThumbnails; ++j )
{
aThumbnailSet[j].hide();
}

if (INDEX_OFFSET != offsetNumber)
INDEX_OFFSET = offsetNumber;
}

function toggleSlideIndex()
{
if( currentMode == SLIDE_MODE )
{

theMetaDoc.getCurrentSlide().hide();
INDEX_OFFSET = -1;
indexSetPageSlide( nCurSlide );
theSlideIndexPage.show();
currentMode = INDEX_MODE;
}
else if( currentMode == INDEX_MODE )
{
theSlideIndexPage.hide();
var nNewSlide = theSlideIndexPage.selectedSlideIndex;

aSlideShow.displaySlide( nNewSlide, true );
for( i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = this.selectedSlideIndex % this.totalThumbnails;
this.aThumbnailSet[this.curThumbnailIndex].select();

INDEX_OFFSET = -1;
indexSetPageSlide( this.selectedSlideIndex );

ROOT_NODE.unsuspendRedraw( suspendHandle );
ROOT_NODE.forceRedraw();
};


function Thumbnail( aSlideIndexPage, nIndex )
{
this.container = aSlideIndexPage;
this.index = nIndex;//= getSafeIndex( nIndex, 0, this.container.getTotalThumbnails() );
this.pageElement = this.container.pageElement;
this.thumbnailId = 'thumbnail' + this.index;
this.thumbnailElement = this.createThumbnailElement();
this.slideElement = getElementByClassName( this.thumbnailElement, 'Slide' );
this.borderElement = getElementByClassName( this.thumbnailElement, 'Border' );
this.mouseAreaElement = getElementByClassName( this.thumbnailElement, 'MouseArea' );
this.aTransformSet = new Array( 3 );
this.visibility = VISIBLE;
this.isSelected = false;
}

Thumbnail.prototype.sNormalBorderColor = 'rgb(216,216,216)';
Thumbnail.prototype.sSelectionBorderColor = 'rgb(92,92,255)';

Thumbnail.prototype.removeElement = function()
{
if( this.thumbnailElement )
this.container.pageElement.removeChild( this.thumbnailElement );
};

Thumbnail.prototype.show = function()
{
if( this.visibility == HIDDEN )
{
this.thumbnailElement.setAttribute( 'display', 'inherit' );
this.visibility = VISIBLE;
}
};

Thumbnail.prototype.hide = function()
{
if( this.visibility == VISIBLE )
{
this.thumbnailElement.setAttribute( 'display', 'none' );
this.visibility = HIDDEN;
}
};

Thumbnail.prototype.select = function()
{
if( !this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sSelectionBorderColor );
this.isSelected = true;
}
};

Thumbnail.prototype.unselect = function()
{
if( this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sNormalBorderColor );
this.isSelected = false;
}
};

Thumbnail.prototype.updateView = function()
{
this.column = this.index % this.container.indexColumns;
this.row = ( this.index - this.column ) / this.container.indexColumns;
this.halfBorderWidth = this.container.halfBorderWidth;
this.borderWidth = this.container.borderWidth;
this.width = ( WIDTH + this.borderWidth ) * this.container.scaleFactor;
this.height = ( HEIGHT + this.borderWidth ) * this.container.scaleFactor;
this.aTransformSet[2] = 'translate(' + this.halfBorderWidth + ' ' + this.halfBorderWidth + ')';
this.aTransformSet[1] = 'scale(' + this.container.scaleFactor + ')';
var sTransformAttrValue = this.computeTransform();
this.thumbnailElement.setAttribute( 'transform', sTransformAttrValue );
this.mouseAreaElement.setAttribute( 'onmouseover', 'theSlideIndexPage.aThumbnailSet[' + this.index  + '].onMouseOver()' );
};

Thumbnail.prototype.update = function( nIndex )
{
if( this.slideIndex == nIndex )  return;

var aMetaSlide = theMetaDoc.aMetaSlideSet[nIndex];
aMetaSlide.updateMasterPageView();
setNSAttribute( 'xlink', this.slideElement, 'href', '#' + aMetaSlide.slideId );
this.slideIndex = nIndex;
};

Thumbnail.prototype.clear = function( )
{
setNSAttribute( 'xlink', this.slideElement, 'href', '' );
};

Thumbnail.prototype.createThumbnailElement = function()
{
var aThumbnailElement = document.createElementNS( NSS['svg'], 'g' );
aThumbnailElement.setAttribute( 'id', this.thumbnailId );
aThumbnailElement.setAttribute( 'display', 'inherit' );

var aSlideElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aSlideElement, 'href', '' );
aSlideElement.setAttribute( 'class', 'Slide' );
aThumbnailElement.appendChild( aSlideElement );

var aMouseAreaElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aMouseAreaElement, 'href', '#' + this.container.thumbnailMouseAreaTemplateId );
aMouseAreaElement.setAttribute( 'class', 'MouseArea' );
aMouseAreaElement.setAttribute( 'opacity', 0.0 );
aThumbnailElement.appendChild( aMouseAreaElement );

var aBorderElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aBorderElement, 'href', '#' + this.container.thumbnailBorderTemplateId );
aBorderElement.setAttribute( 'stroke', this.sNormalBorderColor );
aBorderElement.setAttribute( 'class', 'Border' );
aThumbnailElement.appendChild( aBorderElement );

this.container.pageElement.appendChild( aThumbnailElement );
return( document.getElementById( this.thumbnailId ) );
};

Thumbnail.prototype.computeTransform = function()
{
var nXSpacing = this.container.xSpacing;
var nYSpacing = this.container.ySpacing;

var nXOffset = nXSpacing + ( this.width + nXSpacing ) * this.column;
var nYOffset = nYSpacing + ( this.height + nYSpacing ) * this.row;

this.aTransformSet[0] = 'translate(' + nXOffset + ' ' + nYOffset + ')';

var sTransform = this.aTransformSet.join( ' ' );

return sTransform;
};

Thumbnail.prototype.onMouseOver = function()
{
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

this.thumbnailMouseAreaTemplateId = 'thumbnail_mouse_area';
this.thumbnailMouseAreaTemplateElement = null;
this.thumbnailBorderTemplateId = 'thumbnail_border';
this.thumbnailBorderTemplateElement = null;
this.createTemplateElements();

this.aThumbnailSet = new Array( this.totalThumbnails );
for( var i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = 0;
}


SlideIndexPage.prototype.getTotalThumbnails = function()
{
return this.totalThumbnails;
};

SlideIndexPage.prototype.show = function()
{
this.pageElement.setAttribute( 'display', 'inherit' );
};

SlideIndexPage.prototype.hide = function()
{
this.pageElement.setAttribute( 'display', 'none' );
};

SlideIndexPage.prototype.setSelection = function( nIndex )
{
nIndex = getSafeIndex( nIndex, 0, this.getTotalThumbnails() - 1 );
if( this.curThumbnailIndex != nIndex )
{
this.aThumbnailSet[ this.curThumbnailIndex ].unselect();
this.aThumbnailSet[ nIndex ].select();
this.curThumbnailIndex = nIndex;
}
this.selectedSlideIndex = this.aThumbnailSet[ nIndex ].slideIndex;
};

SlideIndexPage.prototype.createPageElement = function()
{
var aPageElement = document.createElementNS( NSS['svg'], 'g' );
aPageElement.setAttribute( 'id', this.pageElementId );
aPageElement.setAttribute( 'display', 'none' );
aPageElement.setAttribute( 'visibility', 'visible' );

var sPageBgColor = this.pageBgColor + ';';
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'style', 'stroke:none;fill:' + sPageBgColor );

aPageElement.appendChild( aRectElement );
ROOT_NODE.appendChild( aPageElement );
return( document.getElementById( this.pageElementId ) );
};

SlideIndexPage.prototype.createTemplateElements = function()
{
var aDefsElement = document.createElementNS( NSS['svg'], 'defs' );
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailBorderTemplateId );
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );
aRectElement.setAttribute( 'fill', 'none' );
aDefsElement.appendChild( aRectElement );

aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailMouseAreaTemplateId );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'fill', this.pageBgColor );
aDefsElement.appendChild( aRectElement );

this.pageElement.appendChild( aDefsElement );

this.thumbnailMouseAreaTemplateElement = document.getElementById( this.thumbnailMouseAreaTemplateId );
this.thumbnailBorderTemplateElement = document.getElementById( this.thumbnailBorderTemplateId );
};

SlideIndexPage.prototype.decreaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns - 1 );
};

SlideIndexPage.prototype.increaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns + 1 );
};

SlideIndexPage.prototype.resetNumberOfColumns  = function()
{
this.setNumberOfColumns( INDEX_COLUMNS_DEFAULT );
};

SlideIndexPage.prototype.setNumberOfColumns  = function( nNumberOfColumns )
{
if( this.indexColumns == nNumberOfColumns )  return;
if( nNumberOfColumns < 2 || nNumberOfColumns > 6 ) return;

var suspendHandle = ROOT_NODE.suspendRedraw(500);

var nOldTotalThumbnails = this.totalThumbnails;
this.indexColumns = nNumberOfColumns;
this.totalThumbnails = nNumberOfColumns * nNumberOfColumns;

this.aThumbnailSet[this.curThumbnailIndex].unselect();

var i;
for( i = this.totalThumbnails; i < nOldTotalThumbnails; ++i )
{
this.aThumbnailSet[i].removeElement();
}

for( i = nOldTotalThumbnails; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
}

this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

var aRectElement = this.thumbnailBorderTemplateElement;
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );

log( 'PlaceholderShape.setTextContent: text element is not valid in placeholder of type '
+ this.className + ' that belongs to master slide ' + this.masterPage.id );
return;
}
this.aTextPlaceholderElement.textContent = sText;
};

TextFieldHandler.prototype.update = function()
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this );
};

function SlideNumberFieldHandler( aPlaceholderShape, aTextContentProvider )
{
SlideNumberFieldHandler.superclass.constructor.call( this, aPlaceholderShape, aTextContentProvider );
}
extend( SlideNumberFieldHandler, TextFieldHandler );


SlideNumberFieldHandler.prototype.update = function( nPageNumber )
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this, nPageNumber );
};


function TextFieldContentProvider()
{
this.sId = TextFieldContentProvider.getUniqueId();
}


TextFieldContentProvider.CURR_UNIQUE_ID = 0;

TextFieldContentProvider.getUniqueId = function()
{
++TextFieldContentProvider.CURR_UNIQUE_ID;
return TextFieldContentProvider.CURR_UNIQUE_ID;
};

function FixedTextProvider( aText )
{
FixedTextProvider.superclass.constructor.call( this );
this.text = aText;
}
extend( FixedTextProvider, TextFieldContentProvider );


FixedTextProvider.prototype.update = function( aFixedTextField )
{
aFixedTextField.setTextContent( this.text );
};

function FixedTextByElementProvider( aTextFieldContentElement )
{
FixedTextByElementProvider.superclass.constructor.call( this, aTextFieldContentElement.textContent );
}
extend( FixedTextByElementProvider, FixedTextProvider );

function CurrentDateTimeProvider( aTextFieldContentElement, sDateTimeFormat )
{
CurrentDateTimeProvider.superclass.constructor.call( this, aTextFieldContentElement );
if( aTextFieldContentElement )
this.dateTimeFormat = getOOOAttribute( aTextFieldContentElement, aOOOAttrDateTimeFormat );
else
{
this.dateTimeFormat = sDateTimeFormat;
}
}
extend( CurrentDateTimeProvider, TextFieldContentProvider );


CurrentDateTimeProvider.prototype.update = function( aDateTimeField )
{
var sText = this.createDateTimeText();
aDateTimeField.setTextContent( sText );
};


CurrentDateTimeProvider.prototype.createDateTimeText = function()
{
var sDate;
if( this.dateTimeFormat === '<date>' )
sDate = new Date().toLocaleDateString();
else if( this.dateTimeFormat === '<time>' )
sDate = new Date().toLocaleTimeString();
else
sDate = new Date().toLocaleDateString();
return sDate;
};

function SlideNumberProvider( nInitialSlideNumber, sPageNumberingType )
{
SlideNumberProvider.superclass.constructor.call( this );
this.nInitialSlideNumber = nInitialSlideNumber;
this.pageNumberingType = sPageNumberingType;

}
extend( SlideNumberProvider, TextFieldContentProvider );


SlideNumberProvider.prototype.getNumberingType = function()
{
return this.pageNumberingType;
};


SlideNumberProvider.prototype.update = function( aSlideNumberField, nSlideNumber )
{
if( nSlideNumber === undefined )
{
if( nCurSlide === undefined )
nSlideNumber = this.nInitialSlideNumber;
else
nSlideNumber = nCurSlide + 1;
}
var sText = this.createSlideNumberText( nSlideNumber, this.getNumberingType() );
aSlideNumberField.setTextContent( sText );
};


SlideNumberProvider.prototype.createSlideNumberText = function( nSlideNumber /*, sNumberingType*/ )
{
return String( nSlideNumber );
};


function SlideIndexPage()
{
this.pageElementId = 'slide_index';
this.pageBgColor = 'rgb(252,252,252)';
this.pageElement = this.createPageElement();
assert( this.pageElement, 'SlideIndexPage: pageElement is not valid' );
this.indexColumns = INDEX_COLUMNS_DEFAULT;
this.totalThumbnails = this.indexColumns * this.indexColumns;
this.selectedSlideIndex = undefined;

this.xSpacingFactor = 600/28000;
this.ySpacingFactor = 450/21000;
this.xSpacing = WIDTH * this.xSpacingFactor;
this.ySpacing = HEIGHT * this.ySpacingFactor;
this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
}
else if( sId === aFooterClassName + '.Default' )
{
if( this.aMetaSlide.nIsFooterVisible )
{
this.aFooterFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aHeaderClassName + '.Default' )
{
if( this.aMetaSlide.nIsHeaderVisible )
{
this.aHeaderFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId.indexOf( aDateTimeClassName ) == 0
|| sId.indexOf( aFooterClassName ) == 0
|| sId.indexOf( aHeaderClassName ) == 0
|| sId.indexOf( aDateClassName ) == 0
|| sId.indexOf( aTimeClassName ) == 0
|| sId.indexOf( aSlideNameClassName ) == 0 )
{
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
else
{
var aBackgroundSubGroupElement = theDocument.createElementNS( NSS['svg'], 'use' );
aBackgroundSubGroupElement.setAttribute( 'class', 'BackgroundObjectSubGroup' );
setNSAttribute( 'xlink', aBackgroundSubGroupElement,
'href', '#' + sId );
this.aBackgroundSubGroupElementSet.push( aBackgroundSubGroupElement );
this.aBackgroundObjectsElement.appendChild( aBackgroundSubGroupElement );
}

}
aMasterPageViewElement.appendChild( this.aBackgroundObjectsElement );
}

return aMasterPageViewElement;
};

MasterPageView.prototype.initTextFieldHandler =
function( sId, aPlaceholderShapeSet, aTextFieldContentProviderSet,
aDefsElement, aTextFieldHandlerSet, sMasterSlideId )
{
var sRefId = null;
var aTextFieldHandler = null;
var sClassName = sId.split('.')[0];
var aPlaceholderShape = aPlaceholderShapeSet[sId];
var aTextFieldContentProvider = aTextFieldContentProviderSet[sClassName];
if( aPlaceholderShape  && aPlaceholderShape.isValid()
&& aTextFieldContentProvider )
{
var sTextFiedHandlerKey = aTextFieldContentProvider.sId + '.' + sId;
if ( !aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] )
{
aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] =
new TextFieldHandler( aPlaceholderShape,
aTextFieldContentProvider );
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ];
aTextFieldHandler.update();
aTextFieldHandler.appendTo( aDefsElement );
}
else
{
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ];
}
sRefId = aTextFieldHandler.sId;
}
else if( aPlaceholderShape && aPlaceholderShape.element && aPlaceholderShape.element.firstElementChild
&& !aPlaceholderShape.textElement && !aTextFieldContentProvider )
{
sRefId = aPlaceholderShape.element.firstElementChild.getAttribute('id');
}

if( sRefId )
{
var aTextFieldElement = document.createElementNS(NSS['svg'], 'use');
aTextFieldElement.setAttribute('class', sClassName);
setNSAttribute('xlink', aTextFieldElement,
'href', '#' + sRefId);
this.aBackgroundObjectsElement.appendChild( aTextFieldElement );
}
return aTextFieldHandler;
};

function TextFieldHandler( aPlaceholderShape, aTextContentProvider )
{
this.aPlaceHolderShape = aPlaceholderShape;
this.aTextContentProvider = aTextContentProvider;
assert( this.aTextContentProvider,
'TextFieldHandler: text content provider not defined.' );
this.sId = 'tf' + String( TextFieldHandler.getUniqueId() );
this.aTextFieldElement = null;
this.aTextPlaceholderElement = null;
this.cloneElement();
}


TextFieldHandler.CURR_UNIQUE_ID = 0;

TextFieldHandler.getUniqueId = function()
{
++TextFieldHandler.CURR_UNIQUE_ID;
return TextFieldHandler.CURR_UNIQUE_ID;
};

TextFieldHandler.prototype.cloneElement = function()
{
assert( this.aPlaceHolderShape && this.aPlaceHolderShape.isValid(),
'TextFieldHandler.cloneElement: placeholder shape is not valid.' );
this.aTextFieldElement = this.aPlaceHolderShape.element.cloneNode( true /* deep clone */ );
assert( this.aTextFieldElement,
'TextFieldHandler.cloneElement: aTextFieldElement is not defined' );
this.aTextFieldElement.setAttribute( 'id', this.sId );
this.aTextFieldElement.removeAttribute( 'visibility' );
this.aTextPlaceholderElement = getElementByClassName( this.aTextFieldElement, 'PlaceholderText' );
assert( this.aTextPlaceholderElement,
'TextFieldHandler.cloneElement: aTextPlaceholderElement is not defined' );
};


TextFieldHandler.prototype.appendTo = function( aParentNode )
{
if( !this.aTextFieldElement )
{
log( 'TextFieldHandler.appendTo: aTextFieldElement is not defined' );
return;
}
if( !aParentNode )
{
log( 'TextFieldHandler.appendTo: parent node is not defined' );
return;
}

aParentNode.appendChild( this.aTextFieldElement );
};

TextFieldHandler.prototype.setTextContent = function( sText )
{
if( !this.aTextPlaceholderElement )
{
{
var i = 0;
for( ; i < aTSpanElements.length; ++i )
{
var aTSpanElem = aTSpanElements[i];
aTSpanElem.removeAttribute( 'x' );
if( i !== 0 )
aTSpanElem.removeAttribute( 'y' );
}
}
}
}

if( this.masterPage.metaSlide.theMetaDoc.bIsUsePositionedChars )
{
var aTextLineGroupElem = aPlaceholderElement.parentNode.parentNode;
if( aTextLineGroupElem )
{
var sFontFamilyAttr = aTextLineGroupElem.getAttribute( 'font-family' );
if( sFontFamilyAttr )
{
var aChildSet = getElementChildren( aTextLineGroupElem );
if( aChildSet.length > 1 )
var i = 1;
for( ; i < aChildSet.length; ++i )
{
aTextLineGroupElem.removeChild( aChildSet[i] );
}
}
}
}
this.textElement = aPlaceholderElement;
}
}
this.element = aTextFieldElement;
}
};

function MasterPageView( aMetaSlide )
{
this.aMetaSlide = aMetaSlide;
this.aSlideElement = aMetaSlide.slideElement;
this.aPageElement = aMetaSlide.pageElement;
this.aMasterPage = aMetaSlide.masterPage;
this.aMPVElement = this.createElement();
this.bIsAttached = false;
}


MasterPageView.prototype.attachToSlide = function()
{
if( !this.bIsAttached )
{
var aInsertedElement = this.aSlideElement.insertBefore( this.aMPVElement, this.aPageElement );
assert( aInsertedElement === this.aMPVElement,
'MasterPageView.attachToSlide: aInsertedElement != this.aMPVElement' );

this.bIsAttached = true;
}
};

MasterPageView.prototype.detachFromSlide = function()
{
if( this.bIsAttached )
{
this.aSlideElement.removeChild( this.aMPVElement );
this.bIsAttached = false;
}
};

MasterPageView.prototype.update = function()
{
if( this.aDateTimeFieldHandler && this.aMetaSlide.bIsDateTimeVariable )
this.aDateTimeFieldHandler.update();
};


MasterPageView.prototype.createElement = function()
{
var theDocument = document;
var aMasterPageViewElement = theDocument.createElementNS( NSS['svg'], 'g' );
assert( aMasterPageViewElement,
'MasterPageView.createElement: failed to create a master page view element.' );
aMasterPageViewElement.setAttribute( 'class', 'MasterPageView' );

var aWhiteRect = theDocument.createElementNS( NSS['svg'], 'rect' );
var nWidthExt = WIDTH / 1000;
var nHeightExt = HEIGHT / 1000;
aWhiteRect.setAttribute( 'x', String( -nWidthExt / 2 ) );
aWhiteRect.setAttribute( 'y', String( -nHeightExt / 2 ) );
aWhiteRect.setAttribute( 'width', String( WIDTH + nWidthExt ) );
aWhiteRect.setAttribute( 'height', String( HEIGHT + nHeightExt ) );
aWhiteRect.setAttribute( 'fill', '#FFFFFF' );
aMasterPageViewElement.appendChild( aWhiteRect );

if( this.aMetaSlide.nIsBackgroundVisible )
{
var nBackgroundId = this.aMetaSlide.bHasCustomBackground ? this.aMetaSlide.backgroundId : this.aMasterPage.backgroundId;
this.aBackgroundElement = theDocument.createElementNS( NSS['svg'], 'use' );
this.aBackgroundElement.setAttribute( 'class', 'Background' );
setNSAttribute( 'xlink', this.aBackgroundElement,
'href', '#' + nBackgroundId );

aMasterPageViewElement.appendChild( this.aBackgroundElement );
}

if( this.aMetaSlide.nAreMasterObjectsVisible )
{
this.aBackgroundObjectsElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aBackgroundObjectsElement.setAttribute( 'class', 'BackgroundObjects' );

var aBackgroundObjectSubGroupIdList = this.aMasterPage.aBackgroundObjectSubGroupIdList;
this.aBackgroundSubGroupElementSet = [];
var aPlaceholderShapeSet = this.aMasterPage.aPlaceholderShapeSet;
var aTextFieldContentProviderSet = this.aMetaSlide.aTextFieldContentProviderSet;
var aDefsElement = this.aMetaSlide.element.parentNode;
var aTextFieldHandlerSet = this.aMetaSlide.theMetaDoc.aTextFieldHandlerSet;
var sMasterSlideId = this.aMasterPage.id;

var i = 0;
var sId;
for( ; i < aBackgroundObjectSubGroupIdList.length; ++i )
{
sId = aBackgroundObjectSubGroupIdList[i];
if( sId.indexOf( aSlideNumberClassName ) == 0 )
{
var nIsPageNumberVisible = sId === (aSlideNumberClassName + '.Default') ? this.aMetaSlide.nIsPageNumberVisible : true;
if( aPlaceholderShapeSet[sId] &&
aPlaceholderShapeSet[sId].isValid() &&
nIsPageNumberVisible &&
aTextFieldContentProviderSet[aSlideNumberClassName] )
{
var aSlideNumberFieldHandler =
new SlideNumberFieldHandler( aPlaceholderShapeSet[sId],
aTextFieldContentProviderSet[aSlideNumberClassName] );
aSlideNumberFieldHandler.update( this.aMetaSlide.nSlideNumber );
aSlideNumberFieldHandler.appendTo( this.aBackgroundObjectsElement );
if ( sId === aSlideNumberClassName + '.Default' )
this.aSlideNumberFieldHandler = aSlideNumberFieldHandler;
}
}
else if( sId === aDateTimeClassName + '.Default' )
{
if( this.aMetaSlide.nIsDateTimeVisible )
{
this.aDateTimeFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
{
this.backgroundObjectsId = this.backgroundObjects.getAttribute( 'id' );
this.backgroundObjectsVisibility = initVisibilityProperty( this.backgroundObjects );

if( this.backgroundObjectsVisibility != HIDDEN )
{
var aBackgroundObjectList = getElementChildren( this.backgroundObjects );
var nFrom = 0;
var nCount = 0;
var nSubGroupId = 1;
var sClass;
var sId = '';
var i = 0;
for( ; i < aBackgroundObjectList.length; ++i )
{
var aObject = aBackgroundObjectList[i];
removeRedundantParagraphFromTextFieldShape( aObject );
sClass = null;
var sFieldType = getTextFieldType( aObject );
if( sFieldType && aObject.firstElementChild )
{
var sObjId = aObject.firstElementChild.getAttribute( 'id' );
if( sObjId )
{
sClass = sFieldType + '.' + sObjId;
aObject.setAttribute('class', sClass);
}
}
if( !sClass )
{
sClass = aBackgroundObjectList[i].getAttribute('class');
if( sClass === aDateTimeClassName || sClass === aFooterClassName
|| sClass === aHeaderClassName || sClass === aSlideNumberClassName)
{
sClass += '.Default';
aObject.setAttribute('class', sClass);
}
}
if( !sClass || !isTextFieldByClassName( sClass ) )
{
if( nCount === 0 )
{
nFrom = i;
sId = this.backgroundObjectsId + '.' + nSubGroupId;
++nSubGroupId;
this.aBackgroundObjectSubGroupIdList.push( sId );
}
++nCount;
}
else
{
this.aBackgroundObjectSubGroupIdList.push( sClass );
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
nCount = 0;
}
}
}
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
}
}
}
else
{
this.backgroundObjectsId = '';
log( 'MasterPage: the background objects element is not valid.' );
}

this.aPlaceholderShapeSet = {};
this.initPlaceholderShapes();
}

MasterPage.prototype =
{

initPlaceholderShapes : function()
{
var sClassName;
var i = 0;
for( ; i < this.aBackgroundObjectSubGroupIdList.length; ++i )
{
sClassName = this.aBackgroundObjectSubGroupIdList[i];
if( isTextFieldByClassName( sClassName ) )
this.aPlaceholderShapeSet[ sClassName ] = new PlaceholderShape( this, sClassName );
}
}

}; // end MasterPage prototype

function PlaceholderShape( aMasterPage, sClassName )
{
this.masterPage = aMasterPage;
this.className = sClassName;

this.element = null;
this.textElement = null;
this.init();
}

PlaceholderShape.prototype.isValid = function()
{
return ( this.element && this.textElement );
};


PlaceholderShape.prototype.init = function()
{
var aTextFieldElement = getElementByClassName( this.masterPage.backgroundObjects, this.className );
if( aTextFieldElement )
{
var aTextElem = getElementByClassName( aTextFieldElement, 'SVGTextShape' );
if( aTextElem )
{
var aPlaceholderElement = getElementByClassName(aTextElem, 'PlaceholderText');
if( aPlaceholderElement )
{
var aSVGRectElem = getElementByClassName( aTextFieldElement, 'BoundingBox' );
if( aSVGRectElem )
{
var aRect = new Rectangle( aSVGRectElem );
var sTextAdjust = getOOOAttribute( aTextFieldElement, aOOOAttrTextAdjust );
var nMargin = 250; // 1000th mm
var sTextAnchor, sX;
if( sTextAdjust == 'left' )
{
sTextAnchor = 'start';
sX = String( Math.trunc( aRect.left + nMargin ) );
}
else if( sTextAdjust == 'right' )
{
sTextAnchor = 'end';
sX = String( Math.trunc( aRect.right - nMargin ) );
}
else if( sTextAdjust == 'center' )
{
sTextAnchor = 'middle';
var nMiddle = ( aRect.left + aRect.right ) / 2;
sX = String( parseInt( String( nMiddle ) ) );
}
if( sTextAnchor )
{
aTextElem.setAttribute( 'text-anchor', sTextAnchor );
if( sX )
aTextElem.setAttribute( 'x', sX );

var aTSpanElements = getElementsByClassName( aTextElem, 'TextPosition' );
if( aTSpanElements )
var aTextFieldElem = document.getElementById( sTextFieldId );
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ]
= new FixedTextByElementProvider( aTextFieldElem );
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

collectTextShapes : function()
{
var aTextShapeSet = [];
var aTextShapeIndexElem = getElementByClassName( document, 'TextShapeIndex' );
if( aTextShapeIndexElem )
{
var aIndexEntryList = getElementChildren( aTextShapeIndexElem );
var i;
for( i = 0; i < aIndexEntryList.length; ++i )
{
var sSlideId = getOOOAttribute( aIndexEntryList[i], 'slide' );
if( sSlideId === this.slideId )
{
var sTextShapeIds = getOOOAttribute( aIndexEntryList[i], 'id-list' );
if( sTextShapeIds )
{
var aTextShapeIdSet =  sTextShapeIds.split( ' ' );
var j;
for( j = 0; j < aTextShapeIdSet.length; ++j )
{
var aTextShapeElem = document.getElementById( aTextShapeIdSet[j] );
if( aTextShapeElem )
{
aTextShapeSet.push( aTextShapeElem );
}
else
{
log( 'warning: MetaSlide.collectTextShapes: text shape with id <' + aTextShapeIdSet[j] + '> is not valid.'  );
}
}
}
break;
}
}
}
return aTextShapeSet;
},

initHyperlinks : function()
{
var aHyperlinkSet = {};
var i;
for( i = 0; i < this.aTextShapeSet.length; ++i )
{
if( this.aTextShapeSet[i] )
{
var aHyperlinkIdList = getElementByClassName( this.aTextShapeSet[i], 'HyperlinkIdList' );
if( aHyperlinkIdList )
{
var sHyperlinkIds = aHyperlinkIdList.textContent;
if( sHyperlinkIds )
{
var aHyperlinkIdSet = sHyperlinkIds.trim().split( ' ' );
var j;
for( j = 0; j < aHyperlinkIdSet.length; ++j )
{
var sId = aHyperlinkIdSet[j];
aHyperlinkSet[ sId ] = new HyperlinkElement( sId, this.aSlideAnimationsHandler.aEventMultiplexer );
}
}
}
}
}
return aHyperlinkSet;
},

getSlideAnimationsRoot : function()
{
return this.theMetaDoc.aSlideAnimationsMap[ this.slideId ];
}

}; // end MetaSlide prototype

function removeRedundantParagraphFromTextFieldShape( aObject )
{
var aTextElem = getElementByClassName( aObject, 'SVGTextShape' );
if( aTextElem )
{
var aPlaceholderElement = getElementsByClassName(aTextElem, 'PlaceholderText');
if( aPlaceholderElement )
{
var aTextParagraphSet = getElementsByClassName(aTextElem, 'TextParagraph');
if( aTextParagraphSet.length > 1 )
{
var i = aTextParagraphSet.length;
while( i > 1 )
{
aTextElem.removeChild(aTextParagraphSet[i - 1]);
--i;
}
}
}
}
}

function getTextFieldType ( elem ) {
var sFieldType = null;
var sClass = elem.getAttribute('class');
if( sClass === 'TextShape' )
{
var aPlaceholderElement = getElementByClassName(elem, 'PlaceholderText');
if( aPlaceholderElement )
{
var sClassAttr = aPlaceholderElement.getAttribute('class');
var classes = sClassAttr.split(' ');
sFieldType = classes[1];
}
}
return sFieldType;
}

function isTextFieldByClassName ( sClassName )
{
return sClassName.indexOf( aDateTimeClassName ) == 0 || sClassName.indexOf( aFooterClassName ) == 0
|| sClassName.indexOf( aHeaderClassName ) == 0 || sClassName.indexOf( aSlideNumberClassName ) == 0
|| sClassName.indexOf( aDateClassName ) == 0 || sClassName.indexOf( aTimeClassName ) == 0
|| sClassName.indexOf( aSlideNameClassName ) == 0;
}

function MasterPage( sMasterPageId, aMetaSlide )
{
this.id = sMasterPageId;
this.metaSlide = aMetaSlide;

this.element = document.getElementById( this.id );
assert( this.element,
'MasterPage: master page element <' + this.id + '> not found.' );

this.background = getElementByClassName( this.element, 'Background' );
if( this.background )
{
this.backgroundId = this.background.getAttribute( 'id' );
this.backgroundVisibility = initVisibilityProperty( this.background );
}
else
{
this.backgroundId = '';
log( 'MasterPage: the background element is not valid.' );
}

this.backgroundObjects = getElementByClassName( this.element, 'BackgroundObjects' );
this.aBackgroundObjectSubGroupIdList = [];
if( this.backgroundObjects )
{
this.aTransitionHandler = new SlideTransition( this.getSlideAnimationsRoot(), this.slideId );
}

this.aSlideAnimationsHandler = new SlideAnimations( aSlideShow.getContext() );
this.aSlideAnimationsHandler.importAnimations( this.getSlideAnimationsRoot() );
this.aSlideAnimationsHandler.parseElements();

if( false && this.aSlideAnimationsHandler.aRootNode )
log( this.aSlideAnimationsHandler.aRootNode.info( true ) );

this.aTextShapeSet = this.collectTextShapes();

this.aHyperlinkSet = this.initHyperlinks();

}

MetaSlide.prototype =
{

show : function()
{
this.updateMasterPageView();
this.aVisibilityStatusElement.setAttribute( 'visibility', 'inherit' );
},

hide : function()
{
this.aVisibilityStatusElement.setAttribute( 'visibility', 'hidden' );
},

updateMasterPageView : function()
{
if( !this.aMasterPageView )
{
this.aMasterPageView = new MasterPageView( this );
this.aMasterPageView.attachToSlide();
}
this.aMasterPageView.update();
},


initPlaceholderElements : function()
{
var aPlaceholderList = getElementsByClassName(this.pageElement , 'PlaceholderText' );
var i = 0;
for( ; i < aPlaceholderList.length; ++i )
{
var aPlaceholderElem = aPlaceholderList[i];
var sClass = aPlaceholderElem.getAttribute('class');
var sFieldType = sClass.split(' ')[1];
if( sFieldType ===  aDateClassName)
aPlaceholderElem.textContent = new Date().toLocaleDateString();
else if( sFieldType === aTimeClassName )
aPlaceholderElem.textContent = new Date().toLocaleTimeString();
}
},

initMasterPage : function()
{
var sMasterPageId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrMaster );

if( !this.theMetaDoc.aMasterPageSet.hasOwnProperty( sMasterPageId ) )
{
this.theMetaDoc.aMasterPageSet[ sMasterPageId ] = new MasterPage( sMasterPageId, this );

this.theMetaDoc.aTextFieldHandlerSet[ sMasterPageId ] = {};
}
return this.theMetaDoc.aMasterPageSet[ sMasterPageId ];
},

initSlideDuration : function()
{
var sSlideDuration = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlideDuration );
if( sSlideDuration && sSlideDuration.length > 0 )
return parseFloat( sSlideDuration );
else
return -1;
},

initHasTransition : function()
{
var sHasTransition = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasTransition );
return ( sHasTransition === 'true' );
},

initHasCustomBackground : function()
{
var sHasCustomBackground = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasCustomBackground );
return ( sHasCustomBackground === 'true' );
},

initVisibilityProperty : function( aVisibilityAttribute, nDefaultValue )
{
var nVisibility = nDefaultValue;
var sVisibility = getOOOAttribute( this.element, aVisibilityAttribute );
if( sVisibility )
nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
},

initSlideNumberFieldContentProvider : function()
{
return this.theMetaDoc.aSlideNumberProvider;
},

initDateTimeFieldContentProvider : function( aOOOAttrDateTimeField )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttrDateTimeField );
if( !sTextFieldId )  return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt(sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
var aTextField;
var aTextFieldElem = document.getElementById( sTextFieldId );
var sClassName = getClassAttribute( aTextFieldElem );
if( sClassName == 'FixedDateTimeField' )
{
aTextField = new FixedTextByElementProvider( aTextFieldElem );
this.bIsDateTimeVariable = false;
}
else if( sClassName == 'VariableDateTimeField' )
{
aTextField = new CurrentDateTimeProvider( aTextFieldElem );
this.bIsDateTimeVariable = true;
}
else
{
aTextField = null;
}
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] = aTextField;
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

initFixedTextFieldContentProvider : function( aOOOAttribute )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttribute );
if( !sTextFieldId ) return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt( sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
if (aParmStartSlideNumber !== '')
{
this.nStartSlideNumber = parseInt(aParmStartSlideNumber);
}
this.sPageNumberingType = aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberingType ) || 'arabic';
this.bIsUsePositionedChars = ( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrUsePositionedChars ) === 'true' );

this.aClipPathGroup = getElementByClassName( ROOT_NODE, aClipPathGroupClassName );
assert( this.aClipPathGroup, 'MetaDocument: the clip path group element is not valid.');

this.aPresentationClipPath = document.getElementById( aPresentationClipPathId );
assert( this.aPresentationClipPath,
'MetaDocument: the presentation clip path element element is not valid.');

this.aMetaSlideSet = [];
this.aMasterPageSet = {};
this.aTextFieldHandlerSet = {};
this.aTextFieldContentProviderSet = [];
this.aSlideNumberProvider = new SlideNumberProvider( this.nStartSlideNumber + 1, this.sPageNumberingType );
this.aCurrentDateProvider = new CurrentDateTimeProvider( null, '<date>' );
this.aCurrentTimeProvider = new CurrentDateTimeProvider( null, '<time>' );

this.bIsAnimated = false;
this.aSlideAnimationsMap = {};
this.initSlideAnimationsMap();

this.theMetaDummySlide = new MetaSlide( 'ooo:meta_dummy_slide', this );

for( var i = 0; i < this.nNumberOfSlides; ++i )
{
var sMetaSlideId = aOOOElemMetaSlide + '_' + i;
this.aMetaSlideSet.push( new MetaSlide( sMetaSlideId, this ) );
}
assert( this.aMetaSlideSet.length == this.nNumberOfSlides,
'MetaDocument: aMetaSlideSet.length != nNumberOfSlides.' );
}

MetaDocument.prototype =
{

getCurrentSlide : function()
{
return this.aMetaSlideSet[nCurSlide];
},

setCurrentSlide : function( nSlideIndex )
{
if( nSlideIndex >= 0 &&  nSlideIndex < this.nNumberOfSlides )
{
if( nCurSlide !== undefined )
this.aMetaSlideSet[nCurSlide].hide();
this.aMetaSlideSet[nSlideIndex].show();
nCurSlide = nSlideIndex;
}
else
{
log('MetaDocument.setCurrentSlide: slide index out of range: ' + nSlideIndex );
}
},


initSlideAnimationsMap : function()
{
var aAnimationsSection = document.getElementById( 'presentation-animations' );
if( aAnimationsSection )
{
var aAnimationsDefSet = aAnimationsSection.getElementsByTagName( 'defs' );

this.bIsAnimated = ( typeof aAnimationsDefSet.length =='number' &&
aAnimationsDefSet.length > 0 );

for( var i = 0; i < aAnimationsDefSet.length; ++i )
{
var sSlideId = aAnimationsDefSet[i].getAttributeNS( NSS['ooo'], aOOOAttrSlide );
var aChildSet = getElementChildren( aAnimationsDefSet[i] );
if( sSlideId && ( aChildSet.length === 1 ) )
{
this.aSlideAnimationsMap[ sSlideId ] = aChildSet[0];
}
}
}
}

}; // end MetaDocument prototype

function MetaSlide( sMetaSlideId, aMetaDoc )
{
this.theDocument = document;
this.id = sMetaSlideId;
this.theMetaDoc = aMetaDoc;

this.element = this.theDocument.getElementById( this.id );
assert( this.element,
'MetaSlide: meta_slide element <' + this.id + '> not found.' );

this.slideId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlide );
this.slideElement = this.theDocument.getElementById( this.slideId );
assert( this.slideElement,
'MetaSlide: slide element <' + this.slideId + '> not found.' );

if( this.slideId !== 'dummy_slide' )
this.nSlideNumber = parseInt( this.slideId.substr(2) );
else
this.nSlideNumber= -1;

this.slideName = this.element.getAttributeNS( NSS['ooo'], aOOOAttrDisplayName );

this.aContainerElement = this.slideElement.parentNode;
this.slideContainerId = this.aContainerElement.getAttribute( 'id' );
this.aVisibilityStatusElement = this.aContainerElement.parentNode;

this.pageElement = getElementByClassName( this.slideElement, aPageClassName );
assert( this.pageElement,
'MetaSlide: page element <' + this.slideId + '> not found.' );

this.backgroundElement = getElementByClassName( this.pageElement, 'Background' );
if( this.backgroundElement )
{
this.backgroundId = this.backgroundElement.getAttribute( 'id' );
}

this.initPlaceholderElements();

this.masterPage = this.initMasterPage();

this.bHasCustomBackground = this.initHasCustomBackground();

this.nAreMasterObjectsVisible     = this.initVisibilityProperty( aOOOAttrMasterObjectsVisibility,  VISIBLE );
this.nIsBackgroundVisible         = this.initVisibilityProperty( aOOOAttrBackgroundVisibility,     VISIBLE );
this.nIsPageNumberVisible         = this.initVisibilityProperty( aOOOAttrPageNumberVisibility,     HIDDEN );
this.nIsDateTimeVisible           = this.initVisibilityProperty( aOOOAttrDateTimeVisibility,       VISIBLE );
this.nIsFooterVisible             = this.initVisibilityProperty( aOOOAttrFooterVisibility,         VISIBLE );
this.nIsHeaderVisible             = this.initVisibilityProperty( aOOOAttrHeaderVisibility,         VISIBLE );

this.bIsDateTimeVariable = undefined;

this.aTextFieldContentProviderSet = {};
this.aTextFieldContentProviderSet[aSlideNumberClassName]   = this.initSlideNumberFieldContentProvider();
this.aTextFieldContentProviderSet[aDateTimeClassName]      = this.initDateTimeFieldContentProvider( aOOOAttrDateTimeField );
this.aTextFieldContentProviderSet[aFooterClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrFooterField );
this.aTextFieldContentProviderSet[aHeaderClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrHeaderField );
this.aTextFieldContentProviderSet[aDateClassName]          = this.theMetaDoc.aCurrentDateProvider;
this.aTextFieldContentProviderSet[aTimeClassName]          = this.theMetaDoc.aCurrentTimeProvider;
this.aTextFieldContentProviderSet[aSlideNameClassName]     = new FixedTextProvider( this.slideName );

this.fDuration = this.initSlideDuration();

this.aTransitionHandler = null;
this.bHasTransition = this.initHasTransition() || true;
if( this.bHasTransition )
}

function getElementByClassName( aElem, sClassName /*, sTagName */)
{
var aElementSet = getElementsByClassName( aElem, sClassName );
if ( aElementSet.length == 1 )
return aElementSet[0];
else
return null;
}

function getClassAttribute(  aElem )
{
if( aElem )
return aElem.getAttribute( 'class' );
return '';
}

function createElementGroup( aParentElement, aElementList, nFrom, nCount, sGroupClass, sGroupId )
{
var nTo = nFrom + nCount;
if( nCount < 1 || aElementList.length < nTo )
{
log( 'createElementGroup: not enough elements available.' );
return;
}
var firstElement = aElementList[nFrom];
if( !firstElement )
{
log( 'createElementGroup: element not found.' );
return;
}
var aGroupElement = document.createElementNS( NSS['svg'], 'g' );
if( sGroupId )
aGroupElement.setAttribute( 'id', sGroupId );
if( sGroupClass )
aGroupElement.setAttribute( 'class', sGroupClass );
aParentElement.insertBefore( aGroupElement, firstElement );
var i = nFrom;
for( ; i < nTo; ++i )
{
aParentElement.removeChild( aElementList[i] );
aGroupElement.appendChild( aElementList[i] );
}
}

function initVisibilityProperty( aElement )
{
var nVisibility = VISIBLE;
var sVisibility = aElement.getAttribute( 'visibility' );
if( sVisibility ) nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
}

function getSafeIndex( nIndex, nMin, nMax )
{
if( nIndex < nMin )
return nMin;
else if( nIndex > nMax )
return nMax;
else
return nIndex;
}

function getUrlParameter(name)
{
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
var results = regex.exec(window.location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
}

function getRandomInt( nMax )
{
return Math.floor( Math.random() * nMax );
}


function DebugPrinter()
{
this.bEnabled = false;
}


DebugPrinter.prototype.on = function()
{
this.bEnabled = true;
};

DebugPrinter.prototype.off = function()
{
this.bEnabled = false;
};

DebugPrinter.prototype.isEnabled = function()
{
return this.bEnabled;
};

DebugPrinter.prototype.print = function( sMessage, nTime )
{
if( this.isEnabled() )
{
var sInfo = 'DBG: ' + sMessage;
if( nTime )
sInfo += ' (at: ' + String( nTime / 1000 ) + 's)';
log( sInfo );
}
};


var aGenericDebugPrinter = new DebugPrinter();
aGenericDebugPrinter.off();
var DBGLOG = bind2( DebugPrinter.prototype.print, aGenericDebugPrinter );

var NAVDBG = new DebugPrinter();
NAVDBG.off();

var ANIMDBG = new DebugPrinter();
ANIMDBG.off();

var aRegisterEventDebugPrinter = new DebugPrinter();
aRegisterEventDebugPrinter.off();

var aTimerEventQueueDebugPrinter = new DebugPrinter();
aTimerEventQueueDebugPrinter.off();

var aEventMultiplexerDebugPrinter = new DebugPrinter();
aEventMultiplexerDebugPrinter.off();

var aNextEffectEventArrayDebugPrinter = new DebugPrinter();
aNextEffectEventArrayDebugPrinter.off();

var aActivityQueueDebugPrinter = new DebugPrinter();
aActivityQueueDebugPrinter.off();

var aAnimatedElementDebugPrinter = new DebugPrinter();
aAnimatedElementDebugPrinter.off();


function MetaDocument()
{
var aMetaDocElem = document.getElementById( aOOOElemMetaSlides );
assert( aMetaDocElem, 'MetaDocument: the svg element with id:' + aOOOElemMetaSlides + 'is not valid.');

this.nNumberOfSlides = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberOfSlides ) );
assert( typeof this.nNumberOfSlides == 'number' && this.nNumberOfSlides > 0,
'MetaDocument: number of slides is zero or undefined.' );
this.nStartSlideNumber = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrStartSlideNumber ) ) || 0;
var aParmStartSlideNumber = getUrlParameter('StartSlideNumber');

var charCodeDictionary = getDefaultCharCodeDictionary();
var keyCodeDictionary = getDefaultKeyCodeDictionary();

var mouseHandlerDictionary = getDefaultMouseHandlerDictionary();


function object( aObject )
{
var F = function() {};
F.prototype = aObject;
return new F();
}


function extend( aSubType, aSuperType )
{
if (!aSuperType || !aSubType)
{
alert('extend failed, verify dependencies');
}
var OP = Object.prototype;
var sp = aSuperType.prototype;
var rp = object( sp );
aSubType.prototype = rp;

rp.constructor = aSubType;
aSubType.superclass = sp;

if (aSuperType != Object && sp.constructor == OP.constructor)
{
sp.constructor = aSuperType;
}

return aSubType;
}


function instantiate( TemplateClass, BaseType )
{
if( !TemplateClass.instanceSet )
TemplateClass.instanceSet = [];

var nSize = TemplateClass.instanceSet.length;

for( var i = 0; i < nSize; ++i )
{
if( TemplateClass.instanceSet[i].base === BaseType )
return TemplateClass.instanceSet[i].instance;
}

TemplateClass.instanceSet[ nSize ] = {};
TemplateClass.instanceSet[ nSize ].base = BaseType;
TemplateClass.instanceSet[ nSize ].instance = TemplateClass( BaseType );

return TemplateClass.instanceSet[ nSize ].instance;
}


function Rectangle( aSVGRectElem )
{
var x = parseInt( aSVGRectElem.getAttribute( 'x' ) );
var y = parseInt( aSVGRectElem.getAttribute( 'y' ) );
var width = parseInt( aSVGRectElem.getAttribute( 'width' ) );
var height = parseInt( aSVGRectElem.getAttribute( 'height' ) );

this.left = x;
this.right = x + width;
this.top = y;
this.bottom = y + height;
}

function getKeyByValue(aObj, value) {
for(var key in aObj) {
if(aObj[key] == value)
return key;
}
return null;
}

function log( message )
{
if( typeof console == 'object' )
{
console.log( message );
}
else if( typeof opera == 'object' )
{
opera.postError( message );
}
else if( typeof java == 'object' && typeof java.lang == 'object' )
{
java.lang.System.out.println( message );
}
}

function getNSAttribute( sNSPrefix, aElem, sAttrName )
{
if( !aElem ) return null;
if( 'getAttributeNS' in aElem )
{
return aElem.getAttributeNS( NSS[sNSPrefix], sAttrName );
}
else
{
return aElem.getAttribute( sNSPrefix + ':' + sAttrName );
}
}

function getOOOAttribute( aElem, sAttrName )
{
return getNSAttribute( 'ooo', aElem, sAttrName );
}

function setNSAttribute( sNSPrefix, aElem, sAttrName, aValue )
{
if( !aElem ) return false;
if( 'setAttributeNS' in aElem )
{
aElem.setAttributeNS( NSS[sNSPrefix], sAttrName, aValue );
return true;
}
else
{
aElem.setAttribute(sNSPrefix + ':' + sAttrName, aValue );
return true;
}
}

function getElementsByClassName( aElem, sClassName )
{

var aElementSet = [];
if( 'getElementsByClassName' in aElem )
{
aElementSet = aElem.getElementsByClassName( sClassName );
}
else
{
var aElementSetByClassProperty = getElementsByProperty( aElem, 'class' );
for( var i = 0; i < aElementSetByClassProperty.length; ++i )
{
var sAttrClassName = aElementSetByClassProperty[i].getAttribute( 'class' );
if( sAttrClassName == sClassName )
{
aElementSet.push( aElementSetByClassProperty[i] );
}
}
}
return aElementSet;
/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/

/*****  ******************************************************************
*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
*   Licensed to the Apache Software Foundation (ASF) under one or more
*   contributor license agreements. See the NOTICE file distributed
*   with this work for additional information regarding copyright
*   ownership. The ASF licenses this file to you under the Apache
*   License, Version 2.0 (the 'License'); you may not use this file
*   except in compliance with the License. You may obtain a copy of
*   the License at http://www.apache.org/licenses/LICENSE-2.0 .
*
************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/


/*****
* @libreofficestart
*
* Several parts of the following code are the result of the porting,
* started on August 2011, of the C++ code included in the source
* files placed under the folder '/slideshow/source' and
* sub-folders. This got later rebased onto the AL2-licensed versions
* of those files in early 2013.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/


window.onload = init;


var aOOOElemMetaSlides = 'ooo:meta_slides';
var aOOOElemMetaSlide = 'ooo:meta_slide';
var aOOOElemTextField = 'ooo:text_field';
var aPresentationClipPathId = 'presentation_clip_path';
var aPresentationClipPathShrinkId = 'presentation_clip_path_shrink';

var aOOOAttrNumberOfSlides = 'number-of-slides';
var aOOOAttrStartSlideNumber= 'start-slide-number';
var aOOOAttrNumberingType = 'page-numbering-type';
var aOOOAttrListItemNumberingType= 'numbering-type';
var aOOOAttrUsePositionedChars = 'use-positioned-chars';

var aOOOAttrSlide = 'slide';
var aOOOAttrMaster = 'master';
var aOOOAttrDisplayName = 'display-name';
var aOOOAttrSlideDuration = 'slide-duration';
var aOOOAttrHasTransition = 'has-transition';
var aOOOAttrHasCustomBackground = 'has-custom-background';
var aOOOAttrBackgroundVisibility = 'background-visibility';
var aOOOAttrMasterObjectsVisibility = 'master-objects-visibility';
var aOOOAttrPageNumberVisibility = 'page-number-visibility';
var aOOOAttrDateTimeVisibility = 'date-time-visibility';
var aOOOAttrFooterVisibility = 'footer-visibility';
var aOOOAttrHeaderVisibility = 'header-visibility';
var aOOOAttrDateTimeField = 'date-time-field';
var aOOOAttrFooterField = 'footer-field';
var aOOOAttrHeaderField = 'header-field';

var aOOOAttrDateTimeFormat = 'date-time-format';

var aOOOAttrTextAdjust = 'text-adjust';

var aClipPathGroupClassName = 'ClipPathGroup';
var aPageClassName = 'Page';
var aSlideNumberClassName = 'PageNumber';
var aDateTimeClassName = 'DateTime';
var aFooterClassName = 'Footer';
var aHeaderClassName = 'Header';
var aDateClassName = 'Date';
var aTimeClassName = 'Time';
var aSlideNameClassName='PageName';

var NSS = {};
NSS['svg']='http://www.w3.org/2000/svg';
NSS['rdf']='http://www.w3.org/1999/02/22-rdf-syntax-ns#';
NSS['xlink']='http://www.w3.org/1999/xlink';
NSS['xml']='http://www.w3.org/XML/1998/namespace';
NSS['ooo'] = 'http://xml.openoffice.org/svg/export';
NSS['presentation'] = 'http://sun.com/xmlns/staroffice/presentation';
NSS['smil'] = 'http://www.w3.org/2001/SMIL20/';
NSS['anim'] = 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0';

var SLIDE_MODE = 1;
var INDEX_MODE = 2;

var MOUSE_UP = 1;
var MOUSE_DOWN = 2; // eslint-disable-line no-unused-vars
var MOUSE_MOVE = 3; // eslint-disable-line no-unused-vars
var MOUSE_WHEEL = 4;

var LEFT_KEY = 37;          // cursor left keycode
var UP_KEY = 38;            // cursor up keycode
var RIGHT_KEY = 39;         // cursor right keycode
var DOWN_KEY = 40;          // cursor down keycode
var PAGE_UP_KEY = 33;       // page up keycode
var PAGE_DOWN_KEY = 34;     // page down keycode
var HOME_KEY = 36;          // home keycode
var END_KEY = 35;           // end keycode
var ENTER_KEY = 13;
var SPACE_KEY = 32;
var ESCAPE_KEY = 27;
var B_KEY = 66;
var P_KEY = 80;
var Q_KEY = 81;
var W_KEY = 87;

var HIDDEN = 0;
var VISIBLE = 1;
var INHERIT = 2;
var aVisibilityAttributeValue = [ 'hidden', 'visible', 'inherit' ];  // eslint-disable-line no-unused-vars
var aVisibilityValue = { 'hidden' : HIDDEN, 'visible' : VISIBLE, 'inherit' : INHERIT };

var ROOT_NODE = document.getElementsByTagNameNS( NSS['svg'], 'svg' )[0];
var WIDTH = 0;
var HEIGHT = 0;
var INDEX_COLUMNS_DEFAULT = 3;
var INDEX_OFFSET = 0;

var Detect = configureDetectionTools();
var theMetaDoc;
var theSlideIndexPage;
var currentMode = SLIDE_MODE;
var processingEffect = false;
var nCurSlide = undefined;
var bTextHasBeenSelected = false;
var sLastSelectedText = '';

}

if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == 'e' || this._string.charAt(this._currentIndex) == 'E') && (this._string.charAt(this._currentIndex + 1) != 'x' && this._string.charAt(this._currentIndex + 1) != 'm')) {
this._currentIndex++;

if (this._string.charAt(this._currentIndex) == '+') {
this._currentIndex++;
} else if (this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
expsign = -1;
}

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;

while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
exponent *= 10;
exponent += (this._string.charAt(this._currentIndex) - '0');
this._currentIndex++;
}
}

var number = integer + decimal;
number *= sign;

if (exponent)
number *= Math.pow(10, expsign * exponent);

if (startIndex == this._currentIndex)
return undefined;

this._skipOptionalSpacesOrDelimiter();

return number;
}

Source.prototype._parseArcFlag = function() {
if (this._currentIndex >= this._endIndex)
return undefined;
var flag = false;
var flagChar = this._string.charAt(this._currentIndex++);
if (flagChar == '0')
flag = false;
else if (flagChar == '1')
flag = true;
else
return undefined;

this._skipOptionalSpacesOrDelimiter();
return flag;
}

Source.prototype.parseSegment = function() {
var lookahead = this._string[this._currentIndex];
var command = this._pathSegTypeFromChar(lookahead);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {
if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN)
return null;
command = this._nextCommandHelper(lookahead, this._previousCommand);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN)
return null;
} else {
this._currentIndex++;
}

this._previousCommand = command;

switch (command) {
case window.SVGPathSeg.PATHSEG_MOVETO_REL:
return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_MOVETO_ABS:
return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_REL:
return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_ABS:
return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:
return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:
return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:
return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:
return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_CLOSEPATH:
this._skipOptionalSpaces();
return new window.SVGPathSegClosePath(owningPathSegList);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_ARC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
case window.SVGPathSeg.PATHSEG_ARC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
default:
throw 'Unknown path seg type.'
}
}

var builder = new Builder();
var source = new Source(string);

if (!source.initialCommandIsMoveTo())
return [];
while (source.hasMoreData()) {
var pathSeg = source.parseSegment();
if (!pathSeg)
return [];
builder.appendSegment(pathSeg);
}

return builder.pathSegList;
}
}
}());

/*****
* @svgpathend
*
*  The above code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/


var Source = function(string) {
this._string = string;
this._currentIndex = 0;
this._endIndex = this._string.length;
this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;

this._skipOptionalSpaces();
}

Source.prototype._isCurrentSpace = function() {
var character = this._string[this._currentIndex];
return character <= ' ' && (character == ' ' || character == '\n' || character == '\t' || character == '\r' || character == '\f');
}

Source.prototype._skipOptionalSpaces = function() {
while (this._currentIndex < this._endIndex && this._isCurrentSpace())
this._currentIndex++;
return this._currentIndex < this._endIndex;
}

Source.prototype._skipOptionalSpacesOrDelimiter = function() {
if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != ',')
return false;
if (this._skipOptionalSpaces()) {
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ',') {
this._currentIndex++;
this._skipOptionalSpaces();
}
}
return this._currentIndex < this._endIndex;
}

Source.prototype.hasMoreData = function() {
return this._currentIndex < this._endIndex;
}

Source.prototype.peekSegmentType = function() {
var lookahead = this._string[this._currentIndex];
return this._pathSegTypeFromChar(lookahead);
}

Source.prototype._pathSegTypeFromChar = function(lookahead) {
switch (lookahead) {
case 'Z':
case 'z':
return window.SVGPathSeg.PATHSEG_CLOSEPATH;
case 'M':
return window.SVGPathSeg.PATHSEG_MOVETO_ABS;
case 'm':
return window.SVGPathSeg.PATHSEG_MOVETO_REL;
case 'L':
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
case 'l':
return window.SVGPathSeg.PATHSEG_LINETO_REL;
case 'C':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;
case 'c':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;
case 'Q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;
case 'q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;
case 'A':
return window.SVGPathSeg.PATHSEG_ARC_ABS;
case 'a':
return window.SVGPathSeg.PATHSEG_ARC_REL;
case 'H':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;
case 'h':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;
case 'V':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;
case 'v':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;
case 'S':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;
case 's':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;
case 'T':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;
case 't':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;
default:
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}
}

Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {
if ((lookahead == '+' || lookahead == '-' || lookahead == '.' || (lookahead >= '0' && lookahead <= '9')) && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS)
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL)
return window.SVGPathSeg.PATHSEG_LINETO_REL;
return previousCommand;
}
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}

Source.prototype.initialCommandIsMoveTo = function() {
if (!this.hasMoreData())
return true;
var command = this.peekSegmentType();
return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;
}

Source.prototype._parseNumber = function() {
var exponent = 0;
var integer = 0;
var frac = 1;
var decimal = 0;
var sign = 1;
var expsign = 1;

var startIndex = this._currentIndex;

this._skipOptionalSpaces();

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '+')
this._currentIndex++;
else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
sign = -1;
}

if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') && this._string.charAt(this._currentIndex) != '.'))
return undefined;

var startIntPartIndex = this._currentIndex;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9')
this._currentIndex++; // Advance to first non-digit.

if (this._currentIndex != startIntPartIndex) {
var scanIntPartIndex = this._currentIndex - 1;
var multiplier = 1;
while (scanIntPartIndex >= startIntPartIndex) {
integer += multiplier * (this._string.charAt(scanIntPartIndex--) - '0');
multiplier *= 10;
}
}

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '.') {
this._currentIndex++;

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
frac *= 10;
decimal += (this._string.charAt(this._currentIndex) - '0') / frac;
this._currentIndex += 1;
}

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._checkValidIndex(index);
this._list[index] = newItem;
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.removeItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
var item = this._list[index];
this._list.splice(index, 1);
this._writeListToPath();
return item;
}

window.SVGPathSegList.prototype.appendItem = function(newItem) {
this._checkPathSynchronizedToList();

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.push(newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
};

window.SVGPathSegList.prototype.matrixTransform = function(aSVGMatrix) {
this._checkPathSynchronizedToList();

var nLength = this._list.length;
for( var i = 0; i < nLength; ++i )
{
var nX;
var aPathSeg = this._list[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
nX = aPathSeg._x2;
aPathSeg._x2 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y2 + aSVGMatrix.e;
aPathSeg._y2 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y2 + aSVGMatrix.f;
case 'Q':
nX = aPathSeg._x1;
aPathSeg._x1 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y1 + aSVGMatrix.e;
aPathSeg._y1 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y1 + aSVGMatrix.f;
case 'M':
case 'L':
nX = aPathSeg._x;
aPathSeg._x = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y + aSVGMatrix.e;
aPathSeg._y = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y + aSVGMatrix.f;
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
}
}

this._writeListToPath();
};

window.SVGPathSegList.prototype.changeOrientation = function() {
this._checkPathSynchronizedToList();

var aPathSegList = this._list;
var nLength = aPathSegList.length;
if( nLength == 0 ) return;

var nCurrentX = 0;
var nCurrentY = 0;

var aPathSeg = aPathSegList[0];
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.shift();
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
var nX = aPathSeg._x1;
aPathSeg._x1 = aPathSeg._x2;
aPathSeg._x2 = nX;
var nY = aPathSeg._y1;
aPathSeg._y1 = aPathSeg._y2;
aPathSeg._y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: aPathSeg._x, y: aPathSeg._y };
aPathSeg._x = nCurrentX;
aPathSeg._y = nCurrentY;
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
break;
default:
log( 'SVGPathSegList.changeOrientation: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
}

}

aPathSegList.reverse();

var aMovePathSeg = new window.SVGPathSegMovetoAbs( this, nCurrentX, nCurrentY );
aPathSegList.unshift( aMovePathSeg );

this._writeListToPath();
};

window.SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {
var string = '';
var first = true;
pathSegArray.forEach(function(pathSeg) {
if (first) {
first = false;
string += pathSeg._asPathString();
} else {
string += ' ' + pathSeg._asPathString();
}
});
return string;
}

window.SVGPathSegList.prototype._parsePath = function(string) {
if (!string || string.length == 0)
return [];

var owningPathSegList = this;

var Builder = function() {
this.pathSegList = [];
}

Builder.prototype.appendSegment = function(pathSeg) {
this.pathSegList.push(pathSeg);
}

window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new window.SVGPathSegLinetoHorizontalAbs(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new window.SVGPathSegLinetoHorizontalRel(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new window.SVGPathSegLinetoVerticalAbs(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new window.SVGPathSegLinetoVerticalRel(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }

if (!('getPathSegAtLength' in window.SVGPathElement.prototype)) {
window.SVGPathElement.prototype.getPathSegAtLength = function(distance) {
if (distance === undefined || !isFinite(distance))
throw 'Invalid arguments.';

var measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
measurementElement.setAttribute('d', this.getAttribute('d'));
var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;

if (lastPathSegment <= 0)
return 0;

do {
measurementElement.pathSegList.removeItem(lastPathSegment);
if (distance > measurementElement.getTotalLength())
break;
lastPathSegment--;
} while (lastPathSegment > 0);
return lastPathSegment;
}
}
}

if (!('SVGPathSegList' in window) || !('appendItem' in window.SVGPathSegList.prototype)) {
window.SVGPathSegList = function(pathElement) {
this._pathElement = pathElement;
this._list = this._parsePath(this._pathElement.getAttribute('d'));

this._mutationObserverConfig = { 'attributes': true, 'attributeFilter': ['d'] };
this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.classname = 'SVGPathSegList';

Object.defineProperty(window.SVGPathSegList.prototype, 'numberOfItems', {
get: function() {
this._checkPathSynchronizedToList();
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathSegList.prototype, 'length', {
get: function() {
this._checkPathSynchronizedToList();
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathElement.prototype, 'pathSegList', {
get: function() {
if (!this._pathSegList)
this._pathSegList = new window.SVGPathSegList(this);
return this._pathSegList;
},
enumerable: true
});
Object.defineProperty(window.SVGPathElement.prototype, 'normalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedNormalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });

window.SVGPathSegList.prototype._checkPathSynchronizedToList = function() {
this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());
}

window.SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {
if (!this._pathElement)
return;
var hasPathMutations = false;
mutationRecords.forEach(function(record) {
if (record.attributeName == 'd')
hasPathMutations = true;
});
if (hasPathMutations)
this._list = this._parsePath(this._pathElement.getAttribute('d'));
}

window.SVGPathSegList.prototype._writeListToPath = function() {
this._pathElementMutationObserver.disconnect();
this._pathElement.setAttribute('d', window.SVGPathSegList._pathSegArrayAsString(this._list));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.segmentChanged = function(pathSeg) {
this._writeListToPath();
}

window.SVGPathSegList.prototype.clear = function() {
this._checkPathSynchronizedToList();

this._list.forEach(function(pathSeg) {
pathSeg._owningPathSegList = null;
});
this._list = [];
this._writeListToPath();
}

window.SVGPathSegList.prototype.initialize = function(newItem) {
this._checkPathSynchronizedToList();

this._list = [newItem];
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype._checkValidIndex = function(index) {
if (isNaN(index) || index < 0 || index >= this.numberOfItems)
throw 'INDEX_SIZE_ERR';
}

window.SVGPathSegList.prototype.getItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
return this._list[index];
}

window.SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {
this._checkPathSynchronizedToList();

if (index > this.numberOfItems)
index = this.numberOfItems;
if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.splice(index, 0, newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.replaceItem = function(newItem, index) {
this._checkPathSynchronizedToList();
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcAbs.prototype.toString = function() { return '[object SVGPathSegArcAbs]'; }
window.SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcAbs.prototype.clone = function() { return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcRel.prototype.toString = function() { return '[object SVGPathSegArcRel]'; }
window.SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcRel.prototype.clone = function() { return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList);
this._x = x;
}
window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalAbs]'; }
window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList);
this._x = x;
}
window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalRel]'; }
window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalAbs]'; }
window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalRel.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalRel]'; }
window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalRel(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothAbs]'; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothRel]'; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothAbs]'; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothRel]'; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new window.SVGPathSegClosePath(undefined); }
window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new window.SVGPathSegMovetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new window.SVGPathSegMovetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new window.SVGPathSegLinetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new window.SVGPathSegLinetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathSeg.PATHSEG_UNKNOWN = 0;
window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;
window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;
window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;
window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;
window.SVGPathSeg.PATHSEG_LINETO_REL = 5;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;
window.SVGPathSeg.PATHSEG_ARC_ABS = 10;
window.SVGPathSeg.PATHSEG_ARC_REL = 11;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;

window.SVGPathSeg.prototype._segmentChanged = function() {
if (this._owningPathSegList)
this._owningPathSegList.segmentChanged(this);
}

window.SVGPathSegClosePath = function(owningPathSegList) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList);
}
window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegClosePath.prototype.toString = function() { return '[object SVGPathSegClosePath]'; }
window.SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }
window.SVGPathSegClosePath.prototype.clone = function() { return new window.SVGPathSegClosePath(undefined); }

window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoAbs.prototype.toString = function() { return '[object SVGPathSegMovetoAbs]'; }
window.SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoAbs.prototype.clone = function() { return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoRel.prototype.toString = function() { return '[object SVGPathSegMovetoRel]'; }
window.SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoRel.prototype.clone = function() { return new window.SVGPathSegMovetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoAbs.prototype.toString = function() { return '[object SVGPathSegLinetoAbs]'; }
window.SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoAbs.prototype.clone = function() { return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoRel.prototype.toString = function() { return '[object SVGPathSegLinetoRel]'; }
window.SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoRel.prototype.clone = function() { return new window.SVGPathSegLinetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicAbs]'; }
window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicRel]'; }
window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticAbs]'; }
window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticRel]'; }
window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

has.add('air', dua.indexOf('AdobeAIR') >= 0);
has.add('khtml', dav.indexOf('Konqueror') >= 0 ? tv : undefined);
has.add('webkit', parseFloat(dua.split('WebKit/')[1]) || undefined);
has.add('chrome', parseFloat(dua.split('Chrome/')[1]) || undefined);
has.add('safari', dav.indexOf('Safari')>=0 && !has('chrome') ? parseFloat(dav.split('Version/')[1]) : undefined);
has.add('mac', dav.indexOf('Macintosh') >= 0);
has.add('quirks', document.compatMode == 'BackCompat');
has.add('ios', /iPhone|iPod|iPad/.test(dua));
has.add('android', parseFloat(dua.split('Android ')[1]) || undefined);

if(!has('webkit')){
if(dua.indexOf('Opera') >= 0){
has.add('opera', tv >= 9.8 ? parseFloat(dua.split('Version/')[1]) || tv : tv);
}

if(dua.indexOf('Gecko') >= 0 && !has('khtml') && !has('webkit')){
has.add('mozilla', tv);
}
if(has('mozilla')){
has.add('ff', parseFloat(dua.split('Firefox/')[1] || dua.split('Minefield/')[1]) || undefined);
}

if(document.all && !has('opera')){
var isIE = parseFloat(dav.split('MSIE ')[1]) || undefined;

var mode = document.documentMode;
if(mode && mode != 5 && Math.floor(isIE) != mode){
isIE = mode;
}

has.add('ie', isIE);
}

has.add('wii', typeof opera != 'undefined' && opera.wiiremote);
}

var detect =
{
isFF: has('ff'),

isIE: has('ie'),

isKhtml: has('khtml'),

isWebKit: has('webkit'),

isMozilla: has('mozilla'),
isMoz: has('mozilla'),

isOpera: has('opera'),

isSafari: has('safari'),

isChrome: has('chrome'),

isMac: has('mac'),

isIos: has('ios'),

isAndroid: has('android'),

isWii: has('wii'),

isQuirks: has('quirks'),

isAir: has('air')
};
return detect;
}

/*****
* @dojoend
*
*  The above code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/

/*****  **********************************************************************
*
*   Copyright 2015 The Chromium Authors. All rights reserved.
*
*   The Chromium Authors can be found at
*   http://src.chromium.org/svn/trunk/src/AUTHORS
*
*   Redistribution and use in source and binary forms, with or without
*   modification, are permitted provided that the following conditions are
*   met:
*
*   * Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
*   * Redistributions in binary form must reproduce the above
*   copyright notice, this list of conditions and the following disclaimer
*   in the documentation and/or other materials provided with the
*   distribution.
*   * Neither the name of Google Inc. nor the names of its
*   contributors may be used to endorse or promote products derived from
*   this software without specific prior written permission.
*
*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*   'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
*   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
*   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
*   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
*   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
*   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
*   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/


/*****
* @svgpathstart
*
*  The following code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/

(function() { 'use strict';
if (!('SVGPathSeg' in window)) {
window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {
this.pathSegType = type;
this.pathSegTypeAsLetter = typeAsLetter;
this._owningPathSegList = owningPathSegList;
}

window.SVGPathSeg.prototype.classname = 'SVGPathSeg';

}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

var aSlideAnimationsHandler = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler;
if( aSlideAnimationsHandler )
{
var aCurrentEventMultiplexer = aSlideAnimationsHandler.aEventMultiplexer;
if( aCurrentEventMultiplexer )
{
if( aCurrentEventMultiplexer.hasRegisteredMouseClickHandlers() )
{
return aCurrentEventMultiplexer.notifyMouseClick( aEvt );
}
}
}
return slideOnMouseUp( aEvt );
}


function getDefaultMouseHandlerDictionary()
{
var mouseHandlerDict = {};

mouseHandlerDict[SLIDE_MODE] = {};
mouseHandlerDict[INDEX_MODE] = {};

mouseHandlerDict[SLIDE_MODE][MOUSE_UP]
= mouseClickHelper;

mouseHandlerDict[SLIDE_MODE][MOUSE_WHEEL]
= function( aEvt ) { return slideOnMouseWheel( aEvt ); };

mouseHandlerDict[INDEX_MODE][MOUSE_UP]
= function( ) { return toggleSlideIndex(); };

return mouseHandlerDict;
}

function indexSetPageSlide( nIndex )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
nIndex = getSafeIndex( nIndex, 0, aMetaSlideSet.length - 1 );

var nSelectedThumbnailIndex = nIndex % theSlideIndexPage.getTotalThumbnails();
var offset = nIndex - nSelectedThumbnailIndex;

if( offset < 0 )
offset = 0;

if( offset != INDEX_OFFSET )
{
INDEX_OFFSET = offset;
displayIndex( INDEX_OFFSET );
}

theSlideIndexPage.setSelection( nSelectedThumbnailIndex );
}


/*****
* @jessyinkend
*
*  The above code is a derivative work of some parts of the JessyInk project.
*  @source http://code.google.com/p/jessyink/
*/


/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/

/*****  **********************************************************************
*
*  The 'New' BSD License:
*  **********************
*  Copyright (c) 2005-2012, The Dojo Foundation
*  All rights reserved.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions are met:
*
*    * Redistributions of source code must retain the above copyright notice,
*      this list of conditions and the following disclaimer.
*    * Redistributions in binary form must reproduce the above copyright notice,
*      this list of conditions and the following disclaimer in the documentation
*      and/or other materials provided with the distribution.
*    * Neither the name of the Dojo Foundation nor the names of its contributors
*      may be used to endorse or promote products derived from this software
*      without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*  DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
*  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
*  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
*  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
*  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/


/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/


/*****
* @dojostart
*
*  The following code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

function has( name )
{
return has.cache[name];
}

has.cache = {};

has.add = function( name, test )
{
has.cache[name] = test;
};

function configureDetectionTools()
{
if( !navigator )
{
log( 'error: configureDetectionTools: configuration failed' );
return null;
}

var n = navigator,
dua = n.userAgent,
dav = n.appVersion,
tv = parseFloat(dav);
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][HOME_KEY]
= function() { return indexSetPageSlide( 0 ); };
keyCodeDict[INDEX_MODE][END_KEY]
= function() { return indexSetPageSlide( theMetaDoc.nNumberOfSlides - 1 ); };
keyCodeDict[INDEX_MODE][ENTER_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][SPACE_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][ESCAPE_KEY]
= function() { return abandonIndexMode(); };

return keyCodeDict;
}

function getDefaultCharCodeDictionary()
{
var charCodeDict = {};

charCodeDict[SLIDE_MODE] = {};
charCodeDict[INDEX_MODE] = {};

charCodeDict[SLIDE_MODE]['i']
= function () { return toggleSlideIndex(); };

charCodeDict[INDEX_MODE]['i']
= function () { return toggleSlideIndex(); };
charCodeDict[INDEX_MODE]['-']
= function () { return theSlideIndexPage.decreaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['=']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['+']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['0']
= function () { return theSlideIndexPage.resetNumberOfColumns(); };

return charCodeDict;
}


function slideOnMouseUp( aEvt )
{
if (!aEvt)
aEvt = window.event;

var nOffset = 0;

if( aEvt.button == 0 )
nOffset = 1;
else if( aEvt.button == 2 )
nOffset = -1;

if( 0 != nOffset )
dispatchEffects( nOffset );
return true; // the click has been handled
}

document.handleClick = slideOnMouseUp;


function slideOnMouseWheel(aEvt)
{
var delta = 0;

if (!aEvt)
aEvt = window.event;

if (aEvt.wheelDelta)
{ // IE Opera
delta = aEvt.wheelDelta/120;
}
else if (aEvt.detail)
{ // MOZ
delta = -aEvt.detail/3;
}

if (delta > 0)
skipEffects(-1);
else if (delta < 0)
skipEffects(1);

if (aEvt.preventDefault)
aEvt.preventDefault();

aEvt.returnValue = false;
}

if( window.addEventListener )
{
window.addEventListener( 'DOMMouseScroll', function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); }, false );
}

window.onmousewheel
= function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); };

function mouseHandlerDispatch( aEvt, anAction )
{
if( !aEvt )
aEvt = window.event;

var retVal = true;

if ( mouseHandlerDictionary[currentMode] && mouseHandlerDictionary[currentMode][anAction] )
{
var subRetVal = mouseHandlerDictionary[currentMode][anAction]( aEvt );

if( subRetVal != null && subRetVal != undefined )
retVal = subRetVal;
}

if( aEvt.preventDefault && !retVal )
aEvt.preventDefault();

aEvt.returnValue = retVal;

return retVal;
}

document.onmouseup = function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_UP ); };


function mouseClickHelper( aEvt )
{
if( !Detect.isMozilla )
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
var aTextSelection = aWindowObject.getSelection();
var sSelectedText =  aTextSelection.toString();
if( sSelectedText )
{
DBGLOG( 'text selection: ' + sSelectedText );
if( sLastSelectedText !== sSelectedText )
{
bTextHasBeenSelected = true;
sLastSelectedText = sSelectedText;
}
else
{
bTextHasBeenSelected = false;
}
return null;
}
else if( bTextHasBeenSelected )
{
bTextHasBeenSelected = false;
sLastSelectedText = '';
return null;
}
rootNodeInitialBackgroundColor = ROOT_NODE.style.backgroundColor;

if (color === 'initial')
ROOT_NODE.style.backgroundColor = rootNodeInitialBackgroundColor;
else
ROOT_NODE.style.backgroundColor = color;
}

var isContentHidden = false;
var contentInitialVisibilityValues = null;

function getInitialVisibilityValues() {
var list = ROOT_NODE.querySelectorAll('g');
contentInitialVisibilityValues = [];
for (var i = 0; i < list.length; i++) {
var temp = {};
temp.object = list[i];
temp.visibility = list[i].style.visibility;
contentInitialVisibilityValues.push(temp);
}
}

function hideShowContent(color) {
if (contentInitialVisibilityValues === null)
getInitialVisibilityValues();

if (isContentHidden) {
for (var i = 0; i < contentInitialVisibilityValues.length; i++)
contentInitialVisibilityValues[i].object.style.visibility = contentInitialVisibilityValues[i].visibility;

changeRootNodeBackgroundTo('initial');
isContentHidden = false;
}
else {
for (var i = 0; i < contentInitialVisibilityValues.length; i++)
contentInitialVisibilityValues[i].object.style.visibility = 'hidden';

changeRootNodeBackgroundTo(color);
isContentHidden = true;
}
}

function onKeyDown( aEvt )
{
if ( !aEvt )
aEvt = window.event;

var code = aEvt.keyCode || aEvt.charCode || aEvt.code;


if (code == 0 && aEvt.key != undefined) {
switch (aEvt.key) {
case 'UIKeyInputLeftArrow':
code = LEFT_KEY;
break;
case 'UIKeyInputUpArrow':
code = UP_KEY;
break;
case 'UIKeyInputRightArrow':
code = RIGHT_KEY;
break;
case 'UIKeyInputDownArrow':
code = DOWN_KEY;
break;
}

}
else if (code === P_KEY) {
aEvt.preventDefault();
if (ROOT_NODE.style.cursor === 'pointer')
ROOT_NODE.style.cursor = 'default';
else
ROOT_NODE.style.cursor = 'pointer';
}
else if (code === W_KEY) {
hideShowContent('white');
}
else if (code === B_KEY) {
hideShowContent('black');
}


if( !processingEffect && keyCodeDictionary[currentMode] && keyCodeDictionary[currentMode][code] )
{
return keyCodeDictionary[currentMode][code]();
}
else
{
document.onkeypress = onKeyPress;
return null;
}
}
document.onkeydown = onKeyDown;

function onKeyPress( aEvt )
{
document.onkeypress = null;

if ( !aEvt )
aEvt = window.event;

var str = String.fromCharCode( aEvt.keyCode || aEvt.charCode );

if ( !processingEffect && charCodeDictionary[currentMode] && charCodeDictionary[currentMode][str] )
return charCodeDictionary[currentMode][str]();

return null;
}

function getDefaultKeyCodeDictionary()
{
var keyCodeDict = {};

keyCodeDict[SLIDE_MODE] = {};
keyCodeDict[INDEX_MODE] = {};

keyCodeDict[SLIDE_MODE][LEFT_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][RIGHT_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][UP_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][DOWN_KEY]
= function() { return skipEffects(1); };
keyCodeDict[SLIDE_MODE][PAGE_UP_KEY]
= function() { return aSlideShow.rewindAllEffects(); };
keyCodeDict[SLIDE_MODE][PAGE_DOWN_KEY]
= function() { return skipAllEffects(); };
keyCodeDict[SLIDE_MODE][HOME_KEY]
= function() { return aSlideShow.displaySlide( 0, true ); };
keyCodeDict[SLIDE_MODE][END_KEY]
= function() { return aSlideShow.displaySlide( theMetaDoc.nNumberOfSlides - 1, true ); };
keyCodeDict[SLIDE_MODE][SPACE_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][ESCAPE_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };
keyCodeDict[SLIDE_MODE][Q_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };

keyCodeDict[INDEX_MODE][LEFT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - 1 ); };
keyCodeDict[INDEX_MODE][RIGHT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + 1 ); };
keyCodeDict[INDEX_MODE][UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][DOWN_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][PAGE_UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][PAGE_DOWN_KEY]
}

function triggerDomEvent(event, data) {
var gestureEvent = document.createEvent('Event');
gestureEvent.initEvent(event, true, true);
gestureEvent.gesture = data;
data.target.dispatchEvent(gestureEvent);
}

assign(Hammer, {
INPUT_START: INPUT_START,
INPUT_MOVE: INPUT_MOVE,
INPUT_END: INPUT_END,
INPUT_CANCEL: INPUT_CANCEL,

STATE_POSSIBLE: STATE_POSSIBLE,
STATE_BEGAN: STATE_BEGAN,
STATE_CHANGED: STATE_CHANGED,
STATE_ENDED: STATE_ENDED,
STATE_RECOGNIZED: STATE_RECOGNIZED,
STATE_CANCELLED: STATE_CANCELLED,
STATE_FAILED: STATE_FAILED,

DIRECTION_NONE: DIRECTION_NONE,
DIRECTION_LEFT: DIRECTION_LEFT,
DIRECTION_RIGHT: DIRECTION_RIGHT,
DIRECTION_UP: DIRECTION_UP,
DIRECTION_DOWN: DIRECTION_DOWN,
DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,
DIRECTION_VERTICAL: DIRECTION_VERTICAL,
DIRECTION_ALL: DIRECTION_ALL,

Manager: Manager,
Input: Input,
TouchAction: TouchAction,

TouchInput: TouchInput,
MouseInput: MouseInput,
PointerEventInput: PointerEventInput,
TouchMouseInput: TouchMouseInput,
SingleTouchInput: SingleTouchInput,

Recognizer: Recognizer,
AttrRecognizer: AttrRecognizer,
Tap: TapRecognizer,
Pan: PanRecognizer,
Swipe: SwipeRecognizer,
Pinch: PinchRecognizer,
Rotate: RotateRecognizer,
Press: PressRecognizer,

on: addEventListeners,
off: removeEventListeners,
each: each,
merge: merge,
extend: extend,
assign: assign,
inherit: inherit,
bindFn: bindFn,
prefixed: prefixed
});

var freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line
freeGlobal.Hammer = Hammer;

if (typeof define === 'function' && define.amd) {
define(function() {
return Hammer;
});
} else if (typeof module != 'undefined' && module.exports) {
module.exports = Hammer;
} else {
window[exportName] = Hammer;
}

})(window, document, 'Hammer');

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/

/*****  ******************************************************************
*
* Copyright 2008-2013 Hannes Hochreiner
*
* The JavaScript code included between the start note '@jessyinkstart'
* and the end note '@jessyinkend' is subject to the terms of the Mozilla
* Public License, v. 2.0. If a copy of the MPL was not distributed with
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Alternatively, you can redistribute and/or that part of this file
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see http://www.gnu.org/licenses/.
*/

/*****
*  You can find the complete source code of the JessyInk project at:
*  @source http://code.google.com/p/jessyink/
*/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/


/*****
* @jessyinkstart
*
*  The following code is a derivative work of some parts of the JessyInk
*  project.
*  @source http://code.google.com/p/jessyink/
*/

function getElementsByProperty( node, name )
{
var elements = [];

if( node.getAttribute( name ) )
elements.push( node );

for( var counter = 0; counter < node.childNodes.length; ++counter )
{
if( node.childNodes[counter].nodeType == 1 )
{
var subElements = getElementsByProperty( node.childNodes[counter], name );
elements = elements.concat( subElements );
}
}
return elements;
}

var rootNodeInitialBackgroundColor = undefined;

function changeRootNodeBackgroundTo(color) {
if (rootNodeInitialBackgroundColor === undefined)
recognizer = recognizers[i];

if (session.stopped !== FORCED_STOP && ( // 1
!curRecognizer || recognizer == curRecognizer || // 2
recognizer.canRecognizeWith(curRecognizer))) { // 3
recognizer.recognize(inputData);
} else {
recognizer.reset();
}

if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {
curRecognizer = session.curRecognizer = recognizer;
}
i++;
}
},

get: function(recognizer) {
if (recognizer instanceof Recognizer) {
return recognizer;
}

var recognizers = this.recognizers;
for (var i = 0; i < recognizers.length; i++) {
if (recognizers[i].options.event == recognizer) {
return recognizers[i];
}
}
return null;
},

add: function(recognizer) {
if (invokeArrayArg(recognizer, 'add', this)) {
return this;
}

var existing = this.get(recognizer.options.event);
if (existing) {
this.remove(existing);
}

this.recognizers.push(recognizer);
recognizer.manager = this;

this.touchAction.update();
return recognizer;
},

remove: function(recognizer) {
if (invokeArrayArg(recognizer, 'remove', this)) {
return this;
}

recognizer = this.get(recognizer);

if (recognizer) {
var recognizers = this.recognizers;
var index = inArray(recognizers, recognizer);

if (index !== -1) {
recognizers.splice(index, 1);
this.touchAction.update();
}
}

return this;
},

on: function(events, handler) {
if (events === undefined) {
return;
}
if (handler === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
handlers[event] = handlers[event] || [];
handlers[event].push(handler);
});
return this;
},

off: function(events, handler) {
if (events === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
if (!handler) {
delete handlers[event];
} else {
handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);
}
});
return this;
},

emit: function(event, data) {
if (this.options.domEvents) {
triggerDomEvent(event, data);
}

var handlers = this.handlers[event] && this.handlers[event].slice();
if (!handlers || !handlers.length) {
return;
}

data.type = event;
data.preventDefault = function() {
data.srcEvent.preventDefault();
};

var i = 0;
while (i < handlers.length) {
handlers[i](data);
i++;
}
},

destroy: function() {
this.element && toggleCssProps(this, false);

this.handlers = {};
this.session = {};
this.input.destroy();
this.element = null;
}
};

function toggleCssProps(manager, add) {
var element = manager.element;
if (!element.style) {
return;
}
var prop;
each(manager.options.cssProps, function(value, name) {
prop = prefixed(element.style, name);
if (add) {
manager.oldCssProps[prop] = element.style[prop];
element.style[prop] = value;
} else {
element.style[prop] = manager.oldCssProps[prop] || '';
}
});
if (!add) {
manager.oldCssProps = {};
}
this.count = 1;
} else {
this.count += 1;
}

this._input = input;

var tapCount = this.count % options.taps;
if (tapCount === 0) {
if (!this.hasRequireFailures()) {
return STATE_RECOGNIZED;
} else {
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.interval, this);
return STATE_BEGAN;
}
}
}
return STATE_FAILED;
},

failTimeout: function() {
this._timer = setTimeoutContext(function() {
this.state = STATE_FAILED;
}, this.options.interval, this);
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function() {
if (this.state == STATE_RECOGNIZED) {
this._input.tapCount = this.count;
this.manager.emit(this.options.event, this._input);
}
}
});

function Hammer(element, options) {
options = options || {};
options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);
return new Manager(element, options);
}

Hammer.VERSION = '2.0.7';

Hammer.defaults = {
domEvents: false,

touchAction: TOUCH_ACTION_COMPUTE,

enable: true,

inputTarget: null,

inputClass: null,

preset: [
[RotateRecognizer, {enable: false}],
[PinchRecognizer, {enable: false}, ['rotate']],
[SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],
[PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],
[TapRecognizer],
[TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],
[PressRecognizer]
],

cssProps: {
userSelect: 'none',

touchSelect: 'none',

touchCallout: 'none',

contentZooming: 'none',

userDrag: 'none',

tapHighlightColor: 'rgba(0,0,0,0)'
}
};

var STOP = 1;
var FORCED_STOP = 2;

function Manager(element, options) {
this.options = assign({}, Hammer.defaults, options || {});

this.options.inputTarget = this.options.inputTarget || element;

this.handlers = {};
this.session = {};
this.recognizers = [];
this.oldCssProps = {};

this.element = element;
this.input = createInputInstance(this);
this.touchAction = new TouchAction(this, this.options.touchAction);

toggleCssProps(this, true);

each(this.options.recognizers, function(item) {
var recognizer = this.add(new (item[0])(item[1]));
item[2] && recognizer.recognizeWith(item[2]);
item[3] && recognizer.requireFailure(item[3]);
}, this);
}

Manager.prototype = {
set: function(options) {
assign(this.options, options);

if (options.touchAction) {
this.touchAction.update();
}
if (options.inputTarget) {
this.input.destroy();
this.input.target = options.inputTarget;
this.input.init();
}
return this;
},

stop: function(force) {
this.session.stopped = force ? FORCED_STOP : STOP;
},

recognize: function(inputData) {
var session = this.session;
if (session.stopped) {
return;
}

this.touchAction.preventDefaults(inputData);

var recognizer;
var recognizers = this.recognizers;

var curRecognizer = session.curRecognizer;

if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {
curRecognizer = session.curRecognizer = null;
}

var i = 0;
while (i < recognizers.length) {
if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {
this.reset();
} else if (input.eventType & INPUT_START) {
this.reset();
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.time, this);
} else if (input.eventType & INPUT_END) {
return STATE_RECOGNIZED;
}
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function(input) {
if (this.state !== STATE_RECOGNIZED) {
return;
}

if (input && (input.eventType & INPUT_END)) {
this.manager.emit(this.options.event + 'up', input);
} else {
this._input.timeStamp = now();
this.manager.emit(this.options.event, this._input);
}
}
});

function RotateRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(RotateRecognizer, AttrRecognizer, {
defaults: {
event: 'rotate',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);
}
});

function SwipeRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(SwipeRecognizer, AttrRecognizer, {
defaults: {
event: 'swipe',
threshold: 10,
velocity: 0.3,
direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,
pointers: 1
},

getTouchAction: function() {
return PanRecognizer.prototype.getTouchAction.call(this);
},

attrTest: function(input) {
var direction = this.options.direction;
var velocity;

if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {
velocity = input.overallVelocity;
} else if (direction & DIRECTION_HORIZONTAL) {
velocity = input.overallVelocityX;
} else if (direction & DIRECTION_VERTICAL) {
velocity = input.overallVelocityY;
}

return this._super.attrTest.call(this, input) &&
direction & input.offsetDirection &&
input.distance > this.options.threshold &&
input.maxPointers == this.options.pointers &&
abs(velocity) > this.options.velocity && input.eventType & INPUT_END;
},

emit: function(input) {
var direction = directionStr(input.offsetDirection);
if (direction) {
this.manager.emit(this.options.event + direction, input);
}

this.manager.emit(this.options.event, input);
}
});

function TapRecognizer() {
Recognizer.apply(this, arguments);

this.pTime = false;
this.pCenter = false;

this._timer = null;
this._input = null;
this.count = 0;
}

inherit(TapRecognizer, Recognizer, {
defaults: {
event: 'tap',
pointers: 1,
taps: 1,
interval: 300, // max time between the multi-tap taps
time: 250, // max time of the pointer to be down (like finger on the screen)
threshold: 9, // a minimal movement is ok, but keep it low
posThreshold: 10 // a multi-tap can be a bit off the initial position
},

getTouchAction: function() {
return [TOUCH_ACTION_MANIPULATION];
},

process: function(input) {
var options = this.options;

var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTouchTime = input.deltaTime < options.time;

this.reset();

if ((input.eventType & INPUT_START) && (this.count === 0)) {
return this.failTimeout();
}

if (validMovement && validTouchTime && validPointers) {
if (input.eventType != INPUT_END) {
return this.failTimeout();
}

var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;
var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;

this.pTime = input.timeStamp;
this.pCenter = input.center;

if (!validMultiTap || !validInterval) {
var optionPointers = this.options.pointers;
return optionPointers === 0 || input.pointers.length === optionPointers;
},

process: function(input) {
var state = this.state;
var eventType = input.eventType;

var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);
var isValid = this.attrTest(input);

if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {
return state | STATE_CANCELLED;
} else if (isRecognized || isValid) {
if (eventType & INPUT_END) {
return state | STATE_ENDED;
} else if (!(state & STATE_BEGAN)) {
return STATE_BEGAN;
}
return state | STATE_CHANGED;
}
return STATE_FAILED;
}
});

function PanRecognizer() {
AttrRecognizer.apply(this, arguments);

this.pX = null;
this.pY = null;
}

inherit(PanRecognizer, AttrRecognizer, {
defaults: {
event: 'pan',
threshold: 10,
pointers: 1,
direction: DIRECTION_ALL
},

getTouchAction: function() {
var direction = this.options.direction;
var actions = [];
if (direction & DIRECTION_HORIZONTAL) {
actions.push(TOUCH_ACTION_PAN_Y);
}
if (direction & DIRECTION_VERTICAL) {
actions.push(TOUCH_ACTION_PAN_X);
}
return actions;
},

directionTest: function(input) {
var options = this.options;
var hasMoved = true;
var distance = input.distance;
var direction = input.direction;
var x = input.deltaX;
var y = input.deltaY;

if (!(direction & options.direction)) {
if (options.direction & DIRECTION_HORIZONTAL) {
direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;
hasMoved = x != this.pX;
distance = Math.abs(input.deltaX);
} else {
direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;
hasMoved = y != this.pY;
distance = Math.abs(input.deltaY);
}
}
input.direction = direction;
return hasMoved && distance > options.threshold && direction & options.direction;
},

attrTest: function(input) {
return AttrRecognizer.prototype.attrTest.call(this, input) &&
(this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));
},

emit: function(input) {

this.pX = input.deltaX;
this.pY = input.deltaY;

var direction = directionStr(input.direction);

if (direction) {
input.additionalEvent = this.options.event + direction;
}
this._super.emit.call(this, input);
}
});

function PinchRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(PinchRecognizer, AttrRecognizer, {
defaults: {
event: 'pinch',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);
},

emit: function(input) {
if (input.scale !== 1) {
var inOut = input.scale < 1 ? 'in' : 'out';
input.additionalEvent = this.options.event + inOut;
}
this._super.emit.call(this, input);
}
});

function PressRecognizer() {
Recognizer.apply(this, arguments);

this._timer = null;
this._input = null;
}

inherit(PressRecognizer, Recognizer, {
defaults: {
event: 'press',
pointers: 1,
time: 251, // minimal time of the pointer to be pressed
threshold: 9 // a minimal movement is ok, but keep it low
},

getTouchAction: function() {
return [TOUCH_ACTION_AUTO];
},

process: function(input) {
var options = this.options;
var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTime = input.deltaTime > options.time;

this._input = input;

return this;
},

requireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {
return this;
}

var requireFail = this.requireFail;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (inArray(requireFail, otherRecognizer) === -1) {
requireFail.push(otherRecognizer);
otherRecognizer.requireFailure(this);
}
return this;
},

dropRequireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
var index = inArray(this.requireFail, otherRecognizer);
if (index > -1) {
this.requireFail.splice(index, 1);
}
return this;
},

hasRequireFailures: function() {
return this.requireFail.length > 0;
},

canRecognizeWith: function(otherRecognizer) {
return !!this.simultaneous[otherRecognizer.id];
},

emit: function(input) {
var self = this;
var state = this.state;

function emit(event) {
self.manager.emit(event, input);
}

if (state < STATE_ENDED) {
emit(self.options.event + stateStr(state));
}

emit(self.options.event); // simple 'eventName' events

if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)
emit(input.additionalEvent);
}

if (state >= STATE_ENDED) {
emit(self.options.event + stateStr(state));
}
},

tryEmit: function(input) {
if (this.canEmit()) {
return this.emit(input);
}
this.state = STATE_FAILED;
},

canEmit: function() {
var i = 0;
while (i < this.requireFail.length) {
if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {
return false;
}
i++;
}
return true;
},

recognize: function(inputData) {
var inputDataClone = assign({}, inputData);

if (!boolOrFn(this.options.enable, [this, inputDataClone])) {
this.reset();
this.state = STATE_FAILED;
return;
}

if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {
this.state = STATE_POSSIBLE;
}

this.state = this.process(inputDataClone);

if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {
this.tryEmit(inputDataClone);
}
},

process: function(inputData) { }, // jshint ignore:line

getTouchAction: function() { },

reset: function() { }
};

function stateStr(state) {
if (state & STATE_CANCELLED) {
return 'cancel';
} else if (state & STATE_ENDED) {
return 'end';
} else if (state & STATE_CHANGED) {
return 'move';
} else if (state & STATE_BEGAN) {
return 'start';
}
return '';
}

function directionStr(direction) {
if (direction == DIRECTION_DOWN) {
return 'down';
} else if (direction == DIRECTION_UP) {
return 'up';
} else if (direction == DIRECTION_LEFT) {
return 'left';
} else if (direction == DIRECTION_RIGHT) {
return 'right';
}
return '';
}

function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
var manager = recognizer.manager;
if (manager) {
return manager.get(otherRecognizer);
}
return otherRecognizer;
}

function AttrRecognizer() {
Recognizer.apply(this, arguments);
}

inherit(AttrRecognizer, Recognizer, {
defaults: {
pointers: 1
},

attrTest: function(input) {
}
this.actions = value.toLowerCase().trim();
},

update: function() {
this.set(this.manager.options.touchAction);
},

compute: function() {
var actions = [];
each(this.manager.recognizers, function(recognizer) {
if (boolOrFn(recognizer.options.enable, [recognizer])) {
actions = actions.concat(recognizer.getTouchAction());
}
});
return cleanTouchActions(actions.join(' '));
},

preventDefaults: function(input) {
var srcEvent = input.srcEvent;
var direction = input.offsetDirection;

if (this.manager.session.prevented) {
srcEvent.preventDefault();
return;
}

var actions = this.actions;
var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];
var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];

if (hasNone) {

var isTapPointer = input.pointers.length === 1;
var isTapMovement = input.distance < 2;
var isTapTouchTime = input.deltaTime < 250;

if (isTapPointer && isTapMovement && isTapTouchTime) {
return;
}
}

if (hasPanX && hasPanY) {
return;
}

if (hasNone ||
(hasPanY && direction & DIRECTION_HORIZONTAL) ||
(hasPanX && direction & DIRECTION_VERTICAL)) {
return this.preventSrc(srcEvent);
}
},

preventSrc: function(srcEvent) {
this.manager.session.prevented = true;
srcEvent.preventDefault();
}
};

function cleanTouchActions(actions) {
if (inStr(actions, TOUCH_ACTION_NONE)) {
return TOUCH_ACTION_NONE;
}

var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);

if (hasPanX && hasPanY) {
return TOUCH_ACTION_NONE;
}

if (hasPanX || hasPanY) {
return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;
}

if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {
return TOUCH_ACTION_MANIPULATION;
}

return TOUCH_ACTION_AUTO;
}

function getTouchActionProps() {
if (!NATIVE_TOUCH_ACTION) {
return false;
}
var touchMap = {};
var cssSupports = window.CSS && window.CSS.supports;
['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {

touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;
});
return touchMap;
}

var STATE_POSSIBLE = 1;
var STATE_BEGAN = 2;
var STATE_CHANGED = 4;
var STATE_ENDED = 8;
var STATE_RECOGNIZED = STATE_ENDED;
var STATE_CANCELLED = 16;
var STATE_FAILED = 32;

function Recognizer(options) {
this.options = assign({}, this.defaults, options || {});

this.id = uniqueId();

this.manager = null;

this.options.enable = ifUndefined(this.options.enable, true);

this.state = STATE_POSSIBLE;

this.simultaneous = {};
this.requireFail = [];
}

Recognizer.prototype = {
defaults: {},

set: function(options) {
assign(this.options, options);

this.manager && this.manager.touchAction.update();
return this;
},

recognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {
return this;
}

var simultaneous = this.simultaneous;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (!simultaneous[otherRecognizer.id]) {
simultaneous[otherRecognizer.id] = otherRecognizer;
otherRecognizer.recognizeWith(this);
}
return this;
},

dropRecognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
delete this.simultaneous[otherRecognizer.id];
function getTouches(ev, type) {
var allTouches = toArray(ev.touches);
var targetIds = this.targetIds;

if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {
targetIds[allTouches[0].identifier] = true;
return [allTouches, allTouches];
}

var i,
targetTouches,
changedTouches = toArray(ev.changedTouches),
changedTargetTouches = [],
target = this.target;

targetTouches = allTouches.filter(function(touch) {
return hasParent(touch.target, target);
});

if (type === INPUT_START) {
i = 0;
while (i < targetTouches.length) {
targetIds[targetTouches[i].identifier] = true;
i++;
}
}

i = 0;
while (i < changedTouches.length) {
if (targetIds[changedTouches[i].identifier]) {
changedTargetTouches.push(changedTouches[i]);
}

if (type & (INPUT_END | INPUT_CANCEL)) {
delete targetIds[changedTouches[i].identifier];
}
i++;
}

if (!changedTargetTouches.length) {
return;
}

return [
uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),
changedTargetTouches
];
}


var DEDUP_TIMEOUT = 2500;
var DEDUP_DISTANCE = 25;

function TouchMouseInput() {
Input.apply(this, arguments);

var handler = bindFn(this.handler, this);
this.touch = new TouchInput(this.manager, handler);
this.mouse = new MouseInput(this.manager, handler);

this.primaryTouch = null;
this.lastTouches = [];
}

inherit(TouchMouseInput, Input, {
handler: function TMEhandler(manager, inputEvent, inputData) {
var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),
isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);

if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {
return;
}

if (isTouch) {
recordTouches.call(this, inputEvent, inputData);
} else if (isMouse && isSyntheticEvent.call(this, inputData)) {
return;
}

this.callback(manager, inputEvent, inputData);
},

destroy: function destroy() {
this.touch.destroy();
this.mouse.destroy();
}
});

function recordTouches(eventType, eventData) {
if (eventType & INPUT_START) {
this.primaryTouch = eventData.changedPointers[0].identifier;
setLastTouch.call(this, eventData);
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
setLastTouch.call(this, eventData);
}
}

function setLastTouch(eventData) {
var touch = eventData.changedPointers[0];

if (touch.identifier === this.primaryTouch) {
var lastTouch = {x: touch.clientX, y: touch.clientY};
this.lastTouches.push(lastTouch);
var lts = this.lastTouches;
var removeLastTouch = function() {
var i = lts.indexOf(lastTouch);
if (i > -1) {
lts.splice(i, 1);
}
};
setTimeout(removeLastTouch, DEDUP_TIMEOUT);
}
}

function isSyntheticEvent(eventData) {
var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;
for (var i = 0; i < this.lastTouches.length; i++) {
var t = this.lastTouches[i];
var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);
if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {
return true;
}
}
return false;
}

var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');
var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;

var TOUCH_ACTION_COMPUTE = 'compute';
var TOUCH_ACTION_AUTO = 'auto';
var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented
var TOUCH_ACTION_NONE = 'none';
var TOUCH_ACTION_PAN_X = 'pan-x';
var TOUCH_ACTION_PAN_Y = 'pan-y';
var TOUCH_ACTION_MAP = getTouchActionProps();

function TouchAction(manager, value) {
this.manager = manager;
this.set(value);
}

TouchAction.prototype = {
set: function(value) {
if (value == TOUCH_ACTION_COMPUTE) {
value = this.compute();
}

if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {
this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;
5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816
};

var POINTER_ELEMENT_EVENTS = 'pointerdown';
var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';

if (window.MSPointerEvent && !window.PointerEvent) {
POINTER_ELEMENT_EVENTS = 'MSPointerDown';
POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';
}

function PointerEventInput() {
this.evEl = POINTER_ELEMENT_EVENTS;
this.evWin = POINTER_WINDOW_EVENTS;

Input.apply(this, arguments);

this.store = (this.manager.session.pointerEvents = []);
}

inherit(PointerEventInput, Input, {
handler: function PEhandler(ev) {
var store = this.store;
var removePointer = false;

var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');
var eventType = POINTER_INPUT_MAP[eventTypeNormalized];
var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;

var isTouch = (pointerType == INPUT_TYPE_TOUCH);

var storeIndex = inArray(store, ev.pointerId, 'pointerId');

if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {
if (storeIndex < 0) {
store.push(ev);
storeIndex = store.length - 1;
}
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
removePointer = true;
}

if (storeIndex < 0) {
return;
}

store[storeIndex] = ev;

this.callback(this.manager, eventType, {
pointers: store,
changedPointers: [ev],
pointerType: pointerType,
srcEvent: ev
});

if (removePointer) {
store.splice(storeIndex, 1);
}
}
});

var SINGLE_TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';
var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';

function SingleTouchInput() {
this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;
this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;
this.started = false;

Input.apply(this, arguments);
}

inherit(SingleTouchInput, Input, {
handler: function TEhandler(ev) {
var type = SINGLE_TOUCH_INPUT_MAP[ev.type];

if (type === INPUT_START) {
this.started = true;
}

if (!this.started) {
return;
}

var touches = normalizeSingleTouches.call(this, ev, type);

if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {
this.started = false;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

function normalizeSingleTouches(ev, type) {
var all = toArray(ev.touches);
var changed = toArray(ev.changedTouches);

if (type & (INPUT_END | INPUT_CANCEL)) {
all = uniqueArray(all.concat(changed), 'identifier', true);
}

return [all, changed];
}

var TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';

function TouchInput() {
this.evTarget = TOUCH_TARGET_EVENTS;
this.targetIds = {};

Input.apply(this, arguments);
}

inherit(TouchInput, Input, {
handler: function MTEhandler(ev) {
var type = TOUCH_INPUT_MAP[ev.type];
var touches = getTouches.call(this, ev, type);
if (!touches) {
return;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

input.direction = direction;
}

function simpleCloneInputData(input) {
var pointers = [];
var i = 0;
while (i < input.pointers.length) {
pointers[i] = {
clientX: round(input.pointers[i].clientX),
clientY: round(input.pointers[i].clientY)
};
i++;
}

return {
timeStamp: now(),
pointers: pointers,
center: getCenter(pointers),
deltaX: input.deltaX,
deltaY: input.deltaY
};
}

function getCenter(pointers) {
var pointersLength = pointers.length;

if (pointersLength === 1) {
return {
x: round(pointers[0].clientX),
y: round(pointers[0].clientY)
};
}

var x = 0, y = 0, i = 0;
while (i < pointersLength) {
x += pointers[i].clientX;
y += pointers[i].clientY;
i++;
}

return {
x: round(x / pointersLength),
y: round(y / pointersLength)
};
}

function getVelocity(deltaTime, x, y) {
return {
x: x / deltaTime || 0,
y: y / deltaTime || 0
};
}

function getDirection(x, y) {
if (x === y) {
return DIRECTION_NONE;
}

if (abs(x) >= abs(y)) {
return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
}
return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
}

function getDistance(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];

return Math.hypot(x, y);
}

function getAngle(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];
return Math.atan2(y, x) * 180 / Math.PI;
}

function getRotation(start, end) {
return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);
}

function getScale(start, end) {
return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);
}

var MOUSE_INPUT_MAP = {
mousedown: INPUT_START,
mousemove: INPUT_MOVE,
mouseup: INPUT_END
};

var MOUSE_ELEMENT_EVENTS = 'mousedown';
var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';

function MouseInput() {
this.evEl = MOUSE_ELEMENT_EVENTS;
this.evWin = MOUSE_WINDOW_EVENTS;

this.pressed = false; // mousedown state

Input.apply(this, arguments);
}

inherit(MouseInput, Input, {
handler: function MEhandler(ev) {
var eventType = MOUSE_INPUT_MAP[ev.type];

if (eventType & INPUT_START && ev.button === 0) {
this.pressed = true;
}

if (eventType & INPUT_MOVE && ev.which !== 1) {
eventType = INPUT_END;
}

if (!this.pressed) {
return;
}

if (eventType & INPUT_END) {
this.pressed = false;
}

this.callback(this.manager, eventType, {
pointers: [ev],
changedPointers: [ev],
pointerType: INPUT_TYPE_MOUSE,
srcEvent: ev
});
}
});

var POINTER_INPUT_MAP = {
pointerdown: INPUT_START,
pointermove: INPUT_MOVE,
pointerup: INPUT_END,
pointercancel: INPUT_CANCEL,
pointerout: INPUT_CANCEL
};

var IE10_POINTER_TYPE_ENUM = {
2: INPUT_TYPE_TOUCH,
3: INPUT_TYPE_PEN,
4: INPUT_TYPE_MOUSE,
this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
},

destroy: function() {
this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
}
};

function createInputInstance(manager) {
var Type;
var inputClass = manager.options.inputClass;

if (inputClass) {
Type = inputClass;
} else if (!SUPPORT_TOUCH && SUPPORT_POINTER_EVENTS) {
Type = PointerEventInput;
} else if (SUPPORT_ONLY_TOUCH) {
Type = TouchInput;
} else if (!SUPPORT_TOUCH) {
Type = MouseInput;
} else {
Type = TouchMouseInput;
}
return new (Type)(manager, inputHandler);
}

function inputHandler(manager, eventType, input) {
var pointersLen = input.pointers.length;
var changedPointersLen = input.changedPointers.length;
var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));
var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));

input.isFirst = !!isFirst;
input.isFinal = !!isFinal;

if (isFirst) {
manager.session = {};
}

input.eventType = eventType;

computeInputData(manager, input);

manager.emit('hammer.input', input);

manager.recognize(input);
manager.session.prevInput = input;
}

function computeInputData(manager, input) {
var session = manager.session;
var pointers = input.pointers;
var pointersLength = pointers.length;

if (!session.firstInput) {
session.firstInput = simpleCloneInputData(input);
}

if (pointersLength > 1 && !session.firstMultiple) {
session.firstMultiple = simpleCloneInputData(input);
} else if (pointersLength === 1) {
session.firstMultiple = false;
}

var firstInput = session.firstInput;
var firstMultiple = session.firstMultiple;
var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;

var center = input.center = getCenter(pointers);
input.timeStamp = now();
input.deltaTime = input.timeStamp - firstInput.timeStamp;

input.angle = getAngle(offsetCenter, center);
input.distance = getDistance(offsetCenter, center);

computeDeltaXY(session, input);
input.offsetDirection = getDirection(input.deltaX, input.deltaY);

var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
input.overallVelocityX = overallVelocity.x;
input.overallVelocityY = overallVelocity.y;
input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;

input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;

input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >
session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);

computeIntervalInputData(session, input);

var target = manager.element;
if (hasParent(input.srcEvent.target, target)) {
target = input.srcEvent.target;
}
input.target = target;
}

function computeDeltaXY(session, input) {
var center = input.center;
var offset = session.offsetDelta || {};
var prevDelta = session.prevDelta || {};
var prevInput = session.prevInput || {};

if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
prevDelta = session.prevDelta = {
x: prevInput.deltaX || 0,
y: prevInput.deltaY || 0
};

offset = session.offsetDelta = {
x: center.x,
y: center.y
};
}

input.deltaX = prevDelta.x + (center.x - offset.x);
input.deltaY = prevDelta.y + (center.y - offset.y);
}

function computeIntervalInputData(session, input) {
var last = session.lastInterval || input,
deltaTime = input.timeStamp - last.timeStamp,
velocity, velocityX, velocityY, direction;

if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {
var deltaX = input.deltaX - last.deltaX;
var deltaY = input.deltaY - last.deltaY;

var v = getVelocity(deltaTime, deltaX, deltaY);
velocityX = v.x;
velocityY = v.y;
velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;
direction = getDirection(deltaX, deltaY);

session.lastInterval = input;
} else {
velocity = last.velocity;
velocityX = last.velocityX;
velocityY = last.velocityY;
direction = last.direction;
}

input.velocity = velocity;
input.velocityX = velocityX;
input.velocityY = velocityY;
});
}

function hasParent(node, parent) {
while (node) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
}

function inStr(str, find) {
return str.indexOf(find) > -1;
}

function splitStr(str) {
return str.trim().split(/\s+/g);
}

function inArray(src, find, findByKey) {
if (src.indexOf && !findByKey) {
return src.indexOf(find);
} else {
var i = 0;
while (i < src.length) {
if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {
return i;
}
i++;
}
return -1;
}
}

function toArray(obj) {
return Array.prototype.slice.call(obj, 0);
}

function uniqueArray(src, key, sort) {
var results = [];
var values = [];
var i = 0;

while (i < src.length) {
var val = key ? src[i][key] : src[i];
if (inArray(values, val) < 0) {
results.push(src[i]);
}
values[i] = val;
i++;
}

if (sort) {
if (!key) {
results = results.sort();
} else {
results = results.sort(function sortUniqueArray(a, b) {
return a[key] > b[key];
});
}
}

return results;
}

function prefixed(obj, property) {
if (obj === undefined) {
return undefined;
}

var prefix, prop;
var camelProp = property[0].toUpperCase() + property.slice(1);

var i = 0;
while (i < VENDOR_PREFIXES.length) {
prefix = VENDOR_PREFIXES[i];
prop = (prefix) ? prefix + camelProp : property;

if (prop in obj) {
return prop;
}
i++;
}
return undefined;
}

var _uniqueId = 1;
function uniqueId() {
return _uniqueId++;
}

function getWindowForElement(element) {
var doc = element.ownerDocument || element;
return (doc.defaultView || doc.parentWindow || window);
}

var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;

var SUPPORT_TOUCH = ('ontouchstart' in window);
var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;
var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);

var INPUT_TYPE_TOUCH = 'touch';
var INPUT_TYPE_PEN = 'pen';
var INPUT_TYPE_MOUSE = 'mouse';
var INPUT_TYPE_KINECT = 'kinect';

var COMPUTE_INTERVAL = 25;

var INPUT_START = 1;
var INPUT_MOVE = 2;
var INPUT_END = 4;
var INPUT_CANCEL = 8;

var DIRECTION_NONE = 1;
var DIRECTION_LEFT = 2;
var DIRECTION_RIGHT = 4;
var DIRECTION_UP = 8;
var DIRECTION_DOWN = 16;

var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;
var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;
var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;

var PROPS_XY = ['x', 'y'];
var PROPS_CLIENT_XY = ['clientX', 'clientY'];

function Input(manager, callback) {
var self = this;
this.manager = manager;
this.callback = callback;
this.element = manager.element;
this.target = manager.options.inputTarget;

this.domHandler = function(ev) {
if (boolOrFn(manager.options.enable, [manager])) {
self.handler(ev);
}
};

this.init();

}

Input.prototype = {
handler: function() { },

init: function() {
<![CDATA[


(function(window, document, exportName, undefined) {
'use strict';

var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];
var TEST_ELEMENT = document.createElement('div');

var TYPE_FUNCTION = 'function';

var round = Math.round;
var abs = Math.abs;
var now = Date.now;

if (!Math.trunc) {
Math.trunc = function (v) {
return v < 0 ? Math.ceil(v) : Math.floor(v);
};
}

function setTimeoutContext(fn, timeout, context) {
return setTimeout(bindFn(fn, context), timeout);
}

function invokeArrayArg(arg, fn, context) {
if (Array.isArray(arg)) {
each(arg, context[fn], context);
return true;
}
return false;
}

function each(obj, iterator, context) {
var i;

if (!obj) {
return;
}

if (obj.forEach) {
obj.forEach(iterator, context);
} else if (obj.length !== undefined) {
i = 0;
while (i < obj.length) {
iterator.call(context, obj[i], i, obj);
i++;
}
} else {
for (i in obj) {
obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);
}
}
}

function deprecate(method, name, message) {
var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\n' + message + ' AT \n';
return function() {
var e = new Error('get-stack-trace');
var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';

var log = window.console && (window.console.warn || window.console.log);
if (log) {
log.call(window.console, deprecationMessage, stack);
}
return method.apply(this, arguments);
};
}

var assign;
if (typeof Object.assign !== 'function') {
assign = function assign(target) {
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}

var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
} else {
assign = Object.assign;
}

var extend = deprecate(function extend(dest, src, merge) {
var keys = Object.keys(src);
var i = 0;
while (i < keys.length) {
if (!merge || (merge && dest[keys[i]] === undefined)) {
dest[keys[i]] = src[keys[i]];
}
i++;
}
return dest;
}, 'extend', 'Use `assign`.');

var merge = deprecate(function merge(dest, src) {
return extend(dest, src, true);
}, 'merge', 'Use `assign`.');

function inherit(child, base, properties) {
var baseP = base.prototype,
childP;

childP = child.prototype = Object.create(baseP);
childP.constructor = child;
childP._super = baseP;

if (properties) {
assign(childP, properties);
}
}

function bindFn(fn, context) {
return function boundFn() {
return fn.apply(context, arguments);
};
}

function boolOrFn(val, args) {
if (typeof val == TYPE_FUNCTION) {
return val.apply(args ? args[0] || undefined : undefined, args);
}
return val;
}

function ifUndefined(val1, val2) {
return (val1 === undefined) ? val2 : val1;
}

function addEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.addEventListener(type, handler, false);
});
}

function removeEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.removeEventListener(type, handler, false);
9SVGExport@ooo:header-field@ooo:text-adjust@ooo:id-list@ooo:footer-visibility@ooo:date-time-visibility@ooo:page-number-visibility@ooo:meta_dummy_slide@ooo:meta_slide@ooo:page-numbering-type@ooo:use-positioned-chars@ooo:start-slide-number@ooo:number-of-slides@ooo:meta_slides@inner@ooo:date-time-format@http://www.w3.org/2000/svg@ooo:name@ooo:has-transition@ooo:footer-field@ooo:date-time-field@ooo:master-objects-visibility@ooo:background-visibility@
ooo:master@	ooo:slide@ooo:text_field@<[:isPlaceholder:]>@b<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">��������ooo:metata_slideooo:textxt_fieldooo:date-time-fiSLIDE_BACKGROUND�����������������������clip_pat�o@�o@��������������������������������PX���W���W��(W���V��hM��`L��`L��`L��hU��`L���T��T��S��R���P��0P���O��xO���N���N��hN���K���K���K��PV��V���K���K���K���K���K���K���K���K���K���K���K���K��H[���Z���K���Y��`Y���K���K���K���X���X���K����������X���8�������؋���������� �������������������������������������������������������������������Њ��������������������������������������؉��d�,���X� �N3com3sun4star3svg10XSVGWriterEN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEE9SVGWriter@ @$com.sun.star.presentation.TextField.@com.sun.star.text.textfield.@stroke-linecap@stroke-linejoin@
stop-color@offset@
gradientUnits@
xlink:href@text-decoration@font-weight@
font-style@	font-size@font-family@fill@stroke-width@height@width@ry@rx@cy@cx@y2@x2@y1@x1@y@x@id@style@	transform@stop@linearGradient@tspan@text@defs@g����@SLIDE_BACKGROUND;X*��t$��4��D�v�����L:�,��D��(��t 4�� Z�t"���"��0#��#��,$�\%��%P��'��h(��). �`)^ �\*t �+� �X+�"�+�"�L, #��,N#�l-l#�-�#�.�#�0.�'� 1(�1F(�1�(�X2j)�3�)�h3>,�30-�4�2�H5�3��5P4�(6�4��685��8�5�,:$8�:H8��:�9�<;�:�;<��<�<�D=4A�`>�B�>C�L?�C�?�C�@�C� AFF�xA�F��ABG�(B�G�BZI��B�I�0C�K��D6L�4EtL�F�L�F.M�LG�N�GO�THPO�HnO��HxP�J�P�JU��L8U�N�U�dNrW�N�W�O
X�OTX��O�X�HQ�X�Q�X�0R`Y��R�Y��S�Y�DTZZ�T�Z��Tt[�PU\�U]�V�]�XV�^�V�^�W`_�`W�_�W�_�dX�`��X�`�$Y�`��YRa�Z>c��Z>i�`[�j�(]pk�]l��]2l�H^Nm�^*n�_o�_2p��_�p�@`�p�`q��`�q�La$r�a�s�(b�s�b�v�cy�hcz��c�z�Td�z�d:{�ep{�pe�|��|��|��|�~�~���H$��Lt��x���ă����d��(�����<��d���D�� ��D�����IJ�LԲ��ĸ� ��8 4�� �� $���4���D���T��d��0t����������������������D��������0��D$��X4��lD��XT��\d��pt��������$���8���lT�����4���`4�����t���������4��8���X���x$�������T���|$���T������P4��|���lD�����$���t��4��<D��dd��x����������4��0T��Dt��X���l���������������4
���T
��Pt
��d�
��x�
���T���t�������$���T���4������h$���t������`���d���T��p!����!����!���!T���!���"���D"����"4��#t��L#��x#$���#4$���#�$���#$%��$t%��%�%��,%'���%�'���%t(��&D)��4&*��d&�*���&�+���'�,��(d.��<($/���(T/���(t0���(�2��0);���)�A���)�V��*�V��0*�W��|*�W���*TX���*�[��(+tk��|+tl�� ,do��l,�o���,�o���,Tq���,�q��,-Tr��@-�r���-Ds���-�t���0�u��h1�w���1d}�� 2����2$���,3T����3����X44���5�����5�����54���6����8����9��P:t��:d���;����`;d
���<�
��=d?��,>�O���>tQ��?�Z��t?�Z���?�\���?^��8@4^��L@T^���@�z��DA����A�����Ad���LB�����BԞ���B4���!D��� !T���4!d���H!t���\!����0"�����"4����&ԫ���&t���'���8'����d'T����'�L$D���l$�����$$����$�����$D����)ĵ��*���+4���,d���\.����p.4����.T����.t����.���/���</4���p/T����/���/��/��(04��<0���t0����0����0��@14��T1T��|2t���2���2$���3���4��04$��D4D���4����4��l5���L6���x6D��7���47��d7����7����7����7��(84�\8���8t�9��H9�|9d��9T��;���;t�$<D�P<��<4���h=�����=t����=����=�����>���`@��t@��@����@����@$����@4����@D���TC����Cd����C����C4��Dt��4D��dDd��xD����D�	��E�
��`F4���F���G���pG ��TE4 ��hE4!���E"���E�"���E�#��$F$%���Gd%��@Ht%���H�%��I�*��0I+��PI�,��Jd.��DJt.��XJ4/���JD/��K�/�� Lt0��HL�0��hLt2���L�:���L$A��MtV��DM�V��XM�V��lM�V���M$W���M�W���M�W���M�Y��(NDn���N�p���N�q��4O�q��\O�s���Ow��PTw��,P�w��LP�w��pP$x���P�x���Py���Ptz��Q�{��hQ����Q�����Q4���TR����|R�����R�����R����R����SĆ��<S���\ST����ST����SD���T����hTT����TT���Ut���U��tU����U��$V��|V$����V$���,WT����WD����W����X$���0X��Xd����X$����X��YԿ��TZ���Z���,[����\T�L]���]��^��l^d�^��^��h_4����_���`4���``����`���a���pat���a%��LbdC���b�r��8c{���c�{���c�dĈ��xdԌ���d$���<ed����et����G�����I�����I�����I����HT����K��K�����K4���,HD����IT����Id����It���pHĔ���J4���xK����(K4���PKĖ��DY�����Yt����Y����ZĘ��,Z��@Z����Z$���[D����[����[��[$��� \T���P\����d\d����\�����\�����]���4_zRx�$��� FJw�?9*3$"D���\x��tP���L��
�H��
��j��0��
�,��	����	���	(@��E�C
D��E�D�W
D@j�3E�Q
A�[zPLRx�	��($4����RE�C
G��a
H��i�
����Aa�R
M����Aa�R
M$��Aa�R
M T��Aa�R
M@���2A�H
,8i��QE�Q
B�E�L��
H0���{�Q������i�
,��i�A�Q
W������
G��n����
���
,���
@���
T���
h���
|���
����
�p��
�l��
�h��
�d��
(��m�EE�C
B�D�f
LD �m�	4�m�3E�Q
A�[ Tp��bE�C
A�n
I(x�m�EE�C
B�D�l
FD(�n�EE�C
B�D�l
FD(�4n�EE�C
B�D�f
LD$����E�C
C��J
K$$��E�C
C��J
K L���bE�C
A�n
IpT��,E�C
A�^�d��,E�C
A�^(�D��E�C
D��E�D�X
C(����E�C
D��E�D�X
C(,��E�C
D��E�D�X
C(4���E�C
D��E�D�X
C(`��E�C
D��E�D�X
C(����E�C
D��E�D�X
C(��l�@A�C
M�����.��n�(�,��E�C
M�����R
I($���rE�C
P�����R
F(Pdp�BA�C
P�����R
J( �����LE�U
C��J
IL���L���(l���LE�C
E���n
E����-�L����(@��E�J
k
FX
Ha(@�����C
f�H�A�l8��,$D��BLE�C
D��E�D��
C0�d��E�C
I���K
D�
H$����
E�C
G��|
E	��� 	���44	���~E�C
H����D�K
A�
B4l	8��E�C
F���E�H�o
F�
D0H��KE�C
H����D�G
E�	����	��
��
 ��(
,��<
8��P
D��(	P���JE�C
G��u
D�
D��,H	��;nJA�C
P�����P
D x	��TJ�������
����� ��(4 ��N�C
A�b��T��`���t���$����E�C
B�H���s����
����
����
����
���
���
(���!,�
�����HE�P
M������
FHlh��iJ�C
H����D�EB������H�������
A0\,����HE�C
D��K��D��
I �z��6�H������$
4��zE�C
B�J��e,����N�HE�C
F���D��
H0���*�HE�E
F���F��w
C0@���HE�F
D��I�I�E��
J t��H�������
p��
0�<��d_HE�C
M�����o
D,�x��NKHE�C
F���D��
H$l����E�C
B�H����(����E�Z
G����_
E����"E�C
A�T8�
���9*�GE�C
I�����(
G�.�. �
B��v�I������8�
����JE�C
F���E�H�J
K5
K  X��%�I���������
� ��������������������3E�Q
A�[8���3E�Q
A�[X��3E�Q
A�[x<��3E�Q
A�[�\��3E�Q
A�[�|��3E�Q
A�[�L���,�����HA�C
G��|
I[
E���-iH���(<�����E�C
D��E�D�W
D,���?HE�C
D��I�}
A<���.H�������@E�L
A�m�~��2A�H
(� ��A�C
B�D�I
Ew, ���A�Q
W������
GPT��"d$��	A�C
�T��W�����(L��EGA�C
B�I�i
Ax���+�F��������Aa�R
M Њ��bE�C
A�n
I$8�����E�C
C��J
K$`��E�C
C��J
K �̊��bE�C
A�n
I$�h��vE�L
A�t
J^,x���FA�C
B�G��D��
E �����E�����,(|���E�J
B�J���
JJ(X���A�J
E����
EG$�����E�J
B�J���,�h���E�J
B�J���
JJ,����E�J
B�J���
JJ$����E�J
B�J���$4@���E�J
B�J���(\x����E�C
D��E�D�X
C(����E�C
D��E�D�X
C(�`����E�C
D��E�D�X
C(�ԅ���E�C
D��E�D�X
C(H����E�C
D��E�D�X
C(8�����E�C
D��E�D�X
C,�����CE�C
D��J�G��
A 8\��R�C�����(�|���A�C
M������(� ���SCE�]
B�D��
E�2��0C���0���"E�C
A�T,P���A�C
D��E�L�I�a
E0$���h�BE�J
D��F�H�K�j
J X���n�B������,|�	��&�BA�C
P�����R
J ���0lB������(,�����E�C
P�����R
F(X\��rA�C
P�����R
J(����BA�C
P�����R
J�������,��(|�,����AE�C
E����
A�����A����$$-��JE�C
E�\
GW$L8-��kE�C
C��\
I4�-��mAE�C
P�����z
F�.l. Ph��A������,t�0����@E�C
P�����z
F �����IA������0��?���9AE�C
B�G�L�F��
C ���+A�����(|���ME�C
C��p
MD�,���-E�J
A�X(lL@����@E�C
B�D��
D����$�@��� �B��1K�C
A�X��8C��)E�C
A�X(�C��u'@E�C
E����
D(<��.@����,�PD���E�C
F���F��c
I��D��S(�E��g�?E�C
B�F��~
A����?����,�0E��r�?E�C
B�F��I
A���r?����,(`E���[?A�C
K�����
I Xv��?K?�����(����"A�C
M��������0����N�J
C��S�B�A�W���L����`����4t�����E�C
H����D�K
A�
G4�����E�C
F���E�H�o
F�
A0�Њ��/>E�C
H����D�G
E����4,ȏ���E�C
H����D�K
A�
G4d ���E�C
F���E�H�o
F�
A0@�����=E�C
H����D�G
E���4���E�C
H����D�K
A�
G4H���E�C
F���E�H�o
F�
A0� ���W=E�C
H����D�G
E����(@�C���[=E�C
E����
Al��,F=�����̝���؝��0�$D���=E�C
H����H��
E �t��.�<������8�E����<E�C
F���J���
J�
I HB���<������4l<K����<E�C
P�����A
G�.c. �j���<������$!М��,8!ܜ���E�C
B�H���]
IHh!<���0  8P��`<E�Q
D��F�G��
A T Z��hL<������8x �Q��"0<E�C
H����K��
G�
G � b��l�<������44"�����E�C
F���E�H�V
G�
C0!�i��=�<E�C
D��I�N�G�o	
G D!>����<�������"�����"̝���"؝��0�!4t���	<E�Q
B�J�����
D �!���=������$X#�����E�C
D��F���0$"���=E�C
H����H�{
E8X" }��V#=E�C
B�I���D�.�
F_. �"l��r=������,$�����E�C
B�J����u
G0�"�1=E�C
F���H�D��
B #��%=������0@#�����=E�Q
D��F�D�C
A t# ��[�<�����(�$�����E�C
C���
ED( %����E�C
M������4�#�����
{<E�C
B�E�E�F�D�
F ($��_<������0L$<���dC<E�C
M�����o
D,�$x���N/<E�C
F���D��
H(&�����E�C
M������
J08&,����E�C
B�D�[
Gw
IR,%ȥ��N�;E�C
F���D��
H0@%����;E�C
D��G��H��
H0t%����d�;E�C
M�����o
D,�%��Ns;E�C
F���D��
H0�%��_;E�E
H����D�f
D,&����S;E�C
P�����|
D <&@���;������0`&X���ds;E�C
M�����o
D0�&����-_;E�C
B�N����
J,�&����NK;E�C
F���D��
H0�&�����7;E�E
H����D�f
DH,'ܙ��+;E�C
H����D��
I�
.W.d.W... x'���T<������0�'������;E�C
D��P���\
A �'���$�;������8�'IJ����;E�C
F���E�H��
I�.f. 0(\��E�;������0T(T���E�;E�C
B�E�H����
K �(J��<������8�(L����;E�C
I������
Lx	
H �(��p<������,)����FW<E�C
F���D��
A0<)�����C<E�E
B�J�����
B(�*H����E�C
B�F���
D8�*��zE�G
D��E�D��
Gx
HN
J04+0���dE�C
B�E�F�E�H�!
E,*���D�;A�C
I������
G <*��q�;������,`*����1�;E�C
P�����F
B �*8��I=������,�*�N7=E�C
F���D��
H,@,���E�C
B�E�E�G�u
H,+����N�<E�C
F���D��
H0D+���<E�C
F���E�H�,
I0x+0��x�<E�C
F���E�K��
F �+���=������0�+X����=E�C
B�E�M���T
A ,4�$_=������0(,����)C=E�E
B�I���H�\
G8\,\��	;=E�C
H����D�e
G$
D$�,��rP=A������.��	0�,��� =E�C
M�����
F -���<������0,-���~�<A�C
M�����J
A `-���<�������.����.���/l���	/h���
0/d���
D/`���
X/\���
l/X���
�/T���
08.`��g�;E�C
P������
B l.���<������0�.x9����<E�C
B�N����d
D �.���<������0�. >���
�<E�C
I�����l
C /��p3=������0@/�K���=E�C
D��F�D�V
D t/�=�����0�/N��M	=E�C
D��E�J��i
D �/:�s=������0�/W��k=E�C
M������
D $0z�c=������0H0�[��UK=E�C
I������
H |0����=������(�1���A�C
B�D�F
Ho((2L����A�C
B�D�F
Ho(T2����@A�C
M�����.,�2Ľ���F�C
D��F��cJ�����(�2$���@A�C
M�����.,�28����F�C
D��F��lA�����3����Q$ 3��~E�C
B�H���g8�1<���X<E�C
B�J�E�M���.@`.�
H (2��rN<������0L2����2<E�C
B�G�\
C^
A�2��><����3���!0�2�����;E�C
G��w
JW
I(D4����E�C
B�F���
D,p44���E�C
H����D�y
C(�4����E�C
B�F���
D8�4x��zE�G
D��E�D��
Gx
HN
J0�3,����:E�C
D��K���C
F �3��%�:������<4t����:E�C
P�����5.v.�
K]
A D4���:������,h4����	�:E�C
P�����}
K �4���;������0�4\��%�:E�C
I�����
A$�4N�$�:������t6P��3E�Q
A�[�6�I��	(�6�I���E�C
D��E�D�W
D�6L��	�6��
�6��2A�H
7�K��Aa�R
M87��A�C
A�T X7���_A�C
A�@
K(|7��
A�C
G���
E\,�7���A�Q
W������
G�7��$Q�G
F@�7���F�C
D��G��H�]G������H������<8�J��
P8�J��
d8�G��
x8�G��
�8�G��
�8dJ��
4�8���A�C
F���E�H�|
E�
E�8�	(�7��#8E�Q
C��x
G�7��n�7���L9��
(`9&�"A�C
M����� �9�I��bE�C
A�n
I�94�3E�Q
A�[$�9tJ���E�C
C��J
K$�9�J���E�C
C��J
K  :�I��bE�C
A�n
I(D:�F���E�C
D��E�D�X
C(p:$G���E�C
D��E�D�X
C(�:�G���E�C
D��E�D�X
C$�:\��E�S
C��g
N�:$�"E�C
A�T,;4��A�H
B�E�I�J���
H,�9��&�5A�C
P�����R
J :8�0�5������(�;��rA�C
P�����R
J(�;�BA�C
P�����R
J�;(	��3<T	��	<P	��$(<\	��6E�C
E�^
EEP<t	��nd<�	��.0;�	���4E�C
D��J�E�G��
G P;,�N�4������8t;���n�4E�C
F���M��i

L�
F �;��H5������0�;���>[5E�C
D��E�F��u
D <��B5������0,<�!��&5E�C
E����
KB
A`<��
5����$�=X"��FE�C
E�f
ME,�<�"����4E�C
G�����
F �<v�J�4�����0�<�#����4E�C
H����D�P
D 0=h�P�4������ �>'��1K�C
A�W���> '��(E�C
A�W �>0'��IT�C
A�hH�� ?\'��IT�C
A�hH��,<?�'���E�C
G���
KW
Al?(��&@�?4(��RE�C
B�E�O����
E~
BX
H\
D(h>P)��.f3E�C
B�H��
D�>T�%H3���8�>4*��i03E�C
I�����e
Jb
N �>�(3������(p@D/���E�C
C��u
HD8@?�/����2E�C
D��E�F���
I`
H |?��m�2������$�@�1��FE�C
E�f
ME$A2��8A2��,�?2��]L2E�C
M�����|
G  @��[12������ �A3��pE�J
X
D�A`3��@E�I
A�p�A�3��@E�I
A�p(B�3��KE�E
D��D�3
A,0B�4���E�C
B�J��E�D��
A0A�5���U1E�C
D��I�F���
A 8A��$.1������0\A,6��U1E�C
I������
H �A��z�0������(�A4<����0E�C
C��w
F�A��:�0���,B�<����0E�C
I�����P
G 0B����0�������CDC��0hBPC��b�0E�C
F���E�Y�
A �B�~0������0�BhE��b0E�G
D��E�I�D�
G �Bd��d0������0C0I���I0E�C
D��E�I�O�z
A LC��D0������0pC�K���(0E�C
H����G�@
I �CD�� 0������0�C`N��=0E�C
B�E�J�F�G��
I �C��6�/������0 DHO����/E�C
D��G��P�Q
D TD���/������0xD�T��-�/E�H
D��I����
J �D��R�/������,�D�V����/E�C
M�����t
G E��C�/������$�FdX��FE�C
E�f
ME,�F�X���E�C
D��D�D
Dh0|E�X���/E�V
D��I��E�d
G �E���.������0GdZ��h4�E�Z����.E�R
D��D��
AH
H F���.����,@F(\���v.E�C
B�F��q
GpFp�-^.����8�Gx=���E�C
A�O
Ht
LU
KE
K (H>���E�C
A�I
NLH�>��!8G4\���	�-E�C
D��R���O
C. L. @G��.�������H�>���H�>���H�>��4�Gxe��
�-E�C
M�����n
E]
K �G����-������XIL>��,Hg����-E�C
I������
K @HB�>.�������I>��0xH`u���.E�C
I������
E �H�
��.������4,J�=���E�C
F���E�H�U
H�
F0dJ@?���E�C
H����D�
E^
J,<I�?��([.E�C
F���D�
F,lI�B��(J.E�C
F���D�
F�J�E��!,KF���E�C
H����D�
F,�I�H��N�-E�C
F���D��
H0J�I����-E�C
B�I���H�
G,DJ������-E�C
G����3
F tJ�
��-�����0�J�����-E�C
F���I�H�5
E �J�
��-������(�J8�����-E�C
B�D��
AK6�$n-���$�L�K��~E�C
B�J��i,dKd���!
.-E�C
P�����}
K �K�
�[-������ M@����E�C
C���,�K̒���-E�G
E����
AL����,����0,L,�����,E�C
E���q
BJ
A`L���,����0�M�J���E�C
M�����B
EN
A0�LD���rs,E�H
B�E�G��E��
G �Ln�,������0Ml����w,E�C
C��:
Kw
I@M6�L,���(`M��"4,E�C
B�D��
A�Mr�/,���4�M̙����+E�C
G����
B�
M �MJ�$�+�����0N����
�+E�C
D��F�E�D�
J <N�%,������4`N�����	,E�C
P�����n
Jd
D �Nt�[�+������@�N,�����+E�C
B�I���D��.X.�.S.�
G Oh�X,������L$O�����B,E�C
D��E�E�E��. \
I[.�. L.r. L.W. I. tOx�$,������0�O���L�+E�C
D��H�E�D�}
F �OD���,������l�O��\/�,E�C
P����� 
H�.�.b. �.i. �._. �.h. .P.�.d.D. `P��c.������,�P���I�-E�C
I�����f
I �P���'.������04R����E�C
B�E�E�E�G�w
I\0Q���K�-E�C
B�G��E�K�+
D @Q
��-������8dQ�����-E�G
B�J�����.U.$
A �QL�B�-������D�QD$���-E�C
F���E�D��.L.�
J�.E
I R"�Oy-������00R�'��L]-E�C
B�E�G��E��
H dR�6P-������0�R�*��94-E�H
B�E�I�I�N��
F �R��X-������<T�+��
��
8��Z����8Bq��������?�I�\����"��I������I9K������0��	�����	�	�	�	�	}}lY`Y��H���U�������_���g#+b(��!���j�����k��������
���
��
������
������{��5�	"��
���I���������:���������h����-!B}���������}X��
6��}�W��������}�W��:���������8UA�Q��S�J�S���Q����Q��T���T��Q���Q��S���Q�	�S�	�T�	�T�
�T�
!�P�R��R�
���P��P��P�
��P��P��P���S��Q���S��S�1�S���T��R���P��V�P� �"�P�#�P�$�$p�T�&�O�&�&�R�'�(�Q�)�P�* �Q�+�P�+�,�P�-�R�-�P�.�/�Q�/�P�/�1�P�1�2�R�3�Q�3��O�4�R�5�O�6�O�6�9H�Q�9�Q�:�R�:�R�;�<?�R�=�O�=�O�=��O�B�Q�C�O�C��E�R�F!�R�G�O�H�H�O�I�O�J�Q�Js�M�O�M�R�M�R�O�O}dU��aQx���
��	�������	����	�
�
�����
��}U��e�������
k����#��
8���T��	4b���$��.9��&��
+A��<��
ns���9g������.��u�����|�������$@���!�
!���&��	+(^����������������*@�����������������	��	��
������������������������������*L������H���!��;�����R�������I������%-O;[����&7ZFf����M�����}`R��5}LR��I9K������0��	�����	�	�	�	�	}}RR��I9K������0��	�����	�	�	�	�	}}�Q�Q��I9K������0��	�����	�	�	�	�	}}tQhQ��:�F�V{���"��H���U��x�����$��E_��
��
���������������!�
�0��,��;��
��-���������
��
��
����BG������������$:������-��-��-��.��.��/�	�/�
�/��/��/��0�
�/��/��/��.��.��.��.��.��-��-��,��-��-��.��.��.��.��.��,��0��/��/� �-�!�-�!��$�/�&�-�(�-���n����`�������	��
��
����
��
�����������������{Jv"{�����������������������'������	��	��	��	��
�
���������
��
���������p��`�
;�qv�6��	�������������	��	���	�
�
��
�	��9/���������������}���Cg������������������
��
����������
��
��
��
����D����B�����$��������������	�g��{�������#.��X����
���
���]%��������}TL��:�������:���������I����������}�K��:�������%BH���H������]P��	���	��	���	��	��	���	���	��	��	}DK��$L}0K��������}K��g�����}�J��:�������%BH���G�������6 ��,��-�V�-��,��-��-��-��	�,�	�.�
�,��-��-��-�
�-��-��-��-��.���.� �-��/��/��-��/��/��/��/��/��/��/��.��.��.��0��/��/�9� �.�!�,�!�.�!�"�,�"�,�#�,�#�$�.�%�.�&�.�'�-��N��@�������uV�G��,��������������������	��
�������
��
�����x��k��
��
��
��
��
���
��
��
��
�����	�
�	�
�
�������
��3���fS��������������������	��	�
��
 ��
����������
�-�������������������K��:���������F����:�������-#�e����������}$G��N}G������a��a��a��`�%�`��_��`�	�a�
�^�
�^���a�
��a��b��b��a��`��c��c��^��b��a��b��a��_��_��a� �^� �^�!�!�^�"�_�"�"�_�#�^�#��(�a�)�*�`�+�_�,�_�,�_�-�_�-�_�.�_�.�`�1�^�1�b�3�b�3�4�b�5�c�5�b�8�b�9�b�:�a�;�b�=�`�>�_�?�`�@�`�B�a�C�]�D�^�E�]�E�]�G�^�H�^�J�^�K�a�L�]�M�`�Q�]�R�`�W�]�Y�_�\�]�]�]�]�_�]�]��r�����:�������:�������1&RU�����2��������Dc���=����� ��=��[� �� �� �� �� �� �	� �	��	�
��� �
� ����s�0���������� ������������� �� ���� ���(����6�����A�������) BH���N�������MyD����
������,����*��
��
*������h���5m���[�������U�������J`�8y�8��7��7���7�	�8�	�	V�7��8��8��8�
��8��8�k�0�7��6��6��7���8���6��7��6��6�!�%�6�'�7�(�6�)�6�*�6�+�6�+�6�,�8�,O�6�,�7�-�6�-�6�.�7�.�6�.�7�.�6�.�6�.�7�/��6�2�7�2�6�5�8�5�6��x�����UQ���	�l��	��	���	��	���	���	��	��	�	�	��6P���\ �>����������������	��
��
��������������
��������0��1)/I�i�s�����$����*[9����L^�����������E����P�������;��>��	��	��	
��
m���@������������m����(��	���	���
��
��	��uR���IW������������������������������"��L��	��	��������*�����*�����7��.?M����������������2������)��
>����-$�������@3N�\�����	���	��	�������	����$���fR������� ���������������������	��	��
��
��������
��
������������4��
+]�(�������8Bd���!�
!���&���g���D���RK���&���&��%��&��&��&�	�&��'��'��'��'��&��&�e�%��%�$�%���'��'��'��'��'��'��(��(��(��(��(��(��(��(��(�I�&��&�L�&��&�$�&�#�%�#$�&��3�`����������������e���������\��Kq��������Am�������%��/7�����l����@��������*��
+Y������#>���
��
��
���^�
���������������*���������$-��	9F[�����q�
���2Kp��(B�Z���0��K3��
��h�
��
��
��
�4�
��
��
�(�
�	 �
�	�
��.@��!J,�����������s��2c������������s�������+_�������������s��(-v�����������������;R����F���,��FFTb���������������	��	��
�����*��������������>����������*��
�������?H��c�����B�O�b����"��I������hB`�������������������������	��	���
��������J��*O{��'��������-��%'Z����?�����,���>S�������-���������������	��	��	�	��	0�
��
�
����<���
��
��������������������u]����������������������������	�	�	�	�
��
������>D�������+�6��!���������	��
�����������
�������`������������IR���������IR���������:�������)����M����}��!%
�������&����-R��%?���f��������z��	08<�����Y����$����(��������
��
,��
!��>������
���.d�����������
��H�����=5`�������������������9R�����G���~���4���%����������AT�����������������������	��	�����������
��
&��"����)���������.��)��	�l���	��	��	���	��F���u�B�%���&�	�&�	4�&��&��%�x�&�
�
8�%���&��'���&��&��&��&��%��&��&��%��%��%��%��%��'��'��'��'��&� ��&��
YG����
BJ�	������O=�w�9��9�K�;��:�[�:��:�	�:�	�:�
�:�B�:��<�
�<�
�:��:��:��<��<��<��:��;��;��<��:��<��;��;��;��;����9���;��;�3�:��9��9�!�9�"�:�"�8�"��:�&�;�&�9�&�9�&�;�(4�;�,�9�,�;�-�-�9�.�/�;�0�6"�9��!����������������^��^��o�\��\���
�]�
���^�
�
g�^���\�X�^��]�U�]��^�W�\����^�I��[��[����]���$�]�%�&�]�&�]�'��\�+�\�,�]�,�^�,�\�.z�/�]�0�\�0q�2�[�2?�[�4�4�[�4�\�4�\�58�\�5��\�;.�\�<�\�=�[�= �[�=�]�?�[�A)�]�D��F#�\�F�G>�[�K��\�O�[�P�\�P�P��\�S��X�\�Y��B��^Ii���G��������������0��	��	��	��
�������f��0m����8������Y��/������
vq�v��O)���
�N�
���
���
��*��.E����������������6��#f�F����]��������"��NV�h�������-�i`iؖ
p	�PK��0�
p�0K�`� �
�	P�G� �@����`������@����� �@� � �`������� � u�g�Y N C�3�"��@� ��n�`�L�1`@���
@�
@�
��
��
 �
��
 u
b
�V
@M
�@
�3
�%
�
@	
��	@�	�	��	�	�	z	`j	 Y	`E	@2	 &	�	�
	�� � �@� �`� �@���@u�d�V F�9�'�`@�����`���`�`���s�c�R�> /� �`�`�@������ ���`y@k[@L�>�,�@ @���`�����
P�
���� �`��������@�`����������0�P�`�p������������������ �@�`�����������`���
����
����
 ���
`���
����
���
 �
( �
08�
8P�
@h�
Hx���
��
��`��� �����������
�������@����������
���������������
P��������������
����������������
p���������������
��p����
��`����� ���P��i�p0q0�j�ij�������
�������@���������
������0�0p��������
P������q��������
������@p���������
p���������������
��p����p�p k��������
 ���
P���
����
���
��
��
��
�����
�������@@�МP�`���p�����������
�0�P�Н`����������
p� �@����������
�0����������
��P� �����������
P�@������������
0�������
���
 X�
(h�
0��p�
p�
�~P��~��P�������p�
��p��~P���������p�
p���~�������p�
�`��~Ț
�~P��~����P�@}�@�������Ț
��p��~P���������Ț
p���~�~�������Ț
�`��~`�PBB-BHBYBiBxB�B�B�B�C�
��
��
���o�`,P
�C�
�"��u 4	���o����o�s���o�op���o��
0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0���
�(P�0��8��@P�H�� p���ip�P�i��H�.���H�+�p��U/�(P�0��8`�@�H�� p�`�i�h�.��h�+�0���.�0���+�H���.�H���+p��U/��(P�0�� p�`�ip��U/2dde6dbf70a24082e1649ba8bd7043619ae1d7.debugxG:l.shstrtab.note.gnu.property.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.gcc_except_table.init_array.fini_array.data.rel.ro.dynamic.got.plt.data.bss.gnu_debuglink�� ��$1���o��`;PP)C`,`,�CK���opplX���o�s�sPg�u�u 4qB���"{��v � � �@�@��P�P��`�`�c��ĘĘ
���M ���\�x�x�PT��R
�R
�,���
��
���
��
���
��
0 ��
�
��p�
p�
`��
�
���
��
h �
�
��
4<�
"

Zerion Mini Shell 1.0