%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/libreoffice/program/
Upload File :
Create Path :
Current File : //usr/lib/libreoffice/program/libsvgfilterlo.so

ELF>@@�
@8@0�0�����������������
��
��
8#&�
�
�
�����  ���$$S�td���  P�td���TTQ�tdR�td��
��
��
PPGNU�GNU���|q*s9�2�b����o3�$X�K�@@H������v���}��d�������z�X���|�C:�q5T@��k��?���HO�?�+�30y0:�-"D2�%�1�?���5A7@�(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%:R3MgA�#��:�8�;�.+6�~�;�8�6J74�3"AB��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���NA�.�<{c=�"i2�0�4�5�@�v;�(� �,�
B,�X/S"�8�h�>%1���- �5�?�*:~���:�@w6�0, "
�!��<>b�	�	�/5!�%S��=�"u�0�~%!5�
�![)S..C�
z>80e	y��8�(f?*-�>�A�v6=�0g*%�/u�:�
�$�+"�48� .4�-9.1�!�61I$�7u n$[�$�7��+	A\�@��1!ȑ
!��
S!���@��u! �)"P�FS6���!ؑ
�
!��&	! �
�!�� "��"���__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_ZN11GDIMetaFile5ScaleEdd_ZN11GDIMetaFile4MoveEll_ZN7MapModeC1ERKS__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	




			
			nB P&y�B�A �})�BdB0ui	�B���
�B
B0YQ��B�})	�B|BP����Bii
�Bui	
�B����BUB`h���By���Byѯ�Bt)�CӯkC
6B�QS�CPT�+CH&�	8CSS�@CF&�	ZCA&�	MCVQ�UCQT�bCC&�	oC�})�B%BTT�wCA&�	MCC&�	oC�})�B��
�i��
@iȋ
ؖ
Ћ
P	؋
p�
0K�
��
p��
�
�
�
P�
p �
K(�
�0�
@8�
�H�
 �
P�
�	X�
0`�
�Gh�
pp�
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�
���
����
��
��
����
`���
����
����
 �ȓ
��
Г
��ؓ
���
���
��
�
0��
���
��0�
��
8�
p�@�
��H�
��`�
��
h�
P�p�
p�x�
����
��
��
����
P���
p�Д
�
ؔ
���
@��
`���
П�
���
��
���
0� �
�i(�
�p0�
q8�
�@�
�iH�
�iP�
�i`�
�
h�
��p�
`�x�
����
����
 ���
�
��
����
����
����
���
pЕ
�
ؕ
0��
���
���
`q�
�
�
p��
���
�� �
 p0�
�
8�
P�@�
p�H�
��P�
��`�
�
h�
��p�
P�x�
p���
�p��
pp��
k��
����
��Ȗ
��Ж
��
�
 ��
��
��
P��
��
�
���
��
(�
��0�
�
@�
��
H�
�`�
�
��
��
��
���
p��
���
��
ȗ
��З
��ؗ
���
`�
 ��
 ��
��(�
0�0�
@�8�
`�@�
P�ؘ
p��
��
 �
И(�
�0�
0�8�
��@�
@�P�
��
X�
P�`�
�h�
 ���
��
��
����
����
�ș
��
Й
p�ؙ
0��
���
��
�
0��
 ��
��(�
��
0�
�8�
��@�
��`�
��h�
��
x�
����
�
��
X�
��
h�
К
��ؚ
p�
�
p�
�
�|��
@�
�| �
��(�
@�8�
p�
@�
~H�
`P�
�|X�
@�`�
�p�
p�
x�
�~��
p��
�|��
p�
��
`}��
P��
�|�
Ț
�
�|�
@��
�|�
��
p�
�� �
@�(�
0{0�
`8�
 @�
pP�
Ț
X�
~`�
`h�
�|p�
@�x�
���
Ț
��
�~��
p��
�|��
p|��
Ț
��
`}Ȝ
PМ
�|؜
@�
`�
0��
��
��
��ȫ
0�ث
���
����
0��
�� �
p�(�
��@�
p�H�
P�`�
��h�
H���
����
H���
p���
���
���
0��
��(�
@�8�
�H�
��`�
p�h�
`���
���
h���
���
h���
0�ȭ
���
0��
���
H��
�� �
H�(�
��@�
p�H�
�x�
���
0���
����
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����%F�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���%&�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���%>�fDU�H����H��H�5T�H��H�B�H��H��^����H��H�"�H��H�H�E�dH+%(uH�͠H�5��!��L���I��H�]�H�{�H����L9�u�H�E�dH+%(uL���X����H�S�H��H���L���8�H�H��PL������H�E�dH+%(uL��������H�E�dH+%(ur���H�E�dH+%(u+�����H��L����H�E�dH+%(u@H�����w�H�E�dH+%(u�����H��8���H���P�����I��D��?�����1�H�=:�H�u�I����H�=&����H��X���H�u�L��H�
<�H�E�I������L���3�H�E�dH+%(��H�5Q�H��L����H�5��L�����H��p���H��H���H��(����H��x����U�H��H�����H��h����H��0�����H�E�dH+%(uXH����H���H�=G��������(���L��H���i�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���4���H��H��8����H�}�������H�l��H�=H����c����!���L��H���b�L�������H��`����L�L���D�L���|�L����H�E�dH+%(ujH���
�H��h����(u=H�=جu���H�=ŬH�0��H�5��H��h���H����#�I��uL������0��֘�f���I��H�;L����L����S����L���^�H�����H����H�������r���H�������F�H��H����L����H�������H��0����L���r�L���H��h���1�H��P H�E�dH+%(u4H�����H��(�����M���a���L������T�������Z�����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��=���S�H��p���H��I��H��PH�=��T���H������H��0���L��H�
\�H��0���I��������L�����H��������H�E�dH+%(uH�5�H���L���?��j�H�=j�u��f�H�=W�H�0�7�H�5H�H����L�����������H���q��H�����H��`�����I�EL��PH�������H��p���H��P���H��x���H9������H��������1��L�����H�E�dH+%(u�P���H������L���������H��p���H��I��H��PH�=X����H������H��0���L��H�
�H��0���I���\��g�L����H�������#�H�E�dH+%(u1H�5��H�V�L�����I�~���L�������������L��H����H���������L�����H��������H��������������H������H����H�������L��I��uH����-�陨��L��H����H�������M�L���U����H����H��P��H��������}�E1�H�=*�L��p���H��teH�=����H������H��0���H��H�
�H��0���I�������L����H�E�dH+%(u0H�58�H���H���q�H�ʛ�H�=���i������L��I�����H��L���x�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�=���x��f�������L��I�����H��L�����H��0��������L��L���������H��p��������L��L���u�����H�����������H��p����c�H��L���X�H�����H��0������L���=�H��p����1�H�����������H�}���H�E�dH+%(uH��������H�}��A�L����H�E�dH+%(uH������}��H�}����H�}���H�E�dH+%(uH�����N�U�H����H���H�5�H��H�ДH��H����UH��������}���H���0������H����H���'���Q��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�������UH�ԋH��AUATSH��VH�H�@��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���L��H�E�dH+%(u1H�����H�}����H�}����H�E�dH+%(u
H�����g���b��I��$���L�����H�����H�}���H�}���H�E�dH+%(uHH���[�H�}��b�H�}��Y�H�}��P�H�}��G�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���f��!��H�������e�����H������R�H�� ����F�H�E�dH+%(uOH����H������#�H�� �����H��������H��X����O��H�E�dH+%(u
H�������������H��H���������H����������H�E�dH+%(u�����T��H�E�dH+%(u����L��H������*��H�� ����n��H�� ����`�H�������T��x���H�� ����C�H�������7�����H������&�H�� �����H��������H�������R���H��������H�� ��������H��������H�� �������H�������H�� ������H�������H�� ������{���H�� ������j���H�5m�H���e��H�E�dH+%(uL���N��	���H�;�P�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���;��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���0�1�H�}��0H�5�L�u��u�H�U�H�}����H�E�AWH�u�AUE1�E1�1�j1�H��Pjj���H��0H�����H�}��i�H�}��`�H�}���������H�U��H��1�H�H����H�}��+��H�}��"��H�}����L��H�o��j��H�c��=�H��h����\�*��H�8H���o��=О�7�Þ��H�=��uH���H�=���4��H�=l�uH����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�5K��L��H�E����1ɺ4L��H�M�H�5��1���AUL�M�1�jH�M�A�L��j�j�	�H�� L���M��H�}�����H�}����H�}����1�1�H�}�H�u��-H�5��U�1�1ɺ(H�}�H�5��H�}��8�E1�1ɺ!L���H��`���L�E�L����H�U�E1�1��~E�H�5��L��L�M�H�U��E�)E����E1�1ɺ0H�5A�L��L�U����AUL�M�1�jH�M�A�L��j�j��H�� L���T��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���1������H�}��3��H�}��J�H�E�dH+%(uH��������H�}����L����H�}���H�E�dH+%(uUH������H�}�������H�}�������H�}�����H�}�����H�}�����H�}�����H�}������;���H����~��H�������H������f��H���������H�E�dH+%(uH���3��H������7�������H������$��H�� ������H�E�dH+%(uH���������H�� ��������y����H�}�����H�}�����H�E�dH+%(u=H�����H�}����H�}��_�H��p�������H�E�dH+%(u
H���|���7���2��H�E�dH+%(�����H������^��H������R��L�����H���������H�������2��H�������֥H�E�dH+%(u5H�����H������H���������H�E�dH+%(�������H���H���������H���������e���H������H���������P���H��������H��������L�������+���H������i��H������]����H����O��H������C������H����2��H������&�����H������������H������H�����������H�������H������������H���������H���������g���H��������H���������J����L���o���L���H������~��H����r���/���H������a��H������U��������H�E�dH+%(�V�����H������'��H�����������H�E�dH+%(uS�d�H��p������H����������H�� �������H�E�dH+%(uH�����H��p���������d���_��H�E�dH+%(u'����H���H�E�dH+%(u����)���$��H�߾L���D���u���H�������S��H��p����G���X���H��(����6��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�����L���B��H������F�H��`�����H��X�����H��P����"�H��H����H��8���H�����H�����輣I�L���PH������7�H�����[��H�E�dH+%(�NH���������H�5ԷH�����������I��I�L�u�L���PH�=s����H�����H��L��H�
��H��h���I���c��n�L�����H���.�H�E�dH+%(��H�5��H�]�L������H�5>�H���6����L��L�u�L��I��I��PI�}�S�H��(���H��L��H�
��H�E�I��������L�����H����H�E�dH+%(��H�5�H��L���E��H�}����H��8���H��������H�}����H��(���������L��H�����L���;������H�}��m��H�}��d��H�E�dH+%(uH���=�����������L��I���4��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|��w���$���L�����H��L�����������L��I���Y��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���=����6����L��I���w��H��L����L���$�������H������H������H��L����������@��1�H�U�I����H�8���H��(���H��L��H�
�H�E�I��������L������H�E�dH+%(u#H�5�H�нL���H��L���0��A����f����H��� ����U����H�������H��0������H���������H�������$�H�������h��H�E�dH+%(uCH���A��H������E��H���
�L��L���B�L���J�L���r���H�����������H���������H���{���H�E�dH+%(u"�I�H����������H��0��������J����u��H���m��H�E�dH+%(uL������Q���H�E�dH+%(ub���H��L������L������H��8����m��L���e���H��`����W��H��0����K��H�E�dH+%(uH���$����������H��`���������H���H��`������널H�}����L���C��H�E�dH+%(u1H������H�}�����H�}�����H�E�dH+%(u
H������^���Y���H�}����H��x������L�����H�}�H�E�H�u�H9�t	H���Q��H����H���]��H�E�dH+%(u(L���6��H�}��=��H�E�dH+%(u
H�������������H�}����H�}��
��H�E�dH+%(uOH������H�}���H��I��u����G���[�H��H��X������H�E�dH+%(u
H������W���R��L���J�H�}�����H�}������H�� ����x��H��`����l��H��X����`��H��P����T��H��H����h�H�E�dH+%(uEH���!��L���y��H��x������H��p������H��h���赙H������I���|������H�� �������H����H��(���H��(���艐�X���L�������H���������=���H���������8���L�������n���H�� ������H�����s�����H������b���@���H������Q���#���H������@��H����T�H�������(�����L��������H�� ����
������H��������H�� �������H��(����1���H����������O���H���������H�� �������9���L���Y�H����H��(������H��������H�� ����~��H����H��(������H������_��H�� ����S���a���L������H���H�� ����5����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������:��H�}����H�}��x��H�}����H�}��d��H�}��[���L������H�}��F��H�}��=���H��x����/��L���w������H��0���������R���H�}����H�}������H�}�����H�}���������H�}�����H�}����������H�}����H��@������H��`������H�E�dH+%(uH���~��H�}����H�}��|����%��H��h����i��H�}��`��H��P�������H��h����F��H�}��=����H��h����/��H�}��&����H��h������H�}�����H��h������H�}�����L��讌�,���H��h�������H�}������o����H�}�����H������	��H��@������H��������H��������H�E�dH+%(uHH���n��H�}��u���H�}��j��H�}��a���H�}��V��H�}��M��H�E�dH+%(t�����H��(����}���H��H����!��H������e���H��@����	��H�������M���L��赋�O���H��H�������H�}���������H���������H��(�����������H��p����������H�}�L��8������H�}�����H�}�L��8����}���c���H��H����l��H�}�L��8����\���6���H�}�L��8����G������H�}���L��I��uA�K�������/�M��tI�~���L�����H�E�dH+%(u!H������H�E�dH+%(u������������HL��裿��H��p���M��L���������H�� �����H�ZbL��H��0������H������H������H����H���AH�{L�+H��tH��PH�߾L���+����ӾHL�������t���H��(����+��H��p���L���������H�	mH�������X���H��(��������H��(��������H��(���������_���tH�� �������H���������H��lI��L������H��������H��0������H�������L�����L9�p�����I�<$H��tH��P(I����H��p����R��H��(���L�������?��H�0lH����������H���H����1�H�����1�H����H���H�����H������H��h���H9�t	H��輽��H�U`L��L��H��������H��������H��������H���������H���H��tH��PH������H��P��H������H�����H)�H��uXH�����Y��H�����M��H�����葽��H�����腽��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������H�����w��1�H������H��p���H���������H��(����O�������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��(���������H��(����p�����H�����H�5M��H���H��(���I��L�������B��H�����H�� ���H�%iH�������t����H�������tL������H����������H�������H��p���H��PH������H��t�ƺH�E�dH+%(uH�����H�������c�����\���H����H��t��t�L���!t�L���7����H���y���L���!����`���H������`���[���L����H�E�dH+%(ugH���,��L����sH����������<���L���˹����H������H��t�xsE1�H�}��L��L�����E��t�L������A���舼��H���������H����H������H������貌H�����������H����H���}����r�s���L���s���H�E�dH+%(u���������L���hsH�E�dH+%(uH���1��������H��H�}��+���H�}��"���H�}�����H�E�dH+%(uH����H�E�dH+%(t$螻��H��p���肋H��h�����豸����,��L��蝸��H������L��臸��H������H�5��L������H��P������H�������H��������H������I���rH�������@��H���������H�������sH�E�dH+%(uxL������H�������ŷ��H������蹷��L�������H����q��H��P���H��t�Pq�H��P����R��L���ڼ��H��L���?��H��@���賿����\���H��@���蠿���H��8���H��t��p�H�������/����q���H��@����n����`����XL���<����N���H�������[����=���H��P���H���-����p�#���H�������0���������!���H��H�_mH��H�H�E�dH+%(ubH�
mH�5Cm�^���L��H��0���A����H��(���I��A��0赾��H�� ���I�覾��I9��A���I��0L���qp���:�����H�}�I��A��TpH��`����HpH���@pH��@����T���H��8����H���H��������n���H�����H�������H��P���L���o����H�}�����H�}���H�}���H�}��
�H�E�dH+%(uH���þ���~���H�}�H�5��讳��H�}�赽���H�}��j��H�}��_�H�E�dH+%(uH���x����3����� L���U���L��荈H�}���H�E�dH+%(u$H���=���H�}��D���H�}��[�L���Co���ܷ��H�}��#���봾XL�����L������L����L��蚇H�E�dH+%(uH���ӽ��L���w����H�����{������L�cXM��u1�H�CX�"���E1��KGL�����L���u����֐E1�H��觳��L�cXM��uc1�H�CX���E1��NH������?wH��������L���;���L�����H������׆H�E�dH+%(uH�������˶��L���c����L��������H���E1��a���E1��Y�����H��H���������L��蛿���{���H��0����(u�H�=�yu��e���H�=nyH�0�6���H�5_yH��0���H�q��̿���L���B���H������F�����H��(����ս��H����������c���E1������B���H��H��iH��H�H�E�dH+%(uH�+iH�5di����誵��H�E�dH+%(ua�H��L��设��H�}�M���Һ��M��t
I�EL��P0H�}��z�H�E�dH+%(uH��蓻��H�}�H��tH��PM����:����5�����H��H�E�H�E��H��L���Y���H�%H��H����S���H��L���8���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���u���H�����1�����S���H�����6���H��0���H�������'����>��t�����H�������؃���H��p����'���H�� ���H����?���H�}������I���H��p������H��(���H�������L��菰��H������胰��L���{���H��0���H���������L���`���H�������T���H��0���H�������r����H�����脸��H�������x���L�����H�E�dH+%(uH���I���H������M��������H������:����H�������,���H������ ���릿�$���H�-fH�5ffH��H�TfH��H��p���H�;���L���и��H�}��׷��H�E�dH+%(uH��谸���k����H�}��a�H�}��X�H�E�dH+%(uAH��聸��H�}�舷��H�}�H��tH��PH�}��p���H�}��G�H�E�dH+%(t�����H��P���� �"���H�E�dH+%(t���H�}��(����H���������H����������L���v���H���������H���������H��0����2���H��X����V���H��������H������辶��H��x���貶��H��8������H�E�dH+%(��H���{���L���3�H�������'�H�E�dH+%(�H���L���H�������P���H������D����9���H�������3���H�������'���L��蟿������H����������'���� L���ܭ���-���L��蟭������蕰��H������ٵ������H������ȵ�����H�����践��H������諵�����H�����蚵�����H������艵��H�������}���L������j���H������d����Y����
���L���Ҽ��H�E�dH+%(uH���+������U�H���8���H�AcH�5zcH��H�hcH��H�脵��UH��SH��P�F���ZH�߾[]�Ƭ��UH��ATSH�� dH�%(H�E�1���r����L�%�rL����������1�1�H�5�l�!H�}�H�E�H�]��F���1ҿH�U��6���H�U�E1�E1�H��H������H���Ե��H�}�軳���衪��1�H�UؾH�H��H��舶��H�}�����H�XrH�E�dH+%(uH�� L��[A\]�Y���H�E�dH+%(t蕮��H�� [A\]ÿ���H��H� bH��H�H�E�dH+%(uH��aH�5b�����J�����H�}�H��芳��H�E�dH+%(uH���c�������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�脺��H�U��L������1�H�}��0H�5�mL�u��X���H�U�H�}�����H�E�AWH�u�AUE1�E1�1�j1�H��Pjj衫��H��0H���ճ��H�}��L���H�}��C���H�}�誱���萨��H�U��H��1�H�H���w���H�}�����H�}�����H�}����L��H�Rq�M���H�Fq�=�qH��h����\�
���H�8H���R����=�q�7��q����H�=�quH�m�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���0���H�}�觰��H�}�螰��H�}�蕰��1�1�H�}�H�u��-H�5�k�8���1�1ɺ(H�}�H�5dbH�}�����E1�1ɺ!L��hH��`���L�E�L�����H�U�E1�1��~E�H�5��L��L�M�H�U��E�)E��ŷ��E1�1ɺ0H�5$kL��L�U�訷��AUL�M�1�jH�M�A�L��j�j��H�� L���7���H�}�讯��H�}�襯��H�}�蜯��H�}�蓯��H�}�芯��H��x������H�;覮��H�E�dH+%(t����H��h���H�e�[A\A]A^A_]�H��x����@���H�����H�E�dH+%(uL�������̩��H�E�dH+%(u����賩����H�}�H����H�}����H�E�dH+%(uH���ï���~���H�E�dH+%(ui���H�����议��H������袮��H��p���uGH��h���輤��H��`����Ц��H�E�dH+%(uH���Y���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�����芭��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��艭���D���H�}�苬��H�}�肬��H�E�dH+%(uH���[������������L���3���H���;����H�}��A���H�E�dH+%(u(H������H�}��!���H�E�dH+%(u
H�����赦��谦��H��8�����H��0������H�E�dH+%(u$H�����H��8����ū����H��8���跫����`���H�}�觫��H�E�dH+%(uH��耬���;����H��8����~���H�E�dH+%(uH���W�������H��0����V���H��8����J���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��蓫���N����I����L�����H�E�dH+%(uH���i����$���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��赪���p���H������贩��H����訩��H�E�dH+%(��H���}���H����聩��H��p����u���H��8���蹡��H�E�dH+%(uH���B������H�����A���H��x����5���H��`����y����H����������H���������H���������H������C���L��蛬���q���董���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+%(u
H�����襢��蠢��H��������H�E�dH+%(u+H��轨��H��������H�E�dH+%(uXH��蚨���U���H�����虧��H�E�dH+%(u+H���r���H������v���H�E�dH+%(uH���O����
�����������H�� ����D���H�E�dH+%(u+H������H�� ����!���H�E�dH+%(uXH�����赡��H�� ������H�E�dH+%(u+H���ҧ��H�� ����֦��H�E�dH+%(uH��诧���j����e����`���H��p���褦��H�E�dH+%(u+H���}���H��p���聦��H�E�dH+%(u
H���Z�����������H��p����T���H�E�dH+%(u+H���-���H��p����1���H�E�dH+%(uXH���
����Š��H��p����	���H�E�dH+%(u+H�����H��p������H�E�dH+%(uH��迦���z����u����p���H�}�跥��H�}�讥��L������H�E�dH+%(uH�������:���H��P����~���H��������H�E�dH+%(uH���K���H��P����O��������H��P����<����H��P����.����H��P���� ���H��8�������H��@��������H��P�������w����H��8������H��`����ܤ��L���$���H��0����Ȥ��H�E�dH+%(uH��补��L��������R���H��x���薤��H��p���芤��H�E�dH+%(uH���c����L���F����������H�E�dH+%(u5����H�}�H���:���H�}��1���H�E�dH+%(u
H���
����Ş�����H�E�dH+%(u���觞��H�}����H�E�dH+%(uH���Ǥ��肞��H�kMH��H���L��訤��H�H��PL���w���H�E�dH+%(uL��耤���;����H������~���L��覙��H�����躛��H��`����^���H�� ���袛��H�E�dH+%(uH���+������H������Z5H��(����N5H��0����b����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���o���L����H�E�dH+%(tI������Y���H���L����H�E�dH+%(�K����Ͽ�-���H��1�H�E��j���H�5@PH��H���y�����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���l���H�E�dH+%(����H�5�OH�K�L������L��H���4���L�����L����n�%�����H����H�}��
���H�}�H��tH��P�L����nH�}��nH��8����H��p�����H��h����3H��`����;3H�E�dH+%(uH��蔡��H�}�蛠����D���H�}�苠���H�}�耠���H��X���L���_�����u���L�m�L��I��I�E�PI�?�|���H��P���L��L��H�
�]H�E�I����A�L������L���ǘH�E�dH+%(��H�55NH���L���n����L�����H�}��x2����H��X���L��贕����ʛ��L�m�L��I��I�E�PH�=`�ͪ��H��P���L��L��H�
	]H�E�I���M���L���p���L����H�E�dH+%(uTH�5�M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�������3�����L��I���t���L����H��L���!����q�����I������H���\�������I��H���3���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�}��v��������L��H���b���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��腛��L���-�H�E�dH+%(u"H�5�IH�`�L���؛����H������������B������]���L���ݓ�a�����.���I���"���L��L��H���跓H�}����H�������H��p������H��h����(tmH��`����-H��X����-H��P����դL���M-H������H��8���赤H�E�dH+%(u\H���n���H�}�L��H����n����H�=Xu�����H�=XH�0���H��(���H�5�WH��h��������Q����Ք��H�}�����H�}�����H����'�H��x���L��H��������H�}����H�� ����L��H����
���H�� ���H�5�{諏��H�E�dH+%(uH��蔚���O���H��(���H�� ����|���H�}�胙���H�}��x����W����H�}��i���H�}��`���H�}��W���H�E�dH+%(uZH���0����L������H�E�dH+%(u1H������H�}�����H�}��
���H�E�dH+%(uH�����螓��虓��蔓���L��跐��H�E�dH+%(u+H��谙��H��@���贘��H�E�dH+%(u&H��荙���H���H�E�dH+%(u�N��/����*���H�������n���H�������b���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��耘��H��p���脗��H�������x�����!�������H�������`���H�����褏���l���H�������C���H����臏����H�������)���H��(�������H�� �������L���y����ĐL��M���{���H��L������H���ܖ��H���Ж��H����Ė��H���踖��L����9L���2H���蜖��H�{xH��t��H�{pH��t�|�H�{hH��t�n�H�{P�	)H�{H�0dH�{@��(H�{8�dH�{0�E���H�{(�(H�{��L�������H��0L���藝��H�� 苝��H�����H����H�����H����ە��H����ϕ��L���9L����1H���賕��H�{xH��t��H�{pH��t��H�{hH��t��H�{P� (H�{H�GcH�{@��'H�{8�5cH�{0�\���H�{(�'H�{�L���2���L��M���8H�{H��t�I�H�{H��t��H�E�dH+%(usL��������H�E�dH+%(u\�K���L��蓌��L�}�L��臌��H����{�H�}��r�H���H��t���L���)���L��M���^8�b����D����?���� L���b������I�����L��茋��H�C0H�{(H�4��7���1�H�K(H�K0H�E�dH+%(u虘�������I��蘗������H�}��ɯH��轋��H���豯H���襂H���H��t����H�{x�[���H�{(�7H�{H��t��H�{H��t���H�E�dH+%(uL��菔���J����}�t
H�}��E�����H�E�dH+%(uH���`��������L�����H�E�dH+%(uH���;������L��莋��H��0���肋��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�i���H�}��p���H��x���脜H��p����X���H�E�dH+%(uH���1������H�}��%�L���x���H�������H�� ����`���H��X���H��h���H)�H��t�Չ��H��H����i���H�E�dH+%(uH���’��H�E�dH+%(t[�n���H��0���貑��H�����覑��H���H���z���H��P�o���L���Ӊ����L�����H��x���蝇���L����-��H�������W����B�����龫H��0����=�������H��0����,�������H��0����������L���^������H��0�������F���L���`����r���H������ߐ��H��0����Ӑ�����H��0���������H��0���豐�����L���$���H�E�dH+%(uH���}����8���H��0����|���H��p����p���H�����d���H�������(u=H�=Nu�����H�=NH�0�Ԏ��H�5�MH������H�r�j���M��tI�(�\���L��贓���`L���ׇ��H�����H��u;H����������H������#���H�������w���H�E�dH+%(uH��蠐��蛇��T���H�E�dH+%(u)�Z��L��� �H��x���H���\����a��R���������H��H����������H������H���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����Z���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���襍���@����K����H�߾PL���j���H��@������H��0�����L��誓��H�E�dH+%(u3H���C���H��@����LJ��L������L���gH�E�dH+%(t��Ӈ��L��苃��H��@����?���H�E�dH+%(t���H�߾PL���΄��H��0�������H��(����F���H��8����:���H��8���H��H���H)�H��t菄��H���������H���������H��@���軂������H��@������H�������n���H�E�dH+%(�����.���L��辂���.���L���H�E�dH+%(��������H��@���蝓���H��x����_���L��跏��H�E�dH+%(���������L���g���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���n���H����������H��0����V���H��8����J���H��x������H��@����2���H�E�dH+%(uH��軋���v���H��0���躊���H��P���謊���H��P���螊���H��P���萊���H��P���肊���w���H��P����q���H��0����e����Z���H��P����T����I����H�E�dH+%(up���L���bH��L�����L��菀��H������c���H�������W���H��������H��������H�E�dH+%(u*H���Ȋ����H�����z���H�E�dH+%(u
����a����\���H��@����p���H�E�dH+%(u+H���y���H��X����}���H�E�dH+%(u
H���V������������L���/���H�E�dH+%(u H���(���H�}��/���M��t�L��������˃���L���€��L��躀��H�E�dH+%(uH�����L��蛀����蔃��H��謌��L��L��衍��L���	���H�E�dH+%(uH��袉���]���H�H�#kH��H�@H9�u肀�����f.�f�H�=FH�
FH9�tH��6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�5M6H��SH��H��H��F���H��H�]��Ðff.����H��H����f���U1ɺ"H�5%6H��AUI��ATL�e�SL��H��(dH�%(H�E�1�H�E��ێ��H�}�1ɺ"H�5	6H�E�輎��H�}�1ɺ+H�56H�E�蝎��H�5�DH��tYL��h�L��L��芏�����ԓ��H�]�H�{�H��衆��L9�u�H�E�dH+%(u7H��(L��[A\A]]����.���H�=DH�0���H�5D��������H��H����f�U1ɺ H�5�5H��AWAVH�����AUATSH��dH�%(H�E�1�HDž���踍��H�����1ɺH�5
SHDž���蓍��H����1ɺH�5�RHDž���n���H����1ɺH�5oQHDž���I���H���1ɺH�5OQHDž��$���H������1ɺH�5�[HDž�������H�����1ɺH�5LQHDž����ڌ���;C����L��4L�����L�� ���H��(���L��@���L��1ɺ L��HDž���苌��1ɺL��H�5�PHDž ����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�����0z��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�=9AL���y~���������L�z2H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž����v���1ɺL��H�5�NHDž���HDž����J���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�AbDž8���H��0����+���H������O���H������3�����x��H������H�H��H��������H��(���苁��H�� �������H������s���H������g���H�����L��H��?豀��L�������]�����{�����ff.���UH��ATL�&SH��M��t
I�$L��PH�{PL�cPH��tH�[A\]H�@��fD[A\]�ff.����Wz�����U1ɺ H�5m/H��SH��H��H��f���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���sv��M��t5L���T���fDI�} M�e�s~���`L���Fv��M��t�M���0���L�u�I�~ I�^�H~���`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���u��H��t	H�]��.���L�}�I� I�_�}���`L���]u��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���1v����t�1ɺL�m�HDž���H�5H*H������T����HDž���L������8~��f�1ɺ3H�H�����)E�H�5 *)E�)E�H��P���H�E�HDž�����H������L���}|��1�H�� ����1H�5*HDž ���踁��H�� ���H�}���C|��1�H��(����1H�5*HDž(����~���H��(���H�}���	|��1�H��0����:H�5*HDž0����D���H��0���H�}����{��1�H��8����=H�5
*HDž8����
���H��8���H�}���{��H��@���1ɺ:H��H�5
*HDž@����̀��H��@���H�}���X{��H��H���1ɺ=H��H�5*HDžH���萀��H��H���H�}���{��H��P���1�1�H��E1�E1�L��AUH�����jPjj��q��H��0L���z��H�}��y���H�}��p���H�}��g���H�}��^���H�}��U���H�}��L���H�}��C���H������w����n��H������H�H��I���oz��H��H����x��H��@����w��H��8�����w��H��0�����w��H��(�����w��H�� �����w��H������w��H������w��H��L�%�5�w���=�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����`~��H��8���1�H�����#H�5�(HDž@���H�E��0~��H����1ɺ3H�5#&HDžH����~��H�M�1ҾH�����L��@���A�L��QH��H���jjj�F��H�� L���w��H��H����u��H��@�����u��H��8�����u��H������1ɺ
H�5�AHDž�����}��H�����1ɺH�5�BHDž����\}��H�����1��~����D�-�UI��H�5�A������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ž����|��H�� ���1�H�5P&HDž ���I�Ӻ(L��L�������N|��H��(���1�L��I�к*HDž(���L��P���L��L�������|��H��0���1�H�5I&HDž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�#HDžH����>{��AVL��@���1�jH��H���E1�L������j�|��H�� L����t��H��H����:s��H��@����.s��H��8����"s��H��0����s��H��(����
s��H�� ����r��H�������r��H�������r��H�������r��H�������r��H��������r��H������1ɺH�5�>HDž����]z��H������1ɺH�5�?HDž ����8z��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�EH1��~�(���H��H����HDž@���H��`�����0���)�P����^y��H����1ɺ1H�5�!HDžH����9y��AVL��@���1�jA��L�����H��H���j�zz��H�� L���r��H��H����2q��H��@����&q��H��8����q��H��0����q��H��(����q��H�� ����p��H�������p��H������1ɺ
H�5�<HDž����x��H������1ɺH�5�=HDž����`x��H������1��~�����	H�5�<fD�m������E�E�HDž����x��H��"1�H������H�ƺ*HDž �����w��H������1��~� ����+H�5�!fD�m������E�E�HDž(����w��H������1ɺ(H�5�!HDž0����w��H�����1�H�����HDž8����!�fw��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���p��H��H�����n��H��@�����n��H��8�����n��H��0�����n��H��(�����n��H�� ����n��H������n��H������n��H������n��H������1ɺ
H�5�:HDž����/v��H������1ɺH�5�;HDž����
v��H������1��~�����	H�5d:fD�m������E�E�HDž�����u��H�W 1�H������H�ƺ*HDž ����u��H������1��~� ����+H�51fD�m������E�E�HDž(����Zu��H������1ɺ(H�5�HDž0����5u��H�����1�H�����HDž8����!�u��H��8���1��~�(���H�����H�5T9HDž@����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����l��H��0����zl��H��(����nl��H�� ����bl��H������Vl��H������Jl��H������>l��H������1ɺH�5=8HDž�����s��H������1ɺH�5.9HDž����s��H������1��~�����	H�58fD�m������E�E�HDž����ps��H�11�H������H�ƺ*HDž ����Hs��H������1��~� ����+H�5�fD�m������E�E�HDž(����s��H������1ɺ(H�5/HDž0�����r��H�����1�H�����HDž8����!�r��H��8���1��~�(���H����H�57HDž@����0���H��`����)�P����qr��H����1ɺ:H�5�HDžH����Lr��AVL��@���1�jH��H���E1�L������j�s��H�� L����k��H��H����Hj��H��@����<j��H��8����0j��H��0����$j��H��(����j��H�� ����j��H������j��H�������i��H�������i��H������1ɺH�5�5HDž����q��H������1ɺH�5�6HDž����^q��H������1��~�����	H�5�5fD�m������E�E�HDž����q��H��1�H������H�ƺ*HDž �����p��H������1��~� ����+H�5�fD�m������E�E�HDž(����p��H������1ɺ(H�5�HDž0����p��H�����1�H�����HDž8����!�dp��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���~i��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���Yh��H��H����=f����#]��H��@����H�H��I���i��H��@����f��L��L�-�$��e���e�DH�y�H�==%�b����L��H�=�$��b���X��H���H�=�$�b����H���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 �a�����I���o��ff.���UH��AUATSH����H��dH�%(H�E�1��CX��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����KY��L��H���A�W8��x���?tI�L���P0�F���fDHcSH�5H9�HF�H��8���H����H�
BL��L���\i�����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���bf����L���@d��H�5�D�{H����H�
�@L��L���h������l��H�CD��L��8���H��H���H�PL����`���CL���V���CH��8�����x6�Ck��L��H��������=b��H�=FH�0�]��H�57�4����
k��L��H��������X����b��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�=�Q��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��wU�����H�=�H�M���H���~���H�H��X���H��H��H�E��xtrH��X���H�5�:�N���F����H��$H�=|�U��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����{T��H��P��������R����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�5Z7AUL��`���ATL�e�SH��L��H��dH�%(H�E�1��9V��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�5Z��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�I5H�;H��nU��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�3H�;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�gQ��H�5�����H�7�H�=��0O���%���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����oL����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���nH��M��u�L��M��t<DM��M�$$M�nM��tL���0U���XL���3H���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���eG��M��u�H���H���1�H���SJ��H���H���Hǃ�Hǃ�H���H9�t	H���
G��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���\F��L��XM��t1M��M�$$I�}�`N��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���zE��I�|$H��tH��P�PL���]E��M��u�H��H��1�H���KH��H��H��8Hǃ HǃH��H9�t	H���E��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�D��H�{PH��tH��PH��H��H�[A\A]A^]�&I���
��t/H�
H�=�	H�0�uJ��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��SU���H��H��h���H�H��P(�S��H��x���H���&H����L��H�����L��0���H��p���L���
J��H��*HDž���H���pE��H��H��p����aE��H��p����wH���K��L����x���H��p���H��H�������ZH��p���I���`J��H���XJ��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���PA��H��x���tH��x����jK��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��\<��H��p���A���]E��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���e:��H����H��tH��PH�����H��tH��P�H������H���H9���!H������(uH�5�H����
H�����L���YH��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���9��H������H������H9�X����=H������H�=�L� ��M��t�I�$H��L��H��H��0����xu�L��@���H�5�$H��HDž@����8��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���17��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������nD��H��M���a���I�$L��H��H��0����x�5���H��@���H�5g"H��HDž@���H�������M6��H������I9�A��H��t	H�H��RM����������H�5"H��L��@���HDž@����5���K���f.�H����H�=��x<������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���g4��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��U3��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���M3��H������H��t	H�H��PH������H�����H��P���DH��@���H�5L��HDž@���H�������1��H�������3���@H�!��L��H�������u7��H����������f�H����H�=m��H7�����E1��@����E1��K����I�}�G��@����������P�����f�H�Y��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���E/��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����g@��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��M+��L������M���`���H��H���I�$H�����L��H��`���H�������PH�����H���7���H�H������H�51�H�� ���L�B(�HDžp���L�������<��H������H�� ���L������A��H��p�����tz�4��I�$�1�H������H�5�H�@(HDž���H�������A<��H������H������L��H��������H��p����x��H������L���7*��H������;4��H�����H���K���H��P�@���H�A��H�=��0���y���H���H�=8��{0���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����������(��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����0&��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�3��H�=?���+���v���H������H�=6�H��������H�2��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���|1��H�����H��H��`���H����6��jL���1�H��jA���H�
d
L���~/��[A^����E1�H�����H��t=H�KH�SH�H9��oH�R��8���C�P��S���iH�������7��H���H��tH��P0H����H��t	H�H��PH����� �E1����91��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����`����T.��A����`���D8�t5H��8�����D���d3����`���H��@���D��H�������G3��H��p���H���8*��H��H��`���I���6'��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�`����Y�H��H*��Y��
��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���o���$���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��(����k.��H������H�����L��(���A��H��p�����tx�&���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����"����i#��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�=���{ ���'���������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�5C�H�XHc@H�@H��L�<u�H��0I9�t,H�;�	u�H���	L���M����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���q��H�C�x�)H�}��G��tW�����������������f�1�H�E�dH+%(�8H����[A\A]A^A_]�f.�H���H�5 ��K����toAƄ$�L��L������H�}����8���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{��q����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��(�����H�� �s�����g�����H��H�S����H��@�C����H��8�3����H��0�#����H��(�����H�� ������w&�����H��H�c&����H�� �S&����H��@�C&����H��8�3&����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����g��������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���Q����t�H�&�L��H�t��'����p����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�������������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�������0����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���q����t�H�F�L��H����G��������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�A����H��H�������������d��@��H�=��H���t�f.�UH��H����H������H���]�f.�D��H�=��H���t�f.�UH��H�M��H���x��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�w��H�5���ff.���UH��SH��H��H�5y�H��t$H��L�z���1�1��a��H��H�]������6��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���Q����t�H�&�L��H�t��'����p����UH��ATSH��H��dH�%(H�E�1��8���t4H�55�H�����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��p��H�U�H�}�����H��H�E�E1�AVH�u�E1�1�j1�L��Pjj���H��0L������H�}��b��H�}��Y��H�}��������H�U��H�H��I�����H�}��"��H�}����H�}����H��L�%��a���=��H����`���D�#��H�8I���h���=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�5T�H�E�H�E����1�L��)H�5�H�E�����H�E�L�M�1�PH�M�A��H��x���L��jjj� ��H�� L���d��H�}�����H�}�����H�}�����H��h���1�H��p����!H�E��g��H�U�1�L��H�5��H�E�H�U���A��1�L��4H�5��H�E��#��L�M�H�M�1�H��x���A��L��Pjjj�h��H�� L�����H�}��#��H�}����H�}����H�}��x���4���L�=1�L�u�L��L�m��Y��L�2����?���L��1ɺ!L��L��p���H�E��y���H�E��g��H�U�E1�E1�H��L���=��L�����H�}����������H�U��H�H��H��x������H�}��J��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����0���L�e�HDžx������f�1�H�}�H��5)E�H�5��H�E�H�E�H�E�����H�U�L����p��1ɺ/L��H�5��H�E����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������H�}��j��H�}��a��H�}��X��H��x����������H��p����H�H��I�����H�}��
��H�}��
��H�}��	
��H��p������H��L�%���N���=?�L�5������f.��	��H�8I���P���=�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���6
��H�}����H�}����H�}����H��p���1ɺH�5��HDžp����6��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�}��x
��H�}��o
��H��x����c
��H��p����W
��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���9��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�}��p����V���H�U��H�H��H��P����7��H�}�����H��P���H��H�������?����^��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*�U��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���H���L��M�������L��P����
1�L��L�%�������E����fDH��H��L�����H���\����H��L�����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�}��}����c���H�UȾH�H��I���H��H�}�����H��L�%��0������� ����H���H���!���������H�}�1ɺ$H�E�H�5ϼ�J��H�E��������H�U�L�e�E1�E1�H����L��H����L������H�}��������H�U��H�H��I���x��H�}����L�%�H�E�dH+%(��H��8H��[A\A]]�C��L�%�L���A������V���1�H�}�L�mк!H�5�H�E��f
���H�E��T��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���1�����t�1�H�}�L�e�!H�5��H�E��Z	���H�E��H��H�U�E1�E1�H��L�����L������H�}���������H�UؾH�H��I�����H�}��/��H��L�%e�����$�������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����x��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���D�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�� ����1���H�� ����	���H��@����9���H�}����H��h���H����L��L��H�S�H�M�fIn�fHn�H���fHn�fHn�H��p���H���L��`���fHn�fHn�fIn�fl�fl�fl��P���H���hH���{)����)� ���)�@���)�P�����I������1ɺ*L��I��H�5�1�H��`����i��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����6���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�}��l���H��p����`���H�E�dH+%(�6���H�5��H��L�������I��I�������I��I�������I���*��H�
6�H��L�m�H��H��P��������I���H�}�����H��p�������L�����H������H�E�dH+%(�����L�����H��P�+�����H�E�dH+%(�l�������I�����I���EH�5ѧH�2�L��������I�������H��h����?���H��`����3���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�|$�u�I�|$�{����8L���N�H��u�I�FI�>1�H���C�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����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��}�H�u�H�M�I���(���DH��r�H��������H9�HF�H�U�H�<��H��������H9�HF�H�E�H�<��H�=���x���H���|�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���M�H��u�I�EI�}1�H���A�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���1�I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t������H���$�I�EI�D$(�V���H���Z�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�p�A�E1�1�H�
���L��A�F�5�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�w���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��w�H�u�H��H����H�H�}��H�E��x��H�}�H�5u���p�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�����{��������<�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���A�I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t������H���4�I�EI�D$(�f���H���j�H�����f���UH��AVI��AUATSL�oM�����M��M�mI�\$ H��t�H��H����H��u�I�D$I�|$1�H���z�I�|$I�D$@I�D$(I�D$ I�t$H9�t	H���;�I�|$�Q��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��V�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��V�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\]��L�e�H�wL����L���h�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�}��`�H�}��W�H�E�dH+%(uH��([A\A]]������H���`���ff.����UH��1�H��SH��H��H�5a�H����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���F�H���P H����f.�H��1�H��H��[A\]�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�5_�HDž��4�H������1ɺH�5ȺHDž������H�����1ɺH�5\�HDž�������K�����L���L�����L�� ���H��(���L��@���L��1ɺ L��HDž�����1ɺL��H�5ׯHDž ����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��������H�����H�����z�H�����n�H������b�H������V�H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=I�L������������L���H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž�����1ɺL��H�5��HDž���HDž����Z�1ɺ
L��H�����H�5q�HDž ���H��@����+�1ɺH��H�� ���H�5P�HDž(���H��H�����M��1�H��(���H�����L��0���H�����H�����H��P���H�Q�Dž8���H��0����;�H������_�H������C���)��H������H�H��H�������H��(�����H�� �����H�������H������w�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�B�H��SH��H��H�5!�H���H�1�H��tH�{@H�P@�w;rtH�]�����f��H9�t�H��H�����W��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���E��L��1�H��I���u��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���]��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�<�H��AUI��ATSH��H�H�@����I�]H�րI�EH��t-DI��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�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���w��H��L��H[A\A]]�`����UH��H��AUI��ATSH��H�H�@�Y��I�]H�FI�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�5��L��H�E��'�L��L���L����H�}��K��H�}��B��L��L���A�A�H�
S����I�|$pH�s@H��P8L���X��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�����H��t3I���-���@I�T$�(L��H�U��Z��H�U�H��t�I���!���H�}��(H�_�7��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�[�(�1��H��u�[L��A\]�@����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����f��H��8���H���f.�H��L���E��H�������f.���U1ɺH��AWAVL�u�AUI��L��ATI��H�5��SH�]�H��XdH�%(H�E�1�H�E��P��1ɺH��H�5��H�E��2��L��H�ھ��L�����H�}�L�}��R��H�}��I��L��H�E�����H�E�H�E�H��H�E����A�E@�tL�����A�E@����H�E�HcPH�E�Hc@L�|D���X��H�E�I��E����H���
L��H��L���H�E��j��H�}�������L��H��A�A�H�
Ÿ����H������H�}��}��H�}��t��H�}��k��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���L����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���a����t�H��x���1ɺ)HDžx���H�5�����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�h��H��0L�����H�}����H�}��z����`��H��x����H�H��I���B��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�5C�L�u�����L�}�H�E�����f�1�L��H��5)E�H�50�H�E�L�e�H�E����H�U�L����J��1�L���2H�51�H�E����H�U�H�}�����H��H�E�E1�AVH�u�E1�1�j1�L��Pjj����H��0L�����H�}��~��H�}��u��H�}����������H�U��H�H��I�����H�}��>��H�}��5��H�}��,��L��L�%r��}���g����L�-A�L�e�L��L�}��i��L�B��������L��1ɺ!L��L��`���H�E�����H�E��w��H�U�E1�E1�H��L���M��L�����H�}���������H�U��H�H��H��h�������H�}��Z��H��h���L��H������L��`��������k��H�8I������=�tI�>�?���m���f.�����*�����L�e�L�}�L�+�L�U�L��1ɺ!L��L��P���L��X���H�E�H�E��g��H�E�1�L��H�5��H�E�H�E��A��1�L���5H�5��H�E��#��H�E�L�M�1�PH�M�A�
�H��`���H�}�jjjH��h����\��H��h���H�� ���H�}����H�}��
��H�}����H��P���1�H��X����!H�E����H�U�1�L��H�5�H�E�H�U���y��1�L���2H�5�H�E��[��L�M�H�M�1�H��`���A��L��h���PL��jjj���H�� L������H�}��T��H�}��K��H�}��B��H�}��������H�=e�L�e����L�}�L�i����6���L��1ɺ!L��L��`���H�E�����H�E����H�U�E1�E1�H��L���t��L���<��H�}��#����	���H�U��H�H��H��h�������H�}����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���1����t�1�L�u�L�m��H�5�H��p���HDžp����P���L�e�HDžx����7��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�}���`��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�}����H�}����H�}��x��H��x���������½��H��p����H�H��I�����H�}��;��H�}��2��H�}��)��H��p������H��L�%��n���=_�L�5������f.��+��H�8I���p���=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���V��H�}�����H�}�����H�}����H��p���1ɺH�5��HDžp����V��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�59�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������H��p����w��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���Y��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�}������v���H�U��H�H��H��P����W��H�}�����H��P���H��H���8���?����~���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ž����q��H������L�����1�H�� ����1H�5�qHDž ����8��H�� ���H�}������1�H��(����1H�5�qHDž(������H��(���H�}�����1�H��0����:H�5�qHDž0�������H��0���H�}���O��1�H��8����=H�5�qHDž8������H��8���H�}�����H��@���1ɺ:H��H�5�qHDž@����M��H��@���H�}������H��H���1ɺ=H��H�5�qHDžH������H��H���H�}�����H��P���1�1�H��E1�E1�L��AUH�����jPjj�N���H��0L�����H�}����H�}�����H�}�����H�}�����H�}�����H�}�����H�}�����H������'�����
���H������H�H��I�����H��H���胿��H��@����w���H��8����k���H��0����_���H��(����S���H�� ����G���H������;���H������/���H��L�%}耾���=r}H�}�����@�C���H�8I������=J}tI�?�����d���f��2}�
}����H��@���H����H��H���H�����H��vH����H�=�|��H�=�|��H�=}L�5Ep��H�=7}�aH��8���H����1ɺ!H��H�����L���HDž�HDž8�������H��8���1�H�����#H�54pHDž@���H�E����H�����1ɺ3H�5�mHDžH������H�M�1ҾH�����L��@���A�L��QH��H���jjj����H�� L���
���H��H����~���H��@����r���H��8����f���H������1ɺ
H�5d�HDž�������H�����1ɺH�5V�HDž�������H�����1��~����D�-W�I��H�5�������L��L������E��E�fD�m�HDž������H�%�1�L�����H��L�ߺL������HDž����Q��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�������g��H����1�H�����HDž8����!�B��H��8���1��~�(����~����H����H�5��HDž@����0���H��p����� ���)�`���)�P�������H�����1ɺ1H�5kHDžH������AVL��@���1�jH��H���E1�L������j���H�� L���F���H��H���躺��H��@���论��H��8���袺��H��0���薺��H��(���芺��H�� ����~���H������r���H������f���H������Z���H������N���H�������B���H������1ɺH�5A�HDž�������H������1ɺH�52�HDž ������H������1��~� ����+H�5KkfD�m������E�E�HDž(����t���H������1ɺ(H�5�kHDž0����O���H����1�H�����HDž8����!�*���H��8���H�ŏ1��~�(���H��H����HDž@���H��`�����0���)�P�������H�����1ɺ1H�5AiHDžH������AVL��@���1�jA��L�����H��H���j���H�� L���>���H��H���貸��H��@���覸��H��8���蚸��H��0���莸��H��(���肸��H�� ����v���H������j���H������1ɺ
H�5h�HDž�������H������1ɺH�5Z�HDž������H������1��~�����	H�50�fD�m������E�E�HDž���蜿��H�-j1�H������H�ƺ*HDž ����t���H������1��~� ����+H�5ifD�m������E�E�HDž(����0���H������1ɺ(H�5[iHDž0�������H����1�H�����HDž8����!���H��8���1��~�(���H����H�5/�HDž@����0���H��`����)�P���蝾��H�����1ɺ:H�58gHDžH����x���AVL��@���1�jH��H���E1�L������j輿��H�� L������H��H����t���H��@����h���H��8����\���H��0����P���H��(����D���H�� ����8���H������,���H������ ���H���������H������1ɺ
H�5�HDž���诽��H������1ɺH�5�HDž���芽��H������1��~�����	H�5�fD�m������E�E�HDž����F���H��g1�H������H�ƺ*HDž �������H������1��~� ����+H�5�ffD�m������E�E�HDž(����ڼ��H������1ɺ(H�5gHDž0���赼��H����1�H�����HDž8����!萼��H��8���1��~�(���H�����H�5ԀHDž@����0���H��`���)�P����G���H�����1ɺ=H�5"eHDžH����"���AVL��@���1�jH��H���E1�L������j�f���H�� L��誵��H��H�������H��@�������H��8�������H��0������H��(������H�� ������H������ֳ��H������ʳ��H�����辳��H������1ɺH�5�HDž����Y���H������1ɺH�5��HDž����4���H������1��~�����	H�5�fD�m������E�E�HDž�����H��e1�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�����H�����1ɺ:H�5cHDžH����̹��AVL��@���1�jH��H���E1�L������j����H�� L���T���H��H����ȱ��H��@���輱��H��8���谱��H��0���褱��H��(���蘱��H�� ���茱��H�����耱��H������t���H������h���H������1ɺH�5g}HDž�������H������1ɺH�5X~HDž����޸��H������1��~�����	H�58}fD�m������E�E�HDž���蚸��H�[c1�H������H�ƺ*HDž ����r���H������1��~� ����+H�5bfD�m������E�E�HDž(����.���H������1ɺ(H�5YbHDž0����	���H����1�H�����HDž8����!���H��8���1��~�(���H�����H�5(|HDž@����0���H��`���)�P���蛷��H�����1ɺ=H�5�`HDžH����v���AVL��@���1�jH��H���E1�L������	j躸��H�� L�����H��H����r���H��@����f���H��8����Z���H��0����N���H��(����B���H�� ����6���H������*���H���������H���������H����v�����L�%1mL���a���H��@���H����H��H���H�����H�
gH��������H����1ɺ!H�5�fHDž@����Z����HDžH����E���E1�E1��L�����H�H��@���L������L���ٯ��H��H���轭���裤��H��@����H�H��I��腰��H��@�������L��L�-Ol�j����e�DH��_�H�=�l�x�����L��H�=al�\����X��H�Y_�H�=l�8�����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���}���L�cL�kM��tL��踱���XL��軤��H��H��[A\A]]���H���������UH��SH��H�^H���G���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�5�yL������+���1ɺL��H�5tyL����HDž�������L��L���H�����H������$���H�� �������I�v`L��A�A�H�
0y����T���H���HDž�L�=yH��H������\���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�����e0H������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������P����,���H�����H��L������H�����+���L������H����H����s�����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�5YvHDž ����ɯ��H�����1ɺI��H��H�5vHDž���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�������p����E�H�I�L��H�������X���H������L������H���������CM�}`1ɺH��H�5�wHDž ����f���H�ھ��L��H�������?���H�� ���胦��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ž����X���H�پ��L��H�������1���H������u���H�� ����i���I�t$@H�������
M�}`���H������H��HDž ����‰E�营��H������1ɺH�5HvHDž����ˬ��H�پ��L��H������褯��H��������H�� ����ܤ��I�t$HH�������
M�}`�r���H������H��HDž ����‰E�����H������1ɺH�5�rHDž����>���H�پ��L��H����������H������[���H�� ����O���1ɺH��H�5�rM�}`HDž ������H������1ɺH�5�rHDž����ū��H�پ��L��H������螮��H��������H�� ����֣��I�u`���H������A�A�H�
5r����M�vL������HDž����L��� ���H������I�V(I�t$@H��H�������a���H�����I�V0I�t$HH��H�������B���H�����������1�蚨��H������fI~����1���}����
����h���fIn�胟����t�
o���h����j������tH������薥��H��A�.1�1�A��H��HDž ���jjj����L�� ���H�� M���	H�������D���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���v���L���n���H������D�@E��tDM�u`1ɺ	H��H�5�oHDž ������L��H�ھ��L���֫��H�� �������A�t$(H�������
�t���D�p	�E�D���e���H������I��E����M�}`1ɺ
H��H�5ioL������HDž ����v���L��H�ھ��L���S���H�� ���藠��I�u`H��A�A�H�
$o����ӝ��H��軘��H�������_���H�������S���H������藘��I�T$ A�L$(L���rH���.��M�}`1ɺH�5qH��HDž ����ɧ��L��H�ھ��L��親��H�� ������I�u`���H������A�A�H�
�l�"���H������D�xA��D������H������I��E���PL�5<n1�H��M�}`�L��HDž ����0���H������1ɺH�5.vHDž�������H�پ��L��H���������H������(���H�� �������L��1ɺH��M�}`HDž ���軦��L������1ɺH�5zHDž���L��蓦��H��L��L��L�������i���H�����譞��H�� ���衞��L������I�t$P�
M�u`L���4���L��H��L�������‰E�HDž ����ž��L������1ɺH�5zoHDž���L�����H��L�����L���ר��H���������H�� �������I�t$XH�������
M�u`襝��H������H��HDž ����‰E��6���1ɺL��H�5$lHDž����u���H��L�����L���R���H�����薝��H�� ���芝��M�u`1ɺH�5%lH��HDž ����%���1ɺL��H�5lHDž�������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������聜��H�������u���L������I��H9�x�������H��X���衔�����@1�H�
Qx�f�fA�TFH��H��u�H������I�NHcFH�H���gH��)1�f�E�~f�H�T���@H�jH�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��`����B���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�������a���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��@���I�4$H�}�H��PH�}�H�Uf�wH���f������tA1ɺH�5AkH���+���H�}��b���H�E�dH+%(��H��H��[A\]�H�}�H�f�wH���������t1ɺH�5�kH���ɞ����H�}�H��e�wH���Đ�����t1ɺH�5�eH��艞���Y���@H�}�H��e�wH��脐�����t1ɺ	H�5�eH���I�������@H�E�H��e�pH�x�D������t1ɺH�5�eH���	�������H�E�H�ne�pH�x�������t1ɺH�5heH���͝�����H�E�H�Re�pH�x�̏�����t1ɺH�5NeH��葝���a���H�E�H�:e�pH�x萏����t 1ɺ
H�59eH���U����%����;���H�E�H�"e�pH�x�O�����t1ɺ	H�5eH���������H�E�H�e�pH�x������t1ɺH�5eH���؜�����H�u�H���W��������I��鞳��fD��H�>t&UH��SH��H��H�`衖��H��H�]��H������Ðff.���UH��SH��H��H�`�g���H��H�]��H���7����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���F���M��t�I�$H�}�L��PH�u��_� L��H�E�赍��H�E�H�;H��v���H�}��m���I�$L��P�Z���fDH��i�H�=MS�Џ��M�����H�H��豐�������Ǎ����I���ױ���f.���UH��AWAVAUA��ATSH��H��pH�����H��t=I��A�L��xH��t?�(�e���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�~���L��H��I���@���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��S���H��H����H�L�m�H��L��H�E��xt~H�5Wr��L���O���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����P�����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��J���H�U�H�E�L��L���H�E�H�5_o��L��xtV�Q���H�}��X���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���o���H�E�L��L��H��H��H�E���H�E��x�xH�5qm��H���i���H�}��p���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��f���H�U�L��L��H����H�E��x��H�5ol��H���g���H�}��n���1ɺL��H�5�ZH�E�����H�U�L��L��H���^�H�E��x�PH�5l��H������H�}�����1ɺL��H�5ZZH�E�躑��H�U�L��L��H����H�E��x��H�5�k��H�����H�}��‰��1ɺL��H�5ZH�E��d���H�U�L��L��H����H�E��x�DH�5mk��H���e��H�}��l���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���A~��H�}��H����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�
T����<���H�����HDž���H��H�������K���M���M���I�_H��H�������5���H����1�H������H��H����H�����L��@����ƺ
L����~��D�h�E�D���}��I��E����H�����L������)���L������1�H�������H�5
VHDž ���L�``L��趌��H������L��L��菏��H�� ����ӄ��M�g�
��H��M��t,I�$L��L���H�� ����xt9H������H�5�f���z��H�����芄��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���y��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������耀��jL��L������jH������A�����H������H�������R	H�����XZ贂��H�L��H��H�������P I�$L��PM�?M�������fDH�HH��PDf�H��H��f�A�H��PH9�u�HcE�I�NH�H��u{H��)E1�f�8E�nfD�@���fDHDž����1�1�E1�����f�L�k8H�C@����H��RH�=�A�h~��H�5�A���@H��L��H�������y��H������H���d���I�$L��P�����C|����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���芈��L��L��L���g���H�}�讀��H�}�襀��H�s`L��A�A�H�
QQ�����}��H�C`H�=M@H�Xp��H��t+H�H�4@H��L��H�E��xt=H�53b��L���+v��H��p����x��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��H��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?�{������
z����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���|t��M�l$`HDž����HDž����1ɺH��HDž���H�5"OL����	���1ɺL��H�5	OHDž����H��L��L���ň��H����	~��H������}��M�l$`A��ftm1ɺH�5�NH��HDž���荅��1ɺL��H�5�NHDž��l���H��L��L���I���H����}��H������}��L������HDž����L���z��A��$���A��$��H�E��������
L��0���H��H�������T����������
L���E��>���HcUĉ�t���H�H�L��H�������_u��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�5 MHDž����ك��1ɺL��H�5MHDž�踃��H��L��L��蕆��H�����{��H�������{��M�l$`1�H�ߺH�5�LHDž����g���1ɺ	L��H�5�LHDž��F���H��L��L���#���H����g{��H������[{��H��M�l$`1�A�.�1�H����[A�HDž���jjj�|t��H�����H�� H������1ɺH��H���H�5LHDž���蠂��L��H�ھ��L���}���H������z��H����z��M�l$`1�H�ߺH�5�MHDž����O���1ɺL��H�5�KHDž��.���H��L��L������H����Oz��H������Cz��M�l$`1�H�ߺH�5pKHDž����݁��H�ھ��L��H�
[趄��H������y��M�l$`1�H�ߺ$H�5�5HDž���蔁��1ɺ	L��H�5KHDž��s���H��L��L���P���H����y��H������y��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������2x��M�l$`1�H�ߺ3H�5\4HDž�������1ɺ
L��H�5�IHDž����H��L��L��舂��H�����w��H������w��M�l$`1�H�ߺ8H�5"4HDž����Z��1ɺ	L��H�5.IHDž��9��H��L��L������H����Zw��H������Nw��M�l$`1�H�ߺH�5�HHDž�����~��1ɺ	L��H�5�HHDž���~��H��L��L��褁��H�����v��H�������v����o��I�t$`���H��I��A�A�H�
�Q�
t��A��$�M�l$X��M�l$`1ɺ
H��H�5BHHDž����0~��1ɺL��H�5yDHDž��~��H��L��L�����H����0v��H������$v��I�t$`���H�����A�A�H��H������H�
(D�Qs��M��$1ɺH�5�GL���}��M�l$`1�H�ߺH�5�FHDž����m}��L��H�ھ��L���J���H������u��M�l$`1�H�ߺH�5�CHDž����(}��1ɺ
L��H�5>GHDž��}��H��L��L������H����(u��H������u��I�t$`L��A�A�H�
�F����Wr���������
M�l$`L������L���z��L��L������H�߉‰E�L�����HDž����u��1ɺL��H�5qKHDž����N|��H��L�����L���+��H������ot��H������ct���������
H������M�l$`�wy��H������H��HDž����‰E��t��1ɺL��H�5@OHDž�����{��H��L�����L���~��H�������s��H�������s���������
H������M�l$`��x��H������H��HDž����‰E��t��1ɺL��H�5�DHDž����@{��H��L�����L���~��H������as��H������Us���������
H������M�l$`�ix��H������H��HDž����‰E��zs��1ɺL��H�5hAHDž����z��H��L�����L���}��H�������r��H�������r��I�t$`H��A�A�H�
qA����	p��H����j��L����j��M�l$`1�H�ߺH�5�DHDž����3z��1ɺL��H�5_CHDž��z��H��L��L����|��H����3r��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�
�C�����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�������Fv��H������H��HDž����‰E��Wq��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������p��H������o��������M�l$`D��p���H������D)ډֺ
�t��H������H��HDž����‰E��p��1ɺL��H�5�@HDž����Mw��H��L�����L���*z��H������no��H������bo���������
D������H������M�l$`D)щ��jt��H������H��HDž����‰E��{o��1ɺL��H�5i=HDž����v��H��L�����L���y��H�������n��H�������n��I�t$`H��A�A�H�
r=����
l��H����f��L����f��H��������f��H�������n��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���*������Y(MHDž���jjj��e��L�����H�� M���3���A�GD�@D��D��������d��D������H��E���tH������H�������Al��L���9l��M�|$`1�H�ߺH�5P=HDž�����s��L��H�ھ��L���v��H�������k��f�H��1�A�.�1�H���*������YJLHDž���A�jjj�e��L�����H�� M������A�GD�@D��D��������c��D������H��E���XH������H�������]k��L���Uk��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����{a��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�������h`��H��x���D������H������H�����I�wH��x���D������H�������-`��H��x���D������H������H������kc����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������HDž ���fHn�H��P���fHn�H��@�������fHn�H��0���fl�)�����fHn�H����������)�����fHn�fl������H������fl�)�����)�����)���)�����_c��1ɺH��H�5�6M�|$`HDž�����im��H��(���1ɺH�5e6H��HDž(���H������:m��H�پ��L��H������p��H��(����We��H�������Ke��f�H��1�A�.�1�H���*�����Y�EHDž����A�jjj�e^��L������H�� M���_���A�GD�@D��D�������J]��D������H��E���gH�� ���H�� ����d��L���d��M�|$`1�H�ߺH�5�5HDž�����Fl��L��H�ھ��L���#o��H�������gd��f�H��1�A�.�1�H���*�����Y�DHDž����A�jjj�]��L������H�� M���^���A�GD�@D��D�������f\��D������H��E����H�� ���H�� �����c��L����c��M�|$`1�H�ߺH�52HDž�����bk��L��H�ھ��L���?n��H�������c��������
H������h��������
H������E��h������
H��������t����eh������
H��������$����Hh��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�������Jb��M�t$`1�H�ߺH�5+3HDž������i��1ɺL��H�53HDžp�����i��H��L���L���l��H��p�����a��H��������a��M�t$`1�H�ߺH�5�2HDž�����ri��1ɺ	L��H�5�2HDžp����Qi��H��L���L���.l��H��p����ra��H�������fa��H��M�t$`1�A�.�1�H����AA�HDž����jjj�Z��H������H�� H�������1ɺH��H��p���H�5!2HDž�����h��L��H�ھ��L���k��H��������`��H��p����`��M�t$`1�H�ߺH�5�3HDž�����Zh��1ɺL��H�5�1HDžp����9h��H��L���L���k��H��p����Z`��H�������N`��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�51HDžp����~g��H��L���L���[j��H��p����_��H�������_��M�t$`1�H�ߺH�5�0HDž�����-g��1ɺL��H�5�0HDžp����g��H��L���L����i��H��p����-_��H�������!_��M�t$`1�H�ߺ0H�5�HDž�����f��1ɺL��H�51HDžp����f��H��L���L���wi��H��p����^��H�������^��M�t$`1�H�ߺ9H�5�HDž�����If��1ɺ
L��H�50HDžp����(f��H��L���L���i��H��p����I^��H�������=^��M�t$`1�H�ߺH�5�/HDž������e��1ɺ	L��H�5�/HDžp����e��H��L���L���h��H��p�����]��H��������]����qV��I�t$`���H��H��A�A�H�
}8�Z��I�\$XH�� ����]��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�������2T��H��p���D��|���H������H���v���DI�wH��p���D��|���H��������S��H��p���D��|���H������H���f����0W����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�5Q,H��H�E�H��(����b��H��L��L����e��H�}��![��H�}��[��H��p���I�w`A�H��A�H�
))���H�����FX��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��NP��L��8���M��t�I�EH��(���L��PL�m�H�5w,H��1ɺI�EL�p(H�E���a��H��L��A��H�}�A���Z��H�}�H��tH��PL��8���E����L��(���I��1�H�5,L��L�h(H�E��wa��L��L��H��A��H�E�H�U��@������E1�wD�*H�5q;��H���iO��H�}��pY��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�����HQ��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`�8Z��H��L���
T��H�8L��h���H��h����S��L�����L��H���
���I�~`��b��H��h����L��H�G*L�������b��M�n`1ɺH��H�5�(H�E��_��H�ھ��L��H������}b��H�}���W��1ɺ
H��H�5*M�n`H�E��b_��H��(���1ɺH�5�%H�E��@_��H�پ��L��H��(����b��H�}��`W��H�}��WW��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���X���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�=-�R������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����J��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��xQ��L��I�w H��H��(H������H��H�������T��H��L������I��I���OI��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ĉω������_I��������I������H������L��������P��1ɺH��H�5�!HDž�����jX��L��H�ھ��L���G[��H�������P��H�������
L���'P���H�Eĉω�������H��������I�����+H������L�������@P��1ɺH��H�5�HDž������W��L��H�ھ��L���Z��H�������P��K�D��
H������H�4�L������H���O���
L��E�K��H�4�H���oO��HcUĉ�4���H�H�L��H�������H��H������I�ƅ���H������L�������{O��1ɺH��H�5Y HDž�����W��L��H�ھ��L���Y��H������L��0����4O��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�5�H��HDž�����[V��1ɺL��H�5hHDž0����:V��H��L���L���Y��H��0����[N��H�������ON��1ɺH�5�H��HDž������U��H�ھ��L��H�
l�
��X��H�������N��1ɺH��H�5MHDž�����U��1ɺL��H�5CHDž0����U��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�������	M��H��0����L��1ɺH��H�5< HDž�����T��1ɺL��H�5�HDž0����{T��H��L���L���XW��H��0����L��H�������L��1ɺH��H�5.HDž�����/T��1ɺ	L��H�5HDž0����T��H��L���L����V��H��0���L����(L��H�������L�����L��L��A�A�H�
�&�YI��L�����f�H��1�H������L��HDž ���HDž����)�����]L��L��L���_L1�H���EK��H�������iQ��H������H��H���U��H��H�����H������!C��1�H���K��H������H������H���1N��H��H����H������B��L��L��H���};L�����HDž���L���H��jM��A�jH������H��H����H������y�H�����XZ��J��H���=L����KL�����H�����I9�tD�L�cM��tL���oO���XL���rB��H�;H��tH��PH��I9�u�H�����H��tH�� ���H��H)��=B��L���B��H������H��tH��PH�������7J��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�5��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�Q�H�=�H�������1E��H������H���!����HDž�����M���H������L��p�����x���H�������?��L��p�����x���H������H���1���@H������H��x���H�������v?��H��x���H����������L��H��x���H�������J?��H��x���H������H�����@H������L��p�����x���H�������?��L��p�����x���H������H�������OB����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�5<H��HDž`�����M��H�ھ��L��H��0�����P��H��`����	F��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��@����E��I�t$`L��A�A�H�
����<B��I�D$`1ɺH��H�5
 HDž`���H������oL��H�����H��H���������DO��H��`����D��I�t$`H��A�A�H�
&�����A��I�|$`H��.���fD��.���H��p�H���<��L���<��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������q:��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��J��L��H�ھ��L����L��H�}��'B��H�}��B��I�t$`L��A�A�H�
5����Y?���-H��1�H�5p�H�E��I��H�ھ�L�������(H�5w�H��1��uI��H�ھ
�L������TH�5��H��1��OI��H�ھ�'L������YH�5��H��1��)I��H�ھ�'L�������H�5�H��1��I��H�ھ'L���s����5H�5�H��1���H��H�ھ'L���M�����H�5�H��1��H��H�ھ�%L���'�����H�5SH��1��H��H�ھ" L�������,H�5�H��1��kH��H�ھ L��������H�5H��1��EH��H�ھl�L�����H�}��l@��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��l=��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���X9��L�5Q#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����W9��D��l�����u�L���d>��L���\>��I�D$�x�w1���fL��L�5k"M�~�2>��L����8��L��L�u���8���	L���1?��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�~�g=��L���8��L��L�u��8���
L���f>��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��37���L���=��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�50M�~�;��L���o6��L��L�u��c6���L���<��H�}��E�A���L�e�M��u��M�$$M���{E;D$u�I�T$�zu�L9�t(H����L��D��l����6��D��l�����u�L���;��L���;��I�D$�x��1���kL���:����L����>���0I���w>��H�ƹL��L���?���!L����S>��� I���F>��H�ƹ
L��L���S?����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���|9��L���t9��L���l9��L��x���HDžx���L����6���L��1�H�5�H�E���@��H�}�1�L���V?����H�}���h�9��H��x����9����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����O3��D��l�����u�L���\8��L���T8��I�D$�x�����jL���28�����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���7��L���~7��M���	������Hc�1�H�}�H��H�u�H��H��L���
H���a���L� L���>7��L���67��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����o0����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�5H�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��7��H��H����H�H��L��H�E��x��H�5���L���)��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���z.��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��e'�����I�|$`L��H���
�<��I�|$`H�M�L���H�o
H�E���;��H�}��-1��I�t$`L��A�A�H�
A�����h.��L���P)��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�5Z�L��H�� ���I�EH�@(HDž���H��8����Y6��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�0��H���Y���I�E�H�5U1�L�p(H�����HDž���H��H��0����Q5��H��0���L��L��A��H�� ���E1��x��H�5V��L���N#��H������R-��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���3!��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�
�������&��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��(����^0��H��8���L��H��(�������33��H�� ����w(��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����~/��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��(����L$��I�D$`1ɺL��H�5�HDž ���H��8����.��1ɺL��H�5��HDž����^.��L��L��H��8����71��H������{&��H�� ����o&��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�5��HDž ���H��8����-��1ɺL��H�5m�HDž����d-��L��L��H��8����=0��H������%��H�� ����u%��I�D$`�������
H�����H�E�H��H��8����{*��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ž����9,��L��L��H������/��H������V$��H�� ����J$��I�L$`�������
H��8���H������W)��H��8���L��HDž ����‰E��h$��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������2#��H�� ����&#��I�t$`L��A�A�H�
������a ��L���I��H�������P���H��L��H�����H��8���H��Ɖ�(���HDž �����(��H��E1�L��fo
H�5A�L�H�����H��8���H��p���)�0���)�@���)�P���)�`���j�j*����p���_AX��������M�|$`1ɺ
L��H�5��HDž�����)��L��L��H�������,��H������!��I�t$`L��A�A�H�
�����2��I�|$p�����H������H������L�����SA�����H�� ����/�YL��^����H�� ����!��H��(�������H������H��tH��PH�������_!��H��x����S!��H��p����G!��H��0���H��tH��PH������y��H��`����!���?��H�r��H�=��
�����L��0���H�5���L��HDž0������L����M�����I�D$`1ɺL��H�5w�HDž ���H��(����R(��H�����1ɺH�5��H��HDž���H�� ����#(��H�� ���L��H��(�������*��H������< ��H�� ����0 ��H�3�H��(�����#��H��(���H��H��t(H�L���H�� ����x�,H�5���L������1�I�|$`H�� ����!��H��L���w��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�
K��w��H������8���L��H��H��(����L����8����9��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
�k��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�54�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����R���%�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��e����H��X������P�"�L��H�5G����B��H������F��H��(���1ɺH�5���"���Y���f�����H��(���H��(���H�0�X���M�H��(���H��(���H�0�=����H��(���1ɺH�5���"�����H��(���1ɺH�5���o"������H��(���H������H�0�����U�H�xH�5���o���������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����O
���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�
+�����R��H���L���s�H��t+H���L����H�@H��H��@����\��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��9�����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����p��L�����H��h����\��H�E�dH+%(��H�e؉�[A\A]A^A_]��H��H���1�H����������\����+HDž0���L�e�H��P���L�hD���Y��H��p���E���L�k`1ɺL��H�5��H�E��w��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�
$�����K��L��x���f�L�spHDžx���L��L��(���)E��N��H��@���jA�jL��(���L��L��H�Q(�'�^_H��x������L����
��H��p����u��L��0���M�������L���
���L���0
�����L��H���
���L������L�s`H�=��
M�vp����H����H�=��
������fDL�u�H�5��L��H�E�����L�u�M�������L�}�H�E�L���L��1ɀ�\���ty�H�5��L���]��H�C`1ɺL��H�5��H�E�H��@����4��L��L���H��@����
��H�}��T��H�}��K��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��v��1ɺL��H�5��H�E��X��L��L���L���5��H�}��|��H�}��s����	��H�s`A�H��A�H�
�����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����,����m	����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��@����@
��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����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��@����b��H��`������H�E�dH+%(����O���H�Ę[A\A]A^A_]�f.��H�5��H���|���9����L�m�1ɺM�f`H��L��H�E�H���G��H�E�1ɺH�5r�H��H�E�H��P������L���L��H��P������H�}��>��H�}��5��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���p��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����k��L��L���H���H��H��h����	��H�}��	��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�
-�����T��L���<��I�^`1ɺH�5W�L��H�E����1ɺL��H�5��HDžh����i��L��L���H���F��H��h������H�}����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��(����s
��1ɺL��H���H�E�H��L�����H�����D
��L��L�����L���!��H�}�L�%���a��H�}��X��H�s`L��H��P���A�A����H�����L��������H��p���H�s`A�H������H��A�L����X��L�c`1ɺL��H�5��H�E����1ɺL��H�5��H�E��x��L��L�����L���U��H�}����H�}����1ɺL��H�5��L�c`H�E��1��1ɺL��H����H�E����L��L�����L������H�}��7��H�}��.��H��D�hA��D�����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�59�H�E��.��L��L��H���
���H�}�L��H����G��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�O�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�2�H��H���������H������M	��L���E���H������D��L��A��H��p����	������9�����L���Hc���HDž ���H��H������fDH��(���1ɺ	H�5g�L�{`H�E��b��L��L��(������L��L���8��H�}����H�s`���H�����A�A�L�����I�UH�����E1�H��L��8���H������rHH��M���J�L���r���H��H������H������Z���H��@������H�������B���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(�w��H��L���L���I��H�D�pA��
D�����H��@���I��E���L��(���L�s`1ɺH�5W�H�E�L���
��L�����L��H��@�������H�}��*���H�s`���H�����H�����A�A��b���L�s`1ɺL��H�5��H�E����L��L�����L��L��(����v��H�}�L��H������1ɺL�{`H��(���H�5��H�E��P��1ɺL��H����HDžH����/��L��L��H��(������H��H����L���H�}��C���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��N���H��M��t,I�L�u�L��L���H�E��x��H�5R��L���J�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��u�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�������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�
N����L��0���H������d�M�o`1ɺH���	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���	H����H���������H�����+���H��0�������L������A�w|�
M�g`L���3���L��L��HDž0����‰E��H���L��L��L������H���	H����L���p���H������H��0�����M�g`A��$ktZ1ɺH�5��L��HDž0����8���L��L���H�6�	L��H��������H�����K�H��0����?�I�����H���>$H���H��H�������X���A��A�������H������HDž���r�fA���]$�%fE���$$fA��u(H������1ɺH�5���f���DžX���@H�����G��t9I�`H������L��H��	H��0�������H��0����X�H�����L�H��P���I�w`A�A�H�
]����H��H������z�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���a�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�5E�HDž0������L��L��H����������H��0�����M�g`L�����H��H����H��H���
���L�����M�g`L����H������H���|�H��H�J�
���L���e���H������H�����A���H)ш�_���H��x�����t;H���-��H��H��t+H�H��L���H��0����x��H�5H��L���@�I�w`A�L��A�H�
e������L���t�H��������H���H��tH��PH������H��P���@foX�	H�x&@foX�	@HcUĸ_fA�E$H���}E1�E�efE�\&�N���H����H�=m�
� ����L��@���H�5j��L��HDž@����W�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���e�H��(����i�fo�����f�L�����HDž����L������)�����HDž����HDž����Dž�����?HDž������H���
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���z�H��(����~�H�����AYAZH����H�H������	1�H�5��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ž(����6�H�����H�����L���H��p����x��H�����H�54���/�H��(����3�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ž(����V�H�����H�����L���H��p����x�
H�����H�5T���O�H��(����S�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ž(����v�H�����H�����L���H��p����x�NH�����H�5t���o��H��(����s�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ž(�����H�����L��L���H��p����x��H�����H�5������H��(�����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ʿ��@����J�fob�	H��p���@fo_�	�@�@$_@Hc�@���H�����H������H�<�H��H���
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ž(�����L��L�����L��L���H��p����x��L��H�5������H��(�����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�������\�H��@���L������H��A�Є��PH�� ����t�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��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���R��H�����H���
H�������X�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���g��H��(����k�I�`H��L��H�J����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����H�H��(����<�I�E����M�g`H�5�	1�L���H�5�H����HDž0�����L��L��H��������H��0������H�������M�g`1ɺH�5d�L��HDž0����i�L��L��H�'|
�B�H��0�����M�g`1ɺH�5߳L��HDž0����!�L��L��H��{
��H��0���L�%��7�M�o`1ɺL��L��HDž0������L��L��H��{
��H��0�������M�o`1ɺL��L��HDž0�����L��L��H�8{
�k�H��0������M�g`1ɺH�5ɳL��HDž0����J�L��L��H��z
�#�H��0����g��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�58�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ž(����Q�L��L�����L��L���H��p���H�5a����@�����L���J��H��(����N��I�_`1ɺH�53�L��HDžp������L���H��H�ww
���H��p�����������I�EH������1�H�5S�L�`(HDž(�����H�����H�����L��A��H��p���H��x����@�����'
����E1�u
���A��H�����H�5f����a��H��(����e��H�� ����Y��H�����H���M����N���@H������H�H������z��H������a�fDH������H�H�����H������K��H�����H������z����H��x���H�����H�5��������H��(�����������L�����I�_`1ɺH�5M�HDžp���L���C�L���H��H��u
��H��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������4��H��(����8���O�I�EH������1�H�5��H�@(HDž(���H��������H�����H�����L��H��������H��p���H��x����@�����
H��Hc�H�>����!���fA���	�H������1ɺH�5���G�DžX��������H���H�=��
����H�5�
�?�@H�����I�_`1ɺH�5&�HDžp�������H��������H��H�����H�2�H��(�����H��(�������H��p��������6�f��C���@����-��foE�	H��p���@foB�	�@�@$_@H��}
�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�{
H������H���	��H�������
������Eą�tBH��p���H�����B�Ɖ���H��p���Lce�HcPH�LPM���E1�fF�!�XI�`H��������H��o
�1��H��p����u��������������@�������fo��	H��p���@fo��	�@�@$_@H�z
�HH����������I��H�z
�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������H��(�����������I�_`1ɺL��H�5&�HDžp������L���H��H�����H���	H��(�������H��(����.��H��p����"����DL�����H��x���H�5�L�������H��(������������I�_`1ɺL��H�5��HDžp������L���H��H�����H�6�	H��(����J��H��(������H��p��������D��E1���������H��p���H�����H)�H�����H��H��������S��1�L������H�������f�H������H�CH9���H��H�����L��H�<�H��P��tѿ��@����Q��foi�	H��p���@fof�	�@�@$_@Hc�@���H�����H������H�<�H��H��v
H������H�����H�������
������Eą�tAH��p���H�����B�Ɖ����H��p���Lce�HcPH�LPM���O1�fB�!�XI�`H��������H�k
���������������� �������H������HDž���e��DžX����.����3�H��x���H��(���H�0�����H������1ɺH�5���I��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�t
�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�|$@�9��H��g
H������I�$H��p���H9���L� H��H��p������H��x���L��H�0�����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������H��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������h��L������L��x���H������A��������fo�	Dž@���H��p���@fo޾	�@�@$_@�������fo��	Dž@���H��p���@fo��	�@�@$_@�Q�H������M�H��L�����H��H��p������H��������H9�HG�H��H���L��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��������������J���fob�	Dž@���H��p���@foU�	�@�@$_@���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�=���
��H�E�dH+%(u�H�=t�����H�E�dH+%(u�H�=Y�������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�Y��wH���j���H��`���A���{��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��q
�8��G�P��W�������\��������H�R��H�=݁
�h����s���H�������T�����H���������H���G��H��tHH�=��
L�;��M��t2I�H�j�
L��L��H��`����x��H�5R���L���J���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�������Z���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�������z��H������H��t
�ouH��PH�}����L���P��fo����1�L���(����'���H�� ���L���H���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���8���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���q���H������u���H����Y^��H������L���6���H������L���G���H��h���H��tDH�WH�OH�H9���H��l
�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���9���H��p���H��P����H�5 ���L��L��p���HDžp����������������H��������H������H��!���H����H�=�|
�j����D���I�L���PH������H�������H�KH�SH�H9���H�
k
�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��`����l���H��L���A���H��`���I��H��tH��PI��@����I��HH������H��H������聛I�L��H������HDž`���H�0葶��H��`���H�������H�������e���H��`����	���H������H�������&�H�0H�ǹH�ы���H�����H��H������艱��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���@���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�������1���H����H��t
�ouH��PL���0����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������胼��L�����M���Z���I�L���P�L�����K�������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����#����������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����V����@�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�5��	H�E�L���E�#胹��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�}������N������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���i���H�}��`���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脴��H�}��;������H�}�H�5J
�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�}��8����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�}�芫�����f�����H�f�������H����J�x��΃�����w;f���}�����H�f����H���l����z�ȉ����x�������v�H�H�����J�΃���릃�uBH�]�A�H�
4�L��H�������G���H�]�A�H�
�L��H������&���H�]�A�
H�
�L��H���ƨ������H�]�A�H�
�L��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���w���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��脭��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�ֿ�t���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�
�A
�L���ff.����UH��AWAVAUATSH��xH�����H����H�wPdH�%(H�E�1�H�����H��H�������q[H��p���H��H�������[���H�����H��H������H�������H���E���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���舚���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�5.yH��H�����HDž@����N����ƅ����=���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�������7������D�L�e�I��0H�5@���I�|$�6���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���X���1�H�����H������L��H�������H�����H��tH��PI�$H������L��PH����1�H���X���H��L��轢��H������1�L���̧��H����H��-��H��H���!	H�H��L���H������xt)H�5����L��誖��HDž(���1���H����H�5����L��HDž���o���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����[���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��芣���XL��荖��H�����H��tH��PH��t	H�H��PH������(u#H�5A\
H����
H�����H�R���譢��H�������A���H����������H�����H��tH��PH�E�dH+%(�&H�e�[A\A]A^A_]ÐH�5���L��H����HDž���ߓ�����f.�����H�8H�������\����=�]
�H������H�8�������H�=]
���������H������1ɺH�5sHDž0����/����HDž8�������f�1ɺ%H�H�����H�5�a)�0���HDž@���H��(���HDž@����դ��H��@���H�߾�a���H���1ɺ.H�5�aHDžP���蜤��H��P����H��8����$���1�L���1H�5�aHDž����c���H�����L������H��(���1�1�H��L������E1�E1�SH��0���jL��Pjj蜕��H��0L���Н��H��0����D���H��8����8���H��@����,���H��8���萛����v���H��0����H�H��I���X���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�5NpI�EL�p(HDžP�������H���L��L��A��H�����H������@������������u�	�H�5|��L�����H��P��������H��@�����D ������H����	H��PL��荐��H�������a���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�Im�H�=�W
�`���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�� �E���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�5bHDžP���H��(���茝��1�L���.H�5�ZHDž����k���H��(���E1�1�PL��P����H��p���H�����jH������Sj裞��H������H�� ���H������W���H��P����K���H��@����?���H��8����3���H��0����'���H������1ɺ	H�5IaHDž0����œ��L�+Z1�H������L�޺ HDž8���蚜��D�&uH��x���1��~�8����!H�����Dž0���fD��H����0���HDž@����8����E���H��@���1�H���H�5�`HDžP���H��(��������1�L���1H�59YHDž�����E1�1ҾH��p���L��P���H�����PjSH������jH���-���H�� H���q���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
�y�������@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ž@����0���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���d���H��@����h���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���c���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����A���H������1��3���A��u��A��xu�oc`)�P���L������H������H���L���:���H������H��P���H��X�����L������C��u�%��x����������H���H�����H�KH��H�������H����X螇��H��I��装��H������H��8����@H������L���q���H��8���H��t
�ouH��Pfo�P���H������1�A^(�-���H������I�~ �M���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�����肋����h���H��P����H�H��H��p����F���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��D}��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����J���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�5YL�h(H�E��j���H�U�H�}�L��A������H��H�0H�M�H�}�H�qg��L�
Zg��PH�U�L�.m��詐��H�}�H�5Ng���I{��H�}��P���^_���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��b���L��L��L��A��H�E�H�U��@���b	�|���s�����L�%Pd��L����D���L���?x��H�}��F���H��x����L��1�H�5XH�L�p(H�E��ډ��H��x���L��L��A��H�E�H�U��@���f����O�����L��L����@����w��H�}������������5JbH�KbE1�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�5LP1�H�E�L�@(H�E�H��H��P���L��H����L���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.=�_�*��*�z�f(��]�p����_�X�����p�����h���f.N_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.P^z����p���f�f/��zf/%�]��������h���f�f/��!f/-�]�����|��X����\�p���f��f/���f/�]DžD�������/��`����\�h���f��f/���f/Z]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���^r��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���^o��H�}��ey��DžD�������fDL��L���5o��H�}��<y�����Dž@����l���fD�����H�E�H�E��:���H���pC��H���86��H�����H������H�{pH����H���0�����H�{h�/�H�C`���fD�
Yf/��/�\�X�,���D����_�����
�Xf/����\�X�,���@��������X��h���f/����\~X�,�����D�xX��p���f/�sx�\5RX�,��r����XAX�,���D�������*X�X��,��o����X�X��,��1���H���`������Dž@���DžD���������������� ���Dž@������DžD�����8����q��H�E�dH+%(u�H�=�<�@w����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����Zl��H���L��L��H��I����5��I�$H�WoL��H9B�r�5��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���Rh��ƃ�H��(����8H�������j��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����\h��H�����H���I��H��(���H��L��H������1��I�$H�GkL��H9B���%{��H�{`L�c`H��tH�H�T��H�@H9����|i��L���L���M9�t-f�I�<$tH�{`�0s��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���h��H�{`H�CpH�C`H��tH�H�S��H�@H9����^h��L�{hM��tL���mq�XL���0h��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���fk��L�����Xk��H�������1��ht������L��������L���v��1�L���s����L���qt��H�������1�L��H��^	H��(���� h��H��(����q��H�����L��L���Rx��L���Jf����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ž@����3d��M���������I�$L��P����@H�����u��H���+H���1�L��H���L���n��H�
%���o��H��H���H����o���p���!�A��M�����H�����L���vr��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���Wu�����C���H�����H������H�8H��PH��0����(u#H�5$*
H����H��0���H�-N���p��H������lr���z����H���V���H��@���H)���c���B���H��1�H�=}+
�xh���3���H���H�A�������Ke����fD���K���f���������_o��H�=h)
H�0�0j��H�5Y)
�����:o��H�=C)
H�0�j��H�54)
�����
f����鿮����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��Rf��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�=(
�d��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=�C^�����{���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�Ke��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���}a�����D���谀��L��H�$
�Qe���+���L�-�#
L���Ma�����L���耀��L��H��#
�!e���3����g`����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��}l��L��L��A��H�}������d��L������ס��H��M��t%I�$L��L���H�E��x�H��L���ZZ��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����Z��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���Ic��L���i��H�U�L��L��L��H�E�L��������d��L��H������I���Y��H�������vY��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����Ue��L��L����l��L��8������H��M���I���I�$L��L���H�E��x�$���L�e�H��L��H�E��qV��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���lf��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��
�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��IS�����@E1��a����L���xi��L���������ji��9������h���L��L���ST��H�����c�����H��1H�=u
�xY��H�5i
���@�H�a1H�=M
�PY��H�5A
���@����������f�H�����1��T���_���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�\
�X�����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����0S����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���qS����t�H��
L��H�
�GW����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���1R����t�H�F
L��H��
�V����PQ����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�<
�gU����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�]������X��H�=�
H�0�WS��H�5�
�ff.���UH��SH��H��H�5Y
H��t$H��L�Z6��1�1��A]��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���1O����t�H�F
L��H��
�S����PN����UH��ATSH��H��dH�%(H�E�1���
��t4H�5�
H���eW��H�E�dH+%(uAH��H��[A\]�f.�L�%a
L���N����t�H��
L��H�L
�wR����M����UH��AWAVAUATSH��dH�%(H�E�1��J
��t>�=�
H�@
�jH�E�dH+%(�"H�e�H��[A\A]A^A_]�DH�
H���N����t�1�L�}�L�e��!H�5�H��x���HDžx���� Z���L�m�H�E��
V��1ɺ-L��H�H�5�H�E�H�E�H�E���Y��H�U�L���lT��H��H�E�E1�ATH��x���E1�1�j1�L��Pjj�"K��H��0L���VS��H�}���Z��H�}��4Q����H��H��x����H�H��I���S��H�}��Q��H��x����Q��H��L�%�
��P���=�
H��
�����@�M��H�8I����U���=Y
tI�<$�nP���o���f��9
�Z
����L�}�L�m�L�5[	��T��H��`���1ɺ
H�5H'HDžX���HDž`����X��H��h���1ɺH�5#'HDžh����lX���1��~�h���H��p����f�E�H�5�&�`����E�E�HDžp����$X��1�L���!H��x���HDžx����X��1�L���~�p���H�5RH�E�L��X����x���)E���W��1�L���-H�5ZH�E��W��H�E�L�M�E1�PH�E�H�M�1�j�L��Pj�X��H�� L���9Q��H�}��O��H�}��O��H��x����O��H��p����O��H��h����O��H��`����wO��H��X�����N������fDH�=�
L�}��J��L�m�L�5����2���1�L���!L��H�E���V���H�E���R��H�U�E1�E1�H��L���M��L���oP��H�}��VN����<E��H�U��H�H��H��H����Q��H�}��N��H��H���H�=�
H��
�M������@I�����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�L��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���E��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����xQ��H�E�L��L��H��@���L��H��A��H�=.	
H�E���H��t3H�L�u�H�	
H��L���H�E��x��H�5L+��L���D?��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�� ����1E��H�� ����	���H��@����9A��L��H�}�H��@����vH��H��8����j���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�����>���I����C��1ɺ*L��I��H�51�H��`����_O��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����C��1�1�H�5TH��p���L���*I���N��fIn�H�2H�u��P���fHn�H�r)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��0���L��L��L��H�
 
�A��H�}��bF��H��p����VF��H�E�dH+%(�6���H�5��	H�2��L���F����I�������I��I���}�����I���*��H�
�H��L�m�H��H��P��������I���H�}���E��H��p�����E��L���K��H�����H�E�dH+%(�����L���F���<��H�E�dH+%(�z�����I��I�����I���EH�5��	H�61��L����E����I�������H��h����CE��H��`����7E��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���d7��E1�H�;H��tH��PH�}�L�;H��tH��PH�}��HA��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�� ����Q=��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����7���I����;��1ɺ*L��I��H�55�1�H��`����G��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����L?��H��`����@?��H�E�dH+%(����9���L��p����';��1�1�H�5t�H��p���L���*I���F��fIn�H�RH�u��P���fHn�H�v)E�fIn�fHn�L�m�fl�L��)E��~�@���fl�)E��0���L��L��L��H�
�	�9��H�}��>��H��p����v>��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����B��I�����I���EH�5��	H�V)��L���=����I�������H��h����c=��H��`����W=��L���C���@���c���D��H�?H��tH��`fD����UH��AWAVAUATI��SH��H��(H�H�H�H�H�H�HcPH�FH�Hc@L�lKD���G5��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���/��E1�H�;H��tH��PH�}�L�;H��tH��PH�}��h9��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�� ����q5��H�� ����	���H��@����y1��L��H�}�H��@����8��H��8�����H��@���L��H��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�5U�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����l7��H��`����`7��H�E�dH+%(���1���L��p����G3��1�1�H�5��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����
6��L����;��H�����H�E�dH+%(�����L����6���,��H�E�dH+%(�z����":��I�����I���EH�5�	H�v!��L���6����I�������H��h����5��H��`����w5��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���9���XL���,��H�;H��tH��PH��I9�u�I�H��tI�vH��H)�[A\A]A^]�L,��@[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��E,��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��8*��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���)��M��u�I�EI�}1�H���t,��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���5���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��a(��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�=��D/����H�����H���;��H���N�4&��H�}�uH�}���H�}�tH�u�H�}�H����&���G3���&��H�]�I9�t)H��H���]�����%��L��I9�tH��H���B����3����H����2����H����1��H���%���u�����H���
��1��H���\/����1��H���%��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��P ���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-�$����H�U�I������H��H������ ���&-������*��f.�f���UH��AVAUATI��SH��H����H��I��H��<��L�4�L���"��L��1�H��I���A$��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���B)��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�����1"����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���1��L��1�H��I���a!��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���b&��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��b��I�>H�I��H�x�\��f�I�E@I�E@I�EI�T$I�|$ �AE0I�D$(I�t$I�EA�E0�?AE L�m�H�E��x,��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�W����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��W&��H�u�H��H����H�H�}��H�E��x��H�}�H�5U���P��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�����[���$������"��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�u�������H�����I�EI�D$(�F$����H���J#��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���&�i��� L�����H�E�dH+%(u��"��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-�Y����H�U�I������H��H��������������l��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�����r���������3����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���A��I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t��������H���4��I�EI�D$(�f����H���j��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��N��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�8����H���	��H���&�
���(L���D��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���q��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�]���h����H�����I�EI�D$(�.����H���2��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���9��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�����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���U��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�u�������H�����I�EI�D$(�F����H���J��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���Q��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�5	���@����H������I�EI�D$(�����H���
��H�����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���&�2��� H������H�E�dH+%(u��Q
��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���w������������H��H������H��0������H��(�����H�� �����H��@�����H��8���UH��ATA��SH�_H��u�CH�ËS H�CD9�HOC��H��u�H�ބ�u#1�A9�HN�HO�H��H��[A\]��H�_H9_tH���v��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��8��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���k���H��tCH�]����DI�D$I�|$ H�E��e���(L���8���H�E�H���{���I������L�}�I� I�_�2���(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�[�f���(L���9���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���h���H�E�H���{���I������L�}�I�8I�_����XL���5���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���i���H��u�I�~ �{����XL���N���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)��c���I�~[A\A]A^]���f���UH��AWI���AVI��AUL���ATL��SH��H��dH�%(H�E�1��<��H��L��L��������Uf��
��L��)� ���fo��)�0����a��t���H��H�� ���E1�1�A�����H��L��HDž���HDž���fo����HDž���jjjH��H�D$$j�a��H��@��uLE1�E1������1�H��L�����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���1���L��L��HDž����‰E�����1ɺH��H�5�HDž�������L��H�ھ��H��������H�������"���H���������1�L��H����H������M�>�@��uhA����L��L��A�H�
0��5���L����H���������L���)�H�E�dH+%(��H�e�[A\A]A^A_]��1ɺH�5��L��HDž����/��H��L���L�����H������P���M�>�P�����x�s���� H��L��HDž���f��������o���E1�E1������1�L��L������H�����H��t����H�TP�H�����f�H��0���HDž8������)� ����������]�����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���c���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��n��H��I���c���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�����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��H���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�s��"���fDD��I�~(�l�H��H��u �XL���G�����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���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��o���H�}��4����H���w���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�}��j�I��L9�X����Q���H��P����m��������s��H�w0H�}��z����DH�}��G��t���H�_L�u�L�dG
D�L��L��H�E�f�E��A�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��u���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�5��HDžx����W����
L���L��`�����L��HDž�����E���H������H��H��H������ ���1�1�H��I���g�H������L��L������H��H��X�����fo��L�����H��X���L��)������H��X�������1�L���w�L��L����L���t�H��X���L�������CPH��`����
�p�sP���E����`H�1ɺL��H�5y�HDž���H��h����%���L��L���H��h������H������B�L�31ɺH�5��L��HDž������L���L��H��H������H�������H����H�3A�A�H�
�����H��H��0����*�H������L������HDž����H��H��@����2�L��HDž������H��X����S�1Ƀ���H��@����H�5W�� �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ž����J�L���L��H��H����#���H������g�L�+1ɺH�5t�L��HDž�����L���L��H��@�������H������ �L�+1ɺ
H�59�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�������D�H�������8�L����L��L��L�3������H��`����
�;�H��`���H��h���HDž�����‰E��H�1ɺL��H�5�HDž������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������\�H�������P�H�3���L��A�A�H�
����L���u�L�����H��P���L�hL�pM9�t(f�I�U L��H����L���I�I��I9�u�H���������H���������H��0����
�H��X����1�I�L�����HDž����H�x�L��0�I�H�x�L��ouH��PH������H��tH�Hx��ouH��PH�������M�H��x����A�H��8��������H��x���L��B�Ɖ�h����f�H��x���HcU�D��h���HcHH��H�LHuN1�f�4D�@�W����H��@����H�5Ľ���c���H�5��L���q��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���}��A�u L������s L�����H�}�L���Z���L���B�H����H��I9�u�L���
�I��H9E�u�H�}��H�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���y�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 ����}�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���1�I�}H�P I�ƋwH���JH�������y�1�H�{IE�IE�H���)����H��1�����fD��U1ɺ H�55�H��SH��H��H����H��H�]��Ðff.����H��0�c���f�UH��SH��H��H�@�����{8u5H�{H��tH�s(H)����H�����H��H�]��P��v��fD�C8H�{0�S�뼐U1ɺ H�5ɍH��AWAVH�����AUATSH��dH�%(H�E�1�HDž�����H�����1ɺH�5M�HDž������H����1ɺH�5�HDž����H����1ɺH�5��HDž����H���1ɺH�5��HDž��d�H������1ɺH�5��HDž�����?�H�����1ɺH�5��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��(��������p��H������H�H��H���R��H�� �������H���������H���������H����������H������H�������H�������H��������H��������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ž�����1ɺ
L��H�����H�5��HDž ���H��@����[�1ɺH��H�� ���H�5��HDž(���H��H����,�M��1�H��(���H�����L��0���H�����H�����H��P���H���Dž8���H��0����k��H��������H������s����Y��H������H�H��H������7��H��(�������H�� ������H��������H��������H�����L��H�Ɨ	����L�������]����0��9Wt1���UH��H���S��]�����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���v��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{�%����0��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�=�����ff.����g���fD��UH�5L�1ɺH��ATSL�e�H��L��H��dH�%(H�E�1�H�E��]��H�5F�	H��tIL�j����L��H���J������!��H�}��i��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\]�y��f��Q�	��t%H�N�	H�=�	H�0���H�5�	�fDL�%!�	L���q����t��x���L��H��	�I��벐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��z���s�
L����t����c��HcM�Hc�t�����$���H�L�DM�$D�����H��E��u7I�?I����H�E�dH+%(��H��[A\A]A^A_]��1�H�
Z��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������~��H�����H���f�H�����H��L���^��H���f�H��L��L���B��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�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����H��0L�����H�}����H�}����������H��x����H�H��I�����H�}��I��H��x����=��H��L�%s�	����=Ϗ	H�`�	�|���f.��K��H�8I������=��	tI�>����L���f.����	�
�	���JL�e�L�}�L��L��H�}�1ɺ!H�E�H�E��X��H�E�1�L��#H�5S�H�E�L�e�H�E��.��1�L���<H�5�H�E����H�E�L�M�1�PH�M�A��jL��jj�X��H�� L�����H�}����H�}��
��H�}����H�}��h�����L�-1�	L���Q���������1�H�}�L�e��%H�E�H�5��L�u��r���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�C��H��0L���w��H�}�����H�}�����H�}��L����2��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�����H�}��l����R��H�U��H�H��H��h����3��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�}����H�}��z��H�}��q��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���M��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�}������y���H�U��H�H��H��h����Z��H�}�����H��h���H�=�	H��	�7��L��`�������v����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�5��H��p���HDžp�������L�e�HDžx������f�1�H�}�H��5)E�H�5b�H�E�H�E�H�E��q��H�U�L������1ɺ/L��H�5_�H�E��B��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�O���H��0L�����H�}����H�}�����H�}�����H��x����L����2���H��p����H�H��I�����H�}����H�}����H�}����H��p������H��L�%c�	�����=υ	L�5P�	�����f.����H�8I�������=��	tI�?�o������f.����	�Z�	���H�cL�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�5'H�E��B��L�U�L�M�1�ARH�M�A�H��L��H����jjj���H�� H������H�}��=��H�}��4��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��Y��H�U�1�L��H�5��H�E�H�U���3��1�L��/H�52~H�E����H�U�L�M�H��RL��H���A�1�jH�M��ARj�V��H�� H�����H�}����H�}����H�}����H��x�������H��p�������H��X���1�H��P����!H�E����H�U�1�L��H�5ݑH�E�H�U���_��1�L��8H�5�}H�E��A��L�M�H�M�1�L��H���A��H��ARjjj���H�� H������H�}��@��H�}��7��H�}��.��H��h����������DH�I�	L�m�H��L�e��q���H�
J|H��X��������1ɺ!L��H�E�H�5"|����H�E��{��H�U�E1�E1�H��L���Q��L�����H�}��������H�U��H�H��H��P�������H�}��^��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�58rH������D���HDž���L������(��f�1ɺ3H�H�����)E�H�5r)E�)E�H��P���H�E�HDž�������H������L���m��1�H�� ����1H�5�qHDž ������H�� ���H�}���3��1�H��(����1H�5�qHDž(����n��H��(���H�}�����1�H��0����:H�5�qHDž0����4��H��0���H�}�����1�H��8����=H�5�qHDž8������H��8���H�}�����H��@���1ɺ:H��H�5�qHDž@������H��@���H�}���H��H��H���1ɺ=H��H�5rHDžH������H��H���H�}�����H��P���1�1�H��E1�E1�L��AUH�����jPjj边��H��0L����H�}��i��H�}��`��H�}��W��H�}��N��H�}��E��H�}��<��H�}��3��H�����藿����}���H������H�H��I���_��H��H�����H��@������H��8����ۿ��H��0����Ͽ��H��(����ÿ��H�� ���跿��H�����諿��H�����蟿��H��L�%�}	���=�}	H�r}	�����@賻��H�8I������=�}	tI�?臾���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����P��H��8���1�H�����#H�5�pHDž@���H�E�� ��H����1ɺ3H�5nHDžH������H�M�1ҾH�����L��@���A�L��QH��H���jjj�6��H�� L���z���H��H������H��@������H��8����ֽ��H������1ɺ
H�5ԉHDž�����q��H�����1ɺH�5ƊHDž����L��H�����1��~����D�-��I��H�5��������L��L������E��E�fD�m�HDž�������H���1�L�����H��L�ߺL������HDž������H�����1��~����I�Һ+fD�m�H�5LnL������L������E��E�HDž����p��H�� ���1�H�5@nHDž ���I�Ӻ(L��L�������>��H��(���1�L��I�к*HDž(���L��P���L��L�������	��H��0���1�H�59nHDž0���I�Ѻ(L��L����������H�����1�H�����HDž8����!���H��8���1��~�(����~����H����H�5�HDž@����0���H��p����� ���)�`���)�P����S��H����1ɺ1H�5~kHDžH����.��AVL��@���1�jH��H���E1�L������j�r��H�� L��趼��H��H����*���H��@�������H��8�������H��0�������H��(������H�� ������H��������H������ֺ��H������ʺ��H�����辺��H������貺��H������1ɺH�5��HDž����M��H������1ɺH�5��HDž ����(��H������1��~� ����+H�5�kfD�m������E�E�HDž(������H������1ɺ(H�5lHDž0������H�����1�H�����HDž8����!���H��8���H�5�1��~�(���H��H����HDž@���H��`�����0���)�P����N���H����1ɺ1H�5�iHDžH����)���AVL��@���1�jA��L�����H��H���j�j��H�� L��论��H��H����"���H��@�������H��8����
���H��0������H��(�����H�� ������H������ڸ��H������1ɺ
H�5؄HDž����u���H������1ɺH�5ʅHDž����P���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����{���H�����1�H�����HDž8����!�V���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���p���H��H������H��@����ض��H��8����̶��H��0������H��(���贶��H�� ���訶��H�����蜶��H�����萶��H�����脶��H������1ɺ
H�5��HDž�������H������1ɺH�5t�HDž������H������1��~�����	H�5T�fD�m������E�E�HDž���趽��H�Gh1�H������H�ƺ*HDž ���莽��H������1��~� ����+H�5!gfD�m������E�E�HDž(����J���H������1ɺ(H�5ugHDž0����%���H�����1�H�����HDž8����!����H��8���1��~�(���H�����H�5D�HDž@����0���H��`���)�P���跼��H����1ɺ=H�5�eHDžH���蒼��AVL��@���1�jH��H���E1�L������j�ֽ��H�� L������H��H���莴��H��@���肴��H��8����v���H��0����j���H��(����^���H�� ����R���H������F���H������:���H������.���H������1ɺH�5-�HDž����ɻ��H������1ɺH�5�HDž���褻��H������1��~�����	H�5�fD�m������E�E�HDž����`���H�!f1�H������H�ƺ*HDž ����8���H������1��~� ����+H�5�dfD�m������E�E�HDž(�����H������1ɺ(H�5eHDž0����Ϻ��H�����1�H�����HDž8����!誺��H��8���1��~�(���H����H�5�~HDž@����0���H��`����)�P����a���H����1ɺ:H�5|cHDžH����<���AVL��@���1�jH��H���E1�L������j耻��H�� L���ij��H��H����8���H��@����,���H��8���� ���H��0�������H��(�������H�� ������H�������H��������H������ر��H������1ɺH�5�}HDž����s���H������1ɺH�5�~HDž����N���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����y���H�����1�H�����HDž8����!�T���H��8���1��~�(���H�����H�5�|HDž@����0���H��`���)�P�������H����1ɺ=H�5faHDžH������AVL��@���1�jH��H���E1�L������	j�*���H�� L���n���H��H������H��@����֯��H��8����ʯ��H��0���辯��H��(���貯��H�� ���覯��H�����蚯��H�����莯��H�����肯��H��������L�%�m	L���Ѫ��H��@���H����H��H���H����H�
�gH���������H����1ɺ!H�5jgHDž@����ʶ���HDžH���赲��E1�E1��L����H�H��@���L��聭��L���I���H��H����-��������H��@����H�H��I�����H��@���艮��L��L�-�l	�ڭ���e�DH�i`�H�=-m	�����L��H�=�l	�̪���X��H��_�H�=�l	訪����H�y_�H�=]l	航�����螨��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�5G{H���R���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�5/zL���:����C�P�����X�������f��d����%	��*��^m��Y��X��f(�fT�f.�w[�^�H��H�}�1�H�E�A�.A�1�j�jj�O���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�
4J	���H��`����ө��L���ۦ���L���������{����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����M���H�� ���L��辤��H��(���L��D������H������������L��A��D������Hi���QH��%�������؟����L��A��D������Hi���QH��%������谟����L��A��D������Hi���QH��%�������x�����L��A��D������Hi���QH��%�������P�����L��A��D������Hi���QH��%�������(������5e	�
A��L��@���L��Hi���QH��%�������F��d	����H	�E��ω������*���������I������
I�}M�E蜧��H�;L���H��G	�5���H������HDž����H��H��������L��������dL��������SI�$f�I�D$E1��H*�������H=���tH)�H�P�L�hLH�L���g�����I�T$f�f��I��E1��H*��H*��Y^�I�D$�X�����������fI~�H=���tH)�H�P�L�hLH�L���5�����f�f��I���H*��Y	�I�D$�X�����������H=���tI+D$��H��f���H*�I�D$f�H=���tI+$�AH��f��H*��7���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�z���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������X9����=��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�5D|HDž����Ϫ��L��L���L��謭��H�������H���������芛��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��A	L��L��H�¾��H�������ˬ��H���������H�XA	H�;H������H�¾��H��x���蚬��L�-B	H�3���A�A�L��L��贡��L��������������_	H������H����������H�L��H�������j�����f�����53��*��Y
�f(��\��Y������
_��X��f(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�4���H�����H�� H�����H������H������L��H������N���H�����蒠��H�;���H������H��x����'���H�3A�L��L��A�����H���L��蠘����L��������#���L���ϖ��������fDH�E�dH+%(�dH�e�L��[A\A]A^A_]針���H�������H��H���������L������1�L�����L���͞��H������fInľL��fHn�fl�H��8���L�����H=���HD�H������艞��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���1���L��L��HDž����‰E��ƞ��L���L��H�<>	���H������C���H�������L�+�?���H�0�
L���ϝ��L��L��HDž����‰E��d���L���L��H��=	蝨��H��������H�������L�+�ݜ��H�p�
L���l���L��L��HDž����‰E�����L���L��H�g=	�:���H������~�����$���H�3A�H��A�H�
�=	���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������E���H��;	H�;H������H�¾��H��x����Ц��L�-9<	H�3���A�A�L��L�����L���B���L��芒������L���y�����tHDž������������<H������H����������|�-Q|����%I|f(��\�����L�;�������Y��X�{f(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�S���H�����H�� H���v�H������L��L��H������q���H�����赚��H�;���H������H��x����J���H�3A�L��L��A�����k���L���Ò��H������藐��H�������[���H��p���H��蜒���H������H��h����c���H��`����w���H�E�dH+%(�kH�e�[A\A]A^A_]�DH������1ɺH�5�h覡���������z���1�H�5_q�f�fA�DPH��H��	u�HcE�I�xH�H���f1�A�HfA�|���DH������1ɺH�5h�&����������������H������H���������H�H��A�.1�A��1�L��H��X����ryHDž���jjj�\���H�����H�� H�����H������H��X���L��H������v���H�����躘��H�;���H������H��x����O���H�3A�L��L��A�����p���L���Ȑ�����H������1ɺH�5g��������H������1ɺH�5�f�������L��L��p���������H�������d���L��p���������H�������e���H��f��H*���fDH��f���H*��z�fDH������1ɺH�5`f�n����i����T�����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���G���L��L��L��H���&�H�}�L�e��G��tDD�xD�����H�E�I��E����L�e�H�;���H�5	L������H�}��W���H�}��N����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�5�cH�E�舜��L��L��L��H���'�H�}�讔��H�}�襔��H�E�dH+%(��H��8[A\A]A^A_]�1�H�
�p�f�fA�TDH��H��u�H�u�I�L$HcFH�H��u%H��)1�f�E�|$f�H���f�H��H��H�U��`���H�U�H����貎����H������H���1���H���J���H����f���UH��AUATSH��H��L�gH�GM��tL�����L���v���H����kt]�0���H�3A�A�H�
�3	���H��I���J���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�]����h����H�]���f.���UH��AVAUATSH��H�� L�/L�gdH�%(H�E�1�A��ktjL�wL��H�]��
���H��H�L���QH��赗��H�پ��L��H��1	讜��H�}����H�E�dH+%(��H�� [A\A]A^]�DL��訛��H�}�E1�1�H�0�;H�E��z���H�E�L��H�E��z�����tEL�����L�eȃ�tT��toH�;L���H��0	����H�}��_����e���f.�L�e�H�uȹH�	iL�����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���c���H������H�L��H��(����9���L��@���H�ƺ
L�����D�h�E�D���s���H��8���H��E��� L��8���H��(������H�^/	L���~���H��8������L���j�����t.L���^���1Ƀ��k�H�5�fL���O����D1ɺH�5qfL���2���H�;L�����H��.	����L���3���������	w
H�/��4��
L��L�;�\���L��L��HDž8����‰E��q���L���L��H�w.	誙��H��8������H���jtbHDž8���L���_���L���W�����tcL���K�������L��諆������H�;L���H�.	�<���H��8���耎��H�����H��0����l��������L���X�����u�1ɺH�5�\L������@�H�5fL���������1ɺ
H�5fL���•���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��鈈�����H��H��H�pH��t5UH��SH��H��H�P`H��tH�Ơ�|���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\]�6���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��b���H�E�L��H�E��b�����tUL���Ձ��L�e؃�����tcH�;L���H��(	���H�}��C���H�E�dH+%(uqH�� [A\]�L�e�H�uعH��`L���̓���f.�H�uعH��`L��訓�����H�uعH��`L��舓���`����n�����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���^~��L� ����Ђ��L�牅(����ґ��L��H�������L��I���(~��L�牅���蚂��H�����H����������H�9H��w;r��H9�tH��H�����p�������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���y���1�E���>A�����H�5�]L��耎��H�;L��H�.&	�Y���H��8���蝆����(��������9�tx������	��H�L��@����
L��8���L��H�� ���臋��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��{�4��%�����H�5�\L���L��������H�xHcE�H�H�����pxD�q1�f�L����@L��L��8����ѐ��L�(����3}��L��A��踐��L�牅 ����}��L��HDž8��������葂���� �����(���9�������H��8���������FA9����FH��E������t�H��UL���e���H��8���H���H��\L���G���H��8����@��u1ɺH�5SL���#���H�;L��H��#	���H��8����@����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���R{���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�5PHDž0���赉��L��L�����H��(���莌��H��0����ҁ��H��8����Ɓ��E����E��t\H���L��@����
L�+L���J���L��L��HDž8����‰E��߁��L���L��H�e!	����H��8����\�����z��H�3E1�E1�H�
r!	���H��I���"���L�kxL�cxM��t=L���my��H�E�dH+%(��H�ĸL��[A\A]A^A_]��x��@H�E�dH+%(uzH�ĸ[A\A]A^A_]��H���L��@����
L�3L���R���L��L��HDž8����‰E����L���L��H�u 	� ���H��8����d�������
{����H��������H�������H���$����H�����f.���UH��SH��H�_xH�GxH��t"H���Jx��H��H�]�����w���H�]���f.���H����@�����ff.����UH��AWAVAUATSH��8dH�%(H�E�H����@��u(H�E�dH+%(��H��8[A\A]A^A_]�fDL�e�L�71ɺH�5�WL�m�H��L��H�E����1ɺL��H�55MH�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�}��~��H����
|��L����v�����y����H���k����H������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����x����UH��H��H��SH��H��H��H���H�Ơ�@���H�H��H�SH�]�����UH��H��H��SH��H��H��H���H�Ơ�P���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���z����L��I���	w��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���v��f��t>D��1����L����w��H�}�H��L���o���H�ƺ��L���O�����D9�u�L���p��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���u��HDžx�����H��p���H��u$�+H��x���H��x���H9�p������x���H��h����v��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��{��L������H������1ɉ�L���h���H�������
�YH�DX�H�xHc�4���H�H����H߹,f�HcU�H���\������ƅ������E1��L�������@A��Lt&H������A�L��H������H�
dP�P�<v��D��L����s��H�pL�0�
H�������w��H�������
L���E��w��H��������4���H�LcrHcU�L�DM��t_����D)�H�L9��@��H������1�D��L���G���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�
O�P��t��E1���L����?r��H�pL�0�
H�������Gv��H�������
L���E��0v��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�
�l�P萁������H������H��H��m���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���Al��H������f�H������A�L��H������H�
M�P��r���J���D������L��p����+p��1�L��H���p��ƅ����H�H9�+���H�KH9H�����������H������H�������mm��H��`���H������H��7t��H�E�dH+%(uOH��`���H��x[A\A]A^A_]��H������H��H��Ek�����H������H���1k��H���]����n��������f.���UH��ATSL�e�H��L��H��pdH�%(H�E�1��Sj��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�5CL��HDž���=z��H������1ɺI��H��H�5|@HDž����H��`����z��L��L�����L����|��H�������,r��H����� r��H������H�3A�H��A�H�
H	���H��8�����q��H�CXf�)�����H��H��H���)������jt��H��@���HDžh���DžT���H������xu,I�}�s���Ao]p��T����Ao��)�����)�����L�����L��@����ƺ
L���j��H�S0�E�H�HcRL�lD���i��H��p���E����L�+1ɺL��H�5BHDž����x��L���L��H��p����{��H������p��1ɺL��H�56IL�+HDž���|x��L��`���1ɺH�5�>HDž����L���Tx��L��L��L���1{��H�������up��H�����ip��H�3���L��A�A�H�
�	�6p����T����
L���i��D�h	�E�D���h��H��x���I��E���H�sH���XH�S`H����H�ƠH�������ty��H�sH��X���I��H��tH�S`H��tH�ƠH�������r���
L��L��L�+�Ro��L��L��HDž���‰E���o��L���L��H�u	� z��H�����do���
L��L�3H��X����n��L��L��HDž���‰E��o��L���L��H�	��y��H�����o��H�;���H��x���H�a	�y��H�3A�L��A�H�
�=����1l��L���g��H��x����n��H��`����g��H��p����n��H��h���H��h���H9�@�����H��h���H��H����z��I�ŋ@��u����I�uL���[q��L����o��H�������T����p��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����d��H��X���H�����H��L��L���c��H���m���f�H��H��L����c��H���5����4g����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����1u��L��L��@���H��I��$�I��L��H����
u��H��L��M�|$ H������
H�� ���H������k��L��H��HDž ����‰E��k��H�پ��L��H�	��u��H�� ����k���
L��L��M�|$ �j��L��H��HDž ����‰E��Bk��H�پ��L��H��
	�{u��H�� ����j��H������
L��M�t$ �Vj��L��H��HDž ����‰E���j��H�پ��L��H�Y
	�$u��H�� ����hj��H������
L��M�t$ �i��L��H��HDž ����‰E��j��H�پ��L��H��		��t��H�� ����j��I�t$ H��A�A�H�
B����Lg��H���4b��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��	����os��H������h��I�D$ �
L��H���H��(���H��H�����9h��L��H��HDž����‰E���h��H���H��H�U	����s��H������Gh��I�D$ 1�H���H��0���H=���tL)�H�P�H�pHH�
L���g��L��H��HDž����‰E��Sh��H���H��H��	����r��H�������g��H��8���M�|$ 1�H=���tH����H)�H�P�H�pHH�
L���Cg��L��H��HDž����‰E���g��H�پ��L��H�	�r��H������Ug��H��������M�|$ M����Ic�H��I��$fHn�I��$�fl�H���)������i��L��H�����H�ƺ
H������f��L��H��HDž����‰E��.g��H�پ��L��H�t	�gq��H������f��M�|$ H��A�L��A�H�
K5�����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��	�up��H������e���m����_`����H���c�����H���z�����H��雽����H��鲽����H���ν����H������fD��UH��AWAVI��AUL��@���ATI��H��SM��$H�� ���L��H���H�����dH�%(H�E�1�I��$�H����n��L��H��I�D$ H������
H������d��L��H��HDž ����‰E��e��H�����H��H�}	����So��H�� ����d��I�D$ �
L��H�����H������'d��L��H��HDž ����‰E��d��H�����H��H�	�����n��H�� ����5d��Ic�I�D$ H��fHn�I��$�L��fl�H�����H�Ơ)� �����f��L��H��(���H�ƺ
H�� ����c��L��H��HDž ����‰E��#d��H�����H��H�r	����Xn��H�� ����c��H��L��M�t$ Hc����fHn�I��$�fl�H���)� ����Ff��L��H��(���H�ƺ
H�� ����b��L��H��HDž ����‰E��c��H�پ��L��H��	��m��H�� ����
c��I�t$ H��A�A�H�
e;����E`��H���-[��H�E�dH+%(uH���[A\A]A^A_]��g]����H���[�����H���r�����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�-	�8l��H��p����|a��H��P �����������uLM�t$ 1ɺL��H�5�9HDžp�����h��L���L��H�j	��k��H��p����a��H��@$�����������I�\$ 1ɺL��H�5m9HDžp����h��L���H��H�	�lk��H��p����`���a���M�t$ 1ɺL��H�59HDžp����Bh��L���L��H����k���I���fD���I���M�t$ 1ɺL��H�5�3HDžp�����g��L���L��H�g���j�����DI�\$ 1ɺL��H�5J3HDžp����g��L���H��H���j�������yZ����H���
�����H���$�����H���E�����H���\�����H���x�����H��鏹�����UH��AWA��AVI���AUL�m�ATI��L��S��H��8dH�%(H�E�1��Pf��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�
i2����\��H����V��L���U��H�E�dH+%(u'H��8[A\A]A^A_]��L��L���UX���7����Y����H��鏸����H��镸���f���UH��AWAVI��AUATI��SH���dH�%(H�E�1�H��0���H��H��H������e��H��L��L�����A�|$�ƅ+���uA�D$8����+���H��`���H�����H���C\��E1�A�|$8I���tM�D$0I�T$I�t$H���z��I�D$@�@����IcD$����A�D$H��������A�D$L���8���wI�D$I9D$ �H��@����1�HDž@���H��H�����DžH����c��I��I�T$H�����H��P���H�����I;T$ ��,@f.�=z	H�����t�X
=�H,�H�fHn�I���H�����H�����fl�H���)�P����U_��H��P���I��H��@���L��H���H��X����PH��t#H�����A�H�
�6L���bZ��H��@���H�M��@�
D��H��H�� �����,����7a��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����c��L���H��H��8�����e��H��P����+[��H��8����[��H��@����[��H�������+���1�L��H���x���H���`Q��H�E�dH+%(�4H���[A\A]A^A_]�H��P���I�^ 1ɺI��H��H�533HDžP����Yb��L�����H��H���2e��H��P����vZ���2����H��P���I�^ 1ɺI��H��H�5�-HDžP����b��L�����H��H�w���d��H��P����Z��A�D$L������H��P���I�^ 1ɺI��H��H�5A-HDžP����a��L�����H��H���zd���C���DH��P���I�^ 1ɺI��H��H�5%2HDžP����Qa��L�����H��H���*d���K���DfHn�I���I��H��@���fl�H���)�@����\��L�m�H��H���H�ƺ
L��I�^ H��@����I^��L��HDžP����‰E�H��P���I��H���TY��L�����H��H����c��H��P�����X���_���@I�~ I�L$@���H����^c���/����TS����H��������H���1�����H���8�����H���:�����H�������H���H�����H���$�����H���>���@��U�
H��AWAVL�u�AUATSH��H��H��(����wdH�%(H�E�1��F�GL���%]��D�`
�E�D���VP��H��0���E���FL��@���H�s A�A�H�
�����L���W��H�{ H��0������H����?b��L��`���L�{ 1ɺH�5�%L��L��8���HDž`����_��1ɺ
L��H�52)HDž8����^��L��L���L����a��H��8����W��H��`����W��H�s L��A�A�H�
�(����LT��H��(����1�H���V���L���O��L���O��H��0����V��H�E�dH+%(ucH�ĸ[A\A]A^A_]�f�fo�J�@h_I��H�x@Lcm�M��u1�E�gfC�D/���@M�L��L���M������P����H���C�����H���O�����H���n�����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���
N��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���EM���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���JL��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�CL��H�E�H�� H���®��L�}����L��H�E�L��H���c]��H�}�L�m��R��L��H�E��&P��L��H�E��P��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�5G L���RY���5����8L�����9�����H���|����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�5[	H��@H��tz1�1�L�_2��H���GY��M�$$A�|$tH�e�[A\A]]�H�5!	H����H��H�52��I�T$H��I�L$PL�
2��L��7���d[��XZH�e�[A\A]]���!	��t%H�	H�=�
	H�0�N��H�5�
	�Y���L�-�
	L���AK����t��Hq��L��H��
	�O������
	��t%H��
	H�=_
	H�0�/N��H�5P
	�3���L�-�
	L����J����t���p��L��H�~
	�N�����I���y���ff.���UH��AUI��ATSH���HH��dH�%(H�E�1��pE��H�]�I��H��tLH�H��PH�U�L��L�����L���TX��H�H��PH�E�dH+%(u-H��L��[A\A]]�fDH�U�L��H�����L���X�����JI����I���֪����I���Ӫ����I���Ǫ��fD��UH��AWAVI��H��AUATSH���H��8���H��P���H��X���dH�%(H�E�1��J��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���F��H��`���I��E���wH������I�v A�A�H�
�����H��H������MM��I�~ H��`������H�N���W��fo
AL�����H��8���f�L��)����)���)��)����)�p���)������K��L��@���L��L��P���L��p���L�����L��L��L���(U��H���L��L��L��0���H��H��(����E��I���I��L��H����V��L��H������H�������BL��D��H��L��h����Hi�ų��D��L����H�� D�)�i�A)��DG��1�L���:K��H�������L��H��#K��H������1�L��H��K��L�������L��L�h�J��H��H�����L��H=���LE�H������H��H��H���L�jD���R��1�L��M�f �J��H�0�
H���EK��L��@���H��HDž����‰E�L����K��L���L��H�Q��V��H������PK��1�L��M�f �RJ��H�p�
H����J��H��L��HDž����‰E��vK��L���L��H����U��H�������J���L��M�f ��I��H�0�
H���J��H��L��HDž����‰E��K��L���L��H����PU��H������J���L��M�f �I��H�p�
H���"J��H��L��HDž����‰E��J��L���L��H����T��H������4J��I�^ 1ɺH�5�L��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�-�=�@HDž�����*�L��@���fn�L��H���H��(���fn���X���fb�L��L��H����f^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����K��H��P����ȉ�����G��H��P���f������>��AWD��X�����D����������AUATH��(���SH��@���H����F��H�� H����F��H���ZJ��H���H��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�s��Q��H��8����1�L�����H������<F��H��`����0F��H�� ����t>������H�PH��H�pf�f�H��H��f�J�H9�u�HcE�I�}L�<H����1�E�efC�t=�6���D1�H�
n�f�f�TCH��H��
u�H��`���H�KHcPL�,H��uTJ�)�)1�f�D�cf�H���f�H��(���H���l�����@L��H���<���b����H��H�pL���q<��H�����?����H��顡����H��鉡����H���u�����H���]�����H���Q�����H���E�����H���9�����H���-�����H��遡����H���i�����H��郡���f���UH��AWAVAUATSH��XL�g(dH�%(H�E�1�M���WH���L�m��H��L��L��H��I�$�H�E��x�QL�=&��L��E1�L���:��H�;L�e���E��H��L���?��H�0H�{0�IA��H�}�H��tH��PL�s(�r��H�E�H��M�������I�L��L��H�E��x���L�e�L��L��H�E��9��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��骟�����џ���K�����H���N�����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�=5	�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����7��M���	
H��X���H��P���L��`�����6���Hw��I��I�EL��L��L���H�E��x��L�u�H��X���L��H�E��6��M����I�H�5lL��1ɺL��h���L�x H�E��HH��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����?����H������$I�L��L��P���1ɺH�@(L��H�E�H��H����G��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����>����H�������H�}�H��t#H��P(A9��,H�}�H��tH��PD�kl��I��I�EL��L��L��H�E��x����L�}�H��X���L��H�E��4��M����	H�E�L�}�L��H��H���H��I��P(L�u�M���U���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�5�L��1ɺL�x H�E��E��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��U2���y���H�=��L�=���SI�EL��L��L��H�E��x�[���L�}�H��X���L��H�E��2��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����4F��H�}��{;��H�}��r;��L�+1ɺH�5^L��H�E��C��L��L���L����E��H�}��5;�����3��H�3E1�E1�H�
K����H��I���:��L�kpL�cpM��t`L���F3���L����2���I���:��H�1ɺH�5�L��H�E��zB��L��L���H���WE��H�}��:��I�L���P����H���H�=��7�����H��X���L���Q0��H�}��X:������L���PH�{HL�sHH��tH��PI�����H�a�H�=m��6�����D�:���H�0�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�
M��H�U�L�"!��H�}��D��H��X���L���:/��H�}��A9��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�5l�H���#H��P���1�L�k��1��TA��H�u�D��L��H��P0H�55�H���IL��X���H��H�M�L� ��H��P���L�
 ��AWH�U��uC��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��.�����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�}��V;���A���fD�*�0���H�xH�5��-��������L��H�E��_4��H�C�x�H�}��w��tD��6������H��H�=��3��H�5�����H��P����������H���H�=#�H�0��4��H�5����H�E�H��X���L��D�0� ,��E������`����p����,�����H�%�H�=��H�0�4��H�5������������H���H�=��H�0�e4��H�5�����H�CL��H�0�2������P0��L�5��L���1����� ����W��L��H�����4������L�5��L����0�����M�����V��L��H�j��4���4���fǃ�ƃ����L�5<�L���0�����9����V��L��H�%��`4��� �����H���ٓ����H�������H���3�����H���7�����H���6�����H���ԓ���?�����H�������H��鉓���͔���������H��鎔����H���|�����H��靕����H��騕����H��霕���B�����H��鼗����H���=�����H���%������˖����H���٘�����������������H���l��������������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�=R�L�5K��=I�EL�e�L��L��L��H�E��x��H��(���L���(��L��@���HDžH���M��tPI�H�5�L��1ɺL�p(H�E��9:��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������U/��L��H���M���n���I�L���PH�{PL�sPH��tH��PL��H����]n��H��M��t)I�EL��L��H�E��x��H��(���L���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�Q��L��L�m�H�E�H��H��(����3%������fDH�=p�L�u��[M��t�I�H�W�L��L��H�E��xt/H��(���L��H����$��H�� ���H����$��H�}���.����L��(���L�}�L��H�E�L��L������$��H�� ���L��L��X����$��H�}��.��M���������d��H�����H��L��H��H�E��x��H��(���L��E1��B$��I�EL��`���H��h���L��P(L��h���H��p���H��H������E�uM�}HDžp����+��E����A�F�L�5.%M�l��9�I�?A�$�$H��$�wH���78������I��M9�tVI�?A��L��wH���	0����u�I�7��FH�E��H�L���1��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����1��H��`���H��tH��PH��X���H��tH��PL��P���M��������0���@H��(���L��L�m�H�E��]"�������L�=�H���L���8#����t0�i��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��!��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�5H�@(L��H�E�H������$2��L��L��L��H�������H�E��xtBH��(���L���) ��H�}��0*���������-��H�=��H�0�(��H�5���.���H�E�H��(���L��D�0����H�}���)��H�}���)��E�������H�E�H�����H�5a1�H�H�����L�r(�H�E��`1��H�����H�����A�ք��g���I�EL�� ����1�H�5
H�@(L��H�E�H������1��L��L��L��H�������H�E��x���H�E�H��(���L��D�0���H�}��)��H�}��
)��E��H��H�5r�HE�1�H�}�L���w5��H�E�H��H����(�����H�>�H�=���C%�����H���
H�5:�����������H��p����]����0#��H��p����	H�5��N����t2H�����1�L��H��P@H�E�H��H��H�}��7(���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���J��H�}��Q'���v���L�� ���H�0L���$��H��(���L�����H�3L��L����"��H�E�H���H���H�}��'��H����xt�H��H���tH�;�(��H��L���2��L��H�����*��H��M��t/I�L��H���L��L��H�E��x��H��(���L�����E1�L��H��L�m��~���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���|�����H�������H��L��H���������H���\�����H��鵊�����UH��AVAUATSH��H��0dH�%(H�E�1��f���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��+��L��L���L���e.��H�}��#��H�}��#��H�}��#���t�L�e�L�31ɺ
H�5�L��L�m�H�E��'+��1ɺL��H�5p�H�E��	+��L��L���L����-��H�}��-#��H�}��$#��L���/��L��H��0�M#��L���*������H�3E1�E1�H�
����H��I����"��L�kpL�cpM��tL������L��������uƃ�H�E�dH+%(uMH��0[A\A]A^]�D1ɺH�5P�L���2*���!���D1ɺH�5�L���*�����������H���ʈ����H���Lj����H�������H��������UH��AWAVAUL������ATL������SH��H��dH�%(H�E�1��G L���-��L��H��0�!��L���5)��L�31ɺH�5��L��HDž�����Q)��1ɺL��H�5��HDž�����0)��L��L���L���
,��H�������Q!��H�������E!��H�CL��pL��� ��f����H��@���H����
L���H��H��0���� ���
L���E�H������H��H�� ���� ��L����4����! ��fIn�H��1��A�.A�L��H���H������HDž����fHn�H��p���fHn�fHn�H�
m�H��P���fHn�fHn�H��`���fl�fl�fHn�H��H���H�
[�f�)�����*�fl�fHn�fHn��0���� ���1��Y�fl�)���)��)����)� ���)�0���jjj�A��H������H�� H���5���fo�0���fo� ���L��@���L��fo����fo����L��H��H���fo��fo���)�P���)�`���)�p���)�����)�����)������Z�H��H����N��H�;L���H�T���)��H��@����+�������H�3E1ɺ��A�H�
A�H��I������L�khL�chM��tL���9���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�K��H���S��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�5Q�HDžp���H������$��L��L��L���'��H��p������H���������H�3���H��0���A�A�H��H������H�
����H������HDž����H��H������3��H�����HDž���H��H���������H�����HDž���H��H����������H�����HDž���H��H����������L���M�����M�t$L���+��H����H�ƺ
���L���E����H�����H�ƺ
���HcUĉ�4���H�H�L��H�������9��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�j��%��H�3A�L��A�H�
������:��L���"��H�������H������
��M�$$M���I�D$D�pA��D�����I��E����H������L�������y��L�+1ɺH�5e�L��HDž�����"��L�����L��H�������$��H�������2��1ɺ
L��H�5=�L�+HDž������!��L����1ɺH�5�HDžp���L���!��L��L��L���$��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�������#��H����������H�{I�T$ 1�E1�H�5W螂��H�3H����A�A�H�
ٸ����w��A�t$8H�;�������I���L������L���m��A�D$8L�� ���L���HDž ���L��f���������H�{����H�{I�t$�2"��H�{L��L���������L��(���1�L��L���ǝ��H�1ɺL��H�5�HDž����H�����|��L��L�����H�����U"��H���������H�3���L��A�A�H�
4�����L�����H��(����b��H�{�y��H�� ����M��L���
���n���H�PH�K�Df�H��H��f�J�H�
9�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�
���f�fA�TFH��H��u�HcM�I�~4H�	H���^1�E�nf�O����1�H�5���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�������T��H�������
�����H����H��H�������z��H������H���B���H�����H��H�������R��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���0|����H���|����H���|����H���|����H���|����H���|����H���|����H���|���ff.���UH��ATSH���]���H�{(H��tH�H�C(�PH�{8H��tH�H�C8�PH�{@H��tH�H�C@�PL�chH�ChM��tL������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��L��f�H���C8CHCXChCx�(��1�1�ƃ�f���f�H���H���H���f���ǃ�Hǃ�ǃ�Hǃ�Hǃ�Hǃ�ǃ��?Hǃ�Hǃ�Hǃ������H���Hǃ��h��H��Hǃ�Q��H��Hǃ�:��H��Hǃ�#��ƃL���t��H��0�h��H��[A\A]]���I���fz����I���Oz���@��UH��AUATSH��H�����H��0���H�� ���H�����H�����H�����H�������H�������H�����H���H���H���H9�t	H�����H������L�cxM��tL�������L���j��L�cpM��tL�������L���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����� �A���1�1�H��I���
��L���L��L���G
��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���]x����H���x����I���x����I����x����I���x����I���x����I���x����H�E��_x����I���x��ff.���UH��ATSH��H��L���dH�%(H�E�1�HLJ�L�e�M��t%I�$H�x�L����I�$L`��A�l$��H���s��H���H��tH�Hx��o��H����I���L���M��tL�������L���X��H�{x����H�{(�&�L�cM��tBI�|$@�S��A�|$8��I�|$H��t
I�t$(H)����L������PL�����H�[H��tRH���Z��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���Jw��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�}�����E��U���f.�H�}��E�����뙐H�u�H��蔦��������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�0��L�����H�{0H�C8����L�b�I��������G�H�E�dH+%(u$H�� H�� [A\A]A^]�8���I�t$���T����H���.u�����UH��AWAVL�u�AUI��ATI��SH��H����<���H�wL��dH�%(H�E�1����H�CL��pL�������tL���{��H�sH��t2H�S`H��t)H�ƠL��������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�5��HDžp������L���L��H��0�������H��p����6��H��P����*��1�H���p}��H����H��tGL�;1ɺL��H�5��HDžp����
��L���L��H������H��p�������H�{H��<���E1�1�H�5X�o����L�;u#���tH����P���X�H���@����1ɺ	H�5�L��HDžp����

��H��P���1ɺH�5R�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�5I�L��L�}�H�E��5����$���H�{@��H�;���H��H�s@�A��H�s@�L��p���H��0�������H��0���H��H��t(H�L��H��p����x�%H�5��L�����1�H�;H��p������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�5��HDžp���H��0����M
��L��L���H��0����&
��H��p����j�����D��������H���1�H�ߺ������D1ɺH�5��L��HDžp�����	��H��P���1ɺH�5�H��HDžP���H��0����	��L���L��H��0����y��H��P���L������H��p������H�;L�����H���C��H�3H��0���E1�E1�H�
������b��H�;L�����H�Ƞ���H�3E1�E1�H�
U����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��(������H��P���H�� ���H��(����d���f�H��H���H���H�O�H��I���
��H���L��L��0����Y�L��H��I�������<���1ɺL���o��H�5��A�E���AEfA�E(L�+HDžp����T��L���L��H��0����-
��H��p���L��P����j���L�;1ɺH�5��L��HDžp������1ɺL��H�5O�HDžP�������L��L���L����	��H��P�������H��p������H�3E1�E1�H�
����L������L���%���H��H�������L���A���.���@H�E�H�5��L��H�E�H��0�����H��0�������5�����H���3k����H���Zk����H���yk����H���Zk����H���ok����H���yk����H���ak����H���ok����H����j����H���=k����H���'k����H���%k����H���3k����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������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���P���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�5t�L��L��x���H�@(H�E�H��P������H�E�L��L��H��X���H��H��P�����H�E��x��H�5���E1�H��X���L�u��p�H�}��w���I�1�L��L��P@H��p���H�E�H�}�H��p����N���I�L���PI�L���PH��p����GE1����V����H��p����W����H���H�5������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�5f��L��H��P����W�H��P�������H�5D��L��L�u�H�E�H��P����)�H��P������H����H�=Z�����n���I�4$�N�N�������H���gf����H���f����H���bf����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���Z���f���H������L��@����
L������L�����H������L��
�E��x���L�4����
���H�����fInޘ1�H���fHn�fIn�H��fHn�H�����H�����HDž0���fl�fHn�H�
U�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����1�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�������Y������VH������H��H��x�����f�f���*������Yn�f/���	f.L�zI��������t�X���L,�M��LN�H�������I����f�f���*������Y�f/��W
f.��zH��������t
�Xa��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����H�@�L��I�F�~��L��I���n�H��L��I��[�1�L��I���N�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���2�H�������F������7L��x���H��p���1�L��N�4`��H��@���1�L��H���L��L��H�I)�L�p�t�H��`���H��@���L��H�T��H��Q�1�L��I���D�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$�Q��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�����L��L��HDž0����‰E��/�L���L��H����h���H��0�����H������L��L�c �
�D�L��L��HDž0����‰E����L���L��H�_�����H��0����V�H�s E1�L��A�H�
w�����%�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�������2���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�
6�������H�C H��x���H�xpH��P8L���'���h���u&H�����������Dƅh������@H��X���A�D$�f�f��H��*�P����*��^���H�����L���,�H�fHn�H���fl�H���)�0����)�������H�����E��H��0���H��8���ȉ�0��������f�H�������T�������������H�H�p������DH������L��H��P�����H��P���I��H������L��P���H)�H����L��P����9�I�?A��H����wH����������L���HDž�L������n�����I�7�e�L��0����N9���L�s 1ɺL��H�5q�L�����HDž0�����1ɺL��H�5�HDž�����L��L�����L���{�H�����L��@�����H��0�����H������L��L�{ �
�D�L��L��HDž0����‰E����L���L��H�g���H��0����V�H������L��L�{ �
���L��L��HDž0����‰E���L���L��H�	���H��0�����H�s E1�L��A�H�
!�������H�C L��H�xpH��P8L����H��������DI����H��������I9�LG�I��L���9�H��h���I��I�����H)�L��H��������H��X���H��`���I��L��h���H)�H���2H���PH������K�L5L��X���H��h���L�H��`��������\X��L,����fDI���������H���f�f��f�L��X���H�������H*�h����H*�`���N�d0�^��������8Df.X�z�����t
�X���H,�A��I��A�F�M9��g���D��P���f�f���A*�A*��^��K�f��,�f��*��Y�����f/�w��\u��H,��fDH��H��L��P���H���������H������L��P���L��H��H)�������fD�\ ��H,����L�-ϦL�������Y������L������B���HDž0���L��)���H���H��0���H����Y��)���H��������H9�HG�L�4����H�E�dH+%(uH�=���+����H�E�dH+%(u�H�=������H����S����H����S����H���T����H���T����H���4T����H���:T����H���DT����H���RT����H���WT����H���sS����H���PT����H���UT����H���VT����H���[T����H���S����H���S����H���S����H���S����H���,T����H���=T����H���BT���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����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��������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�h�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���������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������H�������6��A�Ą�t?H������3�H��������H�E�dH+%(��H�e�[A\A]A^A_]�DH�����������H��H��������H�����H��H��������H������t^H������L�8�1��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�5F�H������H����L������L�8�����L��������M��H�����HDž��H��H������Dž���6�H�����������PH����H��p����A�H�
}�H��H���	��H������L�����I���M��H������L��H����6�I��I���H������H��L��H����c��H��@���L��M�f H��x���H�Ϻ
H������L��p���H���������H������L��HDžp����‰E����L���L��H�{���H��p����
��H��H�������
M�f H�����H��L��HDžp����‰E�H�������-��L���L��H��z�f�H��p������L������H�������
I�^ L���;��L��L������L��‰E�L�%"zHDžp�������L��L���H����H��p����C��H��x���H�������
I�^ ����H������L��HDžp����‰E��h��L���H��H��y��H��p�������H�������'H���������H��H���H���H�5��1��:�H������H����
H���������H�I�^ �@����
1ɺH�56�L��HDžp�����H��0���1ɺH�5��H��HDž0���H���������L���H��H���������H��0����	��H��p������1ɺL��H�58�I�^ HDžp�����H������1ɺH�5��HDž0����s�L���H��H�������L�H��0������H��p������H���I�v A�A�H�
X����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����M��L������H��x����
I�^ L������L��L��HDžp����‰E��s��L���H��H��v��H��p���L�%�����L��1ɺL��I�^ HDžp������L��1ɺL������HDž0���L���d��L��L���H��L�������:�H��0���L�%���w��H��p����k��L��1ɺL��I�^ HDžp����
��L��1ɺL������HDž0���L������L��L���H��L��������H��0���L�%2����H��p�������L��1ɺL��I�^ HDžp������L��1ɺL������HDž0���L���h��L��L���H���E�H��0������H��p����}��I�^ 1ɺH�5��L��HDžp������1ɺL��H�5��HDž0������L��L���H������H��0������H��p������H��p���H������I�^ ���1ɺL��H��0���H�5#�HDžp������L��L���H���j��H��p������H��0������I�v L��A�A�H�
կ���L����������H������M�f ���H��1ɺL��H�5��HDžp������H��L���L������H��p���L��������I�^ 1ɺ	H�5b�L��HDžp������1ɺL��H�5حHDž������L��L���H���t��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����Y��I��H��H��L	�ttH��@����
H��H�������P��L��
�E�H������H��H�������/��HcUĉ�4���H�L�l
D������I��E���BH�����L������G��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~��S��1�������
��fI~�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�����H�����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���U��H���=��H��P�������H���������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�Q}�8�p�G�P��W����
H������������DI�^ 1ɺL��HDžp���H�5=�L��0����D��1ɺL��H�5s�HDž0����#��L��L���H�����H��0����D��H��p����8��H��p���H������I�^ �A��L��H�m���H��H��p������H��p������I�v L��A�A�H�
������3��L�����H�������H�������(u#H�5{�H����H������H���������M��tI�(����L���)���`L���L��H�����H��t@H�WH�OH�H9��5H��{�8���G�P��W��u���f�H�������T��H������X��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���Q�������������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�5b���L��HDž�����O���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�5��H�@(HDž0���H�������}��H������L��L��H��������H�5(�H����H��H�����H�
u���H������L�
W���L�0���H��QH��p���H��x������H�5B���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�������O��H�=X�H�0� ��H�5I�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�=o�H�0�7��H�5`����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�3�H�=��"���H�5����H������H��L������H������蹻��L������H������H�����H������H��L������H������膻��L������H������H���M����{����P����q�������g�������ƅ����H��x����_��L��A���4��H������H��L������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���O������蕽�������L����I�����H���L2����H���42����H���2���3����H���2����H���2����H���2����H���2����H���Z2����H���63����H���3����H���3����H���<3����H���4����H���4����H���<3����H���A3����H���1����H���{1����H���o1����H���c1����H���c1�����W3����H����1����H���L3����H���w3�����3����H���1�����%2����H���3����H���3����H���3����H���U2����H���I2����H���U2����H���=2����H���%2����H���%2����H���0����H���|0��@��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���0��L�����H��@���H�����f��tYL��h���E1�1�I���I���H��lH��h�w(��L��P���H��L���5����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���UH������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���0QH������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����y)��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��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�� �2���H���������fD��t��������H�s �S,H��P����F��9ЋS(HDžP���N�舻��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��臲��f�������L��h���E1�1�I���I���H��lH��h�Q ��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��聯���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���X��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����|5XL��Z�"���H������L�x�M�f���t����3�L�sPE1�L���Ĵ���…���H��@���L��I��DH��L���}����xu�BH��I9�u����D��t������L�sL��跭��f�����H��h���f�f��H�����h�������l��������P����C�*��Yy��7f/��xf.1�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���W���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�r��e���A�ƅ����H�S�JH�Z�����H�B	H�t

1���H��H9����x� H��u�����HD������uCH���H9�tH�x��H���������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�5��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���2���������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��蚦��������������������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)��N���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�2���������H�C�p���H��@���H�s�C�����H�x�H���٪����u��t���%����H�C�p�K������'L���������V��	�sM�~�%�f.���t����d���L��x���1��"�L���h����P����LH��H������H�pH������L9�r�H��������L�pL��P���H��@���L���W���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���I���H��L�������\������*ƅ8������`��8���u �5DH��x����4����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�΂聧����u��t���%��tH�C�p�����C��t�H�s L��P�����H�����L����ɬ��H��H��@����:���L�������L��L��8���语��H�������H��H��(���蔭��H��L���9���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��茝��H��h���H�@H�������Y����f��H��h���H���f/���h�P�w	f.+�z�����t�
���X��H,��� ���f�ɈPf/��&	f.�z�����t�
o��X��H,ЉPH��@���H�p胯��H��h�����,���H�x���t1���������(����GH���t
1�������GL蘠��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��艰���x�PH��H������L9�r�H��0�������H��(����D���H��8����8���H��8���H��tH��H���H)�荛��H���������H���������H��@���蹙��L��L�{轩����A�L���J�����L��P���H�K@E1�A�H�S0H�sL���!����]�f/��yf.��z��
z����H���cH��������H9�HG�H��H���H���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�{�V������f��H�C�Y�P�����H����Pf/���f.�z�����t�
���X��H,Ѐ�8����P�{ƅ8���H��@����f����!����
I�f(��\��H,ˆ�����\��H,���H�x�
�����H���
L��
�������o��������1�L��P���HDžP���L������D��H�޹LA�L��蚣��H��P����HD�qD��贘��H�����H��E����L��P���L���"���H��h������H�����H�p?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�{褟������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��腔��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��(���蕟��H�� ���H��(����ƒ}�ƅ8����4���ƅ8�������
�|�\��H,��i�����X����
�F��X���H���H��H��(���舡��H��P�����4���H�H�HcRH�\��覔��I�ƅ���H��h���H�@H�x@L�p@�������ƅ8��������
Z|�\��H,�����
D|�\��H,����H��p�H�=�[�N�������
|����H�@�x�����H�wwH�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��莖��f��t0H��h���H��H�x�v�����s�����H��h���H�w�)<��H��(����M���H��h���H�Yf���NH��h���H�@H�������H���I������A�F8I�~0����]���H�x�H��u�L��(����`��������L��(���A�@�i�����������w�H�H�
�{��H�CH�PH9��H�PH�
�{��H��H9����P�B�P�2����H��H��肠��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���O���H�C�>�H�x�H��m�1�����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腚���W�H�x�	�	H��o��������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�d����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�0k蹖�����f�����H��������H9�HG�H��H����,��X���H��@����
H��H��X����^�'���H������L���E�H��P���H������H�umH������H������fHn��X���)������o*H��h���H������H�@H�x@H�P@萕����X����|����C8H�{0�H�����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�=CbL������跔�����V�H���H����L��������������H��I������t��H�@�x	����H�x�	�	H�Ul豔�����������H��(���H�����H�� ����j���H�����H�� ������L��H��H�pL�� ����A���L�� ���H�������X���L��@����
L���^���fIn�L������H�������E�H��P���L��H������H�7kH������H������fHn�fl�)������4(H��h���H������H�@H�x@H�P@�U�����X���������H��������H�������H�������H�������H��������H��������I�������H��������H���d����H���|����H���}����H�������H��������H��������H�������H�������H���+����H��L�������$����I��������H���8����H��L�����������H�������H���A����H���Y����H���)����H�������H��������H���f����H���=����H�������H���q����H���E����H���-����H���*��@��UH��AWAVAUATSH��H��H��H��h���H��`���H��H���D��\���dH�%(H�E�1��B���f��u-H�E�dH+%(�BH�ĸ[A\A]A^A_]��H������H�s A�A�H�
J1H�Ǻ��H��@����ސ���s�
L��@���L��F�C����D�`�E�D���2���H��x���I��E����H������H�s A�A�H�
�0���H��H��8����m���H�{ H��x������H�n0����f�L��P���H��h���)����fo �L��)� ������H�����L��H�����L������
L��L�s L��贏��L��L��HDžP����‰E��I���L���L��H��/肚��H��P����Ə��H�����L��L�s �
H��H��P����T���L��L��HDžP����‰E����L���L��H�o/�"���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�
b\���H��H��0����,���H��P����
L��H���e���L���
�E�H������H��H��H��P����A���HcUĉ�4���H�L�|D�����H������E���H�{ H���������H�i-���L���H�s A�A�H�
v-���L������L���ك��H��`���H���	H���H��h���L������HDž0���L���p���E1�E1�L��\���L��H������H��0���躌��L��肑��L�����H������螌��H��0������H��8����ք��H��x���D�hA��D���߄��H��P���I��E����H�{ L���H�Y,��H��h����1�H���,��H��P����"���H��x�������H��@����Z������DH��H���H�������L������L������H��h���L���b���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�CYH�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���葁��H��P���H���A���f�H��P���H��(����m���H��(���H�����fDL��L���M����r���裄����H�������H�������H��������H�������H�������H���}�����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���C����9��A�t$H�]��
H�ߍFA�D$�K���D�p�E�D���|���H�����H��E���	I�t$ H�� ���A�A�H�
(���H��H������趇��I�|$ H��������H��'�Y���I�t$ H��@���A�A�H�
�c���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��肄��H��H����}��H����~����H��褉��H������H������A��H���9���H����f�HDžp���)�`���H��tH��L������L���$���L����L����H��L��L�狍�����H��`���H��tH��p���H)��~��H�����L���|��H������[~��H�������O~��H������@D�hD���Y~��H��E����H�����H������ʅ��H�����辅��I�|$ H�������H��%�Q���H�����蕅��H�E�dH+%(��H�e�[A\A]A^A_]������H�TB�fH~�H��.���D1�H�
Ta�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��蘁����ef��H��`���H��H)�H���H�@HDž`���HiɗH�H��H�HH�����*��^
kx�\�M��tZH��A�.1�1�jA��jj�n}��H��`���H�� H���0���I�>I����H���������I���fDH��A�.1�1�jA��jj�}��L��`���H�� M���R���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���z�����v}����H�������H�������H�������H������������I���G�����I���C����@��Uf�H��AWAVAUI��H��ATSH��H��H��H���H��0�����<���dH�%(H�E�1�)�`���輄��I��H�L�`H��@���M9��bL�=SwH��H���L���l���H�Ë@=���o~T��p��#wLIc�L�>���=u3H�{�G��	����uH����H�qV�����t	I��M9�r�A�E1�1�I�uI���H���3I�U`H�����!@H��p���H�sH��H��@���讀����<���H��@���L��H��X���HDžX��������ubE1ɀ��I�}I���tL���H��D��<���H�SxH�shPH�������H��@���XE1�E1�Z1��~����7���f�H��@���I���`���M9����������f��oSpI�u)�`���H��txI���I�U`H��thE1�1�E1�H�ƠH��`���H��H����ɉ��H��H���H�H�QE��t3H��0���L� �������u%A�����oK8I�u)�`���H��u��H�U�dH+%(��H�e�[A\A]A^A_]�@H�C0f�x�3����ocI�u)�`���H���5����fDf�{0�����osI�u)�`���H���	����|����f�{d�����okI�u)�`���H�������L����f�{,������o[I�uI���)�`���H������������H���	�	H��Z�V����tzH�{�G��	�)���H���	�	H��V�(����t_H�{�G����I�uH���rI�U`H���{I���A�1�E1������A�E1�����H��X���L��p���HDžX�����{��L�=�XL���XJ���Ä�t`I�uPL��H��P0H��p���H��X���H��X���H��p�����}��H��X����B��t���u�H�zL����t����t�Aƅ��L���:;��L��p���L�=1X��u8H��X���A�A��}������H�xL���ot����tAƅ�L���I����t�I�uPL��H��P0H��p���H��X���H��X���H��p����6}��H��X����P��t���u��H��0���L� 1��"����w��H��0���E1�L� �����H���A���H���X���UH��AWI��AVI��AUE��ATI��SH��H�~ H��HH�EL�E�H�E�dH�%(H�E�1��h���I�t$(I�L$0H�H�@H����H����f��f��H*��I*N�^���\f.�z��f(�f(�L��H�U�H�E��M��U��x���H�U�f��U��M�H�E��H*��Y�f��f/��+f.�\zH��������t
�X=\�H,�f��H*��Y�f�f/��f.
�\zH��������t
�X
�[�H,�I�7H)�I�WH)�H��H	���H��8�H���?H��E��L��L��jL�M�H��H�M���X�Z��s��H�s A�H��I��A�H�
o����
{��H���������L�}�H�E�L���x��E1�E1�L��D��L��H�����H�}���z��H�����z��M����L���s��H�E�dH+%(�H�e�L���[A\A]A^A_]�mr��Df��f��I*�H*��^�H��tMf��f��H*��I*N�^���Zf.��������������f�E1��������Zf.�z�r���f(����H�E�dH+%(uKH�e�[A\A]A^A_]�f�L���x����R����\(Z�H,����fD�\
Z�H,������Qt����H���F���H���Q���H���!���H���B���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��%x��I�F(I�N0L��H��p���H��x�����o��H�L��H�U��@�E��~��H�H������H�U��@�E��~��L�m�1�L���Fx��L��L��L���x{��L��H��@���I���6p��H��p���L��L���dv��L�}�L��L���ev��L��L���r��H��x���H��@���L���4v��L�}�L��L���5v��L��L����}��L�}�1�L���w��H��h���L��L��蚁��L��H�E�H�U��o��L����}���of�E�L��L��)E��z���H���L���n��L�kH�CM��t>I�}@�w��A�}8�I�}H��tI�u(H)��qo��L���m���PL���\o��L��H���L��P���L��H��H��X�����d����V���H����
�L�kM��tH�CL���o���L���o��H�sH��tWH������L�kH�CM��t>I�}@�v��A�}8��I�}H��tI�u(H)��n��L���Am���PL���n��H�����v��L���`n��H�E�dH+%(uTH�Ę[A\A]A^A_]��A�E8I�}0�Jy��I�}H�����������A�E8I�}0�"y���_����p����H���"���H���=���H����@��U�H��AWI��AVL��0���AUL�����ATI��L��SH��H�2dH�%(H�E�1�HcVH����{��L���l��H�����L��H���cw��1�L��H���v|�����k��I�L$@I�t$8L��H��H���d5��H����~��L��H���Q#��H�H��W��H��H�@H9�u;�Fm��L���z��L���{��H�E�dH+%(uH��[A\A]A^A_]�D������o����H���:���I������I���F���I�������H��(������l�����H��0�l����H��(�l����H�� �l����UH��AVAUI��ATI��SH��H��dH�%(H�E�1���4��t:H��4I��H��L��L���R���H�E�dH+%(u>H��L��[A\A]A^]�L�5I4L���o����t�H�1L��H�44�Ws����n����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���3��t9H��3I��H��L��L�����H�E�dH+%(u=H��L��[A\A]A^]�f�L�5�3L����n����t�H�v0L��H��3�r����n����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1��M3��t9H�J3I��H��L��L�����H�E�dH+%(u=H��L��[A\A]A^]�f�L�5	3L���An����t�H��/L��H��2�r����`m����UH��AVAUI��ATI��SH�^�H��dH�%(H�E�1���2��t9H��2I��H��L��L���q~��H�E�dH+%(u=H��L��[A\A]A^]�f�L�5i2L���m����t�H�6/L��H�T2�wq����l�����w{�����H��0�c{����H�� �S{����H��(�C{����H�=2H�
2t�f.�UH��H�I�H���(n��H��1]�f.�D��UH��SH��H��H�59/H��t$H��L�:S��1�1��!z��H��H�]������t��H�=�.H�0��o��H�5�.�ff.���UH��SH��H��H�5�.H��t$H��L��R��1�1��y��H��H�]������t��H�=�.H�0�Wo��H�5�.�f.�@��UH��ATSH��H��dH�%(H�E�1���0��t4H�5�0H���et��H�E�dH+%(uAH��H��[A\]�f.�L�%i0L���k����t�H�6-L��H�T0�wo����j����UH��ATSH��H��dH�%(H�E�1��0��t4H�50H����s��H�E�dH+%(uAH��H��[A\]�f.�L�%�/L���k����t�H��,L��H��/��n����0j����UH��SH��H�� H���g��H�{H��t1H�WH�OH�H9�t'H���8t[�G�P��W��t]H�]����H�H�
�P��H�GH�PH9�uUH�PH�
�P��H9�u5H�@H�]���f.���������DH�]���&f��fDH�]���f�H�}��H�}�H�뜐��UH��SH��H��H�xH��t1H�WH�OH�H9�t0H���8tT�G�P��W��tVH��H�]���d��f�H�H�
P��H�GH�PH9�u=H�PH�
P��H9�u%�P뺸�������D�[e���f����@H�}��H�}�H��f���H�H��tH�wH��H)��e��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É��e��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���b��L�M�L�E�H�U�H���d���@H��L��L����b��H���DH��L��L�E�H�U��b��L�E�H�U�H���H���f.���UH��AWAVAUATI��SH��H��H�H�H�HcPH�FHc@DL�lD���sc��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���a��H���@H��L���a��H������UH��AVAUATI��SH��H��H�wdH�%(H�E�1�H��t(H�W`H��tH�ƠI�|$8�s��H���H�����H���2����ƃ�tƃ�ƃ�L��L��P�������
L����c��H�S0�E�H�HcRL�lD���a��H�� ���E���DL�+L��0���1ɺH�5a:L��HDž0����q��L���L��H�� �����s��H��0���L��(����'i��L�31ɺH�5BEL��HDž0�����p��1ɺL��H�57HDž(����p��L��L���L���s��H��(�����h��H��0����h��H�3E1�E1�H�
����L���h��L����`��L�cxH�CxM��tL����`���L���L`��H�� ����`h��H�E�dH+%(��H��[A\A]A^]�DH�IDH�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��(����yg��H��0����mg��H�� ����ag��H�E�dH+%(t"�a����H�����H������H����H���h�����UH��AVAUATI��SH��H��H�wdH�%(H�E�1�H��t(H�W`H��tH�ƠI�|$p�bp��H���H�����H�������ƃ�tƃ�ƃ�L��L��P������
L�����_��H�S0�E�H�HcRL�lD����^��H�� ���E���DL�+L��0���1ɺH�517L��HDž0�����m��L���L��H�� ����p��H��0���L��(����e��L�31ɺH�5BL��HDž0����m��1ɺL��H�5�3HDž(����rm��L��L���L���Op��H��(����e��H��0����e��H�3E1�E1�H�
����L���Ze��L���]��L�cxH�CxM��tL���]���L���]��H�� ����0e��H�E�dH+%(��H��[A\A]A^]�DH�AH�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��(����Id��H��0����=d��H�� ����1d��H�E�dH+%(t"��^����H�����H������H����H����d�����H�H�wH��0H9�tH��H���[���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��������[��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���[��H��H�E�L��L)�H��L�<�H�CHH�s(H�PH)�H����L����Z��H�CH�;H�4���Y��H�E�L�sH�I�H�CO�4/H�H�C I�L�{(H���fHn�L�sHfHn�fl�C8���fDI�t$I�}��h��A�E����L)�I�VH��H)�L�<�I9�sH��~zL���<Z��I��s���@K�|/H��~FH)��Z��I��T���D�A����I��=tA�^��D����H�I��������H�H�G�I��	�������H�I�����tX��H�=u,�`�����UH��AVAUATI��SH��H����H��I��H��<��L�4�L���QY��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����W��I�\$M�,$[A\A]A^]��L�W0H�G0M���H���@H��=t�5]���@W����H����V��I�EI�D$(�d����H���
c��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��Y��L�E�L�M���u�I�H��t/L�xH�E�dH+%(�0H��(L��[A\A]A^A_]�fD�H�W��I�?H�I��H�xM�~�Y��1�f�L��A�F fA�F8AFAF(�j��I�D$(f�I�T$A�F I�t$AF(I�|$ �H�E��f��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�W����H���	��H���2I�~�0]��H���HT���HL���T��H�E�dH+%(u��ga��L���d��I�~�\���HL����T��H�E�dH+%(u�H����]����H���b���fD��UH��AUI��ATSH��H�_H��t/I��H�I�|$�d��I�|$�\���HL���YT��H��u�I�EI�}1�H���MW��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��(�>c��M9�u�H�E�I��I9�r�H�M�H9M���H�E�H9�u�5H��(H9]�t(�{t��CH�{��b����A�EI�}��b��I��(L9m�tA�}t����H�E�H�8H��tXH�E�H�HHH�X(L�aH�M�L9�s H�;��H����R��L9�r�H�E�H�8H�E�H�pH��8[A\H��A]A^A_]��R��H��8[A\A]A^A_]�H�E�H9�u�f.�H��(H9]��j����{t��CH�{�b������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 �O���O���O���O���O��P��P���<��#P��*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@�������������������������������� X���W��XW���V���V��8M��0L��0L��0L��8U��0L���T���S���R���Q���P��P���O��HO���N��xN��8N��pK��pK��pK�� V���U��pK���K���K���K���K��PK��PK��PK��PK��PK��PK��PK��[���Z��pK���Y��0Y��PK��PK��pK���X��xX��PK��p���@��������"�������"���"���(���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���"���`���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;P)��l��$��$�V������D�$��<�� ��l �� :�l"h��"��(#��#��$$��T%��%0��'��`(��) �X)> �T*T �*� �P+�"�+�"�D,#��,.#�d-L#�-j#�.�#�(.�'�1�'�1&(��1�(�P2J)�3�)�`3,��3-�4�2�@5�3��504� 6�4��65��8�5�$:8�|:(8��:n9�4;f:�;�;��<d<�<=A�X>�B�>�B�D?jC�?�C�@�C�A&F�pA�F��A"G� B�G�xB:I��B�I�(C�K��DL�,ETL�FzL��FM�DG�N�G�N�LH0O�HNO��HXP�|J�P�J�T�LU�MfU�\NRW�N�W�O�W�O4X��O�X�@Q�X�Q�X�(R@Y�R�Y��S�Y�(T:Z�xTtZ��TT[�4U�[�U�\��U�]�<Vt^�V�^��V@_�DW�_�W�_�HXb`�X|`�Y�`��Y2a�pZc��Zi�D[�j�]Pk�d]�k�]l�,^.m�^
n�^�n�_p��_�p�$`�p�|`�p��`�q�0ar�a�s�b�s�db�v�b�x�Lc�y��c�z�8d�z�d{�dP{�Pet|��|��|��|��}��}���@��DT��pd���������D�� ���Ԇ�4��D���$�����$��������D������� Ը�0 �� ���� ������$���4��D��(T��|d��t����������������<���������(���<��P��d$��P4��TD��hT���d��t�����0���d4�����,t��X�����T������������0d��P���p��t�����Lt��t��4���d��H��t���d$�������T����4$��\D��pd�������������(4��<T��Pt��d���x������������
���4
��HT
��\t
��p�
���4���T���t�����x4���������`���T������X����D���4��h!t���!����!����!4���!t��"���<"d���"��#T��D#���p#�#���#$���#t$���#%���#T%���$�%��$%�&��x%�'���%T(���%$)��,&�)��\&�*���&t+���'t,��(D.��4(/���(4/���(T0���(�2��()�:���)tA���)�V��*�V��(*tW��t*�W���*4X���*�[�� +Tk��t+Tl��,Do��d,�o���,�o���,4q���,�q��$-4r��8-�r���-$s���-�t���0tu��`1dw���1D}��2��2���$34����3t���P4���5t����5�����5���6����8����9��H:T��:D���;����X;D
���<�
��=D?��$>�O��|>TQ��?tZ��l?�Z���?t\���?�]��0@^��D@4^���@�z��<A����Ad����AD���DB�����B�����B���!$���!4���,!D���@!T���T!d���("t����"����&�����&T���'�0'����\'4����'Ԯ��D$$���d$�����$����$�����$$���|)����*ĵ���+����+D���T.d���h.����.4����.T����.���.�4/���h/4���|/����/����/��� 0��40���l0����0����0���81��L14��t2T���2����2���3���4���(4��<4$���4����4���d5���D6d��p6$���6���,7���\7����7t���7����7�� 8�T8d��8T�9��@9��t9D��94��;���;T�<$�H<��<���`=d����=T����=�����=�����>����X@���l@����@���@��@����@����@$���LC����xCD����C����C��DT��,D���\DD��pD����D�	���Dt
��XF���F���G���hG���LE ��`E!���E�!���E�"���E�#��F%���GD%��8HT%���H�%���H�*��(I�*��HIt,��JD.��<JT.��PJ/���J$/��Kd/��LT0��@L�0��`LT2���L�:���LA��MTV��<M�V��PM�V��dM�V��xMW���MtW���M�W���M�Y�� N$n���Ndp���Ntq��,O�q��TOds���O�v��P4w��$Pdw��DP�w��hPx���P�x���P�x���PTz��Q�{��`Q��Q�����Q���LRd���tR�����R���RT���S���� SԆ��@S$���lS$����S����St���LT$����T$����TD���U����XUԞ���U����V����`V��V�W$���hW����Wd����W�XIJ��lX4����X��Xĵ���Y����8Z�����Zd��[d���\$�0]���]T��]��P^4�t^���^��L_����_����_���D`�����`t���`t��TaD���a�$��0b4C���b�r��c�z��pct{���cā���cT���\dĊ���d���eT���ted����Gt����I�����I�����I�����GD����K���K�����K$���$H4����ID����IT����Id���hH�����J$���pK���� K$���HK����(Y����dYd����Y�����Y����ZԖ��$Z��Z����Z4���h[��[���[���\D���4\t���H\T���x\�����\t����]�_zRx�$���FJw�?9*3$"Dx��\p��t8���4��
�0��
�lj����
���	�p��	���	((��E�C
D��E�D�W
D@�i�3E�Q
A�[zPLRx���($����RE�C
G��a
H��i�
����Aa�R
M����Aa�R
M��Aa�R
M <��Aa�R
M@���2A�H
, i��QE�Q
B�E�L��
H0r��{�Q������i�
,��i�A�Q
W������
G��n����
���
,���
@���
T���
h���
|���
����
�X��
�T��
�P��
�L��
(��m�EE�C
B�D�f
LD �m�	4�m�3E�Q
A�[ TX��bE�C
A�n
I(x�m�EE�C
B�D�l
FD(��m�EE�C
B�D�l
FD(�n�EE�C
B�D�f
LD$����E�C
C��J
K$$���E�C
C��J
K L���bE�C
A�n
Ip<��,E�C
A�^�L��,E�C
A�^(�,��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(�p��E�C
D��E�D�X
C(��l�@A�C
M�����.��n�(���E�C
M�����R
I($���rE�C
P�����R
F(PLp�BA�C
P�����R
J( p����LE�U
C��J
IL���L���(l���LE�C
E���n
E����-�L����((��E�J
k
FX
Ha(@�����C
f�H�A�l ��,$,��BLE�C
D��E�D��
C0�L��E�C
I���K
D�
H$����
E�C
G��|
E	��� 	���44	���~E�C
H����D�K
A�
B4l	 ��E�C
F���E�H�o
F�
D0H����JE�C
H����D�G
E�	����	���
���
��(
��<
 ��P
,��(	8���JE�C
G��u
D�
,��,H	��;VJA�C
P�����P
D x	��<J�������
������ ���(4��N�C
A�b��T��`|��t���$����E�C
B�H���s����
����
����
����
���
���
(���!,�
�����HE�P
M������
FHlP��iJ�C
H����D�EB������H�������
A0\����HE�C
D��K��D��
I �b��6�H������$
��zE�C
B�J��e,�t��N�HE�C
F���D��
H0���*�HE�E
F���F��w
C0@��kHE�F
D��I�I�E��
J t���gH�������
X��
0�$��dGHE�C
M�����o
D,�`��N3HE�C
F���D��
H$l����E�C
B�H����(�Ȓ��E�Z
G����_
E����"E�C
A�T8�
���9*�GE�C
I�����(
G�.�. �
*��v�I������8�
|���JE�C
F���E�H�J
K5
K  @��%�I����������
�����������������������3E�Q
A�[8��3E�Q
A�[X��3E�Q
A�[x$��3E�Q
A�[�D��3E�Q
A�[�d��3E�Q
A�[�4���,�p��sHA�C
G��|
I[
E���-QH���(<���E�C
D��E�D�W
D,���'HE�C
D��I�}
A<x��.H�������@E�L
A�m�f��2A�H
(���A�C
B�D�I
Ew, l��A�Q
W������
GP<��"d��	A�C
�<��W�����(L��E�FA�C
B�I�i
Ax���+�F��������Aa�R
M ����bE�C
A�n
I$8t����E�C
C��J
K$`܋���E�C
C��J
K �����bE�C
A�n
I$�P��vE�L
A�t
J^,x����EA�C
B�G��D��
E �����E�����,(d���E�J
B�J���
JJ(X��A�J
E����
EG$�����E�J
B�J���,�P���E�J
B�J���
JJ,�����E�J
B�J���
JJ$����E�J
B�J���$4(���E�J
B�J���(\`����E�C
D��E�D�X
C(�Ԅ���E�C
D��E�D�X
C(�H����E�C
D��E�D�X
C(������E�C
D��E�D�X
C(0����E�C
D��E�D�X
C(8�����E�C
D��E�D�X
C,�����CE�C
D��J�G��
A 8D��R�C�����(�d���A�C
M������(����;CE�]
B�D��
E���C���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������,|�	��&uBA�C
P�����R
J ����0TB������(,�����E�C
P�����R
F(XD��rA�C
P�����R
J(����BA�C
P�����R
J�������,��(|�,����AE�C
E����
A���mA����$$�,��JE�C
E�\
GW$L -��kE�C
C��\
I4h-��mAE�C
P�����z
F�.l. PP���@������,t|0����@E�C
P�����z
F �~���1A������0��?���!AE�C
B�G�L�F��
C ���+�@�����(|�ME�C
C��p
MD����-E�J
A�X(l4@����@E�C
B�D��
D����$k@��� �B��1K�C
A�X��8�B��)E�C
A�X(�C��u@E�C
E����
D($��.�?����,�8D���E�C
F���F��c
I��D��S(��D��g�?E�C
B�F��~
A����?����,�E��rz?E�C
B�F��I
A���Z?����,(HE���C?A�C
K�����
I X^��?3?�����(�y��"A�C
M�������0��N�J
C��S�B�A�W���Lp���`|���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�
G40���E�C
F���E�H�o
F�
A0����?=E�C
H����D�G
E��(@�C���C=E�C
E����
Al���,.=��������������0�D���=E�C
H����H��
E �\��.�<������8�E����<E�C
F���J���
J�
I H*���<������4l$K����<E�C
P�����A
G�.c. �R���<������$!����,8!Ĝ���E�C
B�H���]
IHh!$���0   P��H<E�Q
D��F�G��
A T B��h4<������8x �Q��"<E�C
H����K��
G�
G � J��l�<������44"x����E�C
F���E�H�V
G�
C0!pi��=�<E�C
D��I�N�G�o	
G D!&����<�������"�����"�����"����0�!t���	g<E�Q
B�J�����
D �!����<������$X#t����E�C
D��F���0$"����=E�C
H����H�{
E8X"}��V=E�C
B�I���D�.�
F_. �"T��Z=������,$�����E�C
B�J����u
G0�"؇��=E�C
F���H�D��
B #��
=������0@#������<E�Q
D��F�D�C
A t#��[�<�����(�$h����E�C
C���
ED( %���E�C
M������4�#p����
c<E�C
B�E�E�F�D�
F ($���G<������0L$$���d+<E�C
M�����o
D,�$`���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%|���do;E�C
M�����o
D,�%����N[;E�C
F���D��
H0�%ث���G;E�E
H����D�f
D,&��;;E�C
P�����|
D <&(��k;������0`&@���d[;E�C
M�����o
D0�&|���-G;E�C
B�N����
J,�&x���N3;E�C
F���D��
H0�&�����;E�E
H����D�f
DH,'�;E�C
H����D��
I�
.W.d.W... x'���T�;������0�'t�����;E�C
D��P���\
A �'���$�;������8�'������;E�C
F���E�H��
I�.f. 0(D��E�;������0T(<���E�;E�C
B�E�H����
K �(2���;������8�(4����;E�C
I������
Lx	
H �(��X<������,)t���F?<E�C
F���D��
A0<)�����+<E�E
B�J�����
B(�*0����E�C
B�F���
D8�*Ե��zE�G
D��E�D��
Gx
HN
J04+���dE�C
B�E�F�E�H�!
E,*���D�;A�C
I������
G <*��q�;������,`*����1{;E�C
P�����F
B �* ��1=������,�*����N=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+��x�<E�C
F���E�K��
F �+���=������0�+@���l=E�C
B�E�M���T
A ,�$G=������0(,����)+=E�E
B�I���H�\
G8\,D��	#=E�C
H����D�e
G$
D$�,��r8=A������.��	0�,����=E�C
M�����
F -���<������0,-���~�<A�C
M�����J
A `-l��<�������.����.���/T���	/P���
0/L���
D/H���
X/D���
l/@���
�/<���
08.H��g�;E�C
P������
B l.v��<������0�.`9����<E�C
B�N����d
D �.���<������0�.>���
�<E�C
I�����l
C /��p=������0@/pK����<E�C
D��F�D�V
D t/���<�����0�/�M��M	�<E�C
D��E�J��i
D �/"�[=������0�/�V��S=E�C
M������
D $0b�K=������0H0�[��U3=E�C
I������
H |0����=������(�1��A�C
B�D�F
Ho((24����A�C
B�D�F
Ho(T2����@A�C
M�����.,�2�����F�C
D��F��cJ�����(�2���@A�C
M�����.,�2 ����F�C
D��F��lA�����3����Q$ 3���~E�C
B�H���g8�1$���@<E�C
B�J�E�M���.@`.�
H (2��r6<������0L2����<E�C
B�G�\
C^
A�2��>�;����3���!0�2�����;E�C
G��w
JW
I(D4x���E�C
B�F���
D,p4���E�C
H����D�y
C(�4����E�C
B�F���
D8�4`��zE�G
D��E�D��
Gx
HN
J0�3����:E�C
D��K���C
F �3��%�:������<4\����:E�C
P�����5.v.�
K]
A D4���:������,h4����	�:E�C
P�����}
K �4����:������0�4D��%�:E�C
I�����
A$�46�$�:������t68��3E�Q
A�[�6xG��	(�6�G���E�C
D��E�D�W
D�6�I��	�6��
�6��2A�H
7�I��Aa�R
M87��A�C
A�T X7���_A�C
A�@
K(|7z�
A�C
G���
E\,�7���A�Q
W������
G�7��$Q�G
F@�7���F�C
D��G��H�]G������H������<8�H��
P8�H��
d8�E��
x8�E��
�8�E��
�8\H��
4�8h��A�C
F���E�H�|
E�
E�8�	(�7���8E�Q
C��x
G�7��n�7���L9p�
(`9�"A�C
M����� �9�G��bE�C
A�n
I�9�3E�Q
A�[$�9lH���E�C
C��J
K$�9�H���E�C
C��J
K  :�G��bE�C
A�n
I(D:�D���E�C
D��E�D�X
C(p:E���E�C
D��E�D�X
C(�:�E���E�C
D��E�D�X
C$�:D��E�S
C��g
N�:�"E�C
A�T,;��A�H
B�E�I�J���
H,�9��&�5A�C
P�����R
J : �0�5������(�;��rA�C
P�����R
J(�;��BA�C
P�����R
J�;	��3<<	��	<8	��$(<D	��6E�C
E�^
EEP<\	��nd<�	��.0;�	���4E�C
D��J�E�G��
G P;�N�4������8t;���nx4E�C
F���M��i

L�
F �;��05������0�;���>C5E�C
D��E�F��u
D <��*5������0,<�!��5E�C
E����
KB
A`<���4����$�=@"��FE�C
E�f
ME,�<h"����4E�C
G�����
F �<^�J�4�����0�<�#���4E�C
H����D�P
D 0=P�P~4������ �>�&��1K�C
A�W���>'��(E�C
A�W �>'��IT�C
A�hH�� ?D'��IT�C
A�hH��,<?p'���E�C
G���
KW
Al?(��&@�?(��RE�C
B�E�O����
E~
BX
H\
D(h>8)��.N3E�C
B�H��
D�><�%03���8�>*��i3E�C
I�����e
Jb
N �>�(3������(p@,/���E�C
C��u
HD8@?�/����2E�C
D��E�F���
I`
H |?��m�2������$�@�1��FE�C
E�f
ME$A�1��,�?�1��]H2E�C
M�����|
G @��[-2������ �A3��pE�J
X
D�AL3��@E�I
A�p�Al3��@E�I
A�p(�A�3��KE�E
D��D�3
A,B�4���E�C
B�J��E�D��
A0�@�5���Q1E�C
D��I�F���
A $A��$*1������0HA6��U1E�C
I������
H |A��z�0������(�A <����0E�C
C��w
F�A��:�0���,�A�<����0E�C
I�����P
G B����0�������C0C��0TB<C��b�0E�C
F���E�Y�
A �B�z0������0�BTE��^0E�G
D��E�I�D�
G �B`��`0������0CI���E0E�C
D��E�I�O�z
A 8C��@0������0\C�K���$0E�C
H����G�@
I �C@��0������0�CLN��=0E�C
B�E�J�F�G��
I �C��6�/������0D4O����/E�C
D��G��P�Q
D @D���/������0dD�T��-�/E�H
D��I����
J �D��R�/������,�D�V����/E�C
M�����t
G �D��C|/������$lFPX��FE�C
E�f
ME,�FxX���E�C
D��D�D
Dh0hE�X���/E�V
D��I��E�d
G �E���.������GPZ��h4�E�Z����.E�R
D��D��
AH
HF���.����,,F\���r.E�C
B�F��q
G\Fl�-Z.����8�G�;���E�C
A�O
Ht
LU
KE
K H(<���E�C
A�I
N8H�<��!8�F \���	�-E�C
D��R���O
C. L. ,G��.�������H�<���H�<���H�<��4�Gde��
�-E�C
M�����n
E]
K �G����-������DIX<��,�Gg����-E�C
I������
K ,H>�:.�������I<��0dHLu���{.E�C
I������
E �H�
��.������4J�;���E�C
F���E�H�U
H�
F0PJL=���E�C
H����D�
E^
J,(I>��(W.E�C
F���D�
F,XIA��(F.E�C
F���D�
F�JD��!,�J$D���E�C
H����D�
F,�I�F��N�-E�C
F���D��
H0�I�G����-E�C
B�I���H�
G,0J������-E�C
G����3
F `J�
��-�����0�J����-E�C
F���I�H�5
E �J�
��-������(�J$�����-E�C
B�D��
AK2�$j-���$�L�I��~E�C
B�J��i,PKP���!
*-E�C
P�����}
K �K�
�W-������ M,����E�C
C���,�K�����-E�G
E����
A�K����,����0L�����,E�C
E���q
BJ
ALL
���,����0�M�H���E�C
M�����B
EN
A0�L0���ro,E�H
B�E�G��E��
G �Lj�{,������0�LX����s,E�C
C��:
Kw
I,M2�H,���(LMԘ��"0,E�C
B�D��
AxMn�/,���4�M������+E�C
G����
B�
M �MF�$�+�����0�M�����
�+E�C
D��F�E�D�
J (N�!,������4LNt����,E�C
P�����n
Jd
D �Np�[�+������@�N�����+E�C
B�I���D��.X.�.S.�
G �Nd�T,������LO�����>,E�C
D��E�E�E��. \
I[.�. L.r. L.W. I. `Ot�$�+������0�O���L�+E�C
D��H�E�D�}
F �O@���,������l�O��\/�,E�C
P����� 
H�.�.b. �.i. �._. �.h. .P.�.d.D. LP��c
.������,pPp��I�-E�C
I�����f
I �P���#.������0 Rl���E�C
B�E�E�E�G�w
I\0�P���K�-E�C
B�G��E�K�+
D ,Q��-������8PQ�����-E�G
F���I���.�
E�. �QH�P�-������@�Q�"��o�-E�C
B�E�E�E�D�n.L.�
J�
C �Q0�Aj-������0R�%��LN-E�C
B�E�G��E��
H LR�6A-������0pR�(��9%-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��H�
������(��'Cu���������������#f�F����]��������"��NV�h�������-�i@iؖ
P	p0K�p�
PpK�@� �
�	0�Gp�@����`������@����� �@� � �`������� � 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���
��
��@�`������������
��`����� ����������
���������������
0��������������
p���������������
P�p�������������
��P�p��
��@�`������0��i�pq��i�i�i�������
��`����� ���������
�������p��������
0�����`q��������
p����� p���������
P�p��������������
��P�p��pppk��������
 ���
P���
����
���
��
��
��
�p���
������`  ���0�@�`�P�p���������
�0���@����������
P�� ����������
��������������
p�0������������
0� �������������
���������
���
 X�
(h�
0��p�
p�
�|@�|��@�������p�
~`�|@���������p�
�~p�|�������p�
`}P�|Ț
�|@�|�p��@�0{` p������Ț
~`�|@���������Ț
�~p�|p|�������Ț
`}P�|@`0�A�A
B%B6BFBUBdBnB|B�C�
����
��
���o�H,P
�C�
�"���u 4	���o����o@s���o�o�o���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�0��8��@0�H�� p���ip�P�i��H�.���H�+�p��U/��(0�0��8@�@�H�� p�`�i�h�.��h�+�0���.�0���+�H���.�H���+p��U/�(0�0�� p�`�ip��U/aea17c71042a7339fe32e162bfae9313a96f33.debug.[�).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�(CH,H,�CK���o�o�ojX���o@s@sPg�u�u 4qB�����"{��v � ��0�0��@�@��@�@�s������
���M ���T�p�p�8T��R
�R
�,���
��
���
��
���
��
0 ��
�
��p�
p�
`��
�
���
��
h �
�
��
4�
"

Zerion Mini Shell 1.0