From 36ceac2e8d7ef29ef4997305bdb71af4e87fd42b Mon Sep 17 00:00:00 2001 From: 1630228 Date: Thu, 7 Nov 2019 08:01:29 +0000 Subject: [PATCH] First commit. --- README.md | 5 + ...omCharacterMaker_GoColorMapShaderClass.bin | Bin 0 -> 759 bytes cc.swf | Bin 0 -> 521643 bytes frames/1.png | Bin 0 -> 3161 bytes frames/2.png | Bin 0 -> 3161 bytes ...ontrol_btn_zoomout_init_png_1519735303.png | Bin 0 -> 339 bytes ...images_details_bg_cross_png_1281283403.png | Bin 0 -> 287 bytes ...details_arrow_down_down_png_1317250631.png | Bin 0 -> 168 bytes ...ails_btn_bodytype03_over_png_523704647.png | Bin 0 -> 341 bytes ...ages_assets_ico_face_dec_png_330808245.png | Bin 0 -> 552 bytes ...Box_scrolldown_disabled_png_1737469557.png | Bin 0 -> 392 bytes ..._images_icons_color_hand_png_169756807.png | Bin 0 -> 458 bytes ...es_toolbar_btn_save_over_png_757483579.png | Bin 0 -> 183 bytes ...ails_btn_bodytype03_init_png_525739335.png | Bin 0 -> 344 bytes ...ls_btn_scale_down_x_init_png_928933339.png | Bin 0 -> 321 bytes ...es_toolbar_btn_gear_over_png_760727495.png | Bin 0 -> 367 bytes ...details_btn_arrowu_init_png_1510196995.png | Bin 0 -> 256 bytes ...s_toolbar_btn_redo_over_png_1027024699.png | Bin 0 -> 240 bytes ..._images_icons_color_acc_png_1482909305.png | Bin 0 -> 522 bytes ...olbar_btn_redo_disabled_png_1489476469.png | Bin 0 -> 234 bytes ...ails_btn_bodytype01_init_png_548923715.png | Bin 0 -> 389 bytes ...mages_assets_ico_mustache_png_57358789.png | Bin 0 -> 465 bytes ...s_assets_ico_lower_body_png_1025779659.png | Bin 0 -> 277 bytes ...es_icons_color_acc_minor_png_757581579.png | Bin 0 -> 524 bytes ...etails_ico_drag_head_max_png_994122617.png | Bin 0 -> 398 bytes ...ls_btn_scale_down_x_over_png_859906499.png | Bin 0 -> 318 bytes ...tails_ico_drag_body_min_png_1489058041.png | Bin 0 -> 256 bytes ...ons_color_backprop_minor_png_907777337.png | Bin 0 -> 525 bytes ...tor.components.ConfirmPopUp_imgConfirm.png | Bin 0 -> 966 bytes ...es_icons_color_backprop_png_2093028773.png | Bin 0 -> 525 bytes ...tails_btn_scale_up_over_png_1478670653.png | Bin 0 -> 265 bytes ...ils_btn_bodytype04_init_png_1589053115.png | Bin 0 -> 344 bytes ...orpalette_hue_slider_bg_png_2086678210.png | Bin 0 -> 2011 bytes ...mages_icons_color_lower_png_1538557191.png | Bin 0 -> 314 bytes ...details_btn_arrowl_over_png_1774962567.png | Bin 0 -> 270 bytes ...images_icons_color_mouth_png_763068277.png | Bin 0 -> 335 bytes ...ails_btn_scale_up_y_init_png_591857223.png | Bin 0 -> 343 bytes ...details_arrow_left_down_png_1371776587.png | Bin 0 -> 182 bytes ...s_images_assets_ico_shoe_png_970889849.png | Bin 0 -> 352 bytes ...s_details_btn_wider_init_png_850996167.png | Bin 0 -> 270 bytes ...ypebar_step_arrowr_init_png_1537879481.png | Bin 0 -> 175 bytes ...s_details_btn_wider_over_png_867826631.png | Bin 0 -> 266 bytes ...ges_assets_ico_back_prop_png_415704249.png | Bin 0 -> 468 bytes ...or_input_panel_gradient_png_1209506624.png | Bin 0 -> 80197 bytes ...ontrol_btn_zoomout_over_png_1686087097.png | Bin 0 -> 337 bytes ..._details_btn_arrowd_over_png_372004985.png | Bin 0 -> 251 bytes ...ils_btn_bodytype01_over_png_1018755509.png | Bin 0 -> 386 bytes ...es_panel_btn_close_over_png_2000923769.png | Bin 0 -> 147 bytes ..._details_arrow_left_init_png_641472697.png | Bin 0 -> 166 bytes ...s_icons_color_hair_minor_png_912147399.png | Bin 0 -> 475 bytes ...s_details_arrow_up_down_png_1026025411.png | Bin 0 -> 170 bytes ...tails_ico_drag_body_max_png_1690384637.png | Bin 0 -> 295 bytes ...control_btn_delete_init_png_1753458267.png | Bin 0 -> 291 bytes ...ils_btn_anchor_disabled_png_1132750411.png | Bin 0 -> 248 bytes ...images_icons_color_face_png_1310681731.png | Bin 0 -> 565 bytes ...s_images_assets_ico_eye_png_1265449509.png | Bin 0 -> 375 bytes ...anagers.NativeCursorManager_imgCursor1.png | Bin 0 -> 113 bytes ...control_btn_delete_over_png_1240721219.png | Bin 0 -> 284 bytes ...es_details_arrow_up_init_png_782509959.png | Bin 0 -> 150 bytes ...anagers.NativeCursorManager_imgCursor4.png | Bin 0 -> 113 bytes ...anagers.NativeCursorManager_imgCursor3.png | Bin 0 -> 113 bytes ...anagers.NativeCursorManager_imgCursor2.png | Bin 0 -> 113 bytes ...tails_btn_scale_down_init_png_60286471.png | Bin 0 -> 274 bytes ...ages_panel_text_nocolor_png_1973715611.png | Bin 0 -> 109 bytes ...oolbar_btn_save_disabled_png_941857077.png | Bin 0 -> 170 bytes ...mbBox_scrollup_disabled_png_1375363271.png | Bin 0 -> 383 bytes ...tor.components.CCPreloader_imgBarTrack.png | Bin 0 -> 346 bytes ..._images_assets_ico_nose_png_1570986425.png | Bin 0 -> 344 bytes ...ypebar_step_arrowl_init_png_1539024125.png | Bin 0 -> 181 bytes ...humbBox_btn_remove_init_png_1572482301.png | Bin 0 -> 885 bytes ...es_panel_btn_close_init_png_1805605639.png | Bin 0 -> 140 bytes ...ls_btn_scale_down_y_init_png_927008027.png | Bin 0 -> 331 bytes ...ages_assets_ico_glasses_png_1966638279.png | Bin 0 -> 313 bytes ...s_images_icons_color_feet_png_27306749.png | Bin 0 -> 275 bytes ...etails_arrow_right_over_png_1436963749.png | Bin 0 -> 181 bytes ...etails_btn_scale_up_init_png_953104677.png | Bin 0 -> 269 bytes ..._images_assets_ico_hand_png_1682020985.png | Bin 0 -> 437 bytes ...ator.components.CCPreloader_imgBarFill.png | Bin 0 -> 257 bytes ...tails_ico_drag_head_min_png_1564563317.png | Bin 0 -> 321 bytes ...ls_btn_scale_down_y_over_png_884736387.png | Bin 0 -> 328 bytes ...ails_btn_bodytype02_init_png_256313607.png | Bin 0 -> 385 bytes ..._details_arrow_left_over_png_556579001.png | Bin 0 -> 185 bytes ...tails_btn_scale_up_y_over_png_56092231.png | Bin 0 -> 339 bytes ..._icon_colorpicker_active_png_574257180.png | Bin 0 -> 527 bytes ...s_images_icons_color_hair_png_40348533.png | Bin 0 -> 476 bytes ..._control_btn_zoomin_init_png_640989693.png | Bin 0 -> 370 bytes ...es_details_arrow_up_over_png_223823367.png | Bin 0 -> 175 bytes ...creator.components.CCPreloader_imgLogo.png | Bin 0 -> 5494 bytes ...ls_btn_rotate_right_over_png_934815171.png | Bin 0 -> 432 bytes ...s_toolbar_btn_gear_init_png_1294223303.png | Bin 0 -> 372 bytes ...details_btn_closer_over_png_1861461063.png | Bin 0 -> 265 bytes ...mages_icons_color_eyeiris_png_61421821.png | Bin 0 -> 437 bytes ...ails_btn_bodytype02_over_png_727082119.png | Bin 0 -> 382 bytes ..._control_btn_zoomin_over_png_557062261.png | Bin 0 -> 360 bytes ...ls_btn_rotate_left_over_png_1871588985.png | Bin 0 -> 436 bytes ..._icons_icon_colorpicker_png_2048739724.png | Bin 0 -> 458 bytes ...ypebar_step_arrowr_over_png_2076159481.png | Bin 0 -> 178 bytes ...s_thumbBox_scrollup_init_png_878607239.png | Bin 0 -> 441 bytes ...thumbBox_btn_remove_over_png_998649205.png | Bin 0 -> 909 bytes ...s_toolbar_btn_undo_init_png_1035347911.png | Bin 0 -> 248 bytes ..._details_btn_arrowd_init_png_926693625.png | Bin 0 -> 255 bytes ...humbBox_scrolldown_over_png_1537650053.png | Bin 0 -> 445 bytes ...ails_btn_scale_up_x_over_png_524746883.png | Bin 0 -> 309 bytes ...humbBox_scrolldown_init_png_1145426563.png | Bin 0 -> 449 bytes ...ils_btn_rotate_left_init_png_545166073.png | Bin 0 -> 442 bytes ..._details_btn_arrowr_init_png_281765451.png | Bin 0 -> 264 bytes ...ails_btn_scale_up_x_init_png_456549387.png | Bin 0 -> 312 bytes ...s_toolbar_btn_redo_init_png_1025927043.png | Bin 0 -> 252 bytes ...ails_btn_bodytype04_over_png_528750851.png | Bin 0 -> 341 bytes ...images_icons_color_upper_png_743381305.png | Bin 0 -> 428 bytes ..._images_assets_ico_face_png_1598125757.png | Bin 0 -> 490 bytes ...eator.components.ConfirmPopUp_imgError.png | Bin 0 -> 985 bytes ...ges_icons_color_eyebrow_png_2108696135.png | Bin 0 -> 260 bytes ...s_images_assets_ico_beard_png_58796709.png | Bin 0 -> 477 bytes ...ges_icons_color_mustache_png_390540537.png | Bin 0 -> 522 bytes ..._details_btn_closer_init_png_159598407.png | Bin 0 -> 268 bytes ...s_toolbar_btn_undo_over_png_1017636807.png | Bin 0 -> 239 bytes ...ar_step_arrowl_disabled_png_1974837925.png | Bin 0 -> 174 bytes ...es_assets_icon_upperbody_png_757352387.png | Bin 0 -> 287 bytes ..._details_arrow_down_init_png_658249917.png | Bin 0 -> 156 bytes ..._details_arrow_down_over_png_638434213.png | Bin 0 -> 176 bytes ..._details_btn_arrowl_init_png_147572551.png | Bin 0 -> 274 bytes ...etails_arrow_right_init_png_1972087997.png | Bin 0 -> 166 bytes ...images_icons_color_frame_png_631995193.png | Bin 0 -> 287 bytes ...images_icons_color_beard_png_666467141.png | Bin 0 -> 578 bytes ...eator.components.ConfirmPopUp_imgAlert.png | Bin 0 -> 1067 bytes ...icons_color_lower_minor_png_1476618123.png | Bin 0 -> 320 bytes ..._details_btn_anchor_init_png_804542717.png | Bin 0 -> 260 bytes ...ar_step_arrowr_disabled_png_1838034361.png | Bin 0 -> 168 bytes ..._images_assets_ico_hair_png_1438873273.png | Bin 0 -> 342 bytes ...ails_btn_scale_down_over_png_545719943.png | Bin 0 -> 270 bytes ...es_toolbar_btn_save_init_png_220669891.png | Bin 0 -> 185 bytes ...etails_arrow_right_down_png_2074750393.png | Bin 0 -> 177 bytes ..._images_icons_color_len_png_1033988025.png | Bin 0 -> 289 bytes ...ages_assets_ico_eyebrow_png_1926538443.png | Bin 0 -> 275 bytes ...icons_color_upper_minor_png_1376495179.png | Bin 0 -> 423 bytes ...details_btn_arrowu_over_png_1477683083.png | Bin 0 -> 253 bytes ...ypebar_step_arrowl_over_png_2072948597.png | Bin 0 -> 184 bytes ...orpalette_slider_control_png_381158866.png | Bin 0 -> 865 bytes ...mages_icons_color_eyelid_png_173967229.png | Bin 0 -> 540 bytes ...olbar_btn_undo_disabled_png_1489156409.png | Bin 0 -> 218 bytes ...s_images_assets_ico_mouth_png_40052473.png | Bin 0 -> 327 bytes ...s_thumbBox_scrollup_over_png_843131911.png | Bin 0 -> 439 bytes ...ls_btn_rotate_right_init_png_884865483.png | Bin 0 -> 436 bytes ..._details_btn_anchor_over_png_770455653.png | Bin 0 -> 263 bytes ...s_images_assets_ico_ear_png_1274492665.png | Bin 0 -> 405 bytes ..._details_btn_arrowr_over_png_298567235.png | Bin 0 -> 261 bytes ...ts_BodyShapeMegaChooserWatcherSetupUtil.as | 42 + ...tPropertyInspectorSparkWatcherSetupUtil.as | 32 + ...nents_CharPreviewOptionWatcherSetupUtil.as | 25 + ...omponents_CharPreviewerWatcherSetupUtil.as | 25 + ...nents_ColorDisplayGroupWatcherSetupUtil.as | 28 + ...ColorPickerItemRendererWatcherSetupUtil.as | 28 + ...ponentThumbChooserSparkWatcherSetupUtil.as | 28 + ..._DecorationItemRendererWatcherSetupUtil.as | 25 + ...ponents_DecorationPanelWatcherSetupUtil.as | 28 + ...ropDownListItemRendererWatcherSetupUtil.as | 28 + ...onents_MenuItemRendererWatcherSetupUtil.as | 44 + ...nents_ScaleChooserSparkWatcherSetupUtil.as | 32 + ...ents_TemplateCCSelectorWatcherSetupUtil.as | 32 + ...r_components_TopButtonsWatcherSetupUtil.as | 28 + ...onents_TypeChooserSparkWatcherSetupUtil.as | 25 + ..._components_facePreviewWatcherSetupUtil.as | 36 + ..._ActionDropDownListSkinWatcherSetupUtil.as | 37 + ...s_ArrowTipContainerSkinWatcherSetupUtil.as | 32 + ..._skins_ConfirmPanelSkinWatcherSetupUtil.as | 30 + ..._skins_ConfirmPopUpSkinWatcherSetupUtil.as | 34 + ...DefaultDropDownListSkinWatcherSetupUtil.as | 37 + ...ins_FlatColorPickerSkinWatcherSetupUtil.as | 37 + ...bscribeTipContainerSkinWatcherSetupUtil.as | 32 + ...PanelHueSliderTrackSkinWatcherSetupUtil.as | 28 + ...ins_ColorInputPanelSkinWatcherSetupUtil.as | 28 + ...32_mx_skins_cursor_BusyCursor_217471087.as | 14 + ...3132_mx_skins_cursor_DragCopy_535650521.as | 14 + ...3132_mx_skins_cursor_DragLink_535912526.as | 14 + ...3132_mx_skins_cursor_DragMove_535938101.as | 14 + ...32_mx_skins_cursor_DragReject_951602013.as | 14 + scripts/_creatorWatcherSetupUtil.as | 29 + scripts/_creator_FlexInit.as | 119 + scripts/_creator_Styles.as | 1179 +++++++++ scripts/_creator_mx_managers_SystemManager.as | 178 ++ scripts/anifire/assets/AssetImageLibrary.as | 97 + .../anifire/assets/AssetImageLibraryObject.as | 42 + scripts/anifire/assets/AssetImageShelf.as | 70 + scripts/anifire/cc/interfaces/ICcComponent.as | 37 + .../anifire/cc/interfaces/ICcPairComponent.as | 15 + scripts/anifire/cc/model/CcComponentModel.as | 243 ++ scripts/anifire/cc/model/CcMouthModel.as | 43 + scripts/anifire/cc/view/CCHeadView.as | 410 +++ scripts/anifire/cc/view/CcComponent.as | 310 +++ scripts/anifire/cc/view/CcComponentFactory.as | 67 + .../view/CcComponent_GoColorMapShaderClass.as | 14 + .../anifire/cc/view/CcDecorationComponent.as | 21 + scripts/anifire/cc/view/CcEyeComponent.as | 142 + scripts/anifire/cc/view/CcHairComponent.as | 96 + scripts/anifire/cc/view/CcHeadComponent.as | 642 +++++ scripts/anifire/cc/view/CcImageLibrary.as | 25 + scripts/anifire/cc/view/CcLipSyncMouth.as | 46 + scripts/anifire/cc/view/CcMouthComponent.as | 110 + scripts/anifire/cc/view/CcPairComponent.as | 137 + scripts/anifire/cc/view/CcTalkMouth.as | 31 + scripts/anifire/color/SelectedColor.as | 36 + scripts/anifire/component/CCThumb.as | 172 ++ scripts/anifire/component/CcActionLoader.as | 476 ++++ .../anifire/component/CcComponentLoader.as | 177 ++ scripts/anifire/component/ColorInputPanel.as | 699 +++++ .../anifire/component/CustomCharacterMaker.as | 2354 +++++++++++++++++ ...tomCharacterMaker_GoColorMapShaderClass.as | 14 + .../component/EyeDropperScreenOverlay.as | 365 +++ scripts/anifire/component/ProcessRegulator.as | 186 ++ .../anifire/component/SkinnedAssetMaker.as | 422 +++ .../component/SkinnedCharacterMaker.as | 229 ++ scripts/anifire/constant/AnimeConstants.as | 335 +++ scripts/anifire/constant/CcLibConstant.as | 782 ++++++ scripts/anifire/constant/CcServerConstant.as | 21 + scripts/anifire/constant/LanguageConstants.as | 77 + scripts/anifire/constant/LicenseConstants.as | 230 ++ scripts/anifire/constant/RaceConstants.as | 18 + scripts/anifire/constant/ServerConstants.as | 529 ++++ scripts/anifire/constant/ThemeConstants.as | 93 + scripts/anifire/core/CCLipSyncController.as | 274 ++ scripts/anifire/core/CCManager.as | 288 ++ scripts/anifire/core/GoBaseWorker.as | 24 + scripts/anifire/core/GoBaseWorkerImp.as | 122 + .../creator/components/ArrowTipContainer.as | 167 ++ .../creator/components/BodyShapeChooser.as | 197 ++ .../components/BodyShapeMegaChooser.as | 782 ++++++ .../creator/components/BusyIndicator.as | 374 +++ .../creator/components/CCLoadingScreen.as | 101 + ...es_preloader_loading_fill_png_876464899.as | 14 + ...es_preloader_loading_logo_png_878298051.as | 14 + ...s_preloader_loading_track_png_775182565.as | 14 + .../anifire/creator/components/CCPreloader.as | 214 ++ .../components/CCPreloader_imgBarFill.as | 14 + .../components/CCPreloader_imgBarTrack.as | 14 + .../creator/components/CCPreloader_imgLogo.as | 14 + .../creator/components/CCTemplateCharThumb.as | 121 + .../components/CcColorPickerElementSpark.as | 1253 +++++++++ ...ges_icons_color_acc_minor_png_757581579.as | 14 + ...s_images_icons_color_acc_png_1482909305.as | 14 + ...cons_color_backprop_minor_png_907777337.as | 14 + ...ges_icons_color_backprop_png_2093028773.as | 14 + ..._images_icons_color_beard_png_666467141.as | 14 + ...ages_icons_color_eyebrow_png_2108696135.as | 14 + ...images_icons_color_eyeiris_png_61421821.as | 14 + ...images_icons_color_eyelid_png_173967229.as | 14 + ..._images_icons_color_face_png_1310681731.as | 14 + ...es_images_icons_color_feet_png_27306749.as | 14 + ..._images_icons_color_frame_png_631995193.as | 14 + ...es_icons_color_hair_minor_png_912147399.as | 14 + ...es_images_icons_color_hair_png_40348533.as | 14 + ...s_images_icons_color_hand_png_169756807.as | 14 + ...s_images_icons_color_len_png_1033988025.as | 14 + ..._icons_color_lower_minor_png_1476618123.as | 14 + ...images_icons_color_lower_png_1538557191.as | 14 + ..._images_icons_color_mouth_png_763068277.as | 14 + ...ages_icons_color_mustache_png_390540537.as | 14 + ..._icons_color_upper_minor_png_1376495179.as | 14 + ..._images_icons_color_upper_png_743381305.as | 14 + .../creator/components/CcColorPickers.as | 217 ++ .../CcComponentPropertyInspectorSpark.as | 1429 ++++++++++ ...ails_btn_anchor_disabled_png_1132750411.as | 14 + ...s_details_btn_anchor_init_png_804542717.as | 14 + ...s_details_btn_anchor_over_png_770455653.as | 14 + ...s_details_btn_closer_init_png_159598407.as | 14 + ..._details_btn_closer_over_png_1861461063.as | 14 + ...ails_btn_rotate_left_init_png_545166073.as | 14 + ...ils_btn_rotate_left_over_png_1871588985.as | 14 + ...ils_btn_rotate_right_init_png_884865483.as | 14 + ...ils_btn_rotate_right_over_png_934815171.as | 14 + ...etails_btn_scale_down_init_png_60286471.as | 14 + ...tails_btn_scale_down_over_png_545719943.as | 14 + ...ils_btn_scale_down_x_init_png_928933339.as | 14 + ...ils_btn_scale_down_x_over_png_859906499.as | 14 + ...ils_btn_scale_down_y_init_png_927008027.as | 14 + ...ils_btn_scale_down_y_over_png_884736387.as | 14 + ...details_btn_scale_up_init_png_953104677.as | 14 + ...etails_btn_scale_up_over_png_1478670653.as | 14 + ...tails_btn_scale_up_x_init_png_456549387.as | 14 + ...tails_btn_scale_up_x_over_png_524746883.as | 14 + ...tails_btn_scale_up_y_init_png_591857223.as | 14 + ...etails_btn_scale_up_y_over_png_56092231.as | 14 + ...es_details_btn_wider_init_png_850996167.as | 14 + ...es_details_btn_wider_over_png_867826631.as | 14 + ...ges_panel_btn_close_init_png_1805605639.as | 14 + ...ges_panel_btn_close_over_png_2000923769.as | 14 + .../CcComponentThumbDetailThumbnail.as | 296 +++ .../components/CcComponentThumbThumbnail.as | 386 +++ .../creator/components/CharPreviewOption.as | 479 ++++ .../creator/components/CharPreviewer.as | 926 +++++++ .../creator/components/ClothesChooser.as | 168 ++ .../creator/components/ColorDisplayGroup.as | 222 ++ ...mages_panel_text_nocolor_png_1973715611.as | 14 + .../anifire/creator/components/ColorPicker.as | 299 +++ .../components/ColorPickerDropDownList.as | 85 + .../components/ColorPickerItemRenderer.as | 193 ++ .../components/ComponentItemRenderer.as | 454 ++++ ...thumbBox_btn_remove_init_png_1572482301.as | 14 + ..._thumbBox_btn_remove_over_png_998649205.as | 14 + .../components/ComponentThumbChooserSpark.as | 779 ++++++ ...bBox_scrolldown_disabled_png_1737469557.as | 14 + ...thumbBox_scrolldown_init_png_1145426563.as | 14 + ...thumbBox_scrolldown_over_png_1537650053.as | 14 + ...umbBox_scrollup_disabled_png_1375363271.as | 14 + ...es_thumbBox_scrollup_init_png_878607239.as | 14 + ...es_thumbBox_scrollup_over_png_843131911.as | 14 + .../creator/components/ConfirmPopUp.as | 335 +++ .../components/ConfirmPopUp_imgAlert.as | 14 + .../components/ConfirmPopUp_imgConfirm.as | 14 + .../components/ConfirmPopUp_imgError.as | 14 + .../creator/components/DecoThumbRenderer.as | 437 +++ ...thumbBox_btn_remove_init_png_1572482301.as | 14 + ..._thumbBox_btn_remove_over_png_998649205.as | 14 + .../components/DecorationItemRenderer.as | 472 ++++ ..._control_btn_delete_init_png_1753458267.as | 14 + ..._control_btn_delete_over_png_1240721219.as | 14 + .../creator/components/DecorationPanel.as | 363 +++ .../DefaultDropDownListItemRenderer.as | 244 ++ .../components/DefaultPopUpContainer.as | 186 ++ .../components/DirectionControlSpark.as | 416 +++ ..._details_arrow_down_down_png_1317250631.as | 14 + ...s_details_arrow_down_init_png_658249917.as | 14 + ...s_details_arrow_down_over_png_638434213.as | 14 + ..._details_arrow_left_down_png_1371776587.as | 14 + ...s_details_arrow_left_init_png_641472697.as | 14 + ...s_details_arrow_left_over_png_556579001.as | 14 + ...details_arrow_right_down_png_2074750393.as | 14 + ...details_arrow_right_init_png_1972087997.as | 14 + ...details_arrow_right_over_png_1436963749.as | 14 + ...es_details_arrow_up_down_png_1026025411.as | 14 + ...ges_details_arrow_up_init_png_782509959.as | 14 + ...ges_details_arrow_up_over_png_223823367.as | 14 + ..._images_details_bg_cross_png_1281283403.as | 14 + .../anifire/creator/components/IconButton.as | 72 + .../components/LatestTemplateCharThumb.as | 150 ++ .../creator/components/LatestTemplates.as | 132 + .../creator/components/MenuItemList.as | 64 + .../creator/components/MenuItemRenderer.as | 689 +++++ .../anifire/creator/components/PopUpAnchor.as | 127 + .../creator/components/ScaleChooserSpark.as | 1274 +++++++++ ...s_details_btn_arrowd_init_png_926693625.as | 14 + ...s_details_btn_arrowd_over_png_372004985.as | 14 + ...s_details_btn_arrowl_init_png_147572551.as | 14 + ..._details_btn_arrowl_over_png_1774962567.as | 14 + ...s_details_btn_arrowr_init_png_281765451.as | 14 + ...s_details_btn_arrowr_over_png_298567235.as | 14 + ..._details_btn_arrowu_init_png_1510196995.as | 14 + ..._details_btn_arrowu_over_png_1477683083.as | 14 + ...tails_btn_bodytype01_init_png_548923715.as | 14 + ...ails_btn_bodytype01_over_png_1018755509.as | 14 + ...tails_btn_bodytype02_init_png_256313607.as | 14 + ...tails_btn_bodytype02_over_png_727082119.as | 14 + ...tails_btn_bodytype03_init_png_525739335.as | 14 + ...tails_btn_bodytype03_over_png_523704647.as | 14 + ...ails_btn_bodytype04_init_png_1589053115.as | 14 + ...tails_btn_bodytype04_over_png_528750851.as | 14 + ...etails_ico_drag_body_max_png_1690384637.as | 14 + ...etails_ico_drag_body_min_png_1489058041.as | 14 + ...details_ico_drag_head_max_png_994122617.as | 14 + ...etails_ico_drag_head_min_png_1564563317.as | 14 + ...ges_panel_btn_close_init_png_1805605639.as | 14 + ...ges_panel_btn_close_over_png_2000923769.as | 14 + .../creator/components/TemplateCCSelector.as | 465 ++++ .../anifire/creator/components/ThumbList.as | 19 + .../anifire/creator/components/TopButtons.as | 1119 ++++++++ ...es_toolbar_btn_gear_init_png_1294223303.as | 14 + ...ges_toolbar_btn_gear_over_png_760727495.as | 14 + ...oolbar_btn_redo_disabled_png_1489476469.as | 14 + ...es_toolbar_btn_redo_init_png_1025927043.as | 14 + ...es_toolbar_btn_redo_over_png_1027024699.as | 14 + ...toolbar_btn_save_disabled_png_941857077.as | 14 + ...ges_toolbar_btn_save_init_png_220669891.as | 14 + ...ges_toolbar_btn_save_over_png_757483579.as | 14 + ...oolbar_btn_undo_disabled_png_1489156409.as | 14 + ...es_toolbar_btn_undo_init_png_1035347911.as | 14 + ...es_toolbar_btn_undo_over_png_1017636807.as | 14 + .../creator/components/TypeChooserSpark.as | 669 +++++ ...ages_assets_ico_back_prop_png_415704249.as | 14 + ...es_images_assets_ico_beard_png_58796709.as | 14 + ...es_images_assets_ico_ear_png_1274492665.as | 14 + ...es_images_assets_ico_eye_png_1265449509.as | 14 + ...mages_assets_ico_eyebrow_png_1926538443.as | 14 + ...mages_assets_ico_face_dec_png_330808245.as | 14 + ...s_images_assets_ico_face_png_1598125757.as | 14 + ...mages_assets_ico_glasses_png_1966638279.as | 14 + ...s_images_assets_ico_hair_png_1438873273.as | 14 + ...s_images_assets_ico_hand_png_1682020985.as | 14 + ...es_assets_ico_lower_body_png_1025779659.as | 14 + ...es_images_assets_ico_mouth_png_40052473.as | 14 + ...images_assets_ico_mustache_png_57358789.as | 14 + ...s_images_assets_ico_nose_png_1570986425.as | 14 + ...es_images_assets_ico_shoe_png_970889849.as | 14 + ...ges_assets_ico_upper_body_png_758638535.as | 14 + ...ges_assets_icon_upperbody_png_757352387.as | 14 + ...bar_step_arrowl_disabled_png_1974837925.as | 14 + ...typebar_step_arrowl_init_png_1539024125.as | 14 + ...typebar_step_arrowl_over_png_2072948597.as | 14 + ...bar_step_arrowr_disabled_png_1838034361.as | 14 + ...typebar_step_arrowr_init_png_1537879481.as | 14 + ...typebar_step_arrowr_over_png_2076159481.as | 14 + .../anifire/creator/components/facePreview.as | 591 +++++ ...s_control_btn_zoomin_init_png_640989693.as | 14 + ...s_control_btn_zoomin_over_png_557062261.as | 14 + ...control_btn_zoomout_init_png_1519735303.as | 14 + ...control_btn_zoomout_over_png_1686087097.as | 14 + scripts/anifire/creator/config/GoAnimate.as | 65 + .../creator/core/CcCharEditorController.as | 931 +++++++ scripts/anifire/creator/core/CcConsole.as | 885 +++++++ .../core/CcPreviewAndSaveController.as | 178 ++ .../creator/events/CcActionChosenEvent.as | 31 + .../creator/events/CcBodyShapeChooserEvent.as | 27 + .../creator/events/CcButtonBarEvent.as | 30 + .../creator/events/CcCharPreviewerEvent.as | 16 + .../creator/events/CcColorPickerEvent.as | 21 + .../creator/events/CcComponentLoadEvent.as | 29 + .../events/CcComponentThumbChooserEvent.as | 32 + .../events/CcComponentThumbnailMouseEvent.as | 18 + .../events/CcComponentTypeChooserEvent.as | 26 + scripts/anifire/creator/events/CcCoreEvent.as | 36 + .../creator/events/CcPointUpdateEvent.as | 34 + .../events/CcPreMadeCharChooserEvent.as | 27 + .../anifire/creator/events/CcSaveCharEvent.as | 39 + .../creator/events/CcScaleChosenEvent.as | 25 + .../events/CcSelectedDecorationEvent.as | 25 + .../creator/events/CcTemplateChooserEvent.as | 20 + .../creator/events/CcThumbPropertyEvent.as | 55 + .../creator/events/CcThumbScaleEvent.as | 20 + .../events/ColorPickerDropDownListEvent.as | 21 + .../anifire/creator/events/MenuItemEvent.as | 25 + .../interfaces/ICcCharEditorContainer.as | 50 + .../creator/interfaces/ICcMainUiContainer.as | 16 + .../interfaces/ICcPreviewAndSaveContainer.as | 23 + .../creator/interfaces/IConfiguration.as | 13 + .../creator/interfaces/IMenuItemOwner.as | 12 + scripts/anifire/creator/models/CcAction.as | 145 + scripts/anifire/creator/models/CcBodyShape.as | 223 ++ scripts/anifire/creator/models/CcCharacter.as | 934 +++++++ scripts/anifire/creator/models/CcColor.as | 65 + .../anifire/creator/models/CcColorThumb.as | 154 ++ scripts/anifire/creator/models/CcComponent.as | 253 ++ .../creator/models/CcComponentThumb.as | 352 +++ scripts/anifire/creator/models/CcFacial.as | 81 + scripts/anifire/creator/models/CcLibrary.as | 115 + .../creator/models/CcRequireComponent.as | 33 + scripts/anifire/creator/models/CcSelection.as | 42 + scripts/anifire/creator/models/CcState.as | 66 + scripts/anifire/creator/models/CcTemplate.as | 70 + scripts/anifire/creator/models/CcTheme.as | 331 +++ .../anifire/creator/models/MenuItemModel.as | 378 +++ .../creator/skins/ActionDropDownListSkin.as | 642 +++++ .../creator/skins/ArrowTipContainerSkin.as | 700 +++++ .../skins/ColorPickerDropDownListSkin.as | 355 +++ .../skins/ColorPickerOpenButtonSkin.as | 180 ++ .../anifire/creator/skins/ConfirmPanelSkin.as | 585 ++++ .../anifire/creator/skins/ConfirmPopUpSkin.as | 604 +++++ .../skins/CustomButtonBarButtonSkin.as | 358 +++ .../creator/skins/DefaultButtonSkin.as | 277 ++ .../skins/DefaultDropDownListButtonSkin.as | 261 ++ .../creator/skins/DefaultDropDownListSkin.as | 650 +++++ .../creator/skins/DefaultHScrollBarSkin.as | 170 ++ .../skins/DefaultHScrollBarThumbSkin.as | 98 + .../skins/DefaultHScrollBarTrackSkin.as | 141 + .../creator/skins/DefaultTextInputSkin.as | 521 ++++ .../creator/skins/DefaultVScrollBarSkin.as | 170 ++ .../skins/DefaultVScrollBarThumbSkin.as | 98 + .../skins/DefaultVScrollBarTrackSkin.as | 140 + .../creator/skins/FlatColorPickerSkin.as | 706 +++++ ...mages_panel_text_nocolor_png_1973715611.as | 14 + .../anifire/creator/skins/HButtonBarSkin.as | 217 ++ .../skins/HButtonBarSkinInnerClass0.as | 64 + .../skins/HButtonBarSkinInnerClass1.as | 64 + .../skins/HButtonBarSkinInnerClass2.as | 64 + .../anifire/creator/skins/IconButtonSkin.as | 127 + .../anifire/creator/skins/MenuItemListSkin.as | 133 + .../creator/skins/PrimaryButtonSkin.as | 278 ++ .../skins/SubscribeTipContainerSkin.as | 651 +++++ .../creator/skins/TopToolBarButtonSkin.as | 331 +++ .../creator/utils/ComponentThumbFilter.as | 35 + scripts/anifire/event/ByteLoaderEvent.as | 21 + scripts/anifire/event/ColorPaletteEvent.as | 35 + scripts/anifire/event/ExtraDataEvent.as | 51 + scripts/anifire/event/EyeDropperEvent.as | 29 + scripts/anifire/event/LoadEmbedMovieEvent.as | 20 + scripts/anifire/event/LoadMgrEvent.as | 22 + scripts/anifire/event/SpeechPitchEvent.as | 28 + scripts/anifire/event/StudioEvent.as | 40 + scripts/anifire/interfaces/ICharacter.as | 31 + .../anifire/interfaces/IRegulatedProcess.as | 11 + scripts/anifire/interfaces/ISpeak.as | 9 + .../managers/AmplitudeAnalyticsManager.as | 121 + scripts/anifire/managers/AppConfigManager.as | 80 + scripts/anifire/managers/ColorUtils.as | 38 + .../anifire/managers/ExternalLinkManager.as | 101 + .../anifire/managers/NativeCursorManager.as | 56 + .../NativeCursorManager_imgCursor1.as | 14 + .../NativeCursorManager_imgCursor2.as | 14 + .../NativeCursorManager_imgCursor3.as | 14 + .../NativeCursorManager_imgCursor4.as | 14 + scripts/anifire/managers/ServerConnector.as | 368 +++ scripts/anifire/models/ApiEventModel.as | 18 + .../anifire/models/creator/CCActionModel.as | 161 ++ .../models/creator/CCBodyComponentModel.as | 96 + .../creator/CCCharActionComponentModel.as | 31 + .../models/creator/CCCharacterActionModel.as | 240 ++ scripts/anifire/models/creator/CCColor.as | 51 + .../skins/ColorInputPanelHueSliderSkin.as | 162 ++ .../ColorInputPanelHueSliderThumbSkin.as | 85 + ...lorpalette_slider_control_png_381158866.as | 14 + .../ColorInputPanelHueSliderTrackSkin.as | 270 ++ ...lorpalette_hue_slider_bg_png_2086678210.as | 14 + scripts/anifire/skins/ColorInputPanelSkin.as | 1021 +++++++ ...lor_input_panel_gradient_png_1209506624.as | 14 + ...lorpalette_slider_control_png_381158866.as | 14 + scripts/anifire/skins/EyeDropperButtonSkin.as | 100 + ...s_icon_colorpicker_active_png_574257180.as | 14 + ...s_icons_icon_colorpicker_png_2048739724.as | 14 + scripts/anifire/util/Crypto/FastRC4.as | 96 + scripts/anifire/util/Crypto/TEA.as | 168 ++ scripts/anifire/util/ExtraDataLoader.as | 55 + scripts/anifire/util/ExtraDataTimer.as | 27 + scripts/anifire/util/GetText.as | 39 + scripts/anifire/util/IUtilMap.as | 25 + scripts/anifire/util/Util.as | 257 ++ scripts/anifire/util/UtilColor.as | 278 ++ scripts/anifire/util/UtilCrypto.as | 97 + scripts/anifire/util/UtilDict.as | 34 + scripts/anifire/util/UtilDictOffline.as | 313 +++ scripts/anifire/util/UtilErrorLogger.as | 126 + scripts/anifire/util/UtilGettext.as | 131 + scripts/anifire/util/UtilHashActionLoader.as | 196 ++ scripts/anifire/util/UtilHashArray.as | 261 ++ scripts/anifire/util/UtilHashBytes.as | 195 ++ scripts/anifire/util/UtilHashMap.as | 87 + scripts/anifire/util/UtilHashNumber.as | 193 ++ scripts/anifire/util/UtilHashSelectedColor.as | 207 ++ scripts/anifire/util/UtilHashUint.as | 193 ++ scripts/anifire/util/UtilLicense.as | 240 ++ scripts/anifire/util/UtilLoadMgr.as | 167 ++ scripts/anifire/util/UtilMath.as | 191 ++ scripts/anifire/util/UtilNetwork.as | 616 +++++ scripts/anifire/util/UtilPager.as | 148 ++ scripts/anifire/util/UtilPlain.as | 951 +++++++ scripts/anifire/util/UtilSite.as | 155 ++ scripts/anifire/util/UtilURLStream.as | 107 + scripts/anifire/util/UtilUnitConvert.as | 203 ++ scripts/anifire/util/UtilUser.as | 158 ++ scripts/anifire/util/UtilXmlInfo.as | 283 ++ scripts/anifire/utils/SecurityUtils.as | 19 + scripts/com/adobe/crypto/MD5.as | 180 ++ scripts/com/adobe/serialization/json/JS0N.as | 24 + scripts/com/adobe/serialization/json/JSON.as | 26 + .../adobe/serialization/json/JSONDecoder.as | 129 + .../adobe/serialization/json/JSONEncoder.as | 151 ++ .../serialization/json/JSONParseError.as | 28 + .../com/adobe/serialization/json/JSONToken.as | 38 + .../adobe/serialization/json/JSONTokenType.as | 36 + .../adobe/serialization/json/JSONTokenizer.as | 353 +++ scripts/com/adobe/utils/IntUtil.as | 53 + scripts/com/adobe/webapis/gettext/GetText.as | 327 +++ scripts/com/adobe/webapis/gettext/Parser.as | 126 + scripts/creator.as | 1782 +++++++++++++ ...t_StudioSparkMain_bold_normal_252592600.as | 14 + ...StudioSparkMain_medium_italic_932513666.as | 14 + ...tudioSparkMain_medium_normal_1328217743.as | 14 + scripts/en_US$SharedResources_properties.as | 31 + scripts/en_US$collections_properties.as | 50 + scripts/en_US$components_properties.as | 72 + scripts/en_US$containers_properties.as | 25 + scripts/en_US$controls_properties.as | 61 + scripts/en_US$core_properties.as | 37 + scripts/en_US$effects_properties.as | 23 + scripts/en_US$formatters_properties.as | 38 + scripts/en_US$layout_properties.as | 27 + scripts/en_US$skins_properties.as | 20 + scripts/en_US$sparkEffects_properties.as | 29 + scripts/en_US$styles_properties.as | 20 + scripts/en_US$textLayout_properties.as | 43 + .../flashx/textLayout/compose/ISWFContext.as | 9 + scripts/mx/core/ApplicationDomainTarget.as | 24 + scripts/mx/core/BitmapAsset.as | 465 ++++ scripts/mx/core/CrossDomainRSLItem.as | 177 ++ scripts/mx/core/DPIClassification.as | 18 + scripts/mx/core/EmbeddedFont.as | 73 + scripts/mx/core/EmbeddedFontRegistry.as | 287 ++ scripts/mx/core/FlexBitmap.as | 34 + scripts/mx/core/FlexSprite.as | 33 + scripts/mx/core/IAssetLayoutFeatures.as | 90 + scripts/mx/core/IChildList.as | 32 + scripts/mx/core/IEmbeddedFontRegistry.as | 21 + scripts/mx/core/IFlexAsset.as | 7 + scripts/mx/core/IFlexDisplayObject.as | 126 + scripts/mx/core/IFlexModule.as | 11 + scripts/mx/core/IFlexModuleFactory.as | 36 + scripts/mx/core/IInvalidating.as | 15 + scripts/mx/core/ILayoutDirectionElement.as | 13 + scripts/mx/core/IRawChildrenContainer.as | 9 + scripts/mx/core/IRepeaterClient.as | 23 + scripts/mx/core/IUIComponent.as | 98 + scripts/mx/core/RSLData.as | 85 + scripts/mx/core/RSLItem.as | 122 + scripts/mx/core/RSLListLoader.as | 106 + scripts/mx/core/ResourceModuleRSLItem.as | 60 + scripts/mx/core/RuntimeDPIProvider.as | 34 + scripts/mx/core/Singleton.as | 42 + scripts/mx/core/mx_internal.as | 4 + scripts/mx/events/DynamicEvent.as | 30 + scripts/mx/events/FlexEvent.as | 124 + scripts/mx/events/ModuleEvent.as | 51 + scripts/mx/events/RSLEvent.as | 53 + scripts/mx/events/Request.as | 30 + scripts/mx/events/ResourceEvent.as | 34 + scripts/mx/events/SandboxMouseEvent.as | 54 + scripts/mx/managers/ISystemManager.as | 67 + .../mx/managers/ISystemManagerChildManager.as | 19 + scripts/mx/managers/SystemChildrenList.as | 113 + scripts/mx/managers/SystemManager.as | 1994 ++++++++++++++ scripts/mx/managers/SystemManagerGlobals.as | 26 + scripts/mx/managers/SystemRawChildrenList.as | 79 + scripts/mx/modules/IModuleInfo.as | 37 + scripts/mx/modules/ModuleManager.as | 608 +++++ scripts/mx/modules/ModuleManagerGlobals.as | 14 + scripts/mx/preloaders/IPreloaderDisplay.as | 38 + scripts/mx/preloaders/Preloader.as | 326 +++ scripts/mx/resources/IResourceBundle.as | 13 + scripts/mx/resources/IResourceManager.as | 65 + scripts/mx/resources/IResourceModule.as | 9 + scripts/mx/resources/LocaleSorter.as | 751 ++++++ scripts/mx/resources/ResourceBundle.as | 73 + scripts/mx/resources/ResourceManager.as | 44 + scripts/mx/resources/ResourceManagerImpl.as | 709 +++++ scripts/mx/utils/DensityUtil.as | 43 + scripts/mx/utils/LoaderUtil.as | 382 +++ scripts/mx/utils/NameUtil.as | 96 + scripts/mx/utils/SHA256.as | 188 ++ scripts/mx/utils/StringUtil.as | 219 ++ scripts/nochump/util/zip/ZipConstants.as | 46 + scripts/nochump/util/zip/ZipEntry.as | 124 + scripts/nochump/util/zip/ZipError.as | 14 + scripts/nochump/util/zip/ZipFile.as | 159 ++ shapes/11.svg | 13 + shapes/12.svg | 6 + shapes/14.svg | 14 + shapes/4.svg | 19 + shapes/6.svg | 14 + shapes/7.svg | 7 + .../1.png | Bin 0 -> 145 bytes .../1.png | Bin 0 -> 540 bytes .../1.png | Bin 0 -> 383 bytes .../1.png | Bin 0 -> 507 bytes sprites/DefineSprite_8/1.png | Bin 0 -> 145 bytes .../1.png | Bin 0 -> 401 bytes symbols.csv | 168 ++ 652 files changed, 68778 insertions(+) create mode 100644 README.md create mode 100644 binaryData/36_anifire.component.CustomCharacterMaker_GoColorMapShaderClass.bin create mode 100644 cc.swf create mode 100644 frames/1.png create mode 100644 frames/2.png create mode 100644 images/100_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.png create mode 100644 images/101_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403.png create mode 100644 images/102_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.png create mode 100644 images/103_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647.png create mode 100644 images/104_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.png create mode 100644 images/105_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557.png create mode 100644 images/106_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807.png create mode 100644 images/107_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579.png create mode 100644 images/108_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.png create mode 100644 images/109_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339.png create mode 100644 images/110_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.png create mode 100644 images/111_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.png create mode 100644 images/112_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699.png create mode 100644 images/113_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.png create mode 100644 images/114_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.png create mode 100644 images/115_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.png create mode 100644 images/116_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.png create mode 100644 images/117_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.png create mode 100644 images/118_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579.png create mode 100644 images/119_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617.png create mode 100644 images/121_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.png create mode 100644 images/122_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041.png create mode 100644 images/123_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337.png create mode 100644 images/124_anifire.creator.components.ConfirmPopUp_imgConfirm.png create mode 100644 images/125_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.png create mode 100644 images/126_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653.png create mode 100644 images/127_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.png create mode 100644 images/128_anifire.skins.ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210.png create mode 100644 images/129_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.png create mode 100644 images/130_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.png create mode 100644 images/131_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.png create mode 100644 images/132_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.png create mode 100644 images/133_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.png create mode 100644 images/134_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.png create mode 100644 images/135_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167.png create mode 100644 images/136_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.png create mode 100644 images/137_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631.png create mode 100644 images/138_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249.png create mode 100644 images/139_anifire.skins.ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.png create mode 100644 images/140_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097.png create mode 100644 images/141_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.png create mode 100644 images/142_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.png create mode 100644 images/143_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.png create mode 100644 images/144_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697.png create mode 100644 images/145_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399.png create mode 100644 images/146_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411.png create mode 100644 images/147_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.png create mode 100644 images/148_anifire.creator.components.DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267.png create mode 100644 images/149_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411.png create mode 100644 images/150_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.png create mode 100644 images/151_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.png create mode 100644 images/152_anifire.managers.NativeCursorManager_imgCursor1.png create mode 100644 images/153_anifire.creator.components.DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219.png create mode 100644 images/154_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959.png create mode 100644 images/155_anifire.managers.NativeCursorManager_imgCursor4.png create mode 100644 images/156_anifire.managers.NativeCursorManager_imgCursor3.png create mode 100644 images/157_anifire.managers.NativeCursorManager_imgCursor2.png create mode 100644 images/16_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471.png create mode 100644 images/17_anifire.creator.components.ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.png create mode 100644 images/18_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.png create mode 100644 images/19_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.png create mode 100644 images/1_anifire.creator.components.CCPreloader_imgBarTrack.png create mode 100644 images/20_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425.png create mode 100644 images/21_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125.png create mode 100644 images/22_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.png create mode 100644 images/23_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.png create mode 100644 images/24_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.png create mode 100644 images/25_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.png create mode 100644 images/26_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.png create mode 100644 images/27_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.png create mode 100644 images/28_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677.png create mode 100644 images/29_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.png create mode 100644 images/2_anifire.creator.components.CCPreloader_imgBarFill.png create mode 100644 images/30_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317.png create mode 100644 images/31_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.png create mode 100644 images/32_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607.png create mode 100644 images/33_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001.png create mode 100644 images/34_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.png create mode 100644 images/35_anifire.skins.EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.png create mode 100644 images/37_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533.png create mode 100644 images/38_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693.png create mode 100644 images/39_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.png create mode 100644 images/3_anifire.creator.components.CCPreloader_imgLogo.png create mode 100644 images/40_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171.png create mode 100644 images/41_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303.png create mode 100644 images/42_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063.png create mode 100644 images/43_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821.png create mode 100644 images/44_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.png create mode 100644 images/45_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.png create mode 100644 images/46_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985.png create mode 100644 images/47_anifire.skins.EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724.png create mode 100644 images/48_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.png create mode 100644 images/49_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239.png create mode 100644 images/50_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.png create mode 100644 images/51_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911.png create mode 100644 images/52_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625.png create mode 100644 images/53_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053.png create mode 100644 images/54_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.png create mode 100644 images/55_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.png create mode 100644 images/56_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.png create mode 100644 images/57_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.png create mode 100644 images/58_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387.png create mode 100644 images/59_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043.png create mode 100644 images/60_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.png create mode 100644 images/61_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.png create mode 100644 images/62_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757.png create mode 100644 images/63_anifire.creator.components.ConfirmPopUp_imgError.png create mode 100644 images/64_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135.png create mode 100644 images/65_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.png create mode 100644 images/66_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.png create mode 100644 images/67_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.png create mode 100644 images/68_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807.png create mode 100644 images/69_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.png create mode 100644 images/70_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.png create mode 100644 images/71_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917.png create mode 100644 images/72_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213.png create mode 100644 images/73_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.png create mode 100644 images/74_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.png create mode 100644 images/75_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193.png create mode 100644 images/76_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.png create mode 100644 images/77_anifire.creator.components.ConfirmPopUp_imgAlert.png create mode 100644 images/78_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.png create mode 100644 images/79_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717.png create mode 100644 images/80_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.png create mode 100644 images/81_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273.png create mode 100644 images/82_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.png create mode 100644 images/83_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.png create mode 100644 images/84_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.png create mode 100644 images/85_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025.png create mode 100644 images/86_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.png create mode 100644 images/87_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179.png create mode 100644 images/88_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.png create mode 100644 images/89_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.png create mode 100644 images/90_anifire.skins.ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.png create mode 100644 images/91_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229.png create mode 100644 images/92_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.png create mode 100644 images/93_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473.png create mode 100644 images/94_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911.png create mode 100644 images/96_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.png create mode 100644 images/97_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653.png create mode 100644 images/98_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665.png create mode 100644 images/99_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235.png create mode 100644 scripts/_anifire_creator_components_BodyShapeMegaChooserWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_CcComponentPropertyInspectorSparkWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_CharPreviewOptionWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_CharPreviewerWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_ColorDisplayGroupWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_ColorPickerItemRendererWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_ComponentThumbChooserSparkWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_DecorationItemRendererWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_DecorationPanelWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_DefaultDropDownListItemRendererWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_MenuItemRendererWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_ScaleChooserSparkWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_TemplateCCSelectorWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_TopButtonsWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_TypeChooserSparkWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_components_facePreviewWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_ActionDropDownListSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_ArrowTipContainerSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_ConfirmPanelSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_ConfirmPopUpSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_DefaultDropDownListSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_FlatColorPickerSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_creator_skins_SubscribeTipContainerSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_skins_ColorInputPanelHueSliderTrackSkinWatcherSetupUtil.as create mode 100644 scripts/_anifire_skins_ColorInputPanelSkinWatcherSetupUtil.as create mode 100644 scripts/_class_embed_css_Assets_swf_1135953132_mx_skins_cursor_BusyCursor_217471087.as create mode 100644 scripts/_class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragCopy_535650521.as create mode 100644 scripts/_class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragLink_535912526.as create mode 100644 scripts/_class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragMove_535938101.as create mode 100644 scripts/_class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragReject_951602013.as create mode 100644 scripts/_creatorWatcherSetupUtil.as create mode 100644 scripts/_creator_FlexInit.as create mode 100644 scripts/_creator_Styles.as create mode 100644 scripts/_creator_mx_managers_SystemManager.as create mode 100644 scripts/anifire/assets/AssetImageLibrary.as create mode 100644 scripts/anifire/assets/AssetImageLibraryObject.as create mode 100644 scripts/anifire/assets/AssetImageShelf.as create mode 100644 scripts/anifire/cc/interfaces/ICcComponent.as create mode 100644 scripts/anifire/cc/interfaces/ICcPairComponent.as create mode 100644 scripts/anifire/cc/model/CcComponentModel.as create mode 100644 scripts/anifire/cc/model/CcMouthModel.as create mode 100644 scripts/anifire/cc/view/CCHeadView.as create mode 100644 scripts/anifire/cc/view/CcComponent.as create mode 100644 scripts/anifire/cc/view/CcComponentFactory.as create mode 100644 scripts/anifire/cc/view/CcComponent_GoColorMapShaderClass.as create mode 100644 scripts/anifire/cc/view/CcDecorationComponent.as create mode 100644 scripts/anifire/cc/view/CcEyeComponent.as create mode 100644 scripts/anifire/cc/view/CcHairComponent.as create mode 100644 scripts/anifire/cc/view/CcHeadComponent.as create mode 100644 scripts/anifire/cc/view/CcImageLibrary.as create mode 100644 scripts/anifire/cc/view/CcLipSyncMouth.as create mode 100644 scripts/anifire/cc/view/CcMouthComponent.as create mode 100644 scripts/anifire/cc/view/CcPairComponent.as create mode 100644 scripts/anifire/cc/view/CcTalkMouth.as create mode 100644 scripts/anifire/color/SelectedColor.as create mode 100644 scripts/anifire/component/CCThumb.as create mode 100644 scripts/anifire/component/CcActionLoader.as create mode 100644 scripts/anifire/component/CcComponentLoader.as create mode 100644 scripts/anifire/component/ColorInputPanel.as create mode 100644 scripts/anifire/component/CustomCharacterMaker.as create mode 100644 scripts/anifire/component/CustomCharacterMaker_GoColorMapShaderClass.as create mode 100644 scripts/anifire/component/EyeDropperScreenOverlay.as create mode 100644 scripts/anifire/component/ProcessRegulator.as create mode 100644 scripts/anifire/component/SkinnedAssetMaker.as create mode 100644 scripts/anifire/component/SkinnedCharacterMaker.as create mode 100644 scripts/anifire/constant/AnimeConstants.as create mode 100644 scripts/anifire/constant/CcLibConstant.as create mode 100644 scripts/anifire/constant/CcServerConstant.as create mode 100644 scripts/anifire/constant/LanguageConstants.as create mode 100644 scripts/anifire/constant/LicenseConstants.as create mode 100644 scripts/anifire/constant/RaceConstants.as create mode 100644 scripts/anifire/constant/ServerConstants.as create mode 100644 scripts/anifire/constant/ThemeConstants.as create mode 100644 scripts/anifire/core/CCLipSyncController.as create mode 100644 scripts/anifire/core/CCManager.as create mode 100644 scripts/anifire/core/GoBaseWorker.as create mode 100644 scripts/anifire/core/GoBaseWorkerImp.as create mode 100644 scripts/anifire/creator/components/ArrowTipContainer.as create mode 100644 scripts/anifire/creator/components/BodyShapeChooser.as create mode 100644 scripts/anifire/creator/components/BodyShapeMegaChooser.as create mode 100644 scripts/anifire/creator/components/BusyIndicator.as create mode 100644 scripts/anifire/creator/components/CCLoadingScreen.as create mode 100644 scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899.as create mode 100644 scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051.as create mode 100644 scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565.as create mode 100644 scripts/anifire/creator/components/CCPreloader.as create mode 100644 scripts/anifire/creator/components/CCPreloader_imgBarFill.as create mode 100644 scripts/anifire/creator/components/CCPreloader_imgBarTrack.as create mode 100644 scripts/anifire/creator/components/CCPreloader_imgLogo.as create mode 100644 scripts/anifire/creator/components/CCTemplateCharThumb.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179.as create mode 100644 scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.as create mode 100644 scripts/anifire/creator/components/CcColorPickers.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as create mode 100644 scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as create mode 100644 scripts/anifire/creator/components/CcComponentThumbDetailThumbnail.as create mode 100644 scripts/anifire/creator/components/CcComponentThumbThumbnail.as create mode 100644 scripts/anifire/creator/components/CharPreviewOption.as create mode 100644 scripts/anifire/creator/components/CharPreviewer.as create mode 100644 scripts/anifire/creator/components/ClothesChooser.as create mode 100644 scripts/anifire/creator/components/ColorDisplayGroup.as create mode 100644 scripts/anifire/creator/components/ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as create mode 100644 scripts/anifire/creator/components/ColorPicker.as create mode 100644 scripts/anifire/creator/components/ColorPickerDropDownList.as create mode 100644 scripts/anifire/creator/components/ColorPickerItemRenderer.as create mode 100644 scripts/anifire/creator/components/ComponentItemRenderer.as create mode 100644 scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as create mode 100644 scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239.as create mode 100644 scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911.as create mode 100644 scripts/anifire/creator/components/ConfirmPopUp.as create mode 100644 scripts/anifire/creator/components/ConfirmPopUp_imgAlert.as create mode 100644 scripts/anifire/creator/components/ConfirmPopUp_imgConfirm.as create mode 100644 scripts/anifire/creator/components/ConfirmPopUp_imgError.as create mode 100644 scripts/anifire/creator/components/DecoThumbRenderer.as create mode 100644 scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as create mode 100644 scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as create mode 100644 scripts/anifire/creator/components/DecorationItemRenderer.as create mode 100644 scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267.as create mode 100644 scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219.as create mode 100644 scripts/anifire/creator/components/DecorationPanel.as create mode 100644 scripts/anifire/creator/components/DefaultDropDownListItemRenderer.as create mode 100644 scripts/anifire/creator/components/DefaultPopUpContainer.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.as create mode 100644 scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403.as create mode 100644 scripts/anifire/creator/components/IconButton.as create mode 100644 scripts/anifire/creator/components/LatestTemplateCharThumb.as create mode 100644 scripts/anifire/creator/components/LatestTemplates.as create mode 100644 scripts/anifire/creator/components/MenuItemList.as create mode 100644 scripts/anifire/creator/components/MenuItemRenderer.as create mode 100644 scripts/anifire/creator/components/PopUpAnchor.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as create mode 100644 scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as create mode 100644 scripts/anifire/creator/components/TemplateCCSelector.as create mode 100644 scripts/anifire/creator/components/ThumbList.as create mode 100644 scripts/anifire/creator/components/TopButtons.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911.as create mode 100644 scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.as create mode 100644 scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.as create mode 100644 scripts/anifire/creator/components/facePreview.as create mode 100644 scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693.as create mode 100644 scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.as create mode 100644 scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.as create mode 100644 scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097.as create mode 100644 scripts/anifire/creator/config/GoAnimate.as create mode 100644 scripts/anifire/creator/core/CcCharEditorController.as create mode 100644 scripts/anifire/creator/core/CcConsole.as create mode 100644 scripts/anifire/creator/core/CcPreviewAndSaveController.as create mode 100644 scripts/anifire/creator/events/CcActionChosenEvent.as create mode 100644 scripts/anifire/creator/events/CcBodyShapeChooserEvent.as create mode 100644 scripts/anifire/creator/events/CcButtonBarEvent.as create mode 100644 scripts/anifire/creator/events/CcCharPreviewerEvent.as create mode 100644 scripts/anifire/creator/events/CcColorPickerEvent.as create mode 100644 scripts/anifire/creator/events/CcComponentLoadEvent.as create mode 100644 scripts/anifire/creator/events/CcComponentThumbChooserEvent.as create mode 100644 scripts/anifire/creator/events/CcComponentThumbnailMouseEvent.as create mode 100644 scripts/anifire/creator/events/CcComponentTypeChooserEvent.as create mode 100644 scripts/anifire/creator/events/CcCoreEvent.as create mode 100644 scripts/anifire/creator/events/CcPointUpdateEvent.as create mode 100644 scripts/anifire/creator/events/CcPreMadeCharChooserEvent.as create mode 100644 scripts/anifire/creator/events/CcSaveCharEvent.as create mode 100644 scripts/anifire/creator/events/CcScaleChosenEvent.as create mode 100644 scripts/anifire/creator/events/CcSelectedDecorationEvent.as create mode 100644 scripts/anifire/creator/events/CcTemplateChooserEvent.as create mode 100644 scripts/anifire/creator/events/CcThumbPropertyEvent.as create mode 100644 scripts/anifire/creator/events/CcThumbScaleEvent.as create mode 100644 scripts/anifire/creator/events/ColorPickerDropDownListEvent.as create mode 100644 scripts/anifire/creator/events/MenuItemEvent.as create mode 100644 scripts/anifire/creator/interfaces/ICcCharEditorContainer.as create mode 100644 scripts/anifire/creator/interfaces/ICcMainUiContainer.as create mode 100644 scripts/anifire/creator/interfaces/ICcPreviewAndSaveContainer.as create mode 100644 scripts/anifire/creator/interfaces/IConfiguration.as create mode 100644 scripts/anifire/creator/interfaces/IMenuItemOwner.as create mode 100644 scripts/anifire/creator/models/CcAction.as create mode 100644 scripts/anifire/creator/models/CcBodyShape.as create mode 100644 scripts/anifire/creator/models/CcCharacter.as create mode 100644 scripts/anifire/creator/models/CcColor.as create mode 100644 scripts/anifire/creator/models/CcColorThumb.as create mode 100644 scripts/anifire/creator/models/CcComponent.as create mode 100644 scripts/anifire/creator/models/CcComponentThumb.as create mode 100644 scripts/anifire/creator/models/CcFacial.as create mode 100644 scripts/anifire/creator/models/CcLibrary.as create mode 100644 scripts/anifire/creator/models/CcRequireComponent.as create mode 100644 scripts/anifire/creator/models/CcSelection.as create mode 100644 scripts/anifire/creator/models/CcState.as create mode 100644 scripts/anifire/creator/models/CcTemplate.as create mode 100644 scripts/anifire/creator/models/CcTheme.as create mode 100644 scripts/anifire/creator/models/MenuItemModel.as create mode 100644 scripts/anifire/creator/skins/ActionDropDownListSkin.as create mode 100644 scripts/anifire/creator/skins/ArrowTipContainerSkin.as create mode 100644 scripts/anifire/creator/skins/ColorPickerDropDownListSkin.as create mode 100644 scripts/anifire/creator/skins/ColorPickerOpenButtonSkin.as create mode 100644 scripts/anifire/creator/skins/ConfirmPanelSkin.as create mode 100644 scripts/anifire/creator/skins/ConfirmPopUpSkin.as create mode 100644 scripts/anifire/creator/skins/CustomButtonBarButtonSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultButtonSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultDropDownListButtonSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultDropDownListSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultHScrollBarSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultHScrollBarThumbSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultHScrollBarTrackSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultTextInputSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultVScrollBarSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultVScrollBarThumbSkin.as create mode 100644 scripts/anifire/creator/skins/DefaultVScrollBarTrackSkin.as create mode 100644 scripts/anifire/creator/skins/FlatColorPickerSkin.as create mode 100644 scripts/anifire/creator/skins/FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as create mode 100644 scripts/anifire/creator/skins/HButtonBarSkin.as create mode 100644 scripts/anifire/creator/skins/HButtonBarSkinInnerClass0.as create mode 100644 scripts/anifire/creator/skins/HButtonBarSkinInnerClass1.as create mode 100644 scripts/anifire/creator/skins/HButtonBarSkinInnerClass2.as create mode 100644 scripts/anifire/creator/skins/IconButtonSkin.as create mode 100644 scripts/anifire/creator/skins/MenuItemListSkin.as create mode 100644 scripts/anifire/creator/skins/PrimaryButtonSkin.as create mode 100644 scripts/anifire/creator/skins/SubscribeTipContainerSkin.as create mode 100644 scripts/anifire/creator/skins/TopToolBarButtonSkin.as create mode 100644 scripts/anifire/creator/utils/ComponentThumbFilter.as create mode 100644 scripts/anifire/event/ByteLoaderEvent.as create mode 100644 scripts/anifire/event/ColorPaletteEvent.as create mode 100644 scripts/anifire/event/ExtraDataEvent.as create mode 100644 scripts/anifire/event/EyeDropperEvent.as create mode 100644 scripts/anifire/event/LoadEmbedMovieEvent.as create mode 100644 scripts/anifire/event/LoadMgrEvent.as create mode 100644 scripts/anifire/event/SpeechPitchEvent.as create mode 100644 scripts/anifire/event/StudioEvent.as create mode 100644 scripts/anifire/interfaces/ICharacter.as create mode 100644 scripts/anifire/interfaces/IRegulatedProcess.as create mode 100644 scripts/anifire/interfaces/ISpeak.as create mode 100644 scripts/anifire/managers/AmplitudeAnalyticsManager.as create mode 100644 scripts/anifire/managers/AppConfigManager.as create mode 100644 scripts/anifire/managers/ColorUtils.as create mode 100644 scripts/anifire/managers/ExternalLinkManager.as create mode 100644 scripts/anifire/managers/NativeCursorManager.as create mode 100644 scripts/anifire/managers/NativeCursorManager_imgCursor1.as create mode 100644 scripts/anifire/managers/NativeCursorManager_imgCursor2.as create mode 100644 scripts/anifire/managers/NativeCursorManager_imgCursor3.as create mode 100644 scripts/anifire/managers/NativeCursorManager_imgCursor4.as create mode 100644 scripts/anifire/managers/ServerConnector.as create mode 100644 scripts/anifire/models/ApiEventModel.as create mode 100644 scripts/anifire/models/creator/CCActionModel.as create mode 100644 scripts/anifire/models/creator/CCBodyComponentModel.as create mode 100644 scripts/anifire/models/creator/CCCharActionComponentModel.as create mode 100644 scripts/anifire/models/creator/CCCharacterActionModel.as create mode 100644 scripts/anifire/models/creator/CCColor.as create mode 100644 scripts/anifire/skins/ColorInputPanelHueSliderSkin.as create mode 100644 scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin.as create mode 100644 scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as create mode 100644 scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin.as create mode 100644 scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210.as create mode 100644 scripts/anifire/skins/ColorInputPanelSkin.as create mode 100644 scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.as create mode 100644 scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as create mode 100644 scripts/anifire/skins/EyeDropperButtonSkin.as create mode 100644 scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.as create mode 100644 scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724.as create mode 100644 scripts/anifire/util/Crypto/FastRC4.as create mode 100644 scripts/anifire/util/Crypto/TEA.as create mode 100644 scripts/anifire/util/ExtraDataLoader.as create mode 100644 scripts/anifire/util/ExtraDataTimer.as create mode 100644 scripts/anifire/util/GetText.as create mode 100644 scripts/anifire/util/IUtilMap.as create mode 100644 scripts/anifire/util/Util.as create mode 100644 scripts/anifire/util/UtilColor.as create mode 100644 scripts/anifire/util/UtilCrypto.as create mode 100644 scripts/anifire/util/UtilDict.as create mode 100644 scripts/anifire/util/UtilDictOffline.as create mode 100644 scripts/anifire/util/UtilErrorLogger.as create mode 100644 scripts/anifire/util/UtilGettext.as create mode 100644 scripts/anifire/util/UtilHashActionLoader.as create mode 100644 scripts/anifire/util/UtilHashArray.as create mode 100644 scripts/anifire/util/UtilHashBytes.as create mode 100644 scripts/anifire/util/UtilHashMap.as create mode 100644 scripts/anifire/util/UtilHashNumber.as create mode 100644 scripts/anifire/util/UtilHashSelectedColor.as create mode 100644 scripts/anifire/util/UtilHashUint.as create mode 100644 scripts/anifire/util/UtilLicense.as create mode 100644 scripts/anifire/util/UtilLoadMgr.as create mode 100644 scripts/anifire/util/UtilMath.as create mode 100644 scripts/anifire/util/UtilNetwork.as create mode 100644 scripts/anifire/util/UtilPager.as create mode 100644 scripts/anifire/util/UtilPlain.as create mode 100644 scripts/anifire/util/UtilSite.as create mode 100644 scripts/anifire/util/UtilURLStream.as create mode 100644 scripts/anifire/util/UtilUnitConvert.as create mode 100644 scripts/anifire/util/UtilUser.as create mode 100644 scripts/anifire/util/UtilXmlInfo.as create mode 100644 scripts/anifire/utils/SecurityUtils.as create mode 100644 scripts/com/adobe/crypto/MD5.as create mode 100644 scripts/com/adobe/serialization/json/JS0N.as create mode 100644 scripts/com/adobe/serialization/json/JSON.as create mode 100644 scripts/com/adobe/serialization/json/JSONDecoder.as create mode 100644 scripts/com/adobe/serialization/json/JSONEncoder.as create mode 100644 scripts/com/adobe/serialization/json/JSONParseError.as create mode 100644 scripts/com/adobe/serialization/json/JSONToken.as create mode 100644 scripts/com/adobe/serialization/json/JSONTokenType.as create mode 100644 scripts/com/adobe/serialization/json/JSONTokenizer.as create mode 100644 scripts/com/adobe/utils/IntUtil.as create mode 100644 scripts/com/adobe/webapis/gettext/GetText.as create mode 100644 scripts/com/adobe/webapis/gettext/Parser.as create mode 100644 scripts/creator.as create mode 100644 scripts/creator__embed__font_StudioSparkMain_bold_normal_252592600.as create mode 100644 scripts/creator__embed__font_StudioSparkMain_medium_italic_932513666.as create mode 100644 scripts/creator__embed__font_StudioSparkMain_medium_normal_1328217743.as create mode 100644 scripts/en_US$SharedResources_properties.as create mode 100644 scripts/en_US$collections_properties.as create mode 100644 scripts/en_US$components_properties.as create mode 100644 scripts/en_US$containers_properties.as create mode 100644 scripts/en_US$controls_properties.as create mode 100644 scripts/en_US$core_properties.as create mode 100644 scripts/en_US$effects_properties.as create mode 100644 scripts/en_US$formatters_properties.as create mode 100644 scripts/en_US$layout_properties.as create mode 100644 scripts/en_US$skins_properties.as create mode 100644 scripts/en_US$sparkEffects_properties.as create mode 100644 scripts/en_US$styles_properties.as create mode 100644 scripts/en_US$textLayout_properties.as create mode 100644 scripts/flashx/textLayout/compose/ISWFContext.as create mode 100644 scripts/mx/core/ApplicationDomainTarget.as create mode 100644 scripts/mx/core/BitmapAsset.as create mode 100644 scripts/mx/core/CrossDomainRSLItem.as create mode 100644 scripts/mx/core/DPIClassification.as create mode 100644 scripts/mx/core/EmbeddedFont.as create mode 100644 scripts/mx/core/EmbeddedFontRegistry.as create mode 100644 scripts/mx/core/FlexBitmap.as create mode 100644 scripts/mx/core/FlexSprite.as create mode 100644 scripts/mx/core/IAssetLayoutFeatures.as create mode 100644 scripts/mx/core/IChildList.as create mode 100644 scripts/mx/core/IEmbeddedFontRegistry.as create mode 100644 scripts/mx/core/IFlexAsset.as create mode 100644 scripts/mx/core/IFlexDisplayObject.as create mode 100644 scripts/mx/core/IFlexModule.as create mode 100644 scripts/mx/core/IFlexModuleFactory.as create mode 100644 scripts/mx/core/IInvalidating.as create mode 100644 scripts/mx/core/ILayoutDirectionElement.as create mode 100644 scripts/mx/core/IRawChildrenContainer.as create mode 100644 scripts/mx/core/IRepeaterClient.as create mode 100644 scripts/mx/core/IUIComponent.as create mode 100644 scripts/mx/core/RSLData.as create mode 100644 scripts/mx/core/RSLItem.as create mode 100644 scripts/mx/core/RSLListLoader.as create mode 100644 scripts/mx/core/ResourceModuleRSLItem.as create mode 100644 scripts/mx/core/RuntimeDPIProvider.as create mode 100644 scripts/mx/core/Singleton.as create mode 100644 scripts/mx/core/mx_internal.as create mode 100644 scripts/mx/events/DynamicEvent.as create mode 100644 scripts/mx/events/FlexEvent.as create mode 100644 scripts/mx/events/ModuleEvent.as create mode 100644 scripts/mx/events/RSLEvent.as create mode 100644 scripts/mx/events/Request.as create mode 100644 scripts/mx/events/ResourceEvent.as create mode 100644 scripts/mx/events/SandboxMouseEvent.as create mode 100644 scripts/mx/managers/ISystemManager.as create mode 100644 scripts/mx/managers/ISystemManagerChildManager.as create mode 100644 scripts/mx/managers/SystemChildrenList.as create mode 100644 scripts/mx/managers/SystemManager.as create mode 100644 scripts/mx/managers/SystemManagerGlobals.as create mode 100644 scripts/mx/managers/SystemRawChildrenList.as create mode 100644 scripts/mx/modules/IModuleInfo.as create mode 100644 scripts/mx/modules/ModuleManager.as create mode 100644 scripts/mx/modules/ModuleManagerGlobals.as create mode 100644 scripts/mx/preloaders/IPreloaderDisplay.as create mode 100644 scripts/mx/preloaders/Preloader.as create mode 100644 scripts/mx/resources/IResourceBundle.as create mode 100644 scripts/mx/resources/IResourceManager.as create mode 100644 scripts/mx/resources/IResourceModule.as create mode 100644 scripts/mx/resources/LocaleSorter.as create mode 100644 scripts/mx/resources/ResourceBundle.as create mode 100644 scripts/mx/resources/ResourceManager.as create mode 100644 scripts/mx/resources/ResourceManagerImpl.as create mode 100644 scripts/mx/utils/DensityUtil.as create mode 100644 scripts/mx/utils/LoaderUtil.as create mode 100644 scripts/mx/utils/NameUtil.as create mode 100644 scripts/mx/utils/SHA256.as create mode 100644 scripts/mx/utils/StringUtil.as create mode 100644 scripts/nochump/util/zip/ZipConstants.as create mode 100644 scripts/nochump/util/zip/ZipEntry.as create mode 100644 scripts/nochump/util/zip/ZipError.as create mode 100644 scripts/nochump/util/zip/ZipFile.as create mode 100644 shapes/11.svg create mode 100644 shapes/12.svg create mode 100644 shapes/14.svg create mode 100644 shapes/4.svg create mode 100644 shapes/6.svg create mode 100644 shapes/7.svg create mode 100644 sprites/DefineSprite_10_mx.skins.cursor.DragMove__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragMove_535938101/1.png create mode 100644 sprites/DefineSprite_13_mx.skins.cursor.DragReject__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragReject_951602013/1.png create mode 100644 sprites/DefineSprite_15_mx.skins.cursor.DragCopy__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragCopy_535650521/1.png create mode 100644 sprites/DefineSprite_5_mx.skins.cursor.BusyCursor__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_BusyCursor_217471087/1.png create mode 100644 sprites/DefineSprite_8/1.png create mode 100644 sprites/DefineSprite_9_mx.skins.cursor.DragLink__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragLink_535912526/1.png create mode 100644 symbols.csv diff --git a/README.md b/README.md new file mode 100644 index 0000000..d1e155f --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# GoAnimate Character Creator +Source code from the legacy Flash version of Vyond's character creator, originally taken from [this `.swf` file](https://d3v4eglovri8yt.cloudfront.net/animation/414827163ad4eb60/cc.swf). + + +*Note:* This has been decompied from [JPEXS Flash Decompiler](https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/version11.2.0), the inner-workings of which I have no knowlegde of. If you're interested in modifying this repo's code and re-compiling it, I'd recommend using the same program. diff --git a/binaryData/36_anifire.component.CustomCharacterMaker_GoColorMapShaderClass.bin b/binaryData/36_anifire.component.CustomCharacterMaker_GoColorMapShaderClass.bin new file mode 100644 index 0000000000000000000000000000000000000000..5741c9795b6bcfe2a42d032d459d784454385ab0 GIT binary patch literal 759 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�LKK3W>Ya&% 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

4Ul)stW-sD2% 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ósLt_9lPam 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


efT|ttD*T1?QP2XG9nA7C z8eTfwQ%@b`pwT;q4qYtf_*Zg4A7#qJ4fmK02?@rbfO6E_cyWM)vO-30a5>UlTv!{j zN&YM@N2`m=1t(b~{{$`v5OsUSXgi8SC<3m4mc(gPxP(tw%>ycK!r=J=jL+BX)?kS+ zh}zK%o-O%L*Ql>*qsT~D9E6;F8o3j|d^GppxM6cY;bGjw64b}556|P~W-;e%LOyk4 z9fwx}f*d8fUAYMIY|Ho{K#B81sIDuKRol|y6g5xC|!qw7oy}yfpgFUeZ=5~>gSu@62 z4^*p#7vcp1&xG68UpRj~(o;fc9%yp>AI_m)IBzLE7<)Hxh+`N_&}DP4;K$TcVLl}D z2VfGUkv-ZfLTozPb)A{ZX{0o>lM!Keup<3=IZ}3`OGA+3or}ZjrIv+EdaA1(+Hsol|A7j&82ViP8O-Rz=%NcK23an z3!-ZZ5J3m(-?gE&^l*m%M$t#Vp8DV+K8)vf^;jm0M)Ckv>Cz@lraBC@%cU{vO37M) zVs;M+VJ_*35QugJD3CuRI7|X4N5CCBM}?+*fvO*{~C44a|ggYFG z!N#Xlge_H2;vmO(f@A}M0fq&@t2Z1xlxy|+P)a)IkTnc};qIcg(u3J2i%@$3Z8W4o z4tTOUv1>zfDT^MAANLvQsRvr)kAjMadn$9NqO-*uY9+VHugfgN1r%Xk$mpdejuk*K zkowUL?0ZH1jDj_?UPPtga z83vf$Y9nelV?e@I-uE>hwl)&(5C6tMI>*R@`3nQ&w$FgJo(-wy7Xpk>3o?0h-}R>&@{?<%-inQOcA^Gyn@I3%X= zWVDdq@$V=n@&QHEFqLK|KTQO@9queLRYyVfK+3KAJ#W@>7FaOD*^^-MsO8T$S0X@s z<@B9H?Iy9zleF=)*0PXYZ9)SNf*oy43!Loe5N`J%Fll3Btz~7;EFdniw;OJL+xbdh z1R?ekK(lgBFC&CZ?U_8iPOsqgyQGcJ!4V12Qc54Y##-#uxv!#$?? zL85C-oc$iD`p^~5L z&I#<`__#rde!YYo5*)TlV>=NjGUgUZQ3?4H>MB1uPpx`PlG`MpR$wO7TLf&&J_*b` zq?_f`=Xu#oq)zPF*j#=)|D?X%YtO`VzSHxqvCPAOtXj+Ie{!JOPWUM^(BpogK^oJJ zHm(II3-HADG$xZaJ_b%k^)jfGbM5>PH>e$0luP%&(9V~b*L`&y5YxBP@y3=)W5;fx z({ni4a|1_zzDUUmdQINRLhEa}O?H)jE?dQ(7~5L@!gvx2mZrV6#z<94LVCWHG8fxbstengO85S<#Fkwjo zDRu1@x<8jBb=>*?WnUMt4@xqPWNvkvEG+$e(64i&-L2v7jlunVP#rv0wkTaDhjiwecAt{|E!}_3L>Ah_Kc%CXR2URad%-T?*1D@`Te! zsyjgJENU(}9Jj88cQ{9sw16%Yv;os7`i^~`7i+wJnHHbUzj}#^x^9w972T@ktD&Gc zA~5Ys5?r*PPT``><9m?98#U(@5I7)`Ac}e4lXMx-vXL%;IS$Az zW{YEgdhc1Bv8O5ia~W}4o_b3T>HeRj>jiDx!`Y-V zKUM)*odH=L^Jt?ts9P{urJp^TgBwgNm?tMbr?pZWlsipc zlfX#0Sey7H)9YaDr({`VNOJo2`u3T1zQ3wr*mO;$+{Ace8>0bW2bSlsk>)_BlsG=1 zkYX&slPD-&bter9W4r$HxR%0NNCO#>A$p+()DY0w~Zn z`n6xd(rn8+e*boceYfYiVy{mCWGE8zplMt|^TWe={Ym?*Z*sllC&mVdW^3xwpppr# zgiKMAM2XD?<7@c}GjS#`|JHiBfFx#qN%8{e^fMp4QOlP`UGL2QmSkZHg^rl4sg$K* z9@z{D*Zi_-$iN>ETPw}!!y0gEJ!)`u0#t#-D#*ih0^OGPK53Z}vvHwPWn2NZkB{;I z@G{HWRp*&}(aS;ZSD;+`3{1wWjlU>2^XN8x2EStz31Sr1us)W#7LTDi^&3cNEUZB) zw(eRLvVgf`NN5DiXbEpv)Av;<1EK?xgmPwHPT4VPAi+JOVO3<^J3#w=pvg8M&BPL0 zC{9~;p5yXOc@}xL9R>%xK!gIFlH>SGlJ$Hy65meett$G~MQu#Gp6o5VePUV9C)R+!m!rI{fcE1CQG62CrYQyHQWH|F+0f*MmYklW%yxvdEG^dnMFE?6BPIAW1Hv3OBt^NI6fL2rc z3&mdb;4G_82R5de5+8AP-WdCfT(4px2n;vDy_Md81pDTTlD2?i$`$EIK-*_vH<9-7 z1{y=%(QiLFV(xpr)+-dmN!g-KhrA$mZD-E6BqdYV5|>d>NLu|+hJeH~#cQ?Yb?fL= z#uD@VfK_QAGUa3Tg}{W&Q5_$UrIwKRRX=K%4jbF2M|lNLr0Aq*TXoz2V@YVdq@G1O zCjoRF`s`gmB`1l~K3=NzQXVmT1?uN>TUfjW2v6>Sj@f!HFzaelLcq^qJIgDb8Q*k9 z|FL8uHOHA}pjYYK>eP}kl4NSJwjih@L5H-1B0FrF=hSBJKugQn-C=;NbcxUJ18{MU z&wZby_+w3lOOQ>s0ShGREH^^kgA zN>g;K9@`g>7{5{nmgKzGS>7|IGX(MgLzZavN)F^HPoyKsOl^W@b5Q&nkBl!mRREe+ z{q|g7*RnK_nNgi6mCBxwA}fJ?*91Gq=8-*nJqkp``F^dcr$Ebe>*+lK=~-K{-3?`{aLr-y(lah4u6@KwKl4{OfW^!&_-3W731K@{ zx=?p^6Pv)^9!8lw1+ZIEO@d|%oozMaGGBpajhNW{&fF0^9AR3K)iYujJ~huKpU9@M z^FV|X+urz@INwfeI{*&J>20^l$B4FMDU1A9Z8Wx~bN;JV8e0(rHg6Pv7;GG0+}7ix z#;DrSO$5kll#9#<$if3;4gOtc`7?+ujdFeD+7BXZ8Vgv)xOcQUh;5{mPi!Hw*QCX@ zuE=x|5KjU390bG-rREOshQlV#H@nk)-z@79U_f-M#{c98Ebsu49NpXGXV$nL1T}LE zUk8GEiEC$)Bf`s0r1{=SZ+kwOA#jFFfj7?2vP=E&&Iz`5#AYIUW`$&fx@?I@iFWH- zK<4zW@5>m%hchs`b+N8nPN^_bcC-NcV~9?o4P&O{rH2XnA}};*|&({x0Zmd za)$6oH;k_9>+Fxi;kPz9Uysim!FS*->eZdE2TOMQzHSIObgkIVBzJ7Diy!lr*9>Oh zQcas?>(_M;ori;8^Ob+ZwdVEhb(=7ANH7A94Q>16b+_fqy5C!kgw1a?uvZ=gGCi^G zX7ER!S`94Z%6X70 zIx>5MN=N9omi>s!wol2%`%!PrB%Q*WJKVllw>PtYZ#~UCZhotvrGDYJ%=NCvXAcB< zkA&Y+w7A~S2HRzg1i80lQ5hn>E?AB;dYV+i}I&km1HMEKW&lqxDOI~+SsUKa_ zxl+^aoRM8Y+rYL{UWKiHZ`*)3k2BP|zAx*2(9)4GO%OY~d58YDOL|?9O3aY9xVpvN=W%rNJS$$mU)$I=H=0@8nz6X-oeBMgzqSy~Z=rO($hxk7 zUF(-^^1v>0t?R4p1pW1`-?kY}n8*1uFm>vE1Cl*Fn!j&r8ewRj1pDkqVeDFg3;hOK zY%RMK-@3P1-9cMNLN%2bnupWY)E&$g1RYqrC$lf;)(G8Q7lk=|Gp=rLMt{)2NSM0` za3wLZ?)G~li4P$*ulp+{K1`H@_1#Ybt8zSsgP(bsPM8)O@#BhY9`&DU{alX1n-!bt zxn$V_A6h?_Z%|v;CMtKpn-{MFKJ0kbU*GnnJhFud(!ka6p_u}u>m$vdbh^OW%lIx?_Ky<$nm?C+!kb-2>BSW}Tur#!+^PS{?bSZS;fmO$K>PyWoFZlsheVnkaS)}t7Z(g9O<+{pIknpnkt4=X7 ze97Sn^UIEvY1UmhT1BtDDc-ceD9t6yCO_d+>!%#lglT~(FxmEgLSgIYoDDRy0>d$v zEbFR-4XvUa`3bWEb0ybRcFz*(TfgKOmYNs%Gt!@{H@a*fp(}y-Y0Xr}8pXO4+GK;( zhDmt8kbNO;{8$tp*ms||H?!OR_DJYH-AaD!sxg?z8!enj7!(_OW$dEDdU2!sm;KW9&73eqsSRx$Lq zc`vF?we)*zC4MbN(ZUahbX6CjB83NU+lmTz<pM${7 zu^79UpW{|3G9s(1$|9?TWg@F{7?EQdPGl8pB(l1_U1W8^R^*s`NMv={Q)G41S7dc& zjp$i9x@ExVdbSl6DsW~(1vclPT>EoS!Op8tuFG|(z?KCSIHW+iyY4^*PWe!-brDps z`zl22NgEDMsC%3FNZg*sQ^~ZULmd0l5NGE(h~pB2-4(k=M7WI;5iV>O5t3~!&o5CD z^6W#i1bXS#G2HF9jAA3#>A8t-uxU^x-cMvz(Dql%zU&t&xef`~eHV-@ZyEMRu1g@> zu+ZiO$`(IVyJ+7t%Z5i|nsdrjI6JA9=S_b^`fWwct~@aE#j2>eQ{}x8vt?jhcqk?+ zYB$MrW@VY*rX5=H~ zRphuG3q7-vHg$i_!msT~-_>Q2vlf1>4SiQ-lx8ia_7GYJTz;yW&YqsD^81FJ1CWrO z^T1DA&e6YEjXAK;Qyp*KTTWfS*ElzcJ#uyKFUyk0lTEaWlc)7fXOI3Ii7J~`nQi+q z!|b|)GakksiRt_6&d;D9*_4AU^xv*?!-cSjw%JLLjao zkQxXLL|B*Cu@y&lMBl#6-?_hUrp9j1%-mn)hTajv&b8ZjdLD^c@=ZF&`(U5g_G4yB zY$HxOYNx@zM%fCLlp~{hnhPeoD{L~v3Lls4`@HwB4}(^rmN>fUrAvaWqSftj)3t}v zU(W0ZI_s$SlI+dA6pQ`188LnN2II!*-Cq<+7<=BSjnY3(t$d-phkfCNC3gb3M7lt> zKq^<-;q#96>v0bY;GcS)%}NZtwCt_on~k!$dM9RM$8jG6rC+G5i`%)P^M1}P-SURD=hquxbC%!A zyCGOc3%_yar4lxPES-y8v8HU(+S&*QDNdsuPC)eexlUUV;bZ2PX(?BQKp>^$?_-JYgdEza_a$_&I&7s3uIbyRvd&Vj!o}qVYcDnnaH>C_7-lA>PsV=O zYkuYO^X0ef#|As(B=TlY{+#z^>BZm_>ZMMrj@wDiZW zp^|X9Z5Gj+*Li$^zuPa{YDG+!PL?xNxYgJE=LKW^C&AiVwaeZ(WM`BpcpDjscW>&r zR6F&7@@9Me=X1A76Ax6ZS3e?>uy@VR3{V*FI%t!sE7}Cx_h>Arr%sfp9C&^9a}F!= z0V5qVxiZC7MZANkRvUA>&HB^n7p;V{s}yIhhc52j0#wBC$jv_pNNvGn+6R>hkxcikJ|O~>2l?q^ZL?qUt|yiIRkT+ zatyG^4FpmZv24CTQ9BTenxv&n7)sHI9LQ4jMmA)jIvcZK-^3ckpQrIV?g?eIr>-Ma zv+3JaXX~Uc$@R~LAqzcRC^vduPMnS;|!az}!S2F$m23{>b4SXRfB)KU(+veU1N~`nl-x z6YgRB6=-G)g6JA@Z47VbYL%R81`+0p` zde@ddKKJ?g=C!&8;<@&SJ9GN=dUK}>@h_fe2i-7#skM8i$!zNR5-;OJX3Q-o0=r_A z&V9b_@N#WCS$1)dhN4;iNgGuX*05&Zhf4v*>lz+*$_1;~Mx33!9MH};?4A=VSp3v) zko)sV{uOtFr`{oCL`gWZo^3lkY2-IdIPrY#OHEaok-D3qn**tC3$~>m4_*Dj_~p@; z?_=NI*M`o`UR-)e=lG4PoxahVl`Xw;bZ?+{lGoI2r(H{|-APpR)wk{35sep zPRF~m*+v&Tuj01%HP@%P`IxO6Q}x%c@Y#q%)K@)!r?A2DE>Zt34!wxkBDi>lyWC>7 zfTX`J?ZhMaQ(Ey3AEXgeTF2*LbN9wK0ju9{LGwQ&3i54wvSM@@8qP|V=X&DY`=V!U zoy_+vd7Tj~-)p`n;>3RcC;IEIcw*yIxGim)GfS3x8#7Xtvdn^})%a0X#bR5jNGU`x zS#PPO+-U%xcm#48LUlfU>Dp&r?HIKn_~c1tpI=wjKs$Ee#`J69fkjV;j%>+BuGsc& z{Z_S)+i#d1AAH)7$4%aBen+=Cw#)Zvp!B0`$D^{Uf7iW`VNTMz_?d4=X0IQVhn6(pLKq z)x1Q%7k{UdM6HSqfzwsXf`Tw7%eV2|Q{I1w{J`cbWaE10WG_`t_;x+g3|W8uyN!pN z*_lgM=LorOO!v>c$c?LUbHcaoSaPehfu-CC@c$M9xfHQfl7uG<4I5VNdS#ALRyKPu({2KcaFH!yi;T>wP;mu+WyV=9&2)jN0VB-FTJ6KEJ(~Jyq3NHsKDO zuNZ`e;pJFMxgOx|?SJ(Y5yzrjU0+X=y18y>YGYKLS5%XVT;T~KEv%bZZVLf!XOwZ{@{7)-78B?taC2aU;Zxb&pEoTcj3t(+R~GI zmt^%d=@ql%kzWTR<9E-B{L2e+$4V&cJd)WS;jcFhMAG}0o?)7sIefo9`NkOE_3^l8 zz1-ERo3AR$BR=M*o_@P=dSEPKYoI=V&i$o&Ph7EZozpCDGj@e*?!CF7o0E_0`*&5R zxgPEtFjkl~_N1TEHdLEF5I1!C;n@$F!?wr0QlCUvq!{?NJ~2-Hd3Ujv+V|+P%P(@i zM8s$IEMHqizNbHNr9LO<^aIU2I@R#V+BbXL*DTn&d!lyx;h={ijpb#;a~lWlxee9H zoxI5@(p$qZcxpp7WPPtG(t5pN`OZ??A1~eW3}_DtEMnv9(he+d7hX2t3uL1XTRlI=)Nz*zVs#AO)G64tDD{JD7fq?;4Eq(mEHhbKC1TA1Y)j3h{Z% zX{x8N{$81us}4`aH7QVJ>NJnf4Nt~pic-?c{%YGLEPJET9^LK)C!b|j5db)Y(g|#rnJ(VzBlJsxFyRmtk6=2`i6CYYiNK6$i zzp=f^0@_>YvS{Ub)f0EBueGeW#`nXlO}~gAqHcK!b>1zQ_O6btYN!=IGT^X`a?z z%eFRp9LIV6J$2$dq_(__-K91Z;M_YkDcE@8%f#R$jnr6Ck(=k$`@D6Zex>$GLx z&v4(E-F$RsmST|2H&J-w^2)4oFr~yAYG*t%XPVwsJMn4ll;wx-Qq)IpPhU$#LB8Zd za!c1&r6V6KFe;0mm-#BeLD)4bSbqBpk!>lr9neY=0=WXQVxCqoe?9Ij_OU*Gy-4=b zpV@=g*_NlaYc;-}4!*Nab8>c-LD-wwz2EE_^Y2VssUr|ow{LSS<%Yo;$^T(u#RU=HB&nU%FL^T%<(qs!_NlhfZbi_JKHGuVydY>pcI>OYgC(VN_a3=@Ier6m!_8LH zSI!_XDAW*Hp=Kznb#5YhBCG1E=A#>p)}d=(_O3hSZlr&v|ASZ6+_@*9Vcqk*rD0*R zlmheG->YPf$+`Yveq!p3;auxw)P7rq_(#A8pY@j2`jej3|b)ncuohgi+Emh%TC16nbjRmyGE`r*-~)( zr>)c%1mcSd+%LjeO8IY=>fTCQzke{a{PO>@WZYeLZC&cOf$je%OYx3ymf$r~|Fg#F zci*mBzfaYN{b-8R2^1fGa`~5si>W?69)6)jp|`zyrHA zAP^4Oc6(g+|8aCY5rJ?FL?E{J*zG^K%SFX$5P`Vj1g`n&x?kV0yYl`R0&#T*I6vk^ zIvzMuc6ARp&j9B+em=*&e=Ps%2c~jsaBk!WzECxgEd=Kg;9SR#L<`Gc;3L5~xL(@Z z-zS*7wr|rCFeEHQAlwv5$HM{YD?fa6~N|NC;!6naYYsv>3zD>b!p!PH9WDJ{h{ zQ!5sVO~uoiau`k7K;#q{kaZNLp+kxbA(G;%sa1;VTHxldiaOw+ep68wJ|wHa?`ew> zi+-;x176DD1uR3r(Et&XG6XMk@H)KHn{vX(-rI*vBhteEXV)R0U@DP9);7QyY{r{u zANHZrKnOPOp#%`Ae%h2kA2O8^671yz-=R&UY9H681t0hJA%Wy+Q+%~);o!>SWN&S! z5dY&;hPE|>=;O^Gdf}`nf#Jc#lYTVqbzbYW4L2KX)&p+_+9$&Qzuu$0&W}b5G}YIq z)9E-`c%bAWoEL?pzh0Y8r1@#@^P&0#hx&MH+fv9hZ5NOV?NzW{t8m&*L@!_|_$h?! z?Gvm`^YhW(Z||h-3hbZ1`qu@UwEyMsKO0iLf{B4NDvnAFz)^xv>bu%Ht;b0`mc&Tk z6?g)#av(g=M_d0uaEOoOledpA9QohjM`7F)U9Vo9e^-{VWubZn&4rhiY9htz7wcg_B5cs-F3gl|#`sK#tSIZxfcb7jUA1t3E-!4BQ|3!XIK}BJOf|0^5 zg?$R)3M_?cg(nIP3PTEiE2=8$E4nBKC^8k36w4GV6`v`#DT8QwmU` zD@7|^RZ3RMS9+-QQmI2}TxmjCURhh&P}xq|O_`(|t$a;6NjXcItNcp&jdGvzC*|)d zvML%X8&xb+Tvd*%5LJRy&Z;D+*RfcMe>Mhk|)m+tws(jUFs&%TZs=cbis^3(9E|y!obTNAIs>SOTZ(3}$c*kOg z#rqe#FZNkXUQAycz4-Ft_{AxUa~2maez2IkxLTbT_K18JlON!f=7~P$9ZsQO$>cDv zqo`x)K6e8#l>8C~7hV1+HNOyhH!uAm7d5qP882LN3;6`N<)~LUg$!;9hi^%f+;aC3 zgNH6JP0haxZb<{TD65x-myqAfd--I@KV&{a^B$$l|8^fN=d=v`NXf_KQ@m4;0ShwZ zOPE|Vw|mBgG9e;!9#W5{i<^E{so1$G$C( zyA~H47pnokfxpZD{9SqLxgt8f@O(B}dHUTlXw|f)45Z-w#r6%R&03c$UW^u7iE(%3 z)9*aM-nq|Be}f)+{D)WxdsJ3@=Aw9$yS~#ReaBNKyHE<6GUr#ys~-SY90| z&XE_JJQ1Tm>0@xi(2B#*mRxyg+d)V}e+V;#6R)Td8=!x5FBGqJ5JAVG;|=4`T4;5{ zI`MJwafh|y)mQ~jc}N<1u}U5|^+^VLA||JtPCB0wqj8a)awQuLU6BzxKyHk5CX11v z5g!&37l2j{m+yqGu9jDblZRxX7rOARS`Wla8^lr=fmnJ-ACh)lI-S2AuUM# zK?5X>g`@-{L*T)q1b{i6kkg2_sUYd?o*eMUN_Xks6ZCkv&T2ciJtq)T*>Qgy0 zXr%aw4260oih&J_hzvi+5FeX0U%@;T5fDj^B%h|7A%{LAKRxwYd}7Lc1vk{cU=Lbc zBQurr6OEj$fd*w2)U6!Cd;vba{q~+Vg=E53Tuw^7atnQrom`lT&1NODiqPC!L4MSj zFve-@>9BzFhtOhe+3KRp(RZ-v(Ko|Rp}eWVUev(E;xJ4`bVyR&~gH#i*D^o$m_zs%jqZ=ylIg4^$!j8!iJtW z5^9AOqYd9eJL%Y|Pcr$bH&YX_iK%hDF3gX!5OUc>|Wy(vDW-c%8M@-8;t zm*wV$nq4jfsbw@YLkehx1Mfn zI8^3v5RC?QQvLa-`sI22283Qd7lsWx$2`rTi|xfnRsj5#=iJOI#wx3W963=#y=hpn zruZ@va*?UbOe`$KD$~QxL@}{mem)_`A{Ip)J#x_nt-Z0V+ZJoxbqtb&)}x@+Txijo z9!z)J*K$Y&-CA=x;t@9eTYk(7ZVdNvC#KZ)6&^kNCwh7@Z7q}xLD(! z@rDes6j~f2-rp>5A$AdyP{2yA43s2JK?W3NMpvRCYZgvmG4O^Y9nyQ z+%C-b5A0!YB8&)CfQZD~01*#TQu5NVcT3SG53L9c zK6@$T8+8=>_tyuH9zM)3)yOMN<2^;yg+4o0iYYznkZXii zsFDXpUtI%swUSpLNlqN(6$t6aiUKeJh1~EObTu!nun1dJn9i+2RfU!L7h($ikEXk! z|2P&F5Pb6W4S3oEm+mD%r7A=Mj;#5%H0E(e0l&>OxKAP!@{^JBAkctJcf_=cnbpLrzmL$}?-Gmqb>l@g5^+lz#BA?Xfi1+*F^4C*`7hf#oB znvwa5sp;9M#7no&Ct|$oBmS&H@sb{<6k$>d)3ewqi*DUYNM@sw&L=SwG3#F-#kyi? zORlihkPnNvc=j|l>TJ}Ri0DN$vX7+pO`!!4;ZthIeLyq!pWf|2zbpx76k@{)GZ=;F zqNL<3z@t#jBYCmy8+oW^I#Y&wsXC?xGi~)_3VH0_y{N~aAYRFfYksg~+~W@2*pKG!CBxbq1(hMid>R*nUwPKsiO2l$v9e@dlJ-g;h1+s|E&d5WhTueQaiV-V90jKYrW}i;fNJ?a- zB;J7(A^#P(({7}upz{ zRw25k?BY{&cN06W5?h&<_n;D0bheO|gQ4blXS${+%pPGv$HnHMQ>Ksu6abx3&_q68 zHv96GJW@O^GyC$5JQ7Nkc~*M=K@#>o6px&$k$EqUM;>E8B-NsS7)|}D4xy%2A{D0M zewdt+zsr0;=SD0#mys2dgKl_{TUClJt;~7dhZ66RQBbFm($Y_2(@!2vb3;4s4J4ev zo*)F-8KaZ(zrE*fGGuBB zxz3A}S2U63BwFB$#yCD@o;XfFg9#d&S-rnxG0XMh9*Av}u+nqIA6K_F z6|FV%C@4+5NK4gwB6stM+@s!8&&8XSZd#Y^Lc6TfMr>m14DssJ$W-+abLmyGKAAVM3_q;q{=vtRdpj7-6@5xogXtsXItreVug zyqT5?S|K6fw4=d$p5G+J(zERstFF>dTU;!^AdxWS8<*?MHJ4c*VIeKO7K^I;=b|cU zj%vd(FcJ3%RR9~XDav^ng%*o+1-a$fIs10!F;Z?ue~|+B3|NY=xN>Tj1LM&3*ar#e z-uCR`v#eC{84~!_c~m=>n3p&^99s%W+k`DHE7_GUTj$RLvORr{x4;6TIp+6BKp|n_ z-P&`^*_yLOopjfEDYnEi@uo^mOCobMUMS1kU64|kB8hD{8-JF*(pJ(`%hom)bl;@# zLXq?fBoKZ(8Ix^z9*q}a#Tu*G?5t_tn8H&i>3-6p7J@=Ct`lXGvK}X9b$4IDcl5Kz zwU;lm(w)d1TSswO$h{Vl`{(Grc+DutDiZsjD5N-P^y-Aong}LB6Sgau4h}zB3b{jR z;zyS$sWIn+9K??wOE{94S0)`7G?f$TCQQ)S`CgYh(Trj2RjEKXty$Ty~nJ zv!pF&`>%FpomL0fU?WPpA=CS)Dot`|hvvg*+9NP7Qq4w2CI$yl(w8O~gA=WWly(kI zfKjB>>}<-Z-5`ZpQfhFCMRDjLazq{|NNSjP5M`rp(IMa1i2h>6zwI&gNTj zbz+segei&i&+(-FRLM!+tn^IbM^*K8`7UOGS*5)&(l4N+aeAO#=QKgSx{&?7C3 zxh2GdhQ`{aLpQ#5Ucl5Y>8BfrVw2=@< zVy6{WB!ZaP@o{La8zKQQ$K(oxR^WUQ?JX{8kce&*J1_c(W?A?=qVU`|FX@IY&kZN{ zi2^xXzmISLYM?DDVXT*eh2A_r1(u!(aPmu~dRDQAdwAYmSCx|5gl?>2iocfqYgqE8 zy{8|zlZ8UcS|z!acPehoo|q!WoTz#EczV@jeu@}-qRbG1$)?9_%h=^`K{k$BQwVm_ zV~DONF#365+&&tX)Hx({4BKj4$v|>j(wWGoOgV!5&Cp>4Xne~sk4V>OtN6ja5ZX|#W~uWhQH;fP*nM6X zcT6fK?6$aKpOg+d_u85@;DVS*D@EHPcQT$}_IROCi-t{%%ahD?g;%)Xjj zpRQN(Vc1O^GND+hV%R$;nHW5XRmSA$K5c97#x3#2+LI;ZfJE z_)Q}=1s6c?DS224#b06QePCp6ivv{`L1N(g6TQ$TusMek{&{*+M3{PqH~}+yszk_y ztnvV~2vH&y%zhd%9~xr7_Q3h4R||Yz^os(6)Pw12w7yKNN6bA|Hx@gz4>=5ibr5(E z#;|H!)kWf|g+ueJg2bTR;f=e5bX`V|>{beO!E+%3aabZh5s=tFNj8l(opa(#R)lO( z)-0POn}?B9W=O_8V>APg_1a^|4TaHat6Z{JrPyxL_W1Ew`xt*b`{;F-#e4B$n$!O0 zW;)kC&nMa2S)jqI`SvVjUR;bHv&kXmFynwx)!4;fh z#O@Dw>ShYAeXQ>#S#rOe@#8vJG)nYSL-d#)zPJC?>mkw@E-t^%SI&Lh;cC2kY#sjZ zBFH9WHknPngXdsyq`j;Ti(~w8cACAWmex$`Q!`9`b!JHh3InB$(o#u@WH`C0EEive z*+Qn|t_+h5TOLg=kJ&@WUuW`gIX_NOo)H%)?h&h~ZOWlay8N!6OF0#$%AYl2 zS{>T9%^OCj_AR?q(^RXK8y8bgLyMPX`I$SM-zQJEf3VFmrYUk2S&RKf%b0Jb-zL05 zSWTz3v^8g2^^C3!zPYWG`HR|Hou*~HjxH{RB+8aOSIt&-WDC#S$$AzMFfm~G@Y zRyGbaYr(35Uwehr+o_tdBX1xTViq_Q??Ka`iJPF2sm_wNo??X9diF%PhO>dL>x+iFi%LF3G;>RuYYU#qo(Zn9 zHZf0PHU}T>Sz0rWS~lWDk-_LF*^b{;Ll_NFT^VUzlzIKzYP-KYbdi^vo9M3KOVagW z{PpQ+M(vS9KR-TE+5i4LNSC~omNoVX6r%Lb+m~GZs?jJP^fU$ru|NpbU;(N_c={FZ zXF+5i8CgR51q=QZAw7xFB@rP*?P5Y?io#KRP}V*ZO#PMSRBq47A32U(Ct(L%CQS@g z#EEV#6hRs6DMdW%JJkSvKsolKRlY%1S@nMSwm zFC7G?1W!^fuP@$oHqJQPIv7^Ml113xbvgvC zB;qW*gE`5L(WuDVIrsGzf1r2~cAzaEHH9$IE-Xc5%~Ulhm9;(;{oF^{w(QLGuUCB1 zlfE;ACW?Up9wj}``2zSk+0jUiZz)Re(J8P>3fi!A6uV9LdyF`{rUquMcvvropYkeV zdg6z;b#PE^Qw9j_5eo<3xEZhurICH(;g5ei5j#TrX#&72*@E&hcllc$GUtZEhqqvXR?c5k2 zgq|>n3nv^UOK7jJ6ic81yntM?S|?Mkjv>cuL2}MXnIc0Vuc4;wcF#qjOwxkSpjg5x z1fs;A#K4)7OwjOVCJU)p$Cfz_N?!jQSW@4`$aIpgw!&jq(agIIRV$|Y3U+RvDx z_ydg1dcaOqFQgPWc67H$Oo|P0S+|T5C`ew^^#KRkC^9K}>@81%%KSbbdSB`|?$o*t z3v%wKFEaB|eW&u+xRf;2h-30TZo^s4PJ1dcdL0oT$tF+FsiG!V*k-6(uY=>oL8Lo9 zd{h-LdSWm+W;S^bQRqYIqKc)SrO-OY<0CI(B!bhLW9 zsw;p9)RVoyp&qCViw0(lGk}RbTBu@&LoS2}mMHPk2-$WP4q01EVhXI91BQ#_Q?*;$ zAI^cxMG~gJSOlVLK{i}gPcNyGQ@Te-6`Bu6_qF;_2V)Map7OnzpHRm1Kqz;To^rY* zWzujq^ds?9Snwo8xGDwhIq2URry|{*@Y+e7C#SM#1GkSOA97XPS_|`90 z7Q^O&wMZwCHMTnO-!k2Ez%N#YuD~5p$Jv=>2PI6_r~gUSj(f|3y{$;Qw|aKk!6b-H z(ZU$ht9YNxxv96OJ=e}&o!;66J1zB){Z35E4WS}+bd}WrP@<;a>f5zslu{v>c^FK7 z2-|dF#4ppE#&hX&IYmojA&%8Q|q@7%vL}gWQ$!}g2pkz5zfU3 zSiP%GuXoG9T*Kf58{zg?T=rsCAnt%J-%A`UJt`+{M4Z-m-g3$3^yYcDjgP^;M<4Xk z*W}{6_?z}5jTdhxgnW*mig-%|C1eE#wt(Ca;J#BA+b4LPApaPPCn-z@UbejyvfTU< z7_R45#CGi*6Q%zR+{;E^aFe5jfEc}%ii|*Bv}*YiiCA;0+InC@S{aWkv(E4BRAG2w z57<7h_Z#)|%Z+_l(Hd&HNqp!o2kt~m(mS?RRmq#~cZ2zYJHHN1-?)}`bWpGps(8*A zWz)V0@#)i%H_8v$M~#Q!l~g&j3>tXBdhpWX2GB1iYW|R3)HRfxO0!wUrv6X{6-+r; zWs0(0%Wz`D*G><`!6PGD;L~tKh3YI`5z3ruE*n^jkqvh(Y-5V9 zxS`*nc{pN&d888w;m?-pimWufrk;Sj3g>GMLdCDe97;QjjBnVJFkUjb*y4NKA+nL!B4}4w znc&)*_V8Xe!*KfY#kMt9%43X%(baIp_u5zuS$f~PcESKyi--<~U?5nE*l3ST-q2J* zFttb{CO0#3hK=g(BOk3gg!gw4dnj$|ac@mKFz9jdd=~e#hONXOJVQCv0daQEo8~Q> zl<`;*MW7qGY9Jjem&0rGt3~aa2m#~rE^hwEuJJcFE`OdbrJ$+KT7hd6C`jJEO!wRl zKKSHVVfcKB)FB?Xyx>z4nv%Pe$qa!Lx~Xb}(^x-i(%xFe+ke3fH5nf52^!BRu_}+# zWh`zFw9Eb=>q9N>ioEJpDO_dkcgcC%j~8-oAgXn#UmACEE8DFP1BN34_-80Bd&6!a z)yilCVwb=9ImKDb*^^b7m5pIVc%5C2;trhJXesB{vYsS;`1`YO;^jnYcVrW~f{I&E z&HDYO4(cfGc1LQi4GoG7Sr#n=V-71Y%aL|2`PJ0Miu7$SQ_G#!$L>>;cBgy+{d|VN zSe$L~=h?BlZy>Wr!bw}UX|&eNm%cnmMx1$bY&SDdW+T`3twDjhr#gl^9^P;?p%!D= z7Dli4kF2gTy3d*lrmyd30Jz%N3Qu{!Q_O&tir?a_LH6@gZIa(ehsPu;&$prd!qp_n z&uUE)8it;ba~8fOK=CM-vzP|0kZ9_osbD9}8sTOjC-#38OtaX{@@A_4igU4SSCjFd zijab${}o6?v;c}iAyB@t_B&^ROOvA?a}qmbkJhc&Qi|xClgOn^LcQ9{jMG|4m2JYOU1`7RlJRfxQBUygV`jB+)ZrcO_BNm z;FCejBMuqv!qF^YKcmvNn##7`u+H8fjlE9I_m%%XdR;3FKX=Q}2;MEQO&<>9Zj3Xu z{^Io|8JCP~3r-pKfOish9EYqEyKLti#~dkgEk1Hj84aJK0!<16>1+D{g61N@{lbk*_6ahI9kUC=OdcUllg(=fk|qV1f@&2Hw={WBw&NWB`|w%joy|r(Sj|F7CM|2-;+=e`q5s@De$1G3cH9cNH(zz1 z^BB=DgcdE>Wr?S+XhkG9SQ78(X;b@UQj6% zUM_rOts%8=Gkd49Za2?Be{hg4(X|B*$>Hw-jM00PT|0T0DpTvBhi-KRI4k>n2Qr=G zq~?^gecOie#$7m7$PaucVpM3!?iTbe0%V&}17{Yb8jXO~#d-plc4#Q<8Mj2HI`I-E z4H!u=F3;p6FA+_WAG0UPMt?;*&kUdN6wDKWnD&@BN1+toJdxRs$t^sWsrqnaC;dnh zv<3=nTygOBWrmVo&}(IbWJg)}v_@$>k7C3x5lh8*680PB*ScSA=%hvUO}DXJ)7eqq zYCGsO3utI%sIv)V&*S&2{5h1>xKeXl>nUp+8mM zdI4=qlJB-^rTXZFF4wjVQXIA;19L|MOA+E=vc2n~yJc!4v$;kKf}Mbac7AIRDZ{tD zYn!2bSowDT$F`P0OyJjHg8-CilHetQ2R3RnRO;AEL%Qe_Db#Q0yTx?qkz^y>U_&>^ zml$2qDpq{FI79f6VgC#X`zQtQ8)Nr_*UXz|1QpRqNyiXYXuh=P&#=o)m* zO2+#avglwm5)-`mYMHIMCX}^>+~T8B??vDj_+wCo z3A|kEDgBy%!-NV}u3AVRHW@EWEgHGuz?3?k>@7BS6?OX3dTU|K*bqpbsXi#0P=7a+ zKNlyZA*Es0?2>L>w)iK*vpS&X{yR{O5_ZRti8M4;I%wH|0Ol-UgVx92|Kq0WF4h{J zpFCdlnuJ$kL(Yk(LxdZG7rnrV&$sz_V&t9>HiccnX9nMqjMAQ*-nGz3*Lddckv#Xj zmHOt*Qi*~YvQ<*n!;Y8#J@Yl?Zfe2dHH6Hy0fD<*-V}6IfnH zRTF=Kqf_|o5H39Xrs9d7?XT)x{I~`Ccm0wa&yO`@1cCX6!M(cvc#I=}Ed&U4eRM8Y zDJE@KKWJB{$GIjR{_?PiYY?lXgANV#rK`Y4urGJPqwjz)tK%o;@SODc#8mnO2lzKQ za%S6)j(c?ndjSJ5G!>S)D>sv_>@)C{7^~S8(lye($gA~ICF!d?roILR@1`Cvd###J z^L)T&RuO;EM7pt4weG(*2te`WB%UH)xVvgk2cin`o<8$IF6tcux=^MPygEJ5+RLUsla|zPeo{(J_lD&X@VOBO_QZ6B_5$Qrk*DOC{ zH^srtqddZ-$fXa^R|`!o9z~2!$2Ol=TE~au+jm4&yO_Sk3d*JazSJZ~b2^Wfywi;^ zE#bu+=5b~jlgkO_Po_5Wpu)QJM$GL(?k$skvs}wEed357Fg}R~X(xGS7P-qv^Jt4f z%@1(XNjvRv?Gwp-=QQ9CB#j)-8^H|osO+Ul-U9Aw1#fiEUe+HFd_Rro9uoA5-BJb{ z+%-~>Rgq_Mxs=n!@)T&vNuH$CEaSK=Sj)k=Eo4Ml7B4C$kTd0u*pFSvdtAk{xVL%? zv@%Q_WaA`bWuqxa;&cL<=vdy)$WeJwrY|`#PVnj*CJ~WCBMA)qeVcES`ToZAz`?VK zVT6oh@mFUGZ-Z2gzGnaE`U0X$6+gvInS*i^+cp!hcZu=+o|Bfj+dKFrkJlzPW|2XqjU0Jj5fEM4m@NO*v^Y zW@`^dd34=!J>&Fy{TrY%4|L58IY+XzwAc`$Hxs)A^aCMB1VG(Z)gw&cB~vO<^7KW# zl8cY_lO;RoGE&0D16|FMJ`cLX)Ov9(LxP>iady$kElCiQBPzxK8(h= zanb)eh`~|!r6uQiUIh;lTV!Q^DYmBHBEn1&4`hDGjS6a!NE=ZoZ z<<*li-+I7S^WT*jy+2ZoiH@1iQ=A;1MkRz?3(m{96lfRG+P3jA(`UfWNQYo7D5$Bb zkE&c%t?4`N9rV6@o4+()Rmf5-NyObqEsrX2gb72%2jnbBur-q0tMES8-*3I{vU^Q6 zsn_K8kB8xLI@Dqf>>0!Mh@r?HBtEKEr8jP2ZV{)sCh5eGMOCXpmD!N$_rfd1^j8(9 z2&IBu3@qsJPa^(xrI#MQp%i4q5<|w#Y7E>-D2Lq~n;3H6_Y~@&D=hVU<;3cFZvK%X z-*oJF`wI=#nbVrelF<*+0BO4?!;*tVHeiY_X{VfC&PPs4kuQn|MqH@BPiYGsTPfO} zDZO5}>F1=~;3>QR7rB(RJOMe&FxNuZLZ={W1g~8a0}VI(NZcOfuU@Y@#xv<(PF)gF zre?bQCGtq@Y(C1%g8WvS(FOW(d^%S?pO<@Yw5dyR+HsaM?9(clx@1?{w1q0%7DH>z zRR;Lm{$(VQ@++sELq-& zQlQv=eF_D5cDd%>ODhDT2}w`N--&?CL*6WU)SG>5U?27h`}Cv- z>n*}=+6Wx4+R?6*A9#un*ZA+!?t*O*KSahr$m(vDOJo&Xg?(iMy@H1+7b;?YqQv#b z6>fLUVCDzLImVyN=Z#y%#}(B)EqJ2P$CM+5+DttbHa0CV@cM%juOr=S%4tqI*`|4z=($)z z#^i}M0kNXmPsNJm0)68CbaBmn>z^T>O;e->cgsY#~tF*&YJ528Z;ZRL&Z<83IzV>yj*Jci?8He2Br!exUxtm zyk; zj7N_vrqWug%ucDF9on0{g{EVKt(~JuPT4FPgKs zuP#KyA4`<)Dt1(Rs>mwDi0Fs^-n<(rkcGrT}>y#B^AJ{>&)QilF*u=GQ2gndylMYBg|rq3ffE zouocIK5`=d#90ga>Qp1}Fp4B&06jKg#>GZUtR>=D#_fvg{(EaS(!{ldR^s{#y%I`Z0~!JZ=f|a zxhsyM6r+@`Xu*m&SrL41MK*cCdT3u@`PGmnN72euRu$2iJDEB$-a40L35kv-Re5FN z4@nw}a=XZr{X90Ny)-8(QP9~&I89@rj}xy|Z^lyIS3;XdYvZ3c z(Qe2gAD6wnl;|w27j!aMPMcLHDK2U49+8Y+Nh~pKm5g*yLMzl5u|935kM&-p z6t*SPlR7g>YD;RPQ(}}I#NNovS)_VZ@GJA{Any3|_GTuKAGddTZv^7opk1`aYPE5V zVnb25NIKO&=Z`l|a_4Phd@BB2FU(v%!NXh8x!2?Jrp_iL42Fw91F_YanE-$Ru*7s2$Wse>pu7zw=>Q}BM^m(3rFIfD1FMJigO7kD=(%a&A z^*wR?`kl}G3#ejKXo{(5s`wA>H8tgI2hYy1!Six2EMpCUs=YqQ z$)9pUVi6}kM{u=~p}t=QnJ1>W?ImMYr%n+P>wx|9>Xx^X`o;;j~ z^_$>8M&jc<^~WTV2Z#HWJNmNfQ7U@IgB2pljIk|Pf#uP|I>xx_ijHh4yj-01d_6&x75{MWNU-PaU~0{zg`d28 zDOY0b)+>;)*i6cy);#d*A` zxVy{X&1>X5cA1IhY}>aQU%pe`u(EYMKy|%*sr;88D&wUBa(slyX~E6qlIIwre-q@IRQ7Lr`p-eQlf+8PQ%F_ zfAQA-bNLeHkwIo$MSbvY$prjIQn+~^SX5U|QPE$<W94$f+af=QGu2g9be{h+y z864@A^g2#bVGNu^%1vDS3c7Hc9gS5WY6HO+(q`#mLp`Eb0~KF=(4^Gl56(92dTwG1 zeKsAp8xM2xvHnR{8xpqb{yB?BvPW<(F1LLic$xue=opL9-)qk)9gVmeaTeG#65H<= zFz$PCLp38EF`DlMz>X=B`=Vu!4GzE4I0Ky4FWgq@fPd}|AKK%MdXE6HKTx!Q*>lPt z;81okZyztxJJT{vua%9VENoe57xf9eJwh0{&ODV#wKM!#isNP|DEKvH*%R(uO$|mo zj&-u-UHQY??x$d=p|SS0V#L^$@h0j_sOzR<)RT>a(?E|8N*9(_!5E?TK4PXbi8+Hb ztqjWPE6xx(YmhdyBp%*M05Y{5){-W7n*wmWNg{tfkU-<+s2x!!_Ftk+gAZEh#7)N` zeP)CGzsSp1?SaA2ISwP!c!K|&S*R$BlHc2-U47U(iyIuv5ezv{HO|<}2v?3m;|q+^ViN z1oE|X>izLq2K#m7)baCob&0)KUQO4Gj(cNCzJPq~tyXWOR_ofDJ5xyT6Lp#s))ZBS z)59HkyJQnnZ8R#Rcg{X+tD|iW3GhRaGD?$4!}NoagcT%bhSad4 z8a}A>A!vZ-^Rt}jsPHx@!}0ogvPQ~=Qp>?j89&&pzY@$A(fzu&;@m7KYqOYsak_IU zM@z$L#Y7!_b@_<MV!`wIe@_ht;N2 zA+IxW>XIoqbx4fI_smu4QA_FO1Co=1l9Vf+54E7;J2Z}vb&%@ zr)PRP(^U_>-T=u|le^Cwx2d*^{)qcylV8Qnr9l_BMc+r<7u#XBG}zKT)7c5hcFnAt z<%!s@N=J04rb?Bsp9QholN36vFKh|isd_N}t1ULz8{foT((dGxpcA@;ryER)2Q;uO zWS8g|l|M4|o8JkaJL$U^Rt}1$ziD_JZv^7iW}}ZY0ZSvsJ|qzhJiPgf@5!-dw}8JM z1gkgZJ(xIB4F(5>xbTxQKS{D+4GcpNmY4-5wjc~K%O9!lN)fAUmh}0WUi;?;0?IQO zU1v=Mt~>NM#Em-k)dJ)LzaiX+4~vv0Hhu!Cv<1>zx!FcUN8u@qLsH7*Y)4?jYrDgn zH`O&()y7cHQO@#Zec>ee7&gf`)Uq^H>0}Fbrj_kxO_EpO0Jk%=FY?uI9eJ}3^(e`$t{^B^>Qc7-*gll;IV}+@e$|Y2e zr8>JT0fwGHdpL6_O?={+Jh-A8ebl?jS*Z!%9$gJNxXRb`2#lh-w5T#4^)DRey*DOH zk(ZA=1gBqXAyAGD^M~4ajX*ez9})hOPC2{yI?=oPUIhI#%6PCd^(BvE%T?|BDKMH4 z<_;K{A8_hEu_CFW)S;IOt5mNPKTNeRmHjn1The)|nT0T2meZ-Xi1bmb?vW6Zx659e ze?OF1@2PjSfU2o^j z8ss|scn6*%TBaP_xX8EPA}YCL`w^(qAUy|Dddv*L@00gJ@X?1t1+t|q7S-qMYyeZ+ zZ#VB>`}(CA^5lQ@8TZ~6ZvR4(tUQl#4oEUz1h^jk>zr|fg+3FS$efQ=sE?}8V3aku z>0#Zwju5*24iB=O0cG%0k$ z(wpN7`7LI+dsAfO4I_$3W4@8Rg_%hM*bXDejVBUpB^Uo{z(-Ya-DcT-pkay!-T!=E zx1}J3$J>$EzmA5v)rTboGVFJD8S)pfQ~Jio`TR30+KoPDdcqEQo{Tc8UDB5 zz!R(^cx)CGMKe?emB#_SRk>kNC!%Ba|AnQ=#uDnFtH$<|^*O@E?t zrgS-*vyg5zCnj}VxhrTUeCbX4p@`WnL|HD|XT{rQdKTXFsP>(3{~b_W5@PNdux0># z8OhaL{!0`Kkw53Eb9(3I<4Bq%>4R>s(;d5*uc3#6XIJ)A6;p{aa$0g`y3A@q%1S!( zaQ%HfloR&2Og_C?vT-6#<-EL#P(E$jE2o5bF_|qGF zmm6Q)iSHZmR@g&^^mxATi=NEWfekarlpzICfh%EL(^BV9c!D_UU)5@bWmt4RA@$M3 z{3rgFfJ5nsu)Benq%pyvra1;UtUOnOdz;dGxsl4K*Q_th-#<6F>F3nxQ7*JLO|=JK zsFmzb-R`)`r_Xl#R9-F4DZ6BD$@*vBaVU-98V_iF>{iTCz{E}>d=yyWMFolv0;P_4 zedw-8Y);uN38~@y+U%vc@`tMoW~e5H4RN&9wloK?QeAtA)mky;*CWJkYhW87opvyH zDR17x9o|Z7sIkL9&Cm1SR}+_0&r!8$qm!~#n?0Svq=eh*E$Zji?hBIwfTex*y*|!6 zum5s9vtksu$n5N$fUps)|B#P*ySe#A`(P*N;fSyZ0E3OP#TOpN2)2(1rn4B z%&)k-D)gsgvvMxdnAGsrl-y1^m}Ha3VQ>*%e;}asGKz}D|8BQqB0QKq64DzJXDXVy zF0pmF?r*&9;im&1qecfR|xZC9?upJ@w*dU^8arD># z{K>okTuuRT?^ zJa{lw9b`o1O;1CS;r<(B`m5TOr)IXLsUUyc?j2Z z7xG5ITFP5J9bv98*KZtp`Eg+8ztShUy(z9sceZp-Pv)A_E=auJ;(of^;N8GvlV;U3 z?7PSn3r*W4U*x%mi<+PKaC5DImbm5m#LFQ@$q@#JQ(Tm-BSWWz<=+D#B~cL5rzfBW zANiVy`Zx21`}5({>Fg*A^*wmuje_MSY&5>$zQyhhR)jAW=H_=PNCbIay-ysmPh1}o z??U<}5x8mor|mBw{f}vuMzb!x;C_%_{tqKmGZZe0Q574L&0&{WDjc-4`FxoK&n1l7 zlP0qV92_!{u_9{7nH9u5s_4kFC#jhrdtb!&14yKq7tzR-d5j=uz0`gaD=l}5=xWFD zAWYv<>?LKlC*6_gAtp|^7plc0F^NF3%W_wXDNL`K2ARylwXI#T3H3Pr=PezPdV-Go z?>6Ys-pcmC8dLUB)-(A)-d2AekI=h*zkpe?#5zCbN@6f~j*aAu9_59uKx+cLgy*xq zUDhm`YKV$mU38+zWtMwOc=AIwRWBe*8>u_Bs1$U4D}~dYA^sGAvjh%vD37=h8zMzo zq3fwc>0Ca)&-#(j;A+=bIx|U|wT{FR{|E2SneNYc9FE2zk4pgl0FA>QQ+Y#+f3*>k zc`)}#FR<=lQ%SFM1Xp~37t#J0FvD3f1s#ygCNy2|V$@G{1`XT<3{|8FQMC2J%zWob z^ORXDM+-;G5d?q~zi`gFW>Pfujxx}{8nq$u?yP?#UQp3)X3J(ToTQ}I4w9xWtS+#F zVNXGUdBX#5a0mjyg3;@Zw{8hN#(5PDGW^B)GN-5ff@F5FKZv2oPCxS+D?xir4=FJoMb88oGoESQlI52& zE8a%@;qE52~hEA~@$2$u! zPZRjg&?#@PhC{8{Ax1dn@CN`i^)pU@Z@AZ2*SqX!FW#T zDvChWmSTH6h8k{~HmJTzDynJPdDBITw8f^oa!v9B+gtBP@lVjPYU{sS<=Y5wjbruqAzcxSY%?v zR(X1tenjVfN|4IW5Eq}e{!X{XTX?kHtQD#YR*~X)!!-DO;&$5nku5rX1{I$=k(*a@ zl*kl3MgP{zn@qZ`vuXv1fk-?seZwzC>3^oxG3jEh5ol+8$_ATc59ZOFPRXG{2?&`4 z4K1*djFEAS5WCkFbMGDW5j!~)iModB7~VqM0jNWF3*Z1J@(1yw#RfJy^(a3?0@EGb z=a3k6DrN&qE{9!_N{QtME_>AerAwHO=R$$eD2u+vzc#Zn!Pdk_8?0+9XY2V!@J5+I zHFc}uI2PV}P1Uxw8QNa488cQV9X2QQ>z?L+eC)?sSi?sKDG;cwMkRRO!jjN)IPM9c z68o!k^m+YO03(s671?Q2AD9}cufoIEg)YDEv)=l(NBLh*TYMiJUp<6skHr=PH6P94 zQxidA8=*2z8HOff6GE?7!;w-1{R)c>SE&d0{XT05z#RTkp%G$#`8_`4b7Os=^}7y% zNkbB9s4y=@c@TK;U3nJ^96}T-X^=Ug?k0i2<#TUYzpCj{zCitAIeJkOef>-zFRtvPrzpa4MugaRxDP#S>DAct9iqX5VOSq^vxPzLB4;3WWDfH(*B-2%va z3Yg2_hF$<3#}E1h3}c%@eX=}mzS zxH8l*Mvc1D1b&sCrXx>PCPuQiv8=28aSbFQb{0bkxNJmtR(lu{W1 z%CJCGz6mu}7;q-IeI~%pH5Uu#QVjgRWVsTcDpi3P=+Yh2B9JImfdpvdA?3Sz(z@9o z#MA6%Cx{fK!T8DRx6R{I6^jsLJpsmE(PPWEI}my9Fw5RDn3Q%u)7d=W9h?EE!EqJe zAY!{iSSuZXdbu|6u@=Ru;5nEFJcV1h6YtrPq0U^qSL%*8>A|Q?^-yQpj0kFsa%2*xkLqW$r7Z}1<3Dw(67aSfAb!{)*U|WTRhsAIP_03 z=>Hp5gg(41;DId%UINAfhz%fntHHcuEC8JYYt9942F}F=*r}rv@I+)d(*G2I{tpqe z1$IDdlelw2bZ?m;~+|Ka#0u;;AbiF?3|D{{o4hTVXg00jYd zPRJLC0I?oA0Yn0<1i-1#mbw79_7cEl5CgrS8{#bJaJC@l`IbgQTqD5FR?n+>WE1~J;R-*&%s0#S~0<6Y|!=V5SYKfr|OH5fw)05<^=0caZ}07!sc z0FnVF0#JJ(UwU8^;3@!eKvn=P0JwWB1#k-R762?jSpd@k@qn}eas_431i%yC{)An6 z1+C~}x1saihEIAJJ^xGY2>y8XmIc;&NM8c~H`JHF|KRfuoYmWFLN9`zHKxB?g;pei zr;!DBY(lS=1^2Q82VFJ=N-7Jx7ULHUvj`q ztN;HZ;y7e}@-zg505k?9A7cu=pg91|I4}z`;6Fc+>se=nTXH!A{y)Kf53h}x&j{*a zW#UxBYclo7Ys_{HV(2FL^U{FZ8bXuG{ykKd&AtOR|aYbgYy-2|X5 z6@WfpuIs=e?Sd!CeP(CQ+^f#dGUsADu#@y~`xE!zI{c{ry+;&)O;Qd%S|Z?Nm5}?N zGM6Pm4oiX@wj>#BK@#}9B+zBy2j6U%n;??AFCpXuJ!!A0>OYNt1Sh?%W^J;6Zh%YURtEEY*6P-LY*5miDt)PKo->!m$bt2-=KkJyj8j^WwXgC}Th z$B#`Npo>32CEWVbFSpyjo`4HJ{{iXW(;G196S8CleBlCE(lyA0OOPn{H~dqGKA;J` ze;s=73e@2Rh{GFDrw5=`4?vwhpbEWz8G7#m)L|Y{#|5Y*SHPBBVe?(SQ}~(RI`jq1 zVQ9B)9*~`@-~w*#2f83;*2bgKMIaTf{D5)+P}C=$>r4@x_o6_&7ajMW>?sMn=cs3< z_#r@__HJ@_e;)2c%IBYPOiv#FsjTOmH{MeQIPZyIyyu+pf6MRRxkHKwDrmwYnvjS_ z1R^MY^jqLtJ&3#>1fEU!|F8ki<3;E(DRh?>x<~ujuZ0`T?K2g5N1{(lXi{@IEzoryu2lvihJWez;>H*ZBT z=x4|Pk$yS>Bm&F?ptrtQCV$Lr46&7gajx=t!D;{W?Jwt!kL&e8{@3-vy3@GtI(yWg z?9{IjDH%Z|2HUpH&z4hc>+* z*V~Ps+pBx_@1K=J{;siIvnT(Pn4ilI`IpPWqqeT{zH8Nw)otp>>>0nNon1GtZ~3fv zzido@Up!KRAOibTgdsv>T*+|=`ze2-jh+!C;U4JCbe!Xjmd40&v*yFK6(h-1%WS zA!!nX$YDC7NC`4Gq=Q<)I5J&6@)nVK>zgP6@x7T}?V5Xxn4avJ- z@AL9i?z`B?wnzXYY(zkFvC*bjr2udt4B8NVP&46DMd*3DH$@|ssSq4Cn~a8ehGLs#fC2rl^03{%JNli|$Gbv*hfaOT5b?{|Wly>{ewKId?%wf};$xHDhj^L*?t zq-4-Z{WiVCov}s{3WvVK*#VA3{DW#5Vp9k{q9JgP1Ui7yu{03eZ_~04;SLxtA$P$} zg^43orwZ)f!~07t)XF~pz}3Y2jR@=yqxNHapW zibrS!8yt|wpeI!hKY39&DN?4GUPuK4@P(;J^BS&Su-ClO;KUk(3Y6`BTWH8sdzgo^ zhU}YQe#me(K_R?S`^7T!p_~!Z-M%Hu`?4VlioIKo^*ARegr)r9g243!_sg;t_l6@q`HQxW%0|girr#@a-ZvhURRlZF!p|>w zd_fPHJTAD8$Sv@EfKF(k`OKCVcp-{!R26=C-l4kJ70E7*f~pV=IvzS>=s{aA`0H=! zv8OudUUOhhp~ZS=`&}MByokD^oYs{e$O6zwkcpw*By+20moWy5LGI$<;JiYvAd>UD zqm-y3QH@G(L%^KdE7yNP}Wk+iTR^vZGN%e6-=;x2{wi9 z;$qv%VjC;&M2%^*wCO}m@aoD7d!lG0p=TNt_%*w6MQdQ|wVHWF>qrX%1RXDGRg1*q zgX&$y2Ji49$#Z`@FIBmFsW>FO#+9)wS#Xqc*Dj2F5NN%={{qq4&BJ|ERhzLIKYm z#M#LW_z_9OJ^EwX+JpC2amXQBb=5J-O^fUG=(CCmPNOmas0ILP0f2e{pb-FQ1^`+C zfOY_&69DK20D1v{z5rk#02l%Qh68}n0AM@-m<#}>1Ay58U_Jm?3;>n`fK>os9RSz_ z0JZ^uodDo>0B`^R9033)0KgdlZ~*{Z0RT4uz#RZ^9{@ZC0M7xyYXI;b0DK1MyjIi! zQ`CV_)PYpgfmYOkRn&n~)Im_xK~mH~QPe?G)WJ~Hd9SF0t*C>msDrPlL!hWbq^Lup zs6(cxL!qccrKm$QS9%-oH_D-w>fwAw;i~J0!RqqA&dI^mmSowpIFtvDOpi4t^7+p@TJ zPa7ZuVk9)ASZ!JEKndz%6b@&!zKGqSXgF?vrC;bz7lr%vP{#n0=r;lpyAyG5_!ekq z+rJ|PsW@w@{>J@v{C_^>A643}33Hz2;JQq}dzeD5)PQ*}_=p^RD{xv<;yfL}ahZYl zFo#^J1$$ZW2|D`L>$GObd0LI@vHDfB1>VCNa-|;Z zWzh%n_#342S^(#17p}_&yoW91N&}epl8?yoH!|n7IL_0-gH!&4Q-On1!GlwwgHz#y z(@zJdA_u3U2j80DD{A1|Yv4y~;8$zlPio*_YTyxS;qhzX>1yG5YvE;T;k9ewt!v@E zYvChm;WKLCD{A4}YvD(0;a6+nPio;`YT*&;;PLC=>1Lqu(@w|#tJB%?kC49o@drA+ z`knw~+se%iz0sb4KwDeiIYYN=6HJWVFPf>uPL*JrgyzEmBeqekJA~fDJw=v|D za~i2MPPR>RJ$HH-WM4H?8Juhf=6cxmG04I+Q(2sB7v_3gK}on~D!Y^I{#;KZD2dQa z<#w{Y2lePNMN^_U6eMC4gEfj|nL)D4){7@rR#mUxazNg3#V>eziRl~{FX})INwd3 z&i7ClVeBSqrW!ce#?SYdf|4Z7R1+uLd{7T4N!CoYaI&of^?;HT%~TsF+wb!|cu}F6 zgcxq4JrGyv;Xb(OmeUPfcpZX~61eBxD zszO>oQeY_|n*rK9K}jEis&F7k5>l=VY6wZ|QZfiBB?N#Z!je7=RpIX->63C43#cnf z$soLx&>18VmGt4O3cu~Av=dd160Qp2idHg+E+tF=NyJwsfo{x#+{sz#8pCc?EC<8( zmwg`GjM_3YMj#(CG#k^bDsyebeV1}&U^5fbr7DAN%-tM*b;vf8L$cq$Qz{}c6*I0X zBW=vBns&A2IFrM+-+xpp^5!7wn;S6@5Be`*y2hwm7572^O)1%Cb$Ti&;W_AkC?&h7 z#`Bbq;3*Qxn97ma?|)rJ23wQPHRg5++SlOABS`y$$-s|CkOu_*Jc8072;dRa0zqK; zCog3p-jb+{>Aq33En}ARYOFieu*cFrn3e%kV!)c~u+n*H@@c|^Qv_X=(Ix|?R^xLI zO72Y8S~S7PjXVS`okv(92T%7&32a;}BY&t7^ zn7rT=q0KU-Wx?Wnu?o?qzO~tdagK~eAKXxLd7`KDNPJ(d-g@Mgm;u2Px5N$zp1CEi zLGZ#Y@pi3R_F1)XS+v&Y(>@%tylrMwGFX@*u1W4OA5k16RuT7@=oLspV3zmEjKTsB zQzS6Sh36-VgTg8j9usBp{j`t7EFT5x0!bt$xwIe&8mmZZOwgWCrgGNllTNWedomu!JO^ zA|)3pObO*>liHCc_a&MT8fOQ84gQ$`&639yr4(t+vYq5ml8d3O3x8|D;-94ExTF-B z%(BzvP_zV5Si+LWjHFDeNguzE)~KRPhb5m<{CQw$FzGpHda4Pbb9V4yFzG%n%ewl% zH#z7c=!bTY1-pq#DGHfolggtgMI{%8P6-+2l0N$WYLvu{n$b}x zYReb4=gRtsWxb6NKqC#{kc5d#L^WfeP}G+%?9G*p63Zfu5l|uxXaWgIsAfzQipKJV zqq(wKVp*SJ1mZv)QZRAJsAen_istf#v$?XBVp&Ep0@I{uJjJJS0TGlQit9Nr_)52h zog)8VsbZxY88V_N zB72IF6Ga4h3c}(A;jz*r6lrSm9MicD`(k^Fu@glUc?wG61?92Qh7@TFAR*6TUt&)& zaiWMJuX<#^w3_3fbcCbi&tZ5#zJAu8iU|jL@?S!QLf9 zD{(MW-YebYIB1aGrc7H<;+QUJDLvFO@=tibZfJN@RpqWa-wGm>o#?2V6XKQ!2aZ8B zVZD~Y^fz9XQyI8N1+bT?{}NJDfdw;yRN?`??02A&V8%%De^mF6yZ`Umd8SBiu;03W z`h@@YYy92Iy&@3ip|nqO&Ev`K6XAxzM{Dw!$~%?I8w}dIEu7lUQBH_3)8w%b#b?b$ zz@8A9ru{WIqQy_Wl4~D?H1@Qa0lBHO^9}`kt}D6WK@n~`e6&`NsmpV@=|K@qI{Y|L za(ynhJSgG`QrbMGZqMbm2Sw6AN}I=A2G5}k{&fMu!(`CYUf1)buJ=8V*Yh{D2pm1W z(l?LOPDnbBsX6+C?7Ovqh!AWZGvB*Hn4KKjL;D&OdrJp7mPztCd?2xX7|)cwsGczjr3KWbi0V1lqT;x+a4s{{R4 zY3Ls|+4)B7U-iG!>4F?HeNBD$D&FI>660rX{BP+9kr22a5IFcq9X@OPcr`!v`aBEF zKnSug7(NmW_X8aVpOM4oC6F-wnh@Ncir)FnP}-{l)6b14I>+ED>R`91uRTIu@d$rztPT`6 zHIMXRIlL;>O)!RQ<}#n#R_&r4#oEs=%d%U*GAk&{a$CUK2Z1jrD=f=bHFd#S z5U8sQ_JBY`U2qx%n(BhvAkb2WZ8Pt1rnxPLSgl=aMjv&cN#9fBnyhunH$Rh{^&M2R zQH7;7?=YlkD1}I{9``-MgCH3ht&4~WAs4gSIpyAuipQXc-tDs=0*JwxQR~|&3)&4ZlludKC zUj}`(9Q&^Zn*MX>FXR4h*?%C^oyTs^=Uk=osEyu%09SSNeeP8%zUnAD2!zx|RYCAc zZPXP6qH3c_AP`p@Z3Ka&+UR^P`bbHQjb0uEZ+UH3y9tT90CbVLnP5SC2k zr+-$1-BnTh*gw&!8jmhrU1O7;7l1-TlWJY=CIgYU?^wDm9%Q z${*)oAk{(1pB4DJU&&$0AL?Jitq3@p0>1n}*UM7>Vr)f_-WcGrgT9gU=R|Y|oe-25 zSP?`w2KzD$6a^Hb}A^yJ39lC+;^$p2d8~9Sf=LcjP?Kj5~-#q^fiK}wO3EXv- zb+m?bym69swT7$(fu}X(6$pH+Az5ynbcT<=`7TTKG%a7&rK~t9)LXH|9XM5Q92)h^ z4~JBzpc&VzPNq>hH5cjEr-*~Vus+2M1jh9#Ax_PzwtrK~Mm1ukoVr~4@o$Bw6QeEd z+`v_gqKzBj{aeo{aWD5o&fjfWi&{VGFq)16tla;&u4W++y@a735!aAK`uZm>#vddtDy3LRC*5;?*T5s z<4c0y5gnn^F9O^mQaMMWzJsa>;VbzY_YVgA)5-r>IJ|~(a`#UZ^#3Rb{=ntyiPyoy zE6FpYd#(!~gJ7TNk=V7>g+q$JLw`pf)E~q?#54HMq<_)%Z>4OZmYiSAw)yAam-K|(jVDAo0{JZbKQ;ERzg7zW3>dWah7vF@NWOan|IToReSWtl6uF>5G53g^# z0L(=Q9=dba;L$;kXUYt~ZOgze3s1#`tKVpfhmnsvcFXZ8duLzoU5msZH_x_*nCv1w zzhf8p6&%VK>ubwjoFa#$>;XN0Er^CkQRI@8y`blx?gDQh!|XS|e8GBZ|MXHZ{_^ia z@8r95qqc&i6Vn~{KR(3wQ5MOZMlx{(SHt~xp(DddQ=+rxP&4h0CdNg1sOxM`%Yoj? zU+M3YJuXd{G8mhCzh(bP@xP%V+Wy5t|EhN|`_%HZscRRC2!Hp2mgeR*_M#lS@#vFP zbJU{MR^1;Tx__y>MAY9S_&y={H7^KL0)ZhOPmh|rTgB}^6hd8(Yk%7}Gzt72-M_B4 zb2tBASMA}FT7>O!%Tl33JqXZil`X{xxe}<J zQ4jvdNx@1l@)?Al`z#e+)Po?sC)rZ`kgNY`@@?kaD^%>ydSJ2^uR`GXDqoYczUuiO zC;enC5JTVuD*4G-p?cnC&3!<{_SgF#C)xT3J!4vy{uywGkh!4BoRX)n$#He$xcG{k zfk$jW%{-*d-0TB4*7IxkcJ{R_v7H z4tq`j&5!$`N#clGs{FX~@kXc(7P2)mB{DZCj_zkFo% zY?I2cp4?r$y!#hn!QKV4XL|nVF{luUeA>H98;{yn2EqXECc&kF9}RDk4Pwa%Z~Ut9m7;Aa{6 z%jCD51V85|3jUn`mjPdd|2%^>ir^pGFOT)xo}ru9F@Jg9-wOZ!X?{Mz-*q4s^?~dk zyb2+D#$U{!GnK#V7fVDVAI;Pq`H*KEIl*L-_{Uh^%X{XbpSIHp^38`(?StW`e}eKK zzlC4Pe*uuOH=ob(WLH4DO8Hz7$WLBxb7!{v6SA6*9X9qqbC9w2eC+>`yWnF-i2aY8 zD?a%N*tTb83qtIT&pD6m3go~8-#;VqfpjmgAI|aV&3SaRpTVxTdH)Qw9^Wwk#C<<~ zUA_5RpWoQfy}J2bj?jkg&CTy}$Tpyl-@nT-+R%aB{4Ph7d-JQgJwxq1eM#pP zaQoL*@p%~y*!;!`@a-68PV;p$m5wvS;Sk5n&s@LZ@A&dR7yG!QH2{8(oBiw#*YNwC zk2`L|?C)`GpWVS4exLJkM`>XDJ+A(4C}TvapYhhgFQLdXMLxdf?v%vOYMX?* zO8ZoJ!YtrffV9sUCVQace=kjRi1?=t-0Ytm5dTlAw0wk3w3~m-6j5p}-a7FW6j_nT zM=|a{H-Z-U+4%4kc*4}#HVXB?Lp0@#_3Hw2H}8evMWVXowro(@asJ;48C)3N(tTg+ z!EC|w!_Ys~d#ClaBlLeQIS#$~!{64S^CO2YP8xl#^R& zQqN9f=&(IT$}TPIsHR1FvySIq<9}N8I|RIjC9nkdH9G{2W1m58n?^|5n{V5H1o^OL zhp%z$H|S~8h(LSOvCY%41c`A02ls23@F#sJ`Q>l&zpMYH=kv$% z;+?#nk1JNUWeY|y+XC2$(q8ZVrxNyu5U*&Rd*$xa5dQ;Tvz;f z=hoo4o$pd=zda)>;$rv|FKgWL+!&`$Xt}N;t|8vL(A6K87Su`QTw|r$NP`rfu(-W||!c9lN>O%Mvjo%2n4^_}LPLMx=XHdi-U;l`ix; z_BJ8)hQqluwO;HJ73^GjTrkK)lf6Rg5);|d_UwrLKH~ocDE56tNmiEr8tNO>4p8l`z7IJ`L4g>vB&rB<#goVz@sj6~E zdwVx5sO?(e%-GVvRCv|H@x)i;Ip0io_M0G8`r~642Kr;qW6DLw!}rd%WHVz+L+!~x zHjMPb+cQC9{C)M?qdV&Y?-H}wYioe!U31WLUiL`s4{Yt{ytoLj&B69Z(7|1IQnQ<& z{)Cql_r@dZokj2S6W-GMl?*S9tJ=v~s+a49ACJ7Z*4kx{*WC|F86KYNXBXIBx2-P) z8xQTzwt1N1)2q)b07{-lo)`D_%jeF?+4kBscW-XRvjY4Vx$V6Jec0#AO?>6+tEa;K zpw*Y^;sfuC_0GZe8|*l3PS2`yb!|?~GnTU-)=z6E=w7#Shxheu*JFT}QvjYD9VhTK z!)iI{CGCYro{>&TU zv1Y$n`=vsO*LmAr3B&6)1HXys_9E`(a`vTlznAw`dOE|9x9G8Cm0Q*E4FARPIqzg8 zF*uJ|zS{&K3c8`OTgQU*cheKwMo{EV=A$GQ9B?zm>+?|M$xes?pH!}~HjYd(Ve@Vynn+xA8TkXql)LNCi{ySZ9E z{BkPsa-g-Gk>2V!efE$LPIKITbCDCidbd97-F&Q`l<_k0$on{vky`$AH-xWY<8^ah z&#Q5|bK<#oz`~35a@217e3nwrQ~nq*neZ~hdMUGtK5@Ey7Gb#?SN{Pd!Jx~u(sT*3abF2eid<9SH7iktMZS@E*;Qs{n>QcugV@>o_q`nWT{ z+J16-aIo5}dXwY*K*#I)qr!W8A7Cc(iRa_4$3aX*x|WUYBeu6ZsOjV-&i?k^nYWb7 z_WnM?g7?np8fCY;x7WMp`s(H5P0RpqyYmx%TEX*0iuG)&`^zCOHRf%9>#E)Jg0|Kgz;Xr&xXEmSBLSywjhAxrKs_MDzGywkwr)}ExJlgf?`t!8c!`+MdUWL{34mPiG z-RMKz)s4vLgZJI`MauJG!>#9aH%4F^(c0=WFXYH`4+qLfyNb=r`JJ=$;LG!z?+ak& z#9Hm?@$Lfh_QYNJVO8zsssEz=Y%68eb&t(!(f0*%)Z6q2WXAkWUc38q#EJ~_?Bh5> z#>)=&c_**x=u^)0YP-tQQ_1wR^~@?h7oEH6eTlce=1ctabIRyT@3!}2E5?nrH_y)A z!xi1T$I)GU`$yNw%IejDrxCUG>KT{n9s6*)L~rj|-v_voRo_&a49O6SrC8`lP0NYYMD_21>8vm`fna7Ws%O#`K=IoI>(#hO*BeVDM}KA zITr-Rk=G<31-LG z7;{vXFd-{ZIXjT{#8KMDU<$a{9^{)e9Q3%jb6~BYMuQ!eb0fm#!E&ci(kJG2wTnBcS>Xnt8E&OA$h_*p%#vkjBu51{w_MPf#EP{iG z!;S1~UzvtCs1bG}Qq{wJ_m7ENydHEcHS^@cgA39_@Y9;LPg^e^p~*USX_|Dina?+Q z?E7xgAo%FQkS-mtmz#g;cxTYTm|@?78J?%k*@e5bMNfguW5f4Nl4cIo3<1#gS!1TA zu17!LVLr=Cat%jH3Fd8mu$&s8t{0^l`9RMyXro`)xBHBUlPDP7)?9RqN;L(nmLz)L zp%urJv!;@J;{5_X+zINO23>W2Mp zVH7ZsU1#9|ip4+52bQTT(Q1Pl=xl`biXywDsT$6=z`X4b@&6v%KA6eCEsp3G^ef(x#qr$+1XW6w4< z$^+ejw^512{=(=qgYN7bRfoaOGQ?v}ebNn%RXm1LV)1tzG0XI!5 zxkOX%wd6XxcLi!f`u7)*_C$rc=)MmpExPu#MX9^EBn6mqV2KZ`2Pe(r@yg%93~AT# z%a%#;%;=q`nLddkamo^TbPGh8)CzsI!sxTErSWZ{F!ycJ`a(uzEt&+hDHTl3mP6q) z(=GAn?gzK*X9LvNSOy=;1a@DaGw@nLTyiK)Ml##__x`WAVfE6mAFSS-ed zccdlbrY*~%WSFsAB4QP!>J%=~ocTd^^#^!V#M`&B#EUvhtM2(T2gS$_=I^UPbc03t zncByxayUv!29}T@=~HB(Vbs^vw2}wbQ$^$No+~R@ib9~s?4;nM4adW1W0+Oi!d%Sh;GWJVBbJv;*XYKDk1PM<4Qf$6|b z=!u4Bz&W2p1VtZ_nyf>Ktk8?7)G|;uq{65-Nkf^}?8LR;Q0u{~wge_!XRFpm?pZLM zz>_6d93p#!2JcZnGMo3o`W4w+@_AXh$`zk)(*@WnZKNwAYrE4EBBB;7bv-5d5 zmwd8Lt?m_P`=i`kJlUXO3=M2Q&40v_t5EOnydUVeN8qy>!&?ls*aX@>tno zHGKso>H>4Ob?@8JKV2)&kJmXABoecD7`H){MX@DW&{ztjeG(WKM_FO~R0+`(7}HFY z7PO_WH_b2Cphh+>>R<>jHlj(OKo_Jf0gEfA?=*wOiC7Qmci?2wv1VTpv`DG#1Ib!h zXNlUms(EL3yY{_YNQ&Q{n?+UK3My0;ZMXtbBD7orGvB9L5K}8nH|X-EXMhx)`}Nit zAv={8iK|`@GX?~U({{9w_$*{i!WGdH zj*aZ*Slicd0x@`BgQqnL+i_+?3ibC#k9?uiWzFrq&y$n3{Z!-2q65@;*-nm{E_5q-iv;3T^VP9 z2r`OZJ4y81IIcNWsd}irAjMc+m7@qDj@vW|PnTs-orr%l{h0}x0yhnrRP#6ar9`#l z*%{#_=b9Q+itlI&qSk7#(qDWjnU+6Q+SRr;@fh5Zjrdj=l*^__;SVK|Mcw7?qfJIu zmtkmSYd~S>;m(qX&y6v++9D;I(Nc?x_~LG;(_5p`4A<76B|%)}h2;hM?Dg+4b)|j3 zRUzb%&h@qId49?puPGxh;Owq@9SAS&mQ^Qy!Z$peqB5 zFpK(Tti`aPYtvXfkpS)67_we@b7GRLh;0Y~R7ig6i6c4`2vwfF=xGhZ${t#ajzW$1 zJ)#F{vnjSnx)~A>%VzrqUWHfu)8-9u6|=kP@KYg~y%o)lQcN|-$rbM?y_Uzgc?7Rw zHK0f(zjNa$qE_VJwrXAUBlGa0DK6m&vps5QQUyJ1^0(*z@Twmzk;$7S;;%4sVOE+A z6Z1Vw%FK3Sju_poZ%UIUOozw9t1rHP)EcdcmcyS~^6ELczHgZf27VhadGHL8ndMU0 zx}MLRJ-u^St{_K<4eb>Y!HX#VLLe1Y634&1>qPa2Ca;B_2j!9yuYKq0VQNqKE-I4* zr$bDR*szf}dA96eo^$Ro=Z(y3uv|Bhul7>>JKf< znmDl@1gPd15*Jl2r6!%bR*u_m8zizHp;;XWzvs1F1<2+zjgjr&Fs+S2TlH8=}Di;r8RECd;!f1W-ELm!UV zO(E-T7p@O5hOs?I))Q^krZ_gR`wY;aZdFg)v$8!Ke{)Q-?)w@|I9ZGk zl??LuBNN2O$-qa5&)HG&CMLFfm5+I1w%)c!!EeU;`Cp21uBA;G^3f0+2U^?oOcbtp z@&zt1VsgLPIx_awCb<+!?KBwYH}~`uTwoMHKP4bKRJ}p?qzvg70IeYl5uy)ISB!J?j<=EVs!HWpz?AexcaPdQZoq$J! zPsOY=b}FpHi9lRpKx52Lch42l53+lMXkqdw>f`wbsbd|H2JYx%sP7y7;j)UQAB)HC z1A(u&s$D53C?c&(=sY=KAgnApiw3YHoj3nv^Y3o923jMT?;(T;8 z#zCct-=A%ySUHp>^-WQyLYJ~*vX4`VpB?W$e1JdPB;i!_nFxjTJK88A>Z?Vc4_hm> zxn@Iuk&b&VN1lZ~$Qx>h4bbWCyxP9GdL!)quB2d90UnikGlpNc*6pcSWKLfghRNjk zrARn|TY=78!nasmrMwB4-TJ_(zv$l$QzX0Gd4B2cQEcMIzJ$l7?$NYLFBEF9pCbVK zBe2-iD#D7z@=I>6_Ug!Rv5nLco~@+3!$F zB?a3aGi7u8y)jpOXwQYa7z5-sZH0=P_yTp;Y1Bp?@}kYW;(PMd;sKVn!dhSiwGM|L ze`u}1pm1&zrF%hgv%)~6t1&dOJ&N183+$-5-8jNdcaAWH`&8mn#Wvq$&8H}rL{xgE()a}!>;5>CjsSkkXX zU6yT$u$~~`9qcBw44!isn}Xy=VdGLF42eO8pr$fqj6zkw#!%%UiKSrhO0TC53NH^g zp-&WWha_UuOF|BnPFmI$#$8*`iF@((O+ub@ z5p)|;gtLma@FuKo(ifhW9&~s5Xtj)Rp**W1^i^$m=zYgI`JfFER%p+*HQ8KljWqA; z{>+BR@H%URJcV`3!}Px8-R!xrrT5)hECdatY+R~!ev0Lg?nsU3DCl|;RL+gc17r7A zOl>Fh_12}_$xQ}{4+u%>a-lG0%+7uubvpN)@*-QTQI6xL&jZ?CxtL>3V4W_@XT_%w zxvGW&!%qe&qFB|P0

h$Rn|ix_u3UMG$2G+B6y*VTR>;&$1?`aYSK z|Fu5K2cYiJDm{1P-g9EZS-zb8IC^BuWZOk>vJ!vHZ0%fE=@-{)aYoQ_TWH|bwx??! zNhjI3HWapUuW3w3B^ZGmSxpoBnTUevC`Z`^nGTAPk@n875RccN#Y_vuuav^0j9cZg zyCa*-41UMjPLLG(A3^1rP7IRrIj*y?ef0n{Q6mcQl1F2h|a$3qq*SH zxnz>MI11Odn;lUQqGp+1@MyyhQdnXD%u zEd#ocbkprvYoW)g$5$ECthRv;`weab9omUFFc;JA*;vDox4H(H`nf_Le-;AxtL2>9 zT_!7x!6!w~)r+88R5f_oM44SZivbs|%T<4Y2ruv`-a~Qdn0iA-Ow_2jo zK%j0D$~uRsj|H+gv7?Csv%?szQLRDX;Vi9jGmr>)QF@Yna($Z*`V=dMuXJR4QIYo! z^dY%u#GpkzFkOCqKNc9xp^f;;;z-$QUcM5hPi4c6DcIDQoB}J^h=5i3xGFJqMRkdr zJw~-*IAez);t0ypHTyf2I|ndjp5@QekDr}MO4pAgxok$WE26&*66%5N z_%r2zjgDl8YVaAex_t}zFl=N%;*-ZxedsP;-t^7P%0Sj$jzBR=Ea3Zm$(&BE?X|d5 zx&Gvqmmx4S7<{xWsma2unjSYn+HyHA5nEJ-{@f-DgH#CbM~EE;_}upPf-{Mc45nkb z|M+&BEl~6T{cU55WHaVw72~jdUKrr}yf2A4-|OQp!wRTAssXJ;Sl61y=-$34<5A|V zd4+T?_viY)%|TFFvo+6z>w5iY9ofso`6Q27$Sabb%1)oem3QQN9?N=yeBmm6Ka-Xt z)4`P_nb8k8zfAJbrM(>Yv$V%4iYAgBX-SsMoVe!l5l`8b{JD$Pb#1~Vs1A0CA6Z3~Y*dslLH(R05OtK>Q7}ZGiF%>ajAO(Tz3W)QQ_(AH6cR{kPz=GXV~<7{ zRlInFo?mea%Q|8QB_>3H35WlK`YZpfcU??jUCW+bB`z)9Y_n=ykuPDN z#cWlD6}F{UhsKYJz@^ASK5Z~~XmuS;*U}BaB?y=(-5hvj^jdo8S`}__o;GqfiLjvR zkEl3coQ}2nR(2N6)6eoWh1|<>2lgIZn5OK|W@tiqJQmvscY8m}j7vG&vIQ>Eq?WuV zTIpHFiK1A6umD#N0Na}0VOD_AxN3wDbFA3OAX0~YK<{*)bR^%=x^?{W&6Dvd5M|7<;!Hvg zOkzCpJlR(}n-!PpgwgDxEA1`|iS(nKpI88sKc%Gl9>O8qy+zpJQ4rZ!*}ii!(|C5=K?@=+?$Fdv{s6 znpO{3?c=vp>u_^7cnJGSU|3xr1J!}PE5kg+S`oQ~daCxZ4ocW&bV8Q6XNivD;ZpBy zDZJ%J(wm7R?NwKyhx#u0jl~3;F4p_sC-GC2H`xsYY@p0__Inu(z{SWIhNkdfypwLU zOfI`7D_By|Bbr7>nP*9gcgzESJOuO23t(O#@eSjtA3_4OcKFXLPsa1Ywh6rxz~ibb zCOizUamG`_l63UnqA1+>9*50prCLwc;I%ojjLl{RHxSl2QRg~e7i%r(`cchIPpzYQ0*L(CZyL1+Pzz{JLhSA#D=*^?zC-@OPeft zD8?f~Qk;So9Ls`TeyFB`fkgAh)Kum^;7Q*lf9G7Se<{HIa_{)8G@dmU$lao~thqyK zE~qBSS221p+2SSqNw)tr!{)oHbDz7!5U_Fp^dqnbxHHNI|55Phirb$OuX4~T-hT# zNHYCI3l@0e5_o5c5t0#w*B@Ljqt#VPsf?Lm{7PGql{iv*Jv#a}I`x~8t6jfqGxBvZ zPx2^%4vCxbjiV#P>1!QaeHP^@KfV zox*9uGw}F&Zy=R(JfsC$2_v*1e;6*#BIfQUjeA^;h z1YoqeB)qWEac%HJN0u}loKrxPRN)CvSgAFn(u!7JGyy#Eoo;P|XEnSdnr$t4-_}KQ zKt|D!CTr|QLz>K|7gW#iK2$hCq`GQ=$|#L}Rw0fAkO+CuSOEsR??_HK# zYyoE;nMMz^vFcH;+$}83p3KD7s36g@iT<1?V29#M5ufmQ%W>m?D?urhL*Ojpr=xO#GT`Hs}8s7fv2 zyFT{N4xzf{?K&^EDV>?k)(oo`ca-yZcjEab(oO`9tcB{l?vVe)R!#|ypRN0nSA;`c zU0}2SY)&ZpaLI#VI`q8gnS&WS*(h8FZN7jy`L#R;VTn00KD1dem-f+gtEG`AIW!-~ zLa3jX>%w9Mxmm%qq5@_w;{m3)#QJ9k_l6Ru-jT3HzXRu^rAEtxaE=R9iNP$<8qFm& z>{ynML-*K6wNRy3Ih0ZFU==$DhnUCH&XDU}4AVb9gqruMI3O~YB3&Lc2e*=o++S7s zhaW!nQy6>t-MLx8h(MES(=zNN=%j3!m?V=%NO_Wacjmrpc>FBn%oO&W>#cluvIpZL z^O`>#$L8rpuU@Wfq9C2Ucd*=c27ggvoc$OD!+Tz~xa#%mhZa1gjO~~pfv6?5qC1bk ze5{3qdG7be@Fy6QT^=fP+D)>$c$VL(-F=EBqhuTdQ53EU7wJdShZ~G#!Fg#SP?JNZ zxQf><%y={>*@kVw^A^>3hIePUk^yJKR;ajV4!ZHZZ&vW(Nro8?c+OIF9u9w?GeHA{*aT6&uMDN2DD0u939+?vk?Y+W(>R}lek*|; zE$CD5`*cB#gizZWvcp(JOQJ=M|6FVTc@fWwDa;FWqeXjH&Zv@E=vT&J#4QYY&VxJj zYVw_{A}b}y8TL03@sjVA(vvQ+tA(C3zfumSv3=aRax-+>v4D^saz6MNN`GKziuIxa zsU^wMu8#J-l}BQ(NYECgLHjnCr+su&n`v+_N!l@R0X_*qLhR;!n<^1b6?2Xmlt+MH z5kR$RQL6@gJ`^2lHy3R&UcJEhYg7UbhBq~No&Z!nKtT?vJIa36|L6$i(`VpnQn&DI zF{hC8^0`fM7fenHr0l-kYln+nJ*Gr!ZXr~U@!0r<4R{=q(F*e78f6C#?rYJ0)0hqW z0~tuam|hM;PJtz+_p=l?4Wz5<$xCHCC{YD8`ISPY9s=2L3=wFJ{1gfMc{m*CR3VEM zgRC&U+ywbwRR~$uH4pA^kyO7#T50fS>|ngyl$a%NYJ}#R6L5*>F6W^*tWk5%X4u81 z?o?DCvZ=1wm^bC98NCgy&8uytboo3{BYjX&D;T$N*)uZ6Uu{#?S}of>lb$_Amh_GF z;vvu~D6e9eF_ZNU2(C1XXB`Y9mcV8$;XIR9N||LuyhM9+Q0Fod!WxQJ#U=!a{GfIL zeeqmiT&NZe`|RbE?=GJGEhA}f#3M@!K7PnSzb%{&+mvZ3DO7_O5!P`=h3m%%@}g5^ zD&;wVAi+$|G-fTbq{a}i(Lrun%_o+^BEC>6#|ZahDVOp?t$|$*pZOW+)~4Y1Swqhr zKo3QiJbne~&=|;WwGR=uW=wPjd7}xW{uCjS_{inSb-L1mC8BOY ziMSY2baAE%x(BZ1dBy4v7tdf7ID;gXdKrnWV^>LKi%F7??K7s+b;D>+=&<2HU%1LG zm&>KvDZM0v-JAZef;mj-bMF^2ke{#vuif_LDoyqnu>}$Z?r@+k4owW{2_(9BDBrnX zK&4dKFW;{PI&#ihdb=)Cm0`2C9g0Ic;-N1?i?`4cv6c51(lLV0kz0YP|Kfx5m8>~o zYbJE-9`rUoxwJ8a(!tS^*!(EeuiUT%+6RKn#BL>j9(?{7;wqlY+8D;V@>r%*zESD0{ z1>=o1fh-OQAlY6xh({@_%1rKuVLwb# z^5Tj0XzS~>{j;5giirMvgjoMk7CT^7V zPqD2WwWS6IfnKNhcw?hO+$PmOd}J>q<>_fy4F@i`RG&wdI!=>)QI(Rj6->oNEGr{F ziVNjTphCGvVRES+mwoVgROi<)vaIctKv0gII;Wiy^p>oVc?d^1NTSp&2;}V4BdKaJ za|%^kOaL#7UK8%=Hut?76Vs%Rjt&e-EZz`zm!hZf{$d;4Pbj3!46`liFWR(i={s_k zDA=H{*BIJ{7}35!nXlSF)iFW#Ku|)TNa@KIsHq$eQ!k%7IJ1bFz zW@7v(&F$4fh0E)}DI(>Lx}uZCO1qCzi?Lmep`q%MB_?9FF~S4eJ(ek(=emvgbmkE! zly#wbMe)+yN_9#$UD-0wuS$lM7#TZi2b`X%EhA1)-;h>vf!Lb)2&l4FCNY(IdI^$-*)As1 z4Vhw>haX$W4FMYc1^F73ZuZD|&!pO;hHpo1xBSXsBTVxP#X70QiG&Evu0K5EecjFe zKLBDtoxeY--{;nqxjlbCP||wd>+yPg{uy)Draq60U>#D@g|Vc2^`$$7>lBYi^Y6@% z%kNW@-#7VODxFBglbtQ*CeDHxjK*^P)d$P9meduL6+1M=@CeJ%FLw&9g148LI*Znk>Omrw=`)$0{kRL%4gtX7ZaQB}q5*V+yVk0DI!@}SS{_bRH_ z@L8@P%}-4OJU3%LKh5>&jtV?E!~KdZlQIpiQysu(9(XIcOfw8$eZX~X`r(=yVHRUR zCCnfevqza_c!tq>rXNm8^zreTP@3tY`t&U1b{6-jH3bQ^7s;i)NE&O4WpLHx_dNzC zzwgl=Oypw~u7vsCEpg9wVT^X9WR*U?39~dMU7c4#(RA3Bvc4=fQ}T-66S>%oY!x@T za&L;1NA+e1@=d<&5xKW53zxbLt>DB<4}MwDt0{`1X}WiRT&S@Qa9tb}%0yEYpXRnm zka|SMgglDd?ekmj5MCcLDJIMUS@z0jxc#2aNM|$`iCG-<%Oc!znl z`mCM_%e>h$UDvuS!#w3unPa47h*>g)>q;fbUL-%ZoYXic$x3apfY@?k;VOOs>MX=M zciW2K3K}{Cf z_q)9+K4h*Gy(-@cr5S#=l@OFKQLni@@|=lV>kvvpzHyK0^0Hu@tdy_%sEP2@)NvKw z8e1|EO7SnA2xXpBr+rd=z?0gvPihZ%(lhOop5j@MzcO`N?_-4{t)5HGF_Hfgk>JiJI-ZbPSqf#m(&@sD9@47_Py-0o? zB~n{kEUF6;&_X&}&N~fE^ZJ}8rSIsIZ=&;g@(JpNcNIS-7AUuTJB;R)Z!xoaFyF5G za8PyYhDWSEhM=MZ7;cB2&S284tC})HYKvqpf&f`~4gAtz{)s}PtI%k^w74#kl83Qn zWJV5Yc`z*Z3EIQ$B`?i(waN4-6DhziGMDV4mKDVA4Yk&W zIp{hIu}+4wG$r4S8+Zufn>y17OAG=v7@V0PQ%fd%=E0Ac6#wjl zZ?xp%*;(F6&QzJ%Pja{Zkzp;lFjUyH`Gh-&F_c5@}Ld#SEku8U$QA0>MSaJ zAg_M5{0Pe2`B<<_qb0J-gPQIWW~t#-+KPy>OeQG%6~8ci{cZU-*e;b>R*E9)&I(iA za@|>XeY&D+D)EUYf*u*sQ#C`kG9Fq=I+jW5icj}>QoM@_Rk%tX4-{s!SnTyqx$MdC zwZ$eA%95Z@C^@&xBobOj*u2rOa8%0SRT?dt#XZRDC$s3_2Kuuxh*A(XaLT34rGIQHrG^3Z7pT^bs$?GW2TS+-~goSF3bau-a zX6mt$Yk`t$KQqHVOVRt=mT@%1@c9(4V)|Cn|639?gtsl6c3l=)*~{w+q^k4FltQ0J zu^P9fJ8OkcqUmn0U-oIeKFg~Kmqq?we^3^z_A4IEYv^wIMiB9YELg4kMOR**ucNyo zl#;pLCI~XW>*Be-`MI?CZF4!#V``&1xl!i!m2KpmM8%CcnJc~3nx&7HG){WS)s$Ye za=ob2_d=Mw_|oLJpq4&Zrbx3%xZEq8%HOQ!3Nu)AHSaDRsOj~K6}J39^P1*og2Ab1 zPqkl4hf*@{X3F=q9C?mD%hz5Aol}(W>-EXnKW_hwr>7@(5h<=DryIg|R=vs`J1CUo z^tk;#zt^wL6^Y_=^+Jir-L0C!bgRxYvZlbL1(Jf5<}|9Z=1!$KVO#}|C?*W|Sm*yw z+?%i`k|YVDUsp=vlt6bX@2tD4yR#qy2*~N_9fXiX7Xl4O9yQ;7@eqWh=tKlVKxV3U z-+TLZ|M)XA_lWQ~Kqw`0`m0V6=H|D%xtY5iiKeCXL7(OeFT!gN!ush5T06RSUKM@{ zW|Mq)f28nvX$1tSoa##zcL6E##&-K|y&RK=lG)(y z5?YQ~*p8q7z=9%226qqkA{gPdjj)T}FS#ZQDcbPLcD-uh9KP;y&M0Gf&v^p}zUPc5 zY(FvOAxqJG4gL){HXu%X_PX$^$P9a1lSRk0vIN|S%G%bY3mPCl<~6&kQKht! zQPRLZ#hOEq5j3Xl`Gw^kj5-$>aaPR&N?OWFxx18vOgWV#=hLb5Z+9rEq2V2>S^(B0 zC8g5xU0Q{Tp4h5fHkFmqVU(#3^zL}uXGVa~iV#)tZlNz@Y|~Radvir*zGH=dzkNy5 z0#0i8+TLlkd_jY!MQXj@22ZQyd*7Qrx=bDoF#6Zv1Ao?ES53`Cs{#8NKB|4z$BagY z2c3`l1)O-B)(?y-*kl>DMVOr%eaCVHG#+`#9t|)=oMw*yeWH!7feC}d^-EW-KkDiN zR;#~~wTfl)Q~xx$fpc+TCa%N?*IMtV8Lbt~ik{d8L@>XDo;K1(#a@rUb3FGaHdyRM zmcDIO%5K&SvZH_RJ@$xsrW)WvI^IciKo6MhV8hD4Dd>=TE$85Hm3t+DFv; z07(p_UL})7jkzsV%49%@h2wx-J7G~_)tsE+j~KV6!$tHE-Sp&Axk65oEgL)X^R%Jn zQnHf6t845bD(`QAc%CX`3z<|#(Ku76LY+zmDg&B2uA}lx#J1H7@%lC}LPQ>DQ9hUD zpy*}CY_gwtJCy~gJ)6npoOVT>pSJI49E-5^u?hVzq_fa{r{ODO8XWw#N@UQ>u*>rx8(HJB5fivNqMC@@Wul$O=0NbEk; zL6vSmmC~vLf_olL+Vl)mQOC*2AocQ9VuHJ+o{WRxln-fo}d?7dC54PUB zf0o5x$qzFsac*fNK#0b0wvcx`a-2s7j8XP%k9c3e`AiE>e!ra0v|47pK?qk>k-rW;~Y>+?F*Szw?__O3NmPAQqb?8EuK=7kGmnOOozLn^K}Wt z)vLH};`Z+#quYzp{83`<3rEq{AapdFy63LXswr9O+O8p~CqGRY3ojmtqG$)_7ex_z z@`b#%tC@ui#+XSd%H{nt^}!Y8R9=&1u%QaKMNUm#GmZ^B8;Cu#T_DT~Y~j;Jh;bd# zlXoXoe3%5TSt%4U1%rau?5GmP+A3r+N_I@aYMI9}b*$S&YPoX;v?eA%c0gE7W$}Ge z$_wBSuWB9dC$e%XmsU7r(^1C4?vT5U7@h`9nCPvr*2IJ+e5nvD5NVK2CD?+61qi_b zwY=~N!A-ZJa!4gJ$x)2rz4Wxh$)FozR@xxUTA4}sSuGBA+6pB6EFrV9G8y2X*uWU; z=PbH#lKrNel!n&nU9SrO7F=f?eNB(XXV7mlDb;!j2SN_blFoOPEbAieMwR^%GIOzd zjYT}RpsVPx!Tw4bgJW0Gn*zXgJ14-%$a#zO0gv5n;2mjpwE^c6_Ml5|jnRjiG1i)T zPXk)`8}S`(SJ0-DzaMe(=6|Ts$pD(2b9YZhXQ(EY*W@vlNE$>%Ibt z5NV&DmK%r~bsXhJO4Z6KC16w92#-|jZ#kahk(Tf%0r9E`j~$c`i|uObxLiDl@wX-P z_#LiR_SI_nu(gD4#UuFDs2m-)mdUaBTCILiR!jAh(|WC3Yenq-hMI2=)$+U6(kt`R zdARvoxms@3Yhm*PQUPPIre0k$V`w5MVf4H_f<8v*NAuIU$w0sB!-O;ZbQ2(a|NBIn zXlv%BG3ob^hM~Wg6_r@|u==T^qfvI0h#M(+?*P3sJ`~3#SUaOmlUdtpy=A)g539iM zp3)B!cVh+M=oUXw>f$hzoRIDam7=8*g5T)crwEz;;#U&=NzmgFUpfiTci6&=_Fzpm zhnm*C4DsrguoV$19R>23if?Y8fQ~?ykBt3}slBC-%GGcQkub7*lMknTxGt&P?$wg| z5xrjYsZM+>3G8-=4|&)c@em*IWg5T`AHP-0u>qZtNp9DV@4M(I>?+CuSdbMvD}=p- zg1A$G-|_HgL?^~1tNm+$MUbneUsj=b5>ufu0gzxe_Dwwg4qyg$Y##!LP=I-<^(f1_ z4;&YJy#>r1tb3XZespNPEh7CrH!wb8zX-a=)|Nf_``W&N{0#8Jto1l~9+zPN-6s6?oXufsNaC0CYO_yl4zc zt{#g0zTJA0jg$|(qv|HNzpv`U=JlX^f=;g=a_x27-#m^8Hj+`ZT7_E{5W4x>>pF z;s*^uoJ~A~gzz8)US$Q2yUCTdJnX=xjhL7EInlp3KT#*D4ScL}Slk5%^-i*2r~?-NsG# zCk$xuWP>}+!HO$ABDR)4E`mLu$~YW$y1)!XPLZVu0YNlYO1%c9#7kt5L*8yvEgVa=`>X|NBv`gRV5#%Pzmt0A_RS zJohHqR62m~gIJn|hWb4~W=@$IX`J|1{^9nQR{lI5b#TLQE?Bd^SJboXv1TsQzpJ0{ zY1w++g2jsNNZ7}>)44T^3t1-zNGzxWEl_jY1+j)|OMq6bVa`{hLVN+5!T&2-^*>;shAZXLKe&{}nl?hUX1~bvsUIwEG{<8OiFlZ>A zcv~qZ?gfkoTiTC21@gL(dOi(K;zj;2E!EZD9na`k{6tBj0j7s1Fpw144J z74*=a*a_qUc6}-&Gxff3$z0l$T3oUc3A#S$x=1kN6nw%PidI$%R>0X0FzFZ_TC? z4o^;pJs^LqTlSe(+WI5fkC<4aANu%0?SCJBXfhds)9g?V@(S!rn0wK zoP-GfUFo5lJe5r$9;j<7zkX1eS3r>6>Yw z@vyIt!ziY(*X+)4*uS>V43MJNeUK1GUZ%Vo{!(MYNG#z%toz1cnT8=Qj>4*|yVgSo zEy}PpCQ)agR$+IZ*h7$n#q4|m_1kg*I1NGJh&lB|v29F3P?Jsb3J9L9&P9k1BnaP4 z>xN{bPofW^Sv`DW$wMO0<@BxP8M$hZK$ z&;+gkm9tPfR#KerN%taQ7>j~mshz!v83c6WDv3lGwKLAf*vpE}(hc#x+7?e8>hrYtRjV6J09`uQ6b2J18NFd_At|7BOu5f)4y zMsx||$t_`+z6kze`~-f|uPDM;nD;0G+0Q?G{=@YOD|m&K8@7sDb4RP#4&eJLz3GfQ z<82-Q)^gi)OIN zax9&?6`Bl)r;O=lr3WK`s`Avis@~P0#Q__aCA^qAy`1rjvImDAT}@cOW*o@YJkn-B z==3XNqF`&>-QrXVeUw@&+oK0}xS{O=OlYlq1hG+?sX z7*5795|bE8h0?i$x(4JKRUNtK)uiePU$ZVSH;l=QsQiW>j(t{( z8B^^$Y9QXWv-nkXjOch5RXZQy*uj~x?$ljX$3u~E(uK7@enEOsj1ZrebK-`uK zpsu7KB-r%A2J~WhD)FIB2rh6jZPmJUrEVsz7ZUp7%!mW9WF#NZ8c>vxiq>4YsIvKp zB0#aFvwzL_3HXU@)sB!PhzKuSK2?PT`|ZtDrp2fTK3I2p22&eh*L9Qzs5@*6 zcDt zR$t#w!x4?Xewv2lvHAMrG(4Zl*UM>`w#C;}4BOyq>P))rex}Z(W&AUBFkM=F|2n6% zSRZ0pUWri?j#EnwuQD))^mNZ+B+VJonD{=`9oQ(Bk}&Q}`hWdlmUG~*(SnP6tEEFb z(WCv7mL(;d%B0i(`>XVHb{ozYF`|yGbtbE%3x$mQ|9$OA^*7=2-l`#aMN>!kULu6{ z%4hPqY$h-NpRdx_8yfL{-Kiqx`U0yV?@xldVLp}3!GCh$e=Mq#bJX3vw^5`j1a;kX zK9|nq(y5&M|9p)}oL>FCuhzbHF1k_3E9oqTHO+q2)jF*a_kFU6q3Y5ZC7)ALxvcy( zPnO^ooXk9bZ)$<}Jf1G~5*KY1LekjTeV-=|$w^^ALM5&I-(T@G^Vfdw9duOq6{sT% zv-dSS=&$|!{#WR=GmhB;>flP!S3RkxG+_Zf{p?hefx*laHqmPdO5A~`(>o<@}*P?7K^Opz8)hTQ1`_`7(9ofXR_&BE~Uu- z`>QjV{x+Q5H`gw>^D1Nu`Aq8Ta6nUQzweFc@L1VYp^!`Gl&`oE{gp3-D{yGHluuNE??98hxf<=7rRR|88|t$14BPfPcEBy0~IKf*~Dq&^uZTmTFwe^a^W)t541 zc}~e29vC^6bc5z8UA9Wcaq^b#!0gf;&^)DQC?vf#ws5QL4#OeIc}bRY%IkT^p!;Ea5DIc8pU$S0^nbzqu)h%tk~|&$Ig24m zVC(-ENS^*i^zQ%Qb_AiUoK9tOit_({RmQ|rmIt1FA?MKD8Q2CGPx|053Nsplv0oia3lbPFqt)XMo!Bz_vrT& z&dyXel}V-L!q`!Av@B&>$L*8-TCq}9o0Z?oac0wftl?gbon4S+8Jd$mb?d(z(CFB0 zOXy~8B3Mn4?G{38j5V|eaf;hA2Cif>GJ0eTT*|SiRLymYUhpJa(+$)2ug6X>X3__< zv#<6>oll$#+P_Gk6;og90JlTNQ*lf^xi0CWZeNQS6m|kq!tiT?rr6uW`%q!39e!PV zq}r~Oz3!#g7^?>|F1fPaus<0$^%0Fp+@Q&Lg?)#unnJwr4gVzVIO_*3xEkEIS6uu^ z&*Ibrv;VAOs51!;HAPW_QJ5~pU({?)hGR1$%hT`#J&8^9yoFMIIwxCkUjdd)!7|L} z71nDQvt3xdz>sB9aG*2oNTyjF;tH`b^~{c5vuY_>ld}O^<(e&1`;!H>;Wk`snPTJ{ zLBE%UurXNR8fH3Ff%%Oy8x^MKuxjuIl4rK(Ge?Gb`MqgGn3vx`EVPKK40?JOr;NMG z4Mue7U`(wwK>lH!VGDC=K9_1naZYFA%o0&x^Cb}dVLhb_w=BWo@|CQd0X{vaJe@i2 z-_0@VVQcY4>_Lc&>+D}d-xDY$Fymae)Q8W&r%71Zds*vdc7 z(0{d~U(hKSv$C1mAdIeQP$^{3jn~(%&zfYEz)ah4N~4qgbV2Sq7*UWyfbO9C z!AG#>q=GC-*|cQBcejf+Ehn9S7$cUHh4VI_5t8%)M$1ZrFq=|xX(i8-w9csaP%S9w zjFgj<0)xUbqM|4vozJ9Gij#l^J%oZ%N;VJFk{49I)+!_2+=YZRh*^+DvJC}hYwYZ9GuJNay-+?#2j~Ek3T|H01y%ja-L5Js;==N%%SLw@xfUNxsc%P%L8|X z(s2AWzt z6PB|@CD8JlI}r;=CQA>Vya99#(hh{39qTc78_29gt>2Sz?A+-04HhouJ9X+lv(-3n z#F1v>SSQ?#IP;Vv&w-Pf11CENPHqkyWe%MD95@BkGregHQ}ZCD=RuO@L6YY|%FKh5 zod+p550WwuQhpw!c}85CXT+s>MqHX_#HAZX{Mg!V*%?RzTvXRhVjtd!==jS+a!9SjWNOGDDUC!m;;FILnbCz(990k9}P8SMU;K~ZO7%}d!P%7YjW#_Gw zIe?;Z1_2h%=~VV#Zq;MNb@I5lP7R-Xe?$o7N+If2KWx6U)BY`RP>qedEmlD59fa>ny%u0)f0r+yH zq!)Z<1=V;ja*ne`VcVwVTuNEAoa3*taaSSS;Y>10R*|xc+}1(0y}geK7K0vvz>&?S z3Zn(Dseme9O%EMo`TgOQ675c$2~Z&D(>=r4*##GlmLFNst0Q+My5@i|?pIVbEmuP^ z(ND6<+(VfW>J}y^Y&8sY1Ao;Iy*sJmyU41mymeoNVXFZ2dUW6_0$m!hrgE1?Meg3s zc4=e-dgus=eXTqGo;c>33)1^O*rm_09is8x}&1khOAP^WUusIudgxibJbm@$5)L$GhMnNUB+nCo^;V+&UfC#V`HTM6V>A! z7dSDYXHlm+aj_H9&Cb~<42ZBe-wJ>mw+LhK4a$Zsjm-p2B8!M`RVQEg-5dK7$hw`#= z_8<4(@M%?5zOXzD`p4AqluQPhuGvuq@2isL-Bzu5BxdD8N&-n{=B4ifs;hqCV7T71 zvx=MrT3fid|3MF|=kH%w*Z{9%SpSt&A)m`gS?&It98k;KyUv`OycIBTxKfa^qXjOO zDOH|+;ix#lhV0nfic-jBXWqNrcU@n)a0Cs4yp)pAj&lJEC!m%)QyAf?N|6e{Tgbyf1|sDGwq!spUrs}G+cY?zS7b?%7eYgPwS4JmNKLKMb$$91eMYX9_ zed#uJwB~@7FXWVkY*T+F@*LM7c(oc(rT3-|;?xxB;k2%Y zt;t+rv-jWcZ`nH!1#nX3vcU4npTEj}3#j<@EiCXow(d{S;4G6)qnjhQQ9Pz%u=TVI zf>U13UKsn6?gt8@1X~J@W*K9-r|ee)R%x0w{rkNvA<=tG9vv&B3+eP^ z(F-@Q)_d!a3C7@#UzDCT=DacAz&Vdk{ z{^wVitSMD*JKJ8cyHCy2ATh&FDw0D<&gO-|a(gnM6U@PrX5mRc!RSj_AiHudHwBT7 zx93w5Er#Uz%+}nHE@5Pk;B+r@^20Pd7lZO_R##O0mnq2sjLOrQ{hFC7J(<;tf15?B z?dSRv?V`h%qL)bjWxD5Z9>~Wfh4=$kVzgll-`LaoA$15}H6x~e(g(0PF?wl~KooI% z8@Fgi$tmev%7I45#<)Ypm~poHTL$)XQ#bKXeNbZYaSGBF~&5* zaQAyoj4nP3uS+G`i7V($a(s!wdGR!ls$H$m4*D4VWQTmHi|;#?-fFiq98X4Ci`?-< z$1F+{BGXTX9I=atIwd^eX5=M1jxp0DIKcthq?kgblguuPPk!?^+z3iA=YE1Hw;dWf{EgA%m2cLBc ze}?w z9&uHdV-^T$zr!3Dpr%GDSU+WY1{Ce4rE$X7{o^bg(eX|Kr^WMUbT3js7fOBv?*L0Sa{gvy`H7m&7jmgwHj_(P^wnlY_V777T_7W6 zb8?2IaWa}9FFCnFK`PMc`bb6R`B_vK;|{m%LLRAwY)%1@H&ftAO$}I1OnRthfp0`> zw44<>7~~rG6DNa^CaW@r2NZXe7Gpl0$o*CrJ-6Y-$KI4tLzZmD2*66*n=%i`gxxrH zkpJ=28O9r=;AKJn6MRXiGYAFFQLQw+XbB^*&0NHRd9C1V(~6a+wpg00#d2V?+@S(r z`VlMucRH~NatT`ys%|ZTKfxK~%jfcZ=XlwZZpLNzXyjXvE;$00kLy_eZjRZS14mx> z?YuSjc3Y-Rmh^6|q<2HDxwp}e(@i8gABiy_jv#bl4Drro<-$0dbU(x|Iz+ySD_mAh zVquVOQk?1@GPp~?(RV{V!yM~ZT1dUp#+OEKg@vFFBQAOoSvv1`E<(@}6JszV=9;^d z2T;fg%ezcjLp*0pH<`O?;M>Au14apkJl3Shr_|y-cLZr6Wff0@cB2Y;w9Zw;{^gHt zY$t`TuE}*$7#0fsSVHG;>&D=e$L8kD;yQMLjTndQ5yTZk*}`?WM-IX0+M|&%;-5Qq zFk;GvYg`*Z8?a?fSl`>e_98UkI2&nrDT!0r)5qv+g*@m%4H23LsLk9`yG%?eF#xf! zNp+%waG`dsi?vOaGls_S`Vc+70h7Hg#l9{mjt^0n8#n59Aj0E7Xo>E+EqRZN?QMP2{G^Xr%zJy4#%Nv9vM`fkVWhn8 z0+269XO_fe!!SyHV|=*>tNSB)YqM%GxR$<^!arMvjk4>jhxK5!GaUA>Es4uD0`@)s zHurLB4B7bC2MwdI#Z8#2=Abi#y)%v?MJbK0hht;cM`;**neI&zAiG|4y4M850PQ`k zi$7QSUq+i(b@Q;_F)v~Loa>+CJPm#Dn$N`#3?^Nr@``;B%Hiwk*C`~8FU8`ZM`x8y z){tNfO^0BttEkV9IQG4OZ`~$5D>i-s13iFRuRv7a5XX?w4i|{oZ)`iHhnmBP%VQU` zW`NjaOfD`@U<$7{Txmr66ZrT7SjDrxhQM7mQKyqp_p*bF^)s6=TPg=Kh!+j!>mt;r z!zrf~2c7=)SnrxAENNRGz`)_5i7mGF|AW49vCV}t;2x8Vwm|D_>ELTD=MmR^wLZp& z#cV#4DWrXANpFK5sVD`eV2-lhq=cub=m#@f$VgeKAbXOwD87hO4Q)9%A;sbdwt;`` zYy?{Rdoxvg2_yZg(=*PrSFoPx0*z+o)jv#Q@ES3a=sJD$5&155HSp4RdEmuJR`sqn zFrCW;e-(ilCTH=cQ~e zJ4?^|zU!*rslao+-{+5ZxlAsTFBJZ+e_Xz zGcI}G%yG&4X5LHQH@CgyeKX^d_stxayl-xG$@}Ium%MLobIJSWHkZ6_=D6g2Gv6ie zp5Q*Tj;Asadc;o9i?j3nYw$cw&A+26xm+IYy0hdolAnJ+s8e&O<$hlun%JyYGq3`B z@$+2hfcWhUM7}iUD@(e$EJ@XGLXlNHE)LEqu;*hT3nAX`hyxmL5(9B!Mu8kxcc8?vmiEG8j(Ahemf|Zio=(c-MtgMn$U)ybxhG zjv)T^@zMe#r8qSbK3g{y!qaI8?7|(yE2=-LoAt?vem?JU*T9a1#=JT4d#+W|7sH2o zY~>b+)-ZXR=v>^~VYi>&ij!x+Rri7TSQ=v>WC}PjVSZjuIobkNqxW>%71G5^T4}!Z zCT96wosu9@iY)r>&nWqPCY755pA({_n$KgDfNVBre!?ESn3~sCQk|nQs{ZHs+c2w4 z*RA+3^Ow28dh_R-2AfkcdX0Fl`arHH4%nZWj8sS|nL^&agoF$$%tI>%lgwu%MPfl8 zo(7a=pBDOyfK=D`{WufBK1N>N(B|NpT%#Hn`%*l!R!1N-BpA zp=KE)-)B9_EOj8EBJUQhePJVvi5O-w2ZTMZqza0D|J|KZ(;a3>2rQW@u*zz=72&1h0g#yht-v5N^rq>P~WVe zC^<<^OXCqN&x^hmIKMsyUYBk_3n2V|o;wR5&(jPE&+K{21X<#z8<4F9b5q@13cT$Q zNH>?vG#_p~xFEKMt@-=6DT}N*IWxN>{Y<;*PG#xu&H9a3kM-IU`(Bx&)z@ z@(A6JU;x8#7nplAIwzf_cUS$&;N0-*Eb)W{Jx1f>7kdkO;(w`j5_g=7OME3M@mGK( zBbg=Sze#>bs-!IH0HO>7n-{^bVARkMV~NZ)Qcy&Wy+l6NnSP@Ey++3K_(?Gu*J*V5 zg&6VQNiSft)9W?8upYaY5@9Q>{uqn(#^Rc}nzH6@Nf^t;HpJNTIsM+ki#B}upevxF zNx)4O+0O=JT%f_ zwttO%qd|o;aRaR^5 zYIT+Utk#PMmD*9<`6?eo*%^xNvZCrpyO{JzZR8YRrm*oG5Hkj_7^&c15=T=ob27KR zfc@)I=L+xi9T>|R9&&|=y`F)PGU{~LIFxNGD8*gYA&9(MZ%sEub%{09w19)(`t0_# z&d3h<`PdmP7{%A_F;zia?67rjj4n8=XEH`QY$b-Rw6K-*7x!kj&Y0K1+SBnqd%{I( z1}lZdz3FLYtmEK>a2vflsV2AsIm3H_gd# zXpCT+7$1sb*aq6D6Gv^MPX7bNx!7doxOx&dg^IX7k+9h!CZBopk#7!4I0tBQ5Y!&r zg`Q^9)?DRxGpx|PKx)<22V?stj+v3aX0PrPG?lH*`q@8V`>in26H{4T+NjbCGf<@$ z;(wz~+A@KjP2Y3aswLP^<8O>^f<+>>+rJD4nyEeZuSFYUm2W|I4Yf)n%}R6aG)7$s z0SAk;7FNZeu;hS|W1*S|dvVt_Gk#>?JMdd$1iNL=bxw;Zq~3yuLX7L8;O{3>(JNQO zq=&6^f5>W0@lC4bm2KraDTxO0-WN2ksMQJ@hCrjh5828qlDRT4^#ek)#q6 z2fO2f0W!b(6hLO<&n`~7WpUE%;^bQvC(kY}eaqs~Nrz7-%_8H$$w79@3w#a0aD}{6 zc7|?kN(=g6I2ng@vwSriUoR6!@i1`405$x(J|uo5evW!huQdE^hAMRi{GH?ruWo_Y zL#?H?^{>;Oe`$Z+Boe=4sc%?#bLm>Tce5x2Q;E}NG!g+f|cU`M9Zc>2Y~o?XCtHcakiRm#JEawa8z zSVR}5)b;j0#)SUi(ccu(SDWdOcR^LQ?pUtqBtVknyd=xHnV}{YQQ!U0DtmOKl#)@h zDY+mooK^+Yc`sYs9;2L`&tS-CdC^1WPYJa*kH@PlaCDy60L zY#ww$b^bh~PM2?vP3`;~=jfyMMmO~{y|0h29|geJB|~o=gzWZ!Vh#0}|AnLgA>RzE zBV$ZGBD=E$f8uX&V8R^ggMl_W&^uSq_EFRv8XwsGOhQFF5NsAo45yVf_h+o9nfk?` z+PT(7p)0LpPDWbPL^l-B#=iCtTF}L-U#;n`VU^vGb7-tL>U`qABkVWSABROGD0 zpjTC6GPb{V>~iU|J}BuUkgHb7z{l!U+#DN2>m#b0?C0Pj((MfBxAq7pU^3Rq{-NFJ z^m@*hWi@B+u^YR9lr8l6Fj6hU2sSnNJVAyTXynPSly|+xpB(=1qjz3;LY$2M_{aV% z-G<zC{9V|_amK*`D(VCr+q!uM1_o$cvi~t8B8(f0>_tF* zcb|)(Smz6!i=YbcJ{JLDy%#zc0rlNOCs3=G^Ydw7gwq9iv7PYOH`PU~Q&uE*AV&D4kNEwG@H;(dMAPQGS<~YwL+_eT;<)GSxJIjB+zZK#PS0Saq z|72PD{8g4_K*jIx=THzzPD|+w5Z1zY;U`f*rFUnyod5~BTrQJS(wW7|3<34sy%SC_ zAtfh+BqAxwLOT&q-+$bbOepY886}rX=hKq>aq*&PP_=hw*UmMKM=Dlen3POmq3oKk zwmo;?)C%77kyc;o*Lfnx3ivx}K97DT@)FEEka43sxgxDA@oQ>z>04Hpo?4Q0%aWv~ zKh(jU!!`_V6Pe@g)wS+iWKGis|T>+Mbs>y&kE~mH@A1Fr{Oz82pTNXIgTC>7bv$2NfA-=M~fG z+_ai>;=s0f2i*$MKTRD7H(rQ4{#$Kyx{iODXFd-!uH?VX49D#A7VUjYcs0|PiQ_z- zyUkc(t6`b6vm7gGno0)WX>=U_N&7uB?Ydn~ z+Zm*}9a-C1;;Ky1i3_97`8YZ@E-w1o5ghlj&$0E*&04}T1OuW^+F56)o3AdIU*gwC z+8Etc#m8vC-lwc)xX*nYhj5%>frmbusB)e7UTC(9Vq2k>xh$vIvYj3{r$et{eT}KZ9rP04_f8oZct$W-xeL?p!#VM7W_Chr)MxbgRdAO z2Dd4OGVFSx{9C$3LHs+0rflUw*MM35`9_;Jju=G%bM}WTjr~e+_k}I)qBX9;Bo8(2 z6R?9OCRWm#L8|N4C$#|?iMiUq5hG*cgEoNa8?7R=WqmCZJc6+n2o@!C0J3n2(NCr} z&%mVUUYZ?5DA0R>clrP8jb(_&{63?0zq$Wi{G{l&@t|<0ntq%8(mm5O*gFUb{NjrSpy z9efeh{B%y7VhEep8eK2J$#5OEpexL`TGVmPoM5b;t?m(nDg1QK40XPrYRn?o?ZJqc zCkB3otse=y#l*;%NtN5{F;AeCUc&ReqMKF27_wk7^j;cAT4b5`g;kB5PWIw`JfFE1 zN$kvWO=nIiK7JB=!y0) zQT2Repyz6R6rsyO`enny7HAh%32bl*Y+?-XPV|&K@z}ObqRmYcH&?R6*l4?|7yhQW z5msI7_gbl26+WZt*fN-l0h3|$42u~>z}jp7DP#6QDHB_bm>>X40NuB3GR{D`i?QfKPGON6Tz<#iy9kAPn{>XJ;alW#qBWuI+UQZ&&WWsq z*u_mJ7aEaL74b{$GqtG*%Qb9$#77rr4s?XUC*UJ`feudTXXFexWrlib3aFPHnlL-# z30EGZ?=zxx12~rHJE_^OLfN`lRYf0GODYr;Q=LL$s#CxwBN)fpXJ?Qsn0e;FR&6{K zXZcs-;!OAgd=kC6YAX$3QheOQvD#pOc15rxw})HpijRj+9r&2tg3^lMsT=;u{dxLq zxl8`b48##*p?k%irGJ{51DnOi;Th!V8SD!~ik2dT)lScwr#<93UU-(VugGA86Q`Ze z0uk&AHre$CDWhAi0Uuh6T0KXngmv3d#I~J4!DlU~F#Y@2#~fwb+7K?>hc?tx^sb%Y zjzqp|Z59uFecU-~8OTmIct!_u%(J)~X5l44;I@8~`1;VU!q;6hpbHOR#YUZd7In6n zXCQdyr{0ar;<@qCUOB1E8*-^LR2`TlAy~`wPdA{GV{mJT2Ec%yUzeN*`waoY-{<$3 zcMAJO=VnK;)9_!ZX(^ReQg9|`)TvmuJHRxY;aQ4Sm62wk3+GEnmF1LjF^Z}bS6$Js zE;cVlzRSZO=BQlNf1a;SI(w%g9*sJ~OT9}TzouikeS>YQYCxmEo1@V`&e!B`E=CVv zXr6h3`j9Aois3ovD30MRX{ASOX2>)qgC0m;r+B4>DT;tRB1RqMytkKp3S$ylsfV!W>pE1|ZV) z;`qD7;vRv>4IghW^|2P$P5MiuH-zz!F7$C!H-T8OpLCf;SA##!*WMNNBhn7%>I@0` zoP9;q0QVZU2o@l|h(cIQ9oo~FaD)gF8=g&-F(`RO)iGL8h~H14zZ*(iwX)G3-}LZZ zxWZn#FkS~>JXQmMJmlGynl4BMGy}+`Y(D4_y8caN3k4}(@Gv{i&``9HPp8uPbN~zX z7;?%I&=1J%Ox*pa%o9qM0e3sW-13GtmH)gazlmDRWdm_o3S{}O*N+=Vou81%-4ph zWKt49$e!sNhzIk{l5vrvg7X9_SWDM{pa_i)^xUFl55!^J+Gz9`7Odr&Gm z=EJv~euu;jl%S1Ifc<1Dw&O9}ljxF8o&}=3u^JPcYzH8m(GyA4r?*YIxoy(S(&cHX z{6y)_$eWqfGWq6~$umpOs`__MWylyU zF(?_u90J`?K<35*q#H4AZbW8wBeFLZa5F~kMhsB{_Xa~Fb(lc zUcu|Z%(pi;Rts9O_r6BW8~LaEuk+nqYMHfH&hM`?v#OEo$5AV`j;|i?8|V`c&auVd zAo4FWo9#mVNu8DI(7Um0cxY#7$LrEvomacq`& zm0iE_2o6%aL@ma~PdoR%eM3?Jn#@wgx;buKV~w3?N(xoj#crORJbMnglLFtw0H zCNhRz_7He4sMYQdY{Xv`-I;t?~-H z-;bYGTBT!^!Qylmr?QmjX`@~$H=C8(QIu;90eRX)@8N3exP0Ph6>XyCjXK7F&8nr= z^qBCmx#LFZbJEQi?x>8s;kZ7oAUYuWF^=O!1Rs{6@xKvx^PbF2bIJ3n=Y&?3SYeC z!YkElhn2?3mJ5-G!F6N80Kch}-?}k*$TD}`rDCmAuDa`H5p~yC(HGneYm|*xrB-Pz zRR;Q)f7fA1mN0-=wACoqnw3_iUJK!?XnitXfx^}Oqi@bGqWG&+X_Ttvl`eS(N)V*o zXq0QM3Un;SABZuE$||NIuyRs7Do2oAVjj6IICZbyZpJZ*9*2yH8Mjhv<##O#po^FC z4`I%*r^O@nuu`R!c3i9-l@AiyN9b(lfJ1lY9sa0I{I>Smstq|TR;tlvz1=94)x$R@ ztNiC_wfMf=KvhSyrRb6tc!mFtYM;CPiHYj>YtBzKqoyzzHF8jgdcU8bXVtQu9#gwr z+y|!7CpTI&w3S|xT(A$wUWMj=la#ygIz&U=D#E9!w?8=9B~6`;%3&X0a|F-cQPpmB z*!r;x`=be?(kLIoLOh1O2kZAuvAO}Y{-|eFk zBl`^Yt%zE34um=*3F^C(>W+YdWJEm$Vtmqk7?`tNYi$V$bRt#Zw27Y7fwDo?*74r^ zdb`!$hf@T))q)enPI=t?tquz&FfBsl4}T?KIiXrD&=~qoHe2n3O5Fi$c>!vz{C4f+ zz51qdP_8!#w9zab*Xvaglz3ZtCw@QX#T>S))h4v3EYul?9@`)5rD}zU6&=4+I)_y2 zrDBzVtl?tyo>tpUnDL`p`*gj1dep!})h=&$zYWJbk}%j9Vn<=%8e$8R-jUuF096>j zW=kzLVbwgE0#_>sd)_kaZTr$a!T!U)xydmO%81X3+zEiGZ=`KExY;T;paiSEjL%UI z>(v98 zPHHsSh>N2|3zCY)0v-z~O&B5A!gku8w_ZEtiI|J8S|A%`I9^NTA9y0ri}F#u@!lS$ z;+uM-0zc{v7?vkqEI9vcl;_^WMj5u0Q$%oP*m`Z~z|_n<{TWYh!NJXlMhzD|Ei%~h zdsCCAq(I$If>T(>rzEmPvPM*iFX76;D*J4fk4^w5WNH`qTpwjnT*2$kPfiL+T|s40 zUBuMGVyRNBvea`@Adm6Ff!ZA`lVU@dLH3V$4Zx(I#yPCLzYpxw+2ri3udO=Cz=f}% zQwQyHQUH=+K$M(4n5fIXYo#&H$=-5E6lYeucUZ-TB;wEL%{AJ zQ;|3*9~RrymIeRj!g$DASbwLU9z)$IR>1gH4kGYLUk6Va%3-zGJbnX%;l}%BXl}!4 zsamuRm}W+@H$@2F?0igN-2wRqKB96EHAeb{K0u9pK7EYdR}T26we3P9(;Rljmm3b4 zFl+6T@D(yxz`3nEX~-(p%2l+|8-U!*b5)?M_CBo4&=}M&%8X zN7}#Zh%?eZc2ItX$=7<19YmOix3K+i(poU`<%4a+?wIB$1HD0vj4|mH@_y_W4`2XJ zn&Gof5BSL|Gir_e!TTjND_C>B)!!?pVT7sw)Q21oj)9{kG(OzoD-Va282K7-RBI@j zsJ0O(FRR#Y)e$e;nT!p@cw)D{1ygVY#B2Y(jr9^nf~rdM_y^*NP|QC`-YxO1xPXYr!WvacxY-lQYelYrdNtHiP4>n;(GJ6EXR| zY6Hh}SYMd{lXq@xiZFhV^Cnv)lFwHI%3m5mkqKvBVNsoyzd19-Lz@=ywiiI<^G!^L zOyyt&1-(jdOWY;(w>3(O(+;SA8X!he$kwX=R<3p1@@8*_>># zQ96dwfCnKHsgihj(sY%q#K-QF-_C=>_t0C_VZGMEQ)%1B7l4fEY8futHjLGK);f`q zXtkPe>XlMC=`Cc#;uFgI?Mn3k5ygt$7IFI*8^1Lz&IWP;_va*Ry8BOsS{s>@{G>He z$g~{b8Gw;c&a~dDmC&pLZ-}IguKUbO;}hTW9&QiiA9uShHl$Iu4!4)1@zqd! z{p+vz_ti(^bGJ7@-T7bTjFftXfrP}Icq;>pg^JI~R)07%La-fskSrdAz`Hh>4hppe zB&h)l^%0XTaiQ`RU#o)%iR}u*FZ%J&hr_smgH_j8a8X3&H|$?3UcD6ItbXjn#!Ug@ zTBUZh!vIhKU3p)6LViPy&;)RUmb102Mwr>|@#{&vBbDw;R=`b~@~Ku}132s_WX|iH%!ogUort zg>?08<)C#OWA_E*5&P*B#N%@1=(rVUn9Q5@u7i491QE_U?W1r|>jU*l@0m^)=w!kL z5uu|9EgRSEM7%3fp+_N9&}@(T+ja_!1S5X$Ps>rQ*9N+YI&x2aS+Sj^@-c}Pk-riR zt@Qr($Z4Wis7rM1OBN07R$fj)b&6g4E6c(zVgI&iXJA4+iM3=Vh{ZkfraI+>{z_PX zTR*Lz!qNA(Qah->r4umnY0xvrlb&t}*=1PI^)^r;IN)F`4wm8YXvzr@0s6mU%4Z!@ z69)VgNK4}lj0WoCYNL)}MP)3Hk=;r<{jZQ+?~199@gB*B^YeM#Q(fg?8ID$6=sNI0<@dDDR<7`tSle-0 zP+}}HN%~8}&V}|^9385H-Faa45ZbN+*Ss#`6c0`+wWWz}b{>gf$b#qb0joHyo2a7Q zyLNCanV{7uzNeNijYpkpR~bk3D)yaUO(Ro$Vf0}X?0advdnz?J^T0NAJf(IH2ji?M zsd*zQmImabyrP>xIkYV|9AuCpNFJE>`4l7@XAO7{hUF2kYGWrI$ZYes%Bh{cHZYnW z^kECg2C6#ki1i#c%4Ot#i`6K`@I;=s(|2acS!fU72o0;S2TY2^3tOT|TOwlrimG;7 zqw3Xlk%?Im=hrdNFGe}+Un<^EH`i3Qy^2E}cYf0S`9?~xeTX}fUsk!lRX{7{`R6j$Ih7&c&hL2Z>~3A5Jvj5Rj(ui-29pY<@ejyfiROZP%Lz&evk;xE!|pD|-vwhsq9?$sys6zw!Hx`r8oq*!s{v7G)Ap zB4iDYM(*Bb!HL~iLbr{3-nMzQgpPiLK45;`*4s2}7_q{cvE6`c%v6OW6v zgC-=Rag@2|N!%|V!w$fvVcb#eQXlj%&gZ5F4R3)~jtqQ#@g^OX%PmMc)U@%YujWc) z1uND^!U6=Tl*YmXIxZIvqBZ0s=~RrJl-RBY#wbo;UU-N{Nd8F}MfPe7l5evtaG8uN z{P|`)#uVnJA?~w#2?xJiqw58gHs~+YvK^FLhrsMrv0vP;z*+oWt)Jo&E>^|6Q&_Zk!r`+L(Ag90nV5w^aj%}ZZ}JmP8BKhw z*z$Y>X0^QI1s;|WyxhRCUaFQ4Tk#U?8=%{7iq&>Ga$*TOtMm(od%s=!tr@2;{w%g; zC7sqQwN{gT;wTZTvtfTW+xyK@qq1M#5iSMTRMD#2bHK-zRB}J;eoJ z(Y2rl>#4gTjWQ0wfwgtFRP|Ep^cosE66M6utazo>J4hD(Y^y0+*wdXFkL`h@e4T zrwn``2z4D%MKaoCg}Q<-JB0?#!81%?@3J&cp5#qSO+|q1sE+rg`lzRkDg*4rWA|)Q zUvV>IR~}QdPA2`aKJ07mrai$bPGDp!rvdd7d2izNf}OI1*T2Qz%FZ=BA@QbGtt$o; z8&}z*A9DTb!TW7%3M~+Ahi{p<(`eUd4lA{03kSb`=$yfiplIOxP=K@u^eWqTP>(_2*slXG!=$NofZ0!?1c{y=*YU0qsN5dg^-%dq5!V&!rZA)} zN`cjOES&q>G?+Ep28*)_Vnp+Ot;9-bCQr(>w#Ah(GH(MKMPOVvoNr*v zO26&b-)%aeW*M*FfK`qa_wmMy$Yr#1W_;8dcpnnmFXPZK@R`;(J`p(1z#xeLqZ=c5 ziLAq;c$1C-Yw5QLNMKhbH1b{t-nb6q(`w;U9j2{M20cSP6AZ!EK|J%|j5H6r z5O-`Jf9?|L8p~B8y+VjM8$jk^S&K*;Bh3WC#f8OA6c-kG9&}-CS<6nu+u|aq3v-jH zWw{VHnOc?$FS=iBR!SsYN9Z{of5rJd27QEqoU?Si5@x^lVYSk)DE^YzPm;b_y4p7` zF3^-Q0n%X$MWbT3YfJ{?#AU}k?N7`@4Xqb76Ti`jSp44C#vSWB3E#!ul|HZlYgoX@ z5I^_ze_EfL_&G6kG;g(F;R(O|TI0Sl_-EK^UY%7oFAR`^e}xlfGzMv7{OiZ`uNw}ArSG!(?gV$$0TUW`s`dJBY7tq`lX9bI z>2smSDA7|Adp}T_{-c9KR^{9g*V16p?}t!_NgrHrKWm4T8crJ?HZkuvRKb zOljo+j=lFAmk|O<74^-r)M zvYysr!-Ic-`jJ8ysbT|0Qv5(?uL%u{Yq=#?lw^=wci=yxDfjaUADXrzraf`bovKG-@aYO z$7)N*^E(lNJ>56)s#?TZvkx?KOtH>BnZE~W0U)3^G(aHj)yLdr>hJonXc7cyX@?DE z#I&q7QTxDVS&4br79ln_v~hvs2JNcgB$DdGQ|3!>-|{Z#4&%xnvbe%um@A^avwpmf z^B*Mftnv>g1aIJFtLg^1zEn6U4_8I3_aT#9zPyjKzwF(He{d#*eW1CZOK>pWNgS3|jN;sg?%DZwkLI2V>rK~#NSb+0&QmF!0Q7&ye1u(TB6_rS=1|78d zV&O@`=TN^W&2a6)VTOrN-gtnp)`mxf3#l+k>$_?rXg@EA36a+6F$^ z`mEGYp@0E*n!tXR?Fyg=waQ8RWQ&2T<=PRj)f~9VfUIwUu;M!b)~ppz?RIX7cos0h zfUU|2!``CDXb;kN99X2Q9J`^e(jPG#)+KMnl;rJ+P!WfDM}m)*dn7o})oTvhU^9Tc z&|wA8@zstVv0iaR2TiL0rBcwF{CT5s!d@#S^Z^|~4Y=I02?=6~PE*k8hov)>GH zm3{DwFP_AXZ}H>(HfyZsVsFO_WraTWg4taiWqA^u#xm}5jWBOL5B+eK;U%mf&I z0(R2*W{B$qu(mbbKZy{A#7ZGeKcN)*W(eCX50ECjc7e6XCcq12$T0$g&|Pjd*IUJX zpy&9iUtEse{FiXPuq&>62RuM0jih1Y;IYq^g zONUv;tq>z?HO309lii3~-~T&u%1$afYj;G|7^W1B^8W@`;-NPLIyh>fHaj_1g{1wX zP2tPBGF+yOm=IFv)=$hwvnQ5x_)f&fvDor_6N~*4nU)uSc>yw5??uOa(RpFpMEzvG zz{|NO{%lp!1tFDvp8Znm_g!v(z0b!LpQS3L(AmWmh@agbred-$CI-bwX_jfL zem6A-salbxQskqdcQp)l@?SKgFkL+;TU7}PB{7E_^GVJ@=6M3q4LiJ#!p?E%O;wf4#OLA^~^ zhIl<;A1)Ep=b`7)Z7a%%3Y^IRq)0ltSM7A8^7Yko$%(VQ~zRd+-x z9owk4(MFO$x0i4x<0Z~F+JK#0CA`)XulctfFjrclH?c1HzC$5u*Po9B*f@72P7>FS zuM{TavSJ8j(?PKX>3}ww>BqwKcf&W4TifN&#wKq$w1Kv=H7uZYO|iZXw^gfH0q z>Cyhcx6CE>4+u!x78v<=dIQCz#F0@2R-WEM5o^c7BBtI(OCA|?uW93L@#SHk<7gMQ zSJTFyjM0Y|e5rs?_2L}HLhD&Vi}2jGF)&6~oxaLs5p{sNsv;K3G|5ju;VcZ)xJlA2 z@q1D{Bo1R$Rn2QtRj;lQL^nz8rllu~XA6haJx=@q1V`!vZP1G#V?tL;5oAE;QOUs+Mw$|2oZZ8XY6MHm80X^;o~b>tth{q}v@1K8~hYQ29U zbPbIgum3XUad7bJqSC|LhId!}C*tK4372>q$P*vA6UkhTCvA&KHgw|@-}GHqd{OqG zJ_LDcT{oLZ0XkhJjIz%S4(BC`pt!nrpvVJ4TSfaO@;S4FrbaX00V-Z_*jJO!C_j&8 z;m`hzvXiY!Q0{NJVYf=LL;{>+1l^VUmV+(CRF4vkZJoN1X%`rWwpzPBqJMb{+ypFUF$x~Fp zt2m7f4N(J6?`~KLlG6yDWJ=r68`S&*0$UZvgwg%PVezC=bp~YRoNnbds;EX$E}#Bx zr>rwj%Ym$P1~5ha-Bz9SyOBt>8)c_)W5XD9dLP$H$Cdqx)64Fqex|QAfohb6uA_&u zBoMn+O_V-rbG25h)c#&{uz`>HM`zvr6o>n00Rq4k!rfyF=kIce)B!~cuKcaei+7JO)m*J?cl%r2opmuPvkvO}RTVO!L6F z>gWSFd3FHxh}(2CzvdLcVnYCP&=v!gx+3to3kXE`1P&Iwz31sKt@M&Bs>~sKfDc2kMYrE)6TRO9xyD^KosVMK3FZm` zkCg#xtFF7p9g5qqAk(axwgvB zGdM9#ZLrE!J$V{4;^b*Nr4k9nuqRy4-rX)4VNQmwN8^Va8|6J0{zH!6gVR1R2Qtoq zIq)*vm1B?RAST+CWshf}+j3W)$2Extr7INdS4!4}FYPzYWs*&@pd6ag%D zoa;UjfrvBjmyABdnR*IOVTvg%Wt~*QY@IkrUMI6%(w^ox+kRy>z;pD|)$z5ByAz;^ z3dlPGGINbY*pF*~ss?9yJOF$(IA2sn?FsdKGU%>xBFVLA_AC_}!MhXFzt|@K{uZ9) zd1uqY$E#qDx#z|lcg`&AEtl3QZ|IiGVH9s+vUyx@v>a2M=C=%h9+%1omG+5{1SOuH zR%%D0z9YhV?_ozmtxlCnooiLLa+@TxN>WRY6C{JoP?8bsh+t;2-Zbn1Z1~FnhCSPtfj<}+7#MpD z81MjZ0Q=MXN8X3Q8+%~?4?e$h?u`hNSt|8(TTmqU%XTn zL#!QZMAaM@p+ek2=Y)2NV-4$l1U6#zOhwv;F0KHL9ED2@9%f@+!nji<&>T!8urr}@ z=!#@(ANNG1K_6~ktwW1_AkOM+{e`m1-w4?>Re&2Ws9cGqET(J96;`3|_6L0x-SkS8 zw(JHpi{Y&phl7#jayA4Vss@lOI$i6rLCqXzgv9Uk1d9Zho68-PAGF#7v zhUtl|&8*}dy!dYV_0G3*$^fk%wlVcEuhS?$@#xp7I@_$}>-DY{8su6`GjmL05Y=Z^ z*X=`cP?dlcB2mCg()M3GttQ!`DMQchE+yvium*0AU`JHhMgP5CeZ75cB;lyG2N63g z&ToAaD!xx<&UVZfCl60-bF1;ix%u?mzAnC_l=9FH?N05RB-1v}T#veObE3%czAls> zI1h9=W1<{Xj6nD)OqE7hVat4DL84XF=Pu-I5%(h7k``G2er88?2|(if-br#fk%k zZ)#U3MQ}bXg9SL2cV(g&FHc?y@xt7RfB5A=Z0%OInjnjEv(oOi7gUqGI*jgszyup&5V`z)Zk@n)2nMK%T zhQ;2C4_fO*hGpl&xKx+6tBDVu%Ayjb%49CaiiL2SU2D;T0BGME8Liec)n0(ER#`DE zT4Y10r1!=emCH#`7ifJRt@9D7 z7yA~f-l}ond&3N11o)1xDoq*%4U7C$DH(!69QNXO?A5SZ^+uJ>Q2Lfc{4rcFtn4qv z*JO81c{0dDsO`&g+?pI$;*sa(~>i@#=-{uoNTB93`mhQ@31iQ92V;*(iJ zk;W`nHoClf6eQ7nxzMk?8mp*XlVQe6o6Ixlxmt+tF<5i$?R=Yo7{ln<7fa)rYzdI# z>?YJFmlV}g7aC~)fZbirkETMNw=kMSe8*93ER89vj1EXO^DVLY4Fxnit-MyCU)$YX)X&PTQvG0m z_q(e)5yE7th2gYWacy_FQx}Wr>W!Et(a!!z7RMfk zAP6L~zn}!67)6a}HwYhdl%^hu62i|Opl|++$itw@cjoIurk+a>c8OXf&Z+{-NLe=3 z3<_fHF4?!%*Y@l2TkV*|dDUP;K{k|8;$bPNrMuM+CJHcv9_GI{k-z>T%Kb3PWech5 zmbw$#7v>Q@03OH6tnF{UfKB0LUsga(Q)b7jR8#`C4X=Cb>)NhdS`Jw2_IS-Ph`RS z^@-Zni3vx>p1wi9Bxcgt^@eI7G55f7|QUTwX_dDv7$eRG`U?S&R z&6>+H`W&+?HMeRt3w`^->Z0+0u*tO}J?`lj;LTW+Zb z-I~h(Hm5#F-+9p;;0v4ya5` zLae{EE+jH!ns}dM_|O)66Fg?v%*gV5wlZN#QIr|;`kw6A>rx@PC`#ed=EZud!#`R1 z@dGa{>5tQr^0-Lv>tVRUa`<+@l3J9mQTN!=gMN$ZU2=<^_*=?maLD_Jb=hHSihL(} z<_=k{4E?;o`Gls|y90}RNa-D&-jVb<%4d*5EC8OIMYiY*(|k^x6BuLR(>j~mCfeauYty7BPEKY{O#dX&>7;fKHmW->@bhx>2tRaU6deG_ zqaWnqOrbaWQEwgOfz7QKbdH4*YMfg6W)yH&XV8JaQ&SmkuSZY{oed(4s;{?amF8E- z%jStK+usMn`g%JH=9~rxZ`i*3`IFz&yULL{Lafei+fGY+Hpji+qPD&l!MGfgi_NA8 znMFV@XJD}bgh^n}Mnnasg_U(rUhX=0C+4^gKW6z6R1@}wvNvhDKyvO z^m^S2&IvwWQ5Dzoulsh#A*45%vjG2+bljlDzT0IylBLtKH$XoM;P(8QyX!g~ztF{B z+WSb$<3&B^R4Kv-xfAPRER|41j<&K&m4FQE-w{DN7LcID$*~`a{_xY$KD>@RE!-<4@`?2J!lO?&eo0k{oyhX;9*oG>9O293}m&a_|BCa~*ZS7lmTdcyf zb7=8%Nn%)Xov)`^4<{-aPt+xoY|5MD7$!LeP8O2o0F!l=kYzZP5ORjoET@%N-%9Lm zB~2LUeZt1BxKW)WU8*Q!re z9zT5e`3i;**voi1YsP-Y~ zTvRhFGKy76{Ae_BB$h+iuMb8G@u4BH>ZIV!pK0WlTEH`&CJvyDd$lD23~+4^iYj8kq`0wz@MOm+Enf=zUtFB$L^x6E@c@>B#Sg zg!G%kTbl?@!ts^Gl$cqkfy2b=JVHmQP-Mh~(NQ@p_B|^Ki?I-kmZBNZ6svpsS=_dH z@HCrQYqj{CD8Ma+uNum?a0%u}pq0Ms^PrMu8;825OnYnYV)QL^OlC2O80^FJx{Nz* zU06-x+%h^CTSf(_@^4F&d*ZY=Hg?4!fb88zaMg}ZERDyqVz??dLcQQM;NRH0Sk&{T z*tD8mQw0jys8*|EX$3B%;_Q@^`o0=_T7CWs&9gb6MPb<-w25i2t{O#=5E1u*$TA@C zmA)^tSOr2su<~aAszvo8rnpeG>l0He8qhRWw+kNw`PedMG&Gge^r;?})hw!1KOaqe ztI+7+#N2Ax)afjbi;q>N$CQQtchiB}hf#}rYNZ-39dx}sdZRu&O@wbAyaoYF_l4O9 zPr)-bd*XWb8|z95G1wMUi&WGcT+?XgDMwm`EG0-#}2R-6Vu1*vb8t#L)q*qkEx8^H6 z@Uaf%rw~-UB!Xp0=^SmTn(JZ#-wP{TR`A}>=2oI+?*7bo_bg`sG!5m;PkyG{MnnrQ z|4cEW$=vgrAOJo$-QaK-2H+{D42i>QYymy;{=lgXu#4gdH$VFDeHTajaGXB9S1 zh>}(1X5*E1=v*y|Oi-mPc~%EbHaz7}y%h+T z6S|hfl)Myy$-=&*)mw>w&-6rO^lJ`&s3oniVfIa?rfuanDNbN72sn)p-HWnqXuDud zsW=v3!QyotsXR-IIa0G&GaFP*Rhg4`oUumcbjx8%8L%J!jNEuiIbCK0Hk9k`g?cYA zo>VVa$FZ%hr17(^#M?x@ZPUNqru{+O zi0_*nA|WcaTVckG5Qg%DGOyv5t8t~9Z>fauzc-mDJCQzrG0f2H4-m~hA4|+Zk|Pws z&4I%ZYqc;HRqcy~(N~&~7wlf=zyuvBpy8Y%Lk`Xh?B#3=Lf;LVhZ{tyGA@{GtlY(H z4g&X3v|kEg6NLWeei{&&+g9iI(V%OU@XgIo0d*GcW*pPu*+%b+pfPGEgkV{`i_-8; zg-xf=dy5h4jp4ma;WI*B3fhTK)a?N#M)*$H!HdH zROG<09??Bb(2va%I+MklRM8umt%mA!^~7!m*WWtd^R&xMHa*#Lh|_2x+7gEO+LBQa zJ~};MI%7b1e3(|F$ouRMNqv}Df6G&2<4J-AS09s&#|cto}~^$B-8#&fU`rUmR_G&&bCZG5eIHF$+cvwboHNmE&x&?KLBl(2iOVfE(40&&IG$gDAB@?#dN>{1)O{~g1|aLMd4WYC z4l#{33NzqLS<~%?p9?u7e->L{+qSwb#qrHNdi?O?T+{TFe=v@JDj=)*9U<0*D=$Y} z5l?igZ4(Y{%|La#&?PK{5WyXm^I%}>UD_L%?nKbYi-M%s)j6thv5m zteV?THUJ}eKbl;klDdPQL(E!U6~ht~z#le2p;1N=d<`NOS5C~XTYO1>7z$ZN&piVY zohC3Za!^-zp1|Ukg?9>(Tqy!}@M$IK1;IT_B+|lFwu*YDcuI1Z65eor@@eH^x^S`bb>4CL#e?YCF*v3&lg$SI&6$NeyCmff(&>-YM%J{de3c{-5M?&`*1wh z9EM;)5KahE%_%l{MmZa7m7Rl8Nz5Q{mtwUyv_M_MB+5LANUsvzK;@c^YcP=hebl_R>U$*SiBEvOpQ@=`FRX11$+#PrHAHPW)EUQuGr8c_{=#!RAq@ z_FN-;T#O#06FG;VF{&td3wb04gGIWMPSbWOkF!es4cL|U=VEIt0r(6y%w6hQu_nLk z3>P^C9#mkV3j+O>T0l8oOChRcj-zDtu%94ZLyepe;dq=uscQ|*f`Cp_nE*U$dgL9a z&GoSGHXrLz?qYi^fyH(`yVdGi*VZqqMc+;m`e}5pu3ypv&Lzy`r3QVx%=+r=2giVf z41~V?&{8RjVG#x0NG$2ZV{WF7Nfp zVUVewGHoB|r>kKm#u0t6h(WL%18+-VspEcBCO_zhC1M|8VCIkLr!?_~_?;7uGX@Lg zn1GKz8_obvj^_S&3gYY;&txS3QiaF$3X*e=sm{+Gj%uo)>0T%fum7oK!nVQO(Fk%q8~kY`B?t3=;u!JiZ! zXEfT(R`k;%your3S}iMAS*l!?T57Q+JCQVpu)r!;M&B3JO*fV`B!iYJm!%RD(lVvd zd?k7=oLkoErg|w>;%|j>A}nbe(S!|r%8I>(S(v~m3vVOhG{NC&YOls~Fib6S=XH~V ztfCP3d^}CyVrepoz+*X{8e&~78jr+A{ILC}6t27#hj0DoH8XZ@%qeiKg!^M;(EH{Y z)%h@<^EQcoROH56ico8lw-y?!U%TW+htbcZpqtV6(&ViPq2kH* zHOjp^nR6-ref*0renL6mhi`8>Z1&#U%Z#Gy6j7psmOCpqaIi`c$;SGhd?B?u-o(5n zFQTN)KfTq-MkX&b;wQ_sORnR1Ve`ER;io0=x1VdWUN$~3vF@uJrtJQ^G$FVYdYZEM zp0;c|?5%vq+2!ldw2sJkq&-|mR!k{za}5nvj=_8ct<5OApnTP{T}%PWzcc|bt?_QK zKEnm?ANfqhl5@|`@L|w(&u0%q*`H+Pt9{ea&%|h)s^`yZE}JqNM6~$P*O!exYgHP5 z{qT>l053q$zhp8E?a>FWES<{TUr^0)&nwgPkbx=|?pd<_pg|bUZdggy(aHp>x4FnY zLGIjXHS9O|NS5`mpn;I)r<$A5`o_~8v!4^R3r;=*K?exb0vO-5FliFws3MBa~Wl4j%lH?>>iWyTQf&i%S|hdu$08Mn1SVB zu@N{ZT47cMZzw5m3knhx0^_uKiGdMMLM1dMZ&$+!qXV-NU9V(AxGRcoi_#rhRG5}G zx4*h!I%lS@PodRl+lwm9Twk2H+m==jnReUlC4$0DrLM4P;p=_MDzR|@t)XbZWJK7w z)0$J_Smm$ZX}cM%TUl(1{)A|Fry&))IB35&qKvaMrj0X$i{fmks5U2RTrp2~Q(xqp zP2dR;d^VfZa|NF7maM%8T88HUM7@|=i1?8hIPh>?1OgeI+$0VHNG*) z4Pu(VW$@#tn#(EQg(=_F++y3rX0J#;v*8SD@eeL2Vn@A0Y*wRK~mynV$l<4Kvrwd zyf}iCbKnFe1vN?zoM<-FqNu+*FLoz}bLB9x(=dYxZMN zwmY?~ex2Z1hf9PNk+}tLBcn}O6 z%K))v(1B-!T4!wjS!An?zS=-#yn)l!?}QE6YN;joFf}|hTa}9vC39^_&C?dwqbhM! zf};aO0i)BT7<)ag6*kt6wzQd9$_M{%EsjGyD7!`4kps`dz0JjruY{%<$2#W}4)nxN ztXp@)S7er#RVG3%5uQqBg0?F0qdVI~$TJh_c62DJBRHpV>sl}uhD}jHtWzgZVmp=Ns1L zOsRJU!vf8B7z<z~8kSSvWN1d-EAQm9amuvCWR?BJ$lH zY?%lf7HLC3)ll$hSuRJ1$FTFjU606*`HE%6bI<*}>)Be4@j>W^vu1ZKMie73HAkNn z5`uU?W@P6WyFv7&#gBz}nL-fDS}PUJ)aEDIy7%h9xioj`(afWV zUp!26>@>m_X1||R0p^KGfDIKMibu-H6ceA>I&ddsj1JUSMpv4k=&$_1<=H|LFH9UtvZ85!ErpaVg1sw?HWGt;v%*+enP z?8oRRXxa%KH5Vr8lsxN!Ga~j&p@g4x!+FAAN%ZtZmTm^>Mp`B2RYaru)B0yiF@gCi z;~W;+GW`&$r9c=e45(1fIFGK5rD-LYw7NfCv>i>m9)?7E>Rcd9E4GM<>W;%ELj|TL z6xVhKL=@uy10lDKhGjsPLsX^>#(Oh}Bb~yfz12$j>`rNp&?y~AX1C7nGU|3~>bv*0 z*^@b#TSa9fFob8o{oAVX?0_g9gN9*fvoO4PMxWO1gnAh=x|cA)l^aK@L2CQhfwGXH z0{|utzM0d`rujA;!M(HQ8TAF@n{76aM;v@Xy>LUp=WM;He3dE`mX~k_491zd!i`Bb zew(ShvHNKS9tB2;OzBy$5DwI#lx$+KIgxBb=>42aIW4nGv$t--q32rbc&E}acim3y zqSAFc8yjp>y3gXCd&J!@8-M)>e;)tweiF`{{2Z9pzzzn1HG{2{upYD920@dFpZuf` z!m9xB2NoDa(zM;WC=tSK(wb@f-0r%rR|J#$`O__Sis9wOIR-}wr2K(@B3C^?tFyG1 zl;hDoD>!jmGlvJ&+5)8tZ;GQr42frITi@1lt?)gwb0AJU=BtS4MjL`JLU>wB)vb-= zBRC`z?`+{Bv!|fkE{AP2XfB`8qwN@U_S0WlcaUASGq5VTW5;K&LPDtdM$a4?CxDuU zWjO|su|Xxtm6Plz<&$S$U-Y`hne550?mVhIykqdVX_3CVGYHxbzPR)CbFf$5T9D$& zCc08@ixL|%u4#bE!fJ!(tJt!d-mp(R0)5KLHJjht{VgZ(hBI^^_$j%!n!)AU4DJ&X zgMN~|pfBzj4~@@^F8zBTKc5-jm-Q*3tY3;^=AxoO7R1<8BFTO9ORR}f9D&v6Z#|@s zd~STfe;<5dd_O;#m}1$D6b}nZ0VzJ3I47!fj1}d`yi;-wlUFH+XN*FGD^{>RmoKYF0u63~WonD=X@Kp1MX+=iP((x&SQ-s2` zFkws{nP<~(QOHiQszxg>KU_T2T3Ms5$;sKab~2C-T>i~NrRm7x(1UZ$u(QhKB*(3> zl==O7T!oywzfBuaQy_22e*E*KgcvogNz~$|0*5k`(vkTlx7eV?#@gkR3QQCd|^rTrr`fHG@(_f3F>G z6`7II&Cf9zJ!nSOZ1?NigxO;j3cMV=Fl!E-zg{Rdxz!i%M>IJ0+e3(o3vfzA;cPHB z#PrN!FWmh2`{0T3#P~k5?;8BM>xyXS7d`(h(fieluAel(7timmf4+PQ~>)?{#SY&LHNa)v5STDrV1o<2vTK4+L2Lbo71x)60rYV?p6BF|q*==!OK5vz2`y_Zp)pnhHxW)~DMClRi?A>pA?D-{ zDDY_?HiQFO(#pGvE~$wd9qlEl=ty&HeDBBJ#@nV=uCdY*;@Y-G>)q1L3spG!?W?hw zekuicMV2m2H7@%`yucL=8Ir~TGFA_;H)xE_`qE@7Cg#$zH+Y>d&3ZqCj7zhx`lm!I zOn&Fmbj%z#_m<2LV`H*fpz`25WVFn+KP`j0LX@@BYPc6~ZSv;}PzxXE0YmKD8cWLlDPKJLE20I_QjAA(URj9031_kbM;64RotW$!OEG`n z_PQ%24iR9(C5_qhR~Ex^T$_M^a9`8 zF8PMUqw)G0eWSs;pq^ZBElWC zm8G#H<&}RdRhA)L7sQj*AwGC7gpoZ~uKv{Ta3l+emsSLfE0mT4Z^>TJR<0>OV^9I8 zxlu?G-gy8B3Dm`47rkO@&im|3v=&N&{T0MiuMR`5-CwySy^p1>Y42@PIvz%31+Kif z{hHbF7vu`J$5uwF6YL*OI?D0qU%_RnzmnDUR`OmLYh`6#HUAnHCq3dOsXi?n?Z|VT zq7cOu8Oiw9mL%T1_P482uhAMsQDJJX&R%&>z#z&Khj=RYS`6PnS9?W!Fy*ySi-*T> z15TZ#SV+2>Vo~X8+Os$w=#1I7SJL#Se)f1J&+6HHkLso5Cu4~jo|Tflwb(_tK3p2p zw80L4!|eM+i^>JdgLQ-Mg>95DEsv zudt2?&-AyUp@U7CjN_p)Nuy4Z8zoi?|={ zs!lT^6$+ziI^3HEe+p4-xhq`FpcAkO&&LMjp~!@a6OF`BI!PFcX^c2zsodl(BvJNW zVG%4b;AKsDNw^uXT9>$fK6b(zRS+c82ix0o{<+!LaLavn<0*gg6jEJ%<@yWfZz)=0 z*l4NlXL*rfA5_$8Pux3Ozx}B_i|&bkVZUy~=K)gBXnFtXRQPU)p001$@E(2c7|L~y zA;9l1^JP66mfKS9F~qsX*ffg`Wp`LHYA!mvYzX#TMrTphUUgqH9yRIf6e%7yY08MHYPwKmFOOenp{&2+ML0KX@y8 z6?tY36Hw*TCXcx@WL{#44c z;A?tyQ?lL#>@?le_i(0aAVO0LHOk?!5Z@kafx_-1X@3rGS_}Sk?1W=`1UrF_EQ>zg zAUJ3rL1=%2SJqI|PcUV;ZNo!OWnPw6si??^Mw0&20ZC;wq+dLu_a-(^)iL{hWt(1m z+tv}jI9?RjGwLXVkAAmjvB8eP!K<;=90QS@Du$saQL(XV5;OY!Mr`j_o8F)ionlFT zzaBrts_`Q%aj^e>{1C*WIwMsJ1x_<0KTYJ$p4;9pfWZ0q5!UA8$0gbPM>MYo1kAtt zj%JI%SQY|81i9UmdncY)slc!sUmRnHPib5gJ;1i8WU&qSLO#QP>67z5O&?Kmd#-1x z9?sxdr|%M_s?+g&OE$(@s|76*C{(QZcw&(G)rRaE6R{7RaBG^N6oh!70TPa)T9s>R zCD~35caM4>-c?}GVtBz04ldo1HzYyL?kn3Lm>N}_N0?F7(g^X4i|L;EA-*#PP8Ukh zn9VQ~lRkz?8IjuB9?94l`E2D*Z0WZ{bI*~ZBad`L7`>Y#yY2r6>^{Dm|7`4D*3^!| z7rp5HKcD{j#hBvOD83z?uz&uSrh)!4GZvw)kObOxy#vQuyRdz1?|(Q+5b+TfQbfl2 ziRCDC2XtoHjL#wyV=7FY(b{v};j%&8yAbw-`YP8aPGoJ)a_6mwvMy1%7A^4TbpLmM ziRm7Jo>^MVp#&5zvG$hvC;tA&>FNcOadPt;CoC1(i?+Sv<+P0A{+@?qb^f( zmD$)%5~d`U@Mj&9zYz4V=&2fAh5z<1xe9-YHMky|m(i~N_kUr8_Lt~woXE%D5lo#! z%JQK}OO|W1LJ4HF#W&CxXj!6SlKc?=U8f@2&3o1EI6IEGm~0Mb0&ieloyguFK;U{^ z*~9OM=9IL^b5&AFhI}{C?xXQTOi~^ydKva&5Fnub}=QF$HypSR!f+)-US%A+4h|a^BTS zL21u1v949=LYG3&3;b5EfYzmxr2z6G8WIH3s&V(PAN}!eg&0#&pfe3wYU~E0y8!)w zC*y9lU9NQ`Lyyf=xRyH?RzN7y#dJ(>;!qNN?OMo9*1s}h( z5{^94dU*Umi-MmjMDFx(C76I+h+lIN*c|^3VdcCbpvL2eJqUdPJa$)uj|KP{0)S|g zfT4gdF91m{ehHc+fk28M5bV~5(oX!VQUG zVXmccjjzZbC^>Qq29y)|&?Ht~r#$*&bOsxONGh}N^3*ZA7zCHQwId190Qd{5A~a$T z=sr!rL3`^Dv^94vrxTn!s^Lh+$9W~_lZF%wr;>J-h4Mz1D^!-GTS}{p8U(iYe?U87 zhq(zuNzu`5=Yechf0d6tZX2kA0D?Ftj?HL{%pCE50#d*pSM}_See^i&{Ga~Ww|^}k zGpi}KZTNIk4nV&~01Kmu+Z4|>r8)IAgQ;s^J~4wclv6r`r~zu7MfH_AWy}%D&nxki zchgx*xQ*zkts0u+ttzgx1s%Q~P-inN#5{9YQb<3Ckdf+9-i07V)U@u3Bt>o&IG`B< zhQ_2S9D~EJlp%04(r6oCb>^}^wo3w-v2K=b^fi3b*+V!^6bUlzh#D(+3 z|7tCOxd+QV6z|QVQM1d=z2z$+WULgFT{3s>zIu6g*Gi$Gjf^UMeRtI|faD0;Wi~_2 zZ+;F;;`a>^yvQ6>irPAg`|zoLixKon_+#qRv2DDuJhzfpM=IRn9qj1oW1aBmyu=wv z2?nH!jN0e{cWol24Yv(?#zo}L!^jVuQ-`Qnh@j?=<=McHL3Ub|lA2;YapCJP0B3#X zvrKPQ!DLa5<%r?x*9y1=$^=;|t4=iEU?+oYJ;Y}dw~BUO*rfNOEUQhn1P*9_%` z>z?9a!`&0+F8=eHQkH5hZ8?=rle!I1v;DI*1F3P@Lp-*!I4%Zbo;g z8s&h#>O*IR$I1}~RJEJoZs-1@Pg+dvKhgL>>tp$`Mq+*;^kCV4ylSu7@7lpy*w#m3 zQ(D=bA!4-9A`PiZ8_?~r6#$I$`@`Sj4~yC5;-%ZhsE97q1*u8f!-~gyv4zN&mB%3DE z@w%Rp_|SNMKGw6s6A|zzC&zY21HjgW330@M!!s=aEu7TjEe#_$JwQn+V&5{xi=uPX z>ToZSXED5N`wa&uZ1o&fK1UF#@xL?=7hf zAVx!)8@#cPh{;G{?4*s{P+?&dka+Xm{y8Y(5}GJK(DKfEnkY9T5=KSO;DrkXqvf#w z#1)jKG5QRB*-cj}I1z&_USf!9j@aELL5eygES*zX0?rRC9?c#-dc$4IJpFf5 z=O()wUp2tqFl_VUoS420frYxfq%1R}Idd%Fz;SQsIG7w}RYfV`oM4lxKtzirmfJ+4 zMo)=cfP@jy-#t?|Zj`(%lOS-aNbJDvKj`w+S}d4P#W0MbGw5~?^|tsReB#QQmjp+K za+P^yCblL7Jgx$lH{zz9+K!Azt;u{IJsvAR0~A$-5B}?^zZg_NBxSr6G~j2P?c^>g zaKADOr`4dyWpG{VpG50x$C9Hk^g2q)xdJD<$t5SKYuvHnyzx#YO+!OazeW6ss#zCsZc$=;<74d_ z=}P!yaE3xa8ES&j`bR8jfaHK#Vy3z#7~{E7peCsN)h~o;8bT!{4lN2=JqU>LgE6$o zMOZ$x%FvL}?&;=3Cr{xLzPB-uNSLw1DlA0=GHt`-quo1j5@FB-^}*r8=~Z-PP{Bt* zaVvfjOLG-}LeO})Y&-(r^|+FDPgy~LC~r{|*mq0k9?|6cgPy3)-=HVyOC(%UqO2m9 z)c&uo>4))RSuO@6;6?ly&z>C-q!T}0tS;{@*Op(?zwPC!s!iQr92tYEU1B5bO>=nA zer;K&MSXoQ{=36Fdw$J(t_x{+b#G_)W12k06dH&mLqOINI^OTuT`ja07sY#`7VH0~ zsc2!LkP9lu5s{NHD&CohwdsYqyzSjr5J5^tWqBXff+lN!H0i|VaN$aAU|AC!VFo2> zGLHrpy(wo#aKsZO5?R6RH|&6gw)~whV;I~}cPQvnWjW;c*wkES#bKxzkt|zI>t38n zaadoXIRdAO9IF)66f=i*7@K42n-@+q5BW>nCL(ent86+(yL+}wT%Yt=>6=w3(XezN z@yZ-6$7_H?XdL@jY$q*eZu|}nJ(Le~b1cqPvK*~4p_!bKP=1wB%~36&fla)gG;>Io+Z(P`=9s)Xz9z+_J$!5xz}i_d$#@ ziI4N=LE6E*8UR@5;p7$l3=se6-OB-tV*7k-(Vz%a-mxNlk_OlcjvFB?A4=6sBC<`m z;1kNajX&{g?ht!J761aH7@`UkeSQhLz!z6g+|*fbZ7egid{N;2&hkrPKF{8Djbx+Ex# z(gimnRrNR-Fr;Izfau0M`!9@-pM3mro_isD;>R&e(VRTW#N@1e z3(mZZ)nT{<MTuw0FZY#Lgg#Q=HgsXTvSEqmk5LL zo!L^{Dc&DX^d zALFyc^{BgR5k^e7#$5#l%xGon(x~QJMqF|oA6~iKA#O%Tz{)h6TSE&@w)kPkv;ACC zB2w?#{XE>H&}i9(lzz4ygnVf3!bS!eYx&qqn1NE%(zay<99xnvM)%C0I2Dg5P--?` zhk>~zgKsv z@hsc~RmB1qyJAi~v-<+}tun8Hpu8IJ9JWen@xCnSH}QOs+cOD{FW{)A z%qIK5U2^A^c=RywnEro~c>G!7$-~6chl$S~CO&_d3}BeG5cwR!M6eqR^p3@@LcEn- z=eX}%M9Yi&ofH_)W&;k7#83{b^{^biZi>~O!c;Tx@pJ3?TA5y0tM}Tgf!#_%b;HWTYb-+2z@dm8MOUmTqqT|y zS00MUDk>x+Q*rfJ`$IAYGAj@muNv8b*A<^SdB-|uQ&TEaRx@WXg-#=W#;y`(4DYKu zQ+JYv+x+UzyfNm`m9m~^o~>}n=Tlx$n&maQ2+B$l*0Ofk{4EPMN__vY=wW_iV{aAf zv_4!@?r5h?yOp(lWe7LjGUWGKJ{msX0s=e$eD*qQN>ehSO|Lk zuzs-{A7*hx`!>0@xw*BOczBT#9gqzC`Ctz6+$IYfAI6>^i3i(ntYJ0`NR`?@INDp= zO;um6ZEhXq*{hhe1~6>3F63vJKDpril|C8rZ=!XPXbp2OXx6vc!CqSV6;6r#eA;aI zMRC0b0a4)g^Rd3mpm~6E>I9C=T+6)e<(3H;U)-x5(IVs;d<-G66w2PXT&gKPYGYMr z){bijS5^FUgdtqrLB)eXK!hDpJ$9hNhF+N{!<1kS!U8FgYFj-Tb1pRgtxrA68ZseY z-Ob%KhUzhY*EqR|JrAQIGMmxk@T}4gD_9#RQ4sJ)k%ex;#sO zDBCLo)AwzH?%A#F?X8Vkz4r2WZ+)LIM_KuV)g?=z>q$NkauOMk)zejwKn_qs-9cCv z=+%MOBv_SgE{Sm60ln7J{M87efl27GzpiC?1!>b|Hgak(FaZAZ03Ihf{RrC-#o zBzsjXc_ttk3VwCF*U6}Wc7C}*FzyKHg+OE(I7funhBR$bBoHt#rGn6R)3jz87Nphf zR$lzY*FiKD6?ZJg@w0#Rga7Hh-_ze8KfO}}UpxA)!S}3SSKz9kBjPW0 zU{?%TWv!7F@qrx2R+IonYK%zSd^zbV$reITC3ZHGL}Y(;CnxtfU)|Ziljg(Yt2^aL z&{{{4yup4B_<6>-z@On)cf!p_Ps8xZ!l|!qIw^~P z%4p!&fz>+%#K9e1ePe6ikiasKu(u49VD|<0=i*iP+w+QpGAww0W1hXhg=*V;u-+yh zhm$y3{qJ`Ub*VV(Mn~g?7Qz_tF-S}T)*|1rBouTLDvm6IU4i7BeRuFfUZpnMZFcQ} z#K(jw#p_0rJap3gVXJ3`2XjI2%?+NTSaV52anOsSNnOb32+E~LBF^+IyFFz~Ojm}D{ z(P0mZf-qN9NC|38+C*bSjr96Yru%Mx<|pD`)8Ykmr8weWBp2$_*7Hm)*1LAk4l>x> zz?G?$HciM%DcV5TQnxPg5%~49=#Z>Gnq`~_)d%bX4@o`8%3*2pMcu7S_|T*562FX%>D+#hAyhS zk;El!j6RZDV%K3c&6ms|dR|J{gtAN;J&8k|LcB-WP)M;Pr%ruztxI7lHDC8;d}73= zd*Cejd+elIQxoh(Cx;Vd!}gk8DwPmgDJao&9UzvoefV){M0KsK-mQQyG0j7-=qYS44>j?HD zz6594L_L=9K|S)|QdLpQ;*k6+M z`-xL;{{Q{w|LQ;eyMO!t{EPqHxc3bqLesgQ=m)t&gqZFO{`TMa3BP&!KmM=(<$w4; z|LK4Dn}7TF|Kh(f?o}bkl)G7)GHEC{nf<$e|6l#x-~7wJ`&tPkpYmNSSWtvV>c5cke&m#a^WC;a!p7b*V_1HuEuUH1LZ zA?jz8)rD8qr|+|4MZwo2o)slYJcLE@ati#ez-EqL;$AA>)<5kG^OAf-{s{B$zAb;u z@#5{tauP!zZ0Y{nON_M@##{(RmAZ}FlR0B`jmfVlPm!vLdv7f;*3!q51%=dSIl&|4 zC+BV7d!oOGxIZW|-h5f7t8$C_eZ;RkoDzL!nO>4DP^MevFnIzSY{Za&EIjSwuB_!} z4v!9A9BoyrC5|%^#Z6!r!Xhcj@iTkV&qZF5)5@t}N>o9!p<}?rqeqEHPZN(mFOK-M zODkuHGa&MkX7>znLR}Wyg3Upg3e6u?K&Lfxhx;#-&*!<$L-&#S*m+_-my(+1C7?DZ&BBY+#zy3D@7h>G=wWJs=XA`yAg49Q zQycI-?zP7JKC0C5(lekzOQAyKOVa0MyxDf>Sg*ae<0(Uk%=W>?akaj)pQI6N9c9DVHdn$f z335<`T$DU=^D+{|76Sb|-vGcCiJQIlutc66rZLzplW5B7_p3Y#*p4WCS10& zF;gK9EmdI_E?r?Buac<=J@%f`)<~sfv_m71& znLDa;Gk2)|3}SR-v|1myF9_!fn_D;)HtYKbn_F~t1T6nE33)prm`l-EXtXKEI;S6* z8xAcaR@q7;{eTJ)^Dc21Yifq(P)8}Tiy>W^r7G0l4fS z0+jDJa?ERU+=JwAp*!>8M3q?BFI6@5tZDXEo@bwR?S^N1!{@nYEBZ12tl_pq{Pny* zr&IWne+FO=GoqI)XY^ek&FIH06QVphVH4S~PFfYaI-+W`%DxLXAQ(ne3S4Oj!0m0M z{61vsGe}$9XuhQC;h=b?-WyL;&b%2ZtWM+-mIPZXxwEz}@pr8g6Y-zCtK-F0R=k3q)#QhMxxV5G#c3z#geb&)kDQUZ;#x6Y>GV{fmh;ir^FXb_1XbW z!xvlgM_b^nH;EfM*psBW&BGm@BAOPtPe@Zr{mJ8p#hzs%Fq*oa)o;RNaG}RfAM)>` z&mYd}>^im1+*r`) z$?wJE*uL|7@xu7t?07;Uo{&V4EB|U3>WfeoOEV;jOIcvdax6LNGxbJ?AF})x;*(jk zg;*2oTo4|QGdiYTSzKJbqzrZgetqI2+V9oUM9z`f4vHh5{{dW z#C&6$PQtX(YiAY=1`=jFyVmyXQsz>}X@^L^Z;SqXEPS{wF= zR!*32@@sF1pfK&9h`LQQ%rwo>$*Jun8rHS-p+&(3u>6zM3wXnI60J9Ln{QmFL(@lHI~fERG?Az;2-ln@EH}I5 z!(7G*+%!yHSn?BOw&)<_j#`5hO%LJkMB7Xsf|{Vjww>O#9WLAcsjzMT#IuFpMB7bo zo1RNkp4!GW8I>5Ow>_Kdb<8BRcTN(WR9i&kbmv_=H z2DE0>`U9TjXgIQBu>1{hUZda^p%rA_T|7)t9vrctWj+q`^lTsOAw@P!Z!1a zmf%cjU|u8mq^*b{#XsiUPuNzhoRzRo(>uL_{>Jt?C-$2}*G%rxtU8Hqqqu7Y zZ>+|EXgr_5pzEXwkJAn@6J58kYr0<=^oJLq8{~FvqFqg%_3qg$HF3ruwF^50`a-Xh z*`t~r(;p^!C-m&GZB(LXC-+R3I@mkS?SW1apzU?DC_bcry+qH+?h*XEJk>pyUWnX2 z;}7Y>?DJHUKF?qfkr+fBH=!aYKt z&VA#+b9-*W^^ymkJv0-pKX(9i6`o*uY9{*T>>-+J5dJzG@I#_+&m3Y1{cZ|ZZ2n2< zkl-P3m#GAPwJaAC^oK$E9}Ead4a|hsD;=GfgzX+2xjiUXCp@Qg1SdOR8U!YINO*3B zGcj0ikUkQGoAA!_-`E7q-Z=t~C44heCCq+Gzm=-ehNeaHts+mi#aqcgr$>_xJUbDX$r_EIn+U8_&Fa#uCV~zn{bZlcK`cw>c$l3;aGI_S zyi>wbiJ+UV(YENiokZZw)~GKIfd!1W@RSJLWQ~C@@VE-jg_TQ-Iz7(p+$-A(964go+__h7 z*X;l8|8e@I!B2zJ#JQP%jf-5@Nu0aM*F;3L6Bj4RZ%wF5Qc}JGI*GRvqC-*YYc-zh+D#YqP)q z!T-Vg!TIr5(;d4v?KPiHH48AL-%vu&47erYY^`M5?9vMSa3}G@4~ZWdi67dDADqMw zUgC!!@$ljF!-o$OKMbaRn958QrgBrosqED6r+zH7ETtVvY;;Cn&t+hb=KHQU_19B> zoN}l9Eb~E7E4nEb$AC+TUDqp-~Qc8g|{-s>l3zdr;ARNz79CvpD3=WBgx2+HC7S?= z+_58(6|7e32WU@xlzk@m!Yj{bXh-+6wqKXP<2Ro9I+U~0^N~B_J1fsW*8x@^dY=OQCe>i^+eTBY2XI?*=ob3@BU+qApl4T7Z* zhRuQok^-4_*4Z{H3Q>?yB0-Ix;?Mj z;XU66h4W}hoV>TRn-MlpaV85szE+D0puehGRF;r9>^ZQ|SD+~-y4!Ij!MUiU*y*)y zisw)+8Jd-=yjW>MD`)hzA7iC$7%OpV#W<8mvZjB^nrJE<5x_SXc+m@S)xK& zOS=_)p=SdT5^1X#?IZ$7Pk}X5jyJU*Z(wnT-eyzAk0$T!SO>@+zIv&meFC zEbKR$UB{tJB^-6&3I%x+KGpb1U_!NS;1Xwcd}%ZKA!>#QyHl#TUc&>gIxJr`28^b= z0x1DO(uvzw(5I$Jjt@Jy9WFm#>V|NLfl&AV$<*udL5V=PHQ8?g1aS$06^kH*eIddZ zDeCjJz13O{ku-GujQ|F-wwU;tf@&c~g4QwP?=De^wk4(=+M~@rK$W@#(+4G=^hjkIrp`p;%N(2=8b@rJcTJhuUG8Wr@E|2|AL?=(?bj zJUrPMGDXf1rr>HXNC$cTOruSBp6A=AGc25PBJG=}w4<|-$DSIjWD^4QIaH}$QM>#g zdLW8SfmhN|Q?tcuW{lVMC1%*9hTMidSlN zrrg*QAJu3{y9rQP(a|O5?GdJMS~FGpb4919imIOV(i$%3axYCnt;&MLbq5mhpy`=!lwWx&k8MFH-WlG`de{2A{Bmh;1r3bc86joH}u(L)7T3HP*cc(ir6cC@qqf?#J3 z)^%20RKDxbO?e6=%jR}|>{K)j4>CK#U(ji&fc{v4MXSy*3|_p^((&_ zKCUiA1?0XI20w@TX|)_>^QV(l{GE+bC1_k)jOSKIGT=NT#ka41yctlrNsb&iAEgq$ z=vQJ@2(xm~d%|(^YXf+h!=bGMTV9JwLVMV0(N?RY{H-HPVoWl& zL6wLwyIl(0ej{)irpL5TIeO*YmORAYSRopP8+#?(>=vU}$2u?W6GjN>u*E13Uv?PT zm8zyX1exrdi+xifPp1#%cOlBb#W4>)2M3xw^44sW-5Y`}D(nr7P>rkH47{$&Zg=he z42-kpSsj)S9=r^;3@y631BmMDY`V*u-(dnfy-GnM& zj-5DjPBaMaF$APmD`39tsSG0W(Fh){WhnPsxWeTrtr&YCM4&hz1R?vV73x~p^5Z#d>*uFLP_q!rz&FK#f_j*Z*8&F`Z$<=hbKCr5Y+Y#c zviVpUMFYe?bbWPH+uOGFX(=@*9$X3(r%>FzKud9V3B@(I)8Yhci@Uo94X%OWP~6?! zoqVCa=iK|=ecu>A{s@CH$liOcx#pU4W#{qRuh@k%J#9v=CPg_Jq6xt}($D?aItODtzfUpEu+ zi)KA2#&ySvZwED!Gc}{)a%cxf|EPv8W|&)M6|w%Hsx$c+_wF8zr3KZ}XE~UA&qNm( z3=H;(EGft2d6P0biuhhTWX@rgik6aP%J;M0vvG{i3$>zjrb04eFhW=S^n37+CdtJ% z1P-a~xDb=hbY3d~cDD*nHnt}}Sg+li6K+%P!Qb95KT2&@0Z%`A`>x`nH_+_$<&SU2 zC7oEoOox#{L=C(|R6R^mB*%l=j5==w2_7?g1sT!(#k^vSnhqPiv21w42YTlR4mNtu z9LL$=YR@P}yHiPymIWkJYI<&C{y3^u1jKAz6H2&VJPRUNS*&QF!a4HW$X3^-tdvev zqRNPxQs?1$%#PeiBf-dpYEwe=0z0%;okb%jgFX}YZ3?;^!M4iN=69T^L(L5Gu_n~Y zL>LUYmWSWFEuTmc>JJF(Ei`#;*$)3QIk2RoC#$OA7JO^Ey~LMzEU8uNGZ~=UJ(-X=DHNwR3*$MG*ylN+4n(!O$O+aQTVrG3) zv4qx{P8Id4kdF>EduQ?ZtKzqHV)$P`~rPu55m%8xwHj?#~@8zG>J}GLg>G6hCQWd)c=W z@t0Sf2<{fwWQ*kI^xcT%3>$+|uD5eFO>_K4GcnmN3!?BxFnsMqFU|A9QYC+F#I#QO zs}ZmSW5icCjcm4o%!{HP=j4vBkt57|=jWOnfny{tOqew5k_`m3;4l6d4g%Y7QtAYH&TBzoOZ0ODzmSqogW#^RcS!fGT6 z1khH6l1!@kSqt`^!;E<8$Q$!+G)@B2mSz@h92Y7H&sgli6yCbiX_GVD1X+dk5=`3!>00B&+1m=F3HcL;^gbN;cHV1I%ly%$;^wp zq#m^lB3mEgD4+54fdMyb8&^_xS^*o=(`?4s!8j7An$Oagi|dv>q>>e{lwjkmd#o>< z8e3^p^J$MwmDtw}Y*J|atl;dr#-FJ4y}mcC9i+!I&NCZ;;h39q8t zq)`3Ref8PBD9+@nLm)TevMV)&wG0`=24QHH#|UO6xfmt%Vt>qJ>tjHxM*?vX4Ka+y zFI~MrZ_9u@X4G1Ltfuko6EG=+Gks+;#`|Vl-5`vk)S@UqBjX}~BJZ35#gJq1z%C_w z!GIR&P1uD`clR<9dC-f-i?C;E85EWvXX|qi?d=%%Hx0agrq=d&e}=PntHW=0J6a_D ziNi6t0|U({$KV|6g;@crkb}H~;$j*T+qX53is6zh}$7LqTWVw#7!vZdXtDK8IV za)f5sjs|yySVlT%Y!-&_9`WC?>V#)854s@!ED>5Fce7RVOomuc@4iF0wfTI@Q|xL@ z&T?X*@n+znXyL9SNX}c!c6x%kC%F0Nspq_=T%ya#-TZh74x<_SD{vWtl2i1R((DZ+2exC`Dmx)Jhl zS2$ElP4()Z@6s#1xUOiwlS(+-iVigVvD<^|MvR=Uyuv9VE+=rBCjH zj*#zE+EcB+IaO$RuO6;s0+*fp8ojX?1yc?Ve1$YUrsFQvJk4c1uSddrhEc2_dr zFSG)#Io2+y&sVzwKOLgKK50w1&6Q)o9?A7!PY%r8wjbnAFj2j0B=b5n^fU$Ba&O0@ zLySFc|2o~##jZb`;IU$Mk<%-!IAzcIS3I8GQ64p6rY4t<#}o z1^*p+XHSv%MEj0xG{}K+@U9EE;B3G$bW<_=sC}N z)Fq&v%Cwi-fSsIPtiN$DEHv$Q?S&ZKzia6z1q;|uaO_~8G{LOSo(Xx~bS>HB9Shyh z&88B&0@tp8uHyA^ABAl!Ve6S59jxD(3Oy+;Cux)G{GBl&h!FqXACV)h~J)cl$JN1woNQ}Uz>pE zmy7RjW&!ZUy;S~_2>zy9pR>UV_^l+icLwWaue}^xCa?)>rLkr{{(Qu-kpptLF&{@O zbRD<3M|OXBv*4a6ewHYDfH(`i%ZxKeizU4K)B0;IpArbWSYioy| z^-Hg?VApHBJ{s>+l$qAl`UX?+fmioR*Ww5Kci0JJ@Zy$5tCPL_JJ$G!CiYB z#_LWLo440DcummF8q0=vM`84>dX2Z4HD0H8&OQs>m!~M{r(%Qo*S``M)f%KdrmnoN zrox+1(eIyJHs&rEk!rI;Kc@`ZTv@@D;SO*{Z>V>*cL|&d-h2N6P65Ze)jRf{f~&y2 zPvIr-i`(V{I1)VZUg#X|4}S|6x?DJe7YfZE(`epX_NH1~6*77!ui2E{&M*!#UtMV4 z7skK?)|#!Z4m9sUy<}_0%%Cen?Iy-p=7}|}Jv(}x6uo2E)WFjjx|(E}>W$bW&6#|q z_(ke#95sM~F3>+i8Pg(&9YzWRi5EmvRbM8N2s+**c?#xgjS0e##YLZkLJw14fClo9 z-gUSVFY_xnZoSDc{h?G+t^^YQeoy>e{L-0!W7lKAOv!PVXXDs@Kt;w)_)<~y&MaM4 zBCmoqs-#UGo*-}Hn5Trb9TmW9A(rfzE~}AOAvijPu^ko2OC**olRmI6pGz^CkLp0v^^Tgt0k6fl`i`!uR_PyG2psRG}$v<)+Wzho@4?5F_6`cizHsp@*D1X zVSn6~boW*ehZ)F_?I=N25>QggK{V9T@n0CFv` zS6S=NA0UY?%)tbVBo&y+p0VdTB`68?n|GM<9TMz464>7L^Q5=N$T|aa_&_7cep|B34m4)Gop1Dn_NC$dh`L?Yh!LnW9}|v?mM<5Y__CUf`K8_jXu61P?urUv;K$Tt- zC(xKDQ01KADPY5d2hW(tuweaKpc&`>MmBpP|J>qHbA`^DfVeXEcjEo5Lha1FSI*n* z$(^<)7SM{fvt}=xo&5NUmj(uGbKlNR0rnkCOB%uL;B?y!)NHsml#O)%JrA!cjz)OJ zFOVHE%^>I{ajv|lQFw)jQR50b?|^ET87PS)e59aB1omw?V7Y09F~k-~k+;sE$}mpb zLy;syzk?G7w!$1Ze{N#pSHaL$!`C)Ju(Ye-T(kTogR6}PXNfr6HeBK|LY(^!vk4n> zK;927?Z;NMMTt3J>Sxc=R*SQw9c)`7&do)Uq=h+<{Cq>#@8orxE6!4=B)7sN8s0_5 zSKPgi87ny#qmYwcJu)$DnIg8OM;eIvqC{eAjwI{ZVus2s^C*{R(Gs1z_)+fL#a%RR z5>0ElmMz68B3m@%r1nP}rY$_Awoe}qd~{4zO;SO9mUQxHL$rkeg*$faNS=k%HswiD z-qiFUSXunuGFQL4!o0d7Ag1|qb%kmppdz_oO7_e$*Qr{mG<**nJ|(+hnQKv9;apwe zT|FX`n(|48Q2ycb9^v?(K}*d4LMTaf5`fJjFld;9Mpa=UlJm}uNcy~q%KNcZ)_~;XC8>WMNt>MuH zc(S9t)Zpvj41bD-o|l`S@rSzKy~9bunAb<%x0qI8z`(}D*I)cH5cDV+lLNfXOa7FQ z^06bf=L|J?4;#h=KCD+2rh$Et1%E}tT2ZDj6ISzwpo0d33Q?#}qV4KyLqw$N)KCD@unquLz z*~9Bvx69V1zf3~a8_|CGZUhJ)HPH7SYudl9S%c`-=t6RuZ>eUIw=|ZzkBd$}yBiZ% zHS(mG)u!Mb^IxSr9;BB`-^dk~cdop@OEtKIr{9c>!vk;+?odPEUB0R1P!9MSyynrm z*7-(r4knss0H#;X!3b&V#2(`yW<=o`yt+~=1U^43r*)gCc>@_NJGUW*N5S;&y|p~< zdl$-Ys`i=}x18}@y}VoO+w6}QNFFi6(>e7I*(_Vgl8#Y5r_o$SvM~p4mt%i=^WK<+ zz#)5r7X+jt-!~!xgx3B#7qFWdso|_7Ru|?nN6L&6(t69s%U=qoqND z<25p~AjwpNATmM3l_=}*_ei1M0gt?HS2rx%Hx?$a@z?HPfi2BU=UzP)m%dkI=0q8d z%`Qau6IchiHogF(tCx&7SJ}FIvmO@l6L@(=s zuX#67neqwQqwTawV7430Sj8`1hPTjZ2j&~LRTFm)0$q2h7@85H4YNvBm-bz1i+aG1 zweI6;b%w@4R1zSEMw4o9%8&jcjT92qaIQCh*HUyZRH3}QYdz+AA8jXQ=H7cvGwyG-EfdM-ZsmZ8sg1sra+X929V&j@tGYY-B zT#y#b!agFqB;@gD6JCAOX^SmLKbg1os`RTO;qx(+B<95|Zu2oT6-x`+H zys@H29$b$BO~H11r{U>)`xLf{c8i*)sgRj**@N4t#jBh>HsX@*5}o2~A{BXi)xwP#jrho375bAdX1g;N zF?wyMgAU#4UEZGxhuzgxLkR-S6C9ac9Q{UQ*Dj5%V_w^uH(mpoZncAslNR1Ng{|Zh zmq+bhh8slm&7Rj4v{iDI-1rwCK}Jf76ri- zHg5fIOFj7}!8Hdi{W_(d%#%`O2k!mQ2`?;5qbUVruj*ne9ZRpH>XORL{#=`#4SQc- z#w%3c)yYr&x%}R~M`|9pD_Z@Q&H|S8c1V0XJSVetGcCW5b<~bEc*2C!VR6fy$HQ z)dNdY#udr!SWVi7-b}rbCdd7_^(}sRJn-DT?kcA+t5Q~!ml|E>6`i*ZO1Y-Lo}~)* zYre~#uMVN69-D%#M@EVf?rl+F6OHM|mVZyRycth$w3HC+wXW#xTg7$%I%kQOaORej zif?)>n<%MNqBCS}!=9KDzdB<{pMv(wSdDPUo?NAK9_T|-ziX~!=D`u*Z}Ez+Vy=XZ zT*oO($A&PjsmpqFAQW}VL~el>qT{|tU40U{_s!bt3JLv)zUrIeHVAc#D>dp z{u@cBHAm~jG^Ts585?<*m3t2pcEjhXdYSZzN}_toOYMu9WaI5Ps{@u+yo*xZ%KAQ< zh#$yD*6s#1wMPU4qo94HoUYRZ-}P@-Q#Gb2SOhr-Y_B301#eFRKN`nTrkcgQxfo96 zlU5Iy5i}Mp=jO|*j}W?fQ))XyekXy=I)}7A^>N(~BKOpJTIwS0$|HPc-OqD7UTtxZ zkJ7k4u&-H&G5`SGn~+UpBYw=>(9!Nja*nc7Z8gO@mCKE30xB6+ zI%=i&4z?e{sIpATrV5#fU579W>}l>aS$eEl-+(n7RJuxU5+Jx&oV9qMT^%m9eu;}$ zhSr2Ps9aLaW|b_7?vuvWOjXZdw667jmw2|5&duK$LBT&j>{$p zXICU@KteOvzgAQ3KQE`vZigTDUwD?2{OTL%KW02Pa;>S&^lY$>xzwCJSJXT7FYhyH zG$*l@6WFc3nPq8OjKto#nKH4ySEwP`(7Mz>`$D~R}$EME<8qVN@wG-=^cI*$8uOz0_qVPh~3^O#FBf*4Q#xihrYW zGAp{`+3(k6-PUAUq{msJ#}es1rrvC<-E6JhY@pq2Rx)`o8JT}K z(rj$(F(-W!@Zu^b{^~8;4tjqSd{BLXbKINtUWj$c8@MaPF)zes;BB1*x1_$yW`V=h zy^XZtW6=9)KRB16XP3);=Oujn{cUpaWl8+80NdJ)anC~H5E=eXGtrI}_N65DQ8>iQ zRMh*kF+37<2k(TZytsqBxC@Ry9W)+qj^jB<`lZ-?IJg6!k0_1hK~ofZ z-xzWHZX|rjd6YG>*(!%LbBCK@uSQzGg_WGf#gc~Qr<5$@Cx+|_>cBE_0E^Fw#YF8ud-y#^<&LBp(f{;Fo5FKN;%3emzZB}L``}he%9bDUMy8 zPVjazoWv9++i8_K>py2I`HUCxOlLC0v#*A1ZWKN3StHX4!!yuxPj2Z2Okx-dv82#b zTOXq-F3y`yCn#8-$6%kDiSiao;%ad$aP$w2+Rahe`%c!B%N#W6lw3MJXZ$@NA=wm4RIh%hB+!Flk zc=_3Ys{FgJ_9{6Uvbw)$Q70izIzAOGOtVOgVB8R?$BNA{)5^=9jowsEQB}b@y(p&$ z(y#VkyHRO?=afl8%%!)lUnIK=>5r{1!@DUXo9naxOJEZwLM%#lLYBiX>Kb*7AFgze zOWg7zDNEpkE7&gRn0;W8abTEBn#bn^Kil)`F-50s@VQYB0~Bll4JU#IYeB>Kpds$i zL00rbjEF=06&D}c8VDXG;iod3UJPIL4)S@crXH_r^NbnW8MCIIrYm#SGo0=G4`RHm z-+}=@+oV2IKCAs{Smc4D57-ke%4vEkPMf16sv%X2yCWZPc4{Te!})98uRl+is$g?L zR6|C?S95f@B-c`y@~qf2qv=(@X{*z&FoRRZtNJpcy-i`7^D;}kHQn8IFNc-C+~USR zxqdswSTi67B`)xQ4fXZz20+)>`RMW~Egw;T3I6-&{9Ff=!j~U2{UXh5c<)M}HoG2X z5j6oq;xb$K?*rst5Bq(9$TK&ctUdSZ1Xh$D}DSmuIV1`?0BeB`&$oH?(MZ&nM ztZx%p5lhTWmeUZf1(#zKLLQdb>{pIs0SR|{ILAG^p0LR$``8PJMV`@Hig4@^_Gpf# zr#K-I=G!2`de}P060yj%IdJmmOc_eOS&foY8n(NsvjOv&=VXNS^fOxbp%C9n^mOz< z&=W}zYS(bYqa?)omT>}X2~BKqH{OL}CUwy=Eh3KZMXbgGKpV!P-Suj=|$ftnYrGvtCEL#wg_|gEmb*$_0w}{6@j}Jzhn+PrB{eag}4eN;(5Hut8h*z{-61E=R_SkF2 z%4t}{?F*~;_tag7T!p4KkGhVzrUGp2cD*VRoL(7DnDd!U43|hE?Md_$o3?SXXClu) zkcuaRId|KvD>IRjC)@FLqTC_qH^VXuk9tT?mtUg|Pe{7P9Y0@F=rN4yqPwAcX6tkP zu}7pwDM~CVmu^r#C7b_Qc%coNQurdj1n3bSOTZ^+=)c2vIuPnxPndYL&vO4C`H4F5 z{Jr6e7+^fhSA4@Jz_SvR1)!ccLyDWv^aoK^#cw^gy2VpM6PQ13M?<}{lbWD97wXq+H*E3+?ZrX$!WkwFCYAH#^&-NyrY?q z!Y0AgmSSw0Wh8t<;AB%nl7}dkNaX;fyj!2qnM677s&Um`n3wbvssnv-b^CM75!VL9 ztqR0!>-}D+i%(>M7@=qDbUoxrszfF&lQyj9i6$Vl2Cs!x$Mf}fhG9d35enKZ;-O1e zOe-&4WSU*0j|sU;o4c>>`gcZc7OAb5IQJKs_F48lGY93lWle>CgOsO&U^w>sn@L(aamJo{wen{J{G)$LpxJ$Yc78%uVRO%&>h?$#;z6#eq~}Y4 zlldfDJ;af=-EDnFSVOkNUCF zc>v~|xy%E>wZG&4HGRkJ8SuT>O!FH*d*m4Mr;s2qkDx2rKZy9IVKx7+d&PuYPC31$BWYNesL zSIr@knOGQoXa6@Sqpdt22@i;CUc0)QS&6#CN5FE&Ygq%@4n}?w;5=_HYdiURJtcR9 zLfNh}v%GG{zt?E}_o1F9%^S|%xO@pDCucj2@!2+1W;WV8ZN zVx?Jan8i?mn1L>~_)Yx=mrjoz(O@;$bdfDocUGOQeDQ8C6(PiCA0(f$LLO_V2V1TR zC&u#yi#_>WvVk1q(yVZKRO{|Ntm!}Jef`mRDd6Kei7xelW!CJI>aFDdyuW77WvPq+ zlbz1h@~Zzn{D1O%dR%q97TanPQMXNqcxf*X8v?QUaW(uK$6N026`0pV%4CFq?p_W- z<^NxxD>?#^P7f$lFFj@gqQ=^~{r?yn)EIrbKgZ91^5!+>#}5*SEx6^Wc(=!MLYljL z!3}8c;%tl+;lt*|ReLwsv(YD4{vAoSS;!31FK3s(@uy;!-O8ydmHc0P=Bt#l0ZM@a zqL`(VPB*`@RHLlUcrh~+ifidTaBII~zka7P8Rq1WhTXv7?Tt=V({f;sa_fcXSbgPr zes<%o()D{=5OBclCrI4+KxW3Blgd-=z8pW1RV2&e|5Mnq;lHUKJ`7pgW5B~Ucw@Q8 zetn_j>%>sAPVQ>l9hdA!cqiw*91}C#$+syH>OTWT+KZ?U1x2hK2$=}3@*k0J1f%mv zdi*>&BOjayY(NwGT!c=rBbHK+?z%7N@x1d+FM^iLkXQ}_&~y7hY5oNk5B1`Sm6%=L z)k3~Hsd+}x>Cm?)y+*rz@`j~~7TIH+OsYniCd)XmvE||%{uB*KwFbW$dUJo zV`N7(tnjN@Sd@$@8VB+?n*TsraUX(rPi7Cyft}WOo^#k=_$7#1*qHuIkw2fAm#>(f zF5Ofmmd~15_f3&kvLsPFr9)!~_e-GI$y<&~=mOk`Vc*${J@{` z4dZ&A4;bR$*aQe_w_GwU6Fo0wfq!H!*_HR#IMkf-v?$fo*-f47%UbJ}8$p zYk!oMgB`!Cn3qz@8tIXzQi4$QS(cTz^_7-<{${z#TKiX_{0Dc(xEF6}#kJ>{HfSGsx+j&YR3yH_lNhP!Tr@pWQRrYW-zpVrB%H1cc&B8;L03(e&@Sy; zB_J&n1SK@y_IcKawr&HHtu%-=o-H<2bMTAD<5ihzuVhj=r$47VXQ%@_i<|V-CGH?U zU3wS3NE>d}xdQfr{iQ?05~Q>^&`bJ~tuz&lO{=&9Y!5bo1uZuKl|drIE7VK{)w6~P zMUZzRmN3_#-U1zi_oNw~uO`|>WdmLNoOX=yL7za9Ah{#qqYo@4K?&0D8Di*xI3Vy7 zWasXg;x}VI0CWf+C_GWUL^FXxKwU{MokFZ%8un5=2AEC32Q8v-F4y>$Dlw%^n`LB2qpZ>j+rp2Es8&cI3A10dQmVV+JLoh-_eSN-<@ z6Y+J=ySj;YmZ=lN@7>iUqo_HDOgmIL5^!d4`oXv`C+dCqY!!&oaL%MS96?{iNRpM$ zA3zQLh9g}IBs`qCsY0ww3=9|49$hC@9mIqwz*rDYw2=KnO)oH%2T8GHam&C7_6P)Q z9Z@a3^Xzn43ZQ9K`UqUpNLIs9Gt+5z+-xr(isAyH)PN+}=2T{tW^;F1KaZFTDDta@ zGNjOE? zFSX>u2uCx}&P;{>fw3;MN+8WNf~^jRqgkoYLz}B$;-^cS?Pak{Qs{X_Vcwe2u_cDr%*UQdQ*0^+glB#nS{Z4H)!#AfK}cUm-~? zl%9!}iM|sj76%#J3uXWp7QqQiR-Rff<65tv?Jtw=uYARI$#cP(C9Uf`dLNdTPb~Bs zoyzm2gVM1IrDl~+L~fNwOsHfyn5hcebi7leGc*f;wG=YnOMdFNB8YnoFJd#y*7AN7 z{#05WQAz8e7f%Or=)jcv6$;-g6sQ-f=h7+_saeWLF>umz(s44-!MQD*aurLPC@a!<$S zBRH-v(=JSKSCR`2(XMg_iEXw&a6JhD&N0;O9=1G-p)|By5es2YVj*8%uU%}Velx2D zGpj+w^DH+fp<>(&_OMetPl-DbkfWT8hl2+&EZX^{%(m8}%m&m^(l*H%a2FT^!;S$bbh7*jn#9fye0l^0;>Y@y_u`}SkMBOpj*PiK za-?{p|E56+abi?z(fr~~KA+%iK4!+!Tuz2{5TX%*xj0AR)|n8NkPAG+x(Kon&)Ybd zRwxUD+>v}M$%6RKcXNM2qbgun#s`HWT7@Y3ar$w(9-JKj5zZPo3@iige>wM3Rhq3t z%2MRj_RyE&$pBo^A+)`$?#`;nbEe8nY@NwK>(j;8*S1f(hJ^YV?UR*J>1F8xaQL%~ zN{mP;BrtP7D8Hfmg9HH-N+8YN6a&Kt@neidbPdrAh>+mrKak?Wm6y>E9AO)p4$X&V zLyMuA&_ZY~wA3XH5kgrmMffJ)Xo3<3$o)6BI;)=aVuW07QFlideNf1vk72-?dlJFl z9i2n%T>i1-ba8a?iP-0Ny40$#Q5ZOQw7zHlR9U4v1|Wk~z@jj7T=oAX#hkY74kxNt z4w1{#S-$~>z5vJaGdP5Xf2zueSD`phVU&KG{ZnIxNWTP3l_T+QV1c2H&ldE^iYEf` zbRN>n0f=6glgK_H2=fxJ@i`Gr2sr^J?0iWO0PDg;aQ`6)#9e>M9tO$Da>bV@fyrV2 z3KUow@IB}^ut4+hm9!PLRkangRkW3~)n?^qm1h-aRc94uAAm)z%!aMXhE0c|u>*VUosDO%g-=gXL7?iKjmMTA{?=@Y)rj8a&g*d8m=#Th@!Cb~n?Fc(dQRD*oFwN0SOc~Qor%Hr` zG5l3vGUSf?i!L#6my)gDYl4No%Ot^i;)^KR^CbP_Md^_pLd7K2Bn4aRoiVfG2}e~K z(ody3N#=WkK$o1YVT}?=lUmZ`H8+Qt9mESYlUm(>UQBRg7!5K=0DeOP_|pS!S}y$- zspL0gIFHArM>gty$Nl2;P_E35y@32lx=)BmDiaFlhR_WrLLY$U@TX&Og!BN#D-oXr z*<#!`|1I%&#ek?@zo1hOKh-cs-0Y>E{!_6m@oD9s=PlB-%%A6OTIN5W|NJFVNi-q* zeDkyU`8WoY}*KL%ECBasRTC#S5^lF6Pf5(neQv^s#Y>U6@+%S<%^YuOXDx{#$mSZ zDpOfQ=X(gvsBq=4XoRqk#{1F*^Q@nhvV`)bDsM*g^iczzP!E5XalC(*NxXt%c->QF zzVsnE0@(ppyfN?LheGx5jPgMi#7Bt95q9|6pBMku8w7i`L36)TD(NMabzx@$Q~iD) z#XkK$-G0R=k_st3DIKZBJOY2kqf*t2f>aq582>Ac&h3F>^f85$VN$>4Gq3T4KY28i z8t8#@+0T)zQd+B;ubQX6$2Fm2q0FF&!yq-PhA37;f#Eyq4gVDFT`nbtTVuEAg@!Vi zjdiU#PL*`NQnv1JnyIp-3OijjM7m;O)-l@;!&NDW#JrmR*H~=&WWI5ZxmCg5?+q+x zC)XQJH_in{0Hd$Doo5{Z1>>;wO_Nb~4jD3s-AqHFy0L#K&L5Uc8%`fi7tU}EKmucf zBf%mtI>a~%Q6?bPDuNU^D8m62J-S;jNMOs3dN=}+8OGE1AM4;vH6&p zLD@72aZbML(OYrK7jz$9ZR`?S7ggG_m8f+as!4Ev{~fWG)$wk67v~9Y6W8pNyR(1f zN;MhN%NHqb+V6_y6s!97&T5G-tp^vXD`e2B6d46L(xPxFoV%S_rm2*SOVB4OPf2Hs zMoY;=pi`OyRLrdvlo`}v840#0A|!b0m{}4mduVPEab?tV4@?NMJh1 zd`#^nD!b@Zb%2YwJweh%a?&M;@px%oM8!(V5M+{N$_bI+K3y?Z%qmv#h)TL+>qkx+ z9Nt}3kxKbP+3=j0PooM){BOP_KPuGKJ;YK1K!yBZC93_|MSrczXB;MgCHijJ+&wJe z4|!CEs6xV#dx$G+8x5sSE2B2e=pemgpO3KIGtCom5&;0Plz22SBtugnGf!nx7ZPr; zLsF6Vwfw~l@qpjtew>|qZiWox6GUscWK-UO{+zZ>-S!X83uC+CG=kT={RC@-epZTY zDjgWmODgjeaOZHBY^tHYJMuH+oTMSC=(bLj+Ev}mtW*lmFOy>!pdFwepbH?uX3da# zTC;KP8i44N&$N|0+=5x^n3l@jN@z>yONJfiSX9n`w`p|`GTD~d=s~N3V25V%=)W4@ z)>i+`=h)?M+FW8J;xw&*#hj4Na1}P$?`-kVQd;HDw96diBH!~qD87+2Wnr$u;ZXWh z300%hrE-AC#f(Mo6QB0w{K%xMC8UxA0n76zo{m}gZtuO}u*bOo_=8cAXB11V@+YcC zEwr|)-kv#qrO<+ahfye{lb>3To{Z#eqTFqH|wH0)jz?A6htK*auxCwqOm4lTHt^zwE$~&vL?{ayJ z>BJ|n)pX#UKIOR?*};h5e6Htgv2jhpoVnlvwn2(ekRWmJyTIKQ{;03d?I#8EH{+xn z=pI_kaajrpWuj5WTnf>+1ye7_Ax<_q$+*n(sptER1LAQj)57j=d}_v_Us$v|RkXWg zW;=CeyTtfABcEf}aqDY;dTiVmuFyfhjB^BjBA!9<@%sa*dkTf2#)X_)k$sn7&?&AL z%rP?2XtiVj5_SGMI_#VLmpw< z(do0!s^Jh(V|RmbU@B+PJ6+!jwAE~hO`tp+lPb{G%>1<3qEug*(>Ixwii_hqItuWjJdx$J96=X399yojqz&q)??e8O#Y|f?136 zi8-W2f-dCuldW?06Rpf=pWz6cB1$@8pmCz6^Ma+)fnWx=6dd9H!7WEN1=G3n@s*Pl zQTxZ49d_fy&MK!(a7+NixMBPDjC`S(wqLCrQYW&8r*gXcgA2MFwOWGp;^$P z#fHhoDkQ=m$IherNVNNs5Gj;s8z&suWqL;(q z2()0$fIRuM5r^En9;fP@M3Iv6kNR6SOv?vMzExE_px1z*wXw>6?0N*RI`( z;^dm{K)IQHUY1h#gRUdmieex#PF$gdr=v^cYzQ)OqiJ?I+5YL$pTYFOC|Pa&*V3qzMCvq!v=VA z1{*&?5>@|pTmPuoZXk@np}= zR6(*V|EsZ&1t262zy!_&fD4BUP=ixb_0}23d8{FK+H;JQmbBpN!$bXVq5{&u7!p=&qPCvz=ZT*vV|-Z z1t&>G7OIx7`tx+Gphy9S4h*0IE5bBkyyEdd0TjzPi>GtfSLN<2+7+fF+H9-qg1e#h z<|RDE(}h~=3HJMh;>Dcdi2-%B#*=fxhCAB!^K%c;sai=}&EQ0<3E%@*fpx$LNl`p7 zLkS`|oIP1MnLAm!iN>kZ@o4O!cKL$Ez=ALX*xwpZGf)@-#EL9=+}ZfQ>3)(*k`gL| z1kMH^6N~~50kgoUU`8+iOa)f8h_u>WKX70BH4(}&!S9{e=zqAZxwb zl^yTP2UohTS3B)mIR}_Cf@YHQr~jyD|Il=|_sE21WBm4Ny$g<|s$qfd&OjrJ$vR-a zf~e6R|4FtZZK4Tj-NYXm4UiaT#zqf8=ExI6ss<8imLc&$Q1&*HOq$wS^!6UtFzBt} z-WOJSKeK6>54k((o5=IVUH~=;@grKHHUnZ92=$BWJpYRxq4DF~ckF}wcB!gmm7Y%# zMprw2t83`8k8#}xBh=VYXc1I&=fUUs#{=14y5~PpL#HJhU_*SvZv;y?%}JkgMhe%$ zl89ICoJ~`vjK(d$8aF~C%X#ZQ?*dHWvZ+{#n1eWU3fRo2A5n(ZuWbExc5fT5USQ96 zMJ`f)N@oM~eh>H`{uhFP>jPdwe!HJhX%98{U*4x>+k@|^GU;PJnuhC`Cy7J|0mw`S zASx-JQyPG8IN-O?ua90=hCa6`!i<)IE@_K;$Ng0VbqRIA0G|>;Nzk~eI#}BP`S(FGL(%*8G0{u$ee~ec21;TRdDI+D44-cFC*6Qm%;~gpu^BNb54NY)u%DG_>p7mxSJevs zEN}Lph~qgmf0lY1{yn>OqdqxB*1>?RZrIm%vmKLIOh{HABln%(2%_`h4qS@uV~y}~ z?`6xFcCGs_gZk=6K4db-?Ne-$7PG>z{~}uC{t|+&e;?n)_Y5$V^b9w-wKuM>^6U9E z7>|!0(&++J4pHf#TaJ$ldXuHk^Xq#s<7Y~|-%)X$6nqvXukqWBwL}b6AlC8s;Yc8j zD(3&OVjtW%iyVY_4MVH@6D0qhqPg3=PYOOEPW$zrivAM!HOm)l?qHFmHnSwyyMdL* zowfvOwtxv+5-wZp8e1Y~TfB?IztE3}i;YI5xJFWSA}^BAN7UoQy!)gpm_>Dm+MS z55pHvH{SUuXm?O)w{pz3yq#?o;BTP}r8F0G$M{s{&=h>pLCY-(a|fz~WD1eK_@FF_ z6^)p&_@B@cj@y_09TAO}R63H^e&VJO2y8uSqqU%~+8UC@3p z;2qZaYPOAJwjGJTjXML^_7F%1#6WBk1v29DeD*9#qQ^lG;f zo1UQ^O6y##jS@KgNmG`&*A6su76i4@j zjpFX^8r5Zoof-JQiH*g|l3cMHMYVF|9mT^4tDzr5eCzWc|mTh+5WJ5zJ2wx;KF z_j#V_$3OG>|Cfj346Egg`X9r{`2@FN%~kIc(9&{NaW=a8TIa}nrP?IJe5svsr8Vxp zh%Gf&@qcq1)Bp1Cig1m7CM=wYPocbeDyf8LMj1p-LmspH|3&Dmcaq&MTf7eMg&o|8 zNb?W_P~#7J-+7!?Ee)N|_2(Yj$hGzW=92&KV`ao+lgl{p-%6UaTE%aTIWE2bMe3a& z8rb@a%0&MMn*XHK@$`{NEmo8+Pc*EPyxJFW2JP(sXkcr-?AB6hw-R$D|BCM8j1cCG zGsF>?M9@D~v0wWVy_O|&^Tz)Hz zl#yr}RvCM%Bsb5;!r6o{kT9qrp%Ymz%Vh;^VNvYtR8Sdf-uRiM6)N{qW*n8rq1c4q zhHy(CGXbcSQpzIQS_%YQqRWu2?cEAuYAnKpp>Fqs?WOOqU>z_1kA_4Kz7abdJPochRn%40wJ zV*g|pR13_=X_by&*D!k&$_2^yUw4b+o030ycwD!61J8@J84kJEixRvu-m$SJ(O}_E zE-NrCE*xA;sKGN*yYX+*uJ$xSKGR92Hw538^Y z@$Y_7!b3Gqip0Y-+TtkxJk{%;?o zXIy7yC_4%F4fjJ)NfNo%0UG23u*?gh|IHPIrU0oIvc*rKwwe1I?L>N~Z9EUx__b2| z;t#{ik**KjVQ3KnU55Yih#>4Dybxx?;?YDYN(KBnMxu$_%BlDzV;V;_S>dh-Su~Gg zR;n4i5c8>|r-0!Xv`hZjo70^2j@2BdpFcet&97lViKoM*peoYi18Feh&pC3ztFXF|~U4Pta+9t&KNUgYVYX*OypR588uaLeRvjJkDoztv<5rA>c1GVDM3?NsdD9P&aJiagT zhhd>m6DYG6Qb!YYZR-W048>pZkAFhwLxH1T_wtccX?~+gn{)q0y0V>unUb6`S7otA zvSzgQkr8(P*Kn+Y?}757N=q&sb@s*tu%NN#`Ayas8Y$UBrQqTIsZ-M{*Q3)!R!)5Q z66P291LtH9{<|v(&lDYN^^)7T6pbGYVPArrC5E~rU3W%BZm=X?_dEnC&Hv~rKYN+RWjvgJI5I3+j5FlAGmcl6uQIrrPHuZ(-e zjj2rc>V?cMmUCLd0n#Dkq3%#Eu!G3!-H&kuIw)KDvMYZhe@(d)2>Vt1Zq`pQ=gUk^TsEY~Y58Deu zn49875Z@~?uS9bA7oXmhP5d$DmPDifhV_}?Fh`s4bLJEa<&?s$MrjIvOK3=Tiv|1A ziJrTfA89u8c|(N8+qwzAh0mfcV6 zo;1Y^E(lOy=b#dyj6$PA?gb-ps)hd@zr_C2fN(mc*!{Rn_gFhlH+7LQm3fvO2jRLR zz=&P@I2(u+nSvEf%fF|wZbq-3T7GYll5wnK#na0#Pn!Qu~o zc9NlI21MfaLyu(1NO?Oy-!A0Q_67l;3Fw(m)t@_)brm)R$I#T?kS$3p#y3a=rI(rvW+hpT}S#G zun?Z!vu&}aCmokIaUwNN7uTJJtM}gTCHGsCoqHpbJ`-j+cVpd?&$v@RjI6r*4x_I$ zt;|m=RUB6{HkD4In>T@+XE0~Se~Fz7Rt_uiI_}*dL1}m$V1+1ypAjJ^EFR)wkp}SX zmzDumhWka8?0*KTza>Muj(>_BMV=Kqk*NvfP9Di6edW5m&B)iu7o4)6(${yo_FQo0 z^YdPv6udqh{uGIi6&9>M87`wn_W{$(dy{bEzHhn*G6Mw45wrSpaj_7;TgU7 zno2vofHslM^9zI<(PpN6622OUA3=ZUA!p#mRO*O=5Dog+3UX+-ufO~ku1ZuWKZ_$F zgmmRPLYOuah%bkYuC#Rx2&2Yl$Ml?W#=N~GL2WQMh#oJH$n?#s!nhkwm}E_@6-2r~ z0Pg>ZXQfQ2NFCQX{wa$Mj=wj@o}a7PP9_G&d`WM4i5ZryPwWx&cy$@{jEXEiF^}JV zyep!5n}Go8-y?Z3c%z}p7B?*atiCza|FCe?dXKvI&A(E7#Qm|ng3EUtOY9M5=q|(M z5w`oE$s~Dx+W+>4CfaXK?}y)Mgl`nQCev<-rc8Gfyxm*|iB z?={mf63hMHCz>B6|@5cPatn_b5L`zM-Y+t&#y0E+r)DoVDI2jVMr~w^S-j!ifeq; z5TE@z+wd57cgd$V==7J^!UO|03pYKC2|2HK9*t2i8P}h5&zm=AKE1oifkm_6Jn zf6^&GY-1{{p6`|>oNb^KiMZ2h=(5GjXtCwHg@9udRwL4PbX{oOtbvvgw{GZ0 zkEK{UYB2&<+HN1ji zz*0M7r$i2V)2$ZO#unAvmMI=5@z#x*MT@SI8h8hYn3pxZ-=lgy-xlmaiy2TFJR7~c!E5vuBsH#1JISO zMSM?Q9v2?^#2_A^xu?({#XM0yFdRjrF0cbqZ=nXaoWeGx*?M9y3GX;j&;~zr2<&@e zdgoRNzIQ1JN~L+s!e9hf;ZB+pCRO z`mc$9qJ1Oso|1{)Ipp8Xglk~r%)Xk5bA9C!Z}{r|={W+QzT^GrJ+N%$)giaL18gB5 zaN=(Y$KH!8X${R_5;FrKRPZ|Fkcu<#ZW&`>hdV>xeO_OK5h;51Z(zA zumM?vs{^Zps)I9))R$w@=2lsKoX=^o9D$BK#T(8|!f2p;>9(lkmwfpAY{$#^b%05% zO4mvIO{>p8o>?#t{k6)A8}f%p?#qMM`DR!^EZmFtBR@g=vG!Pc*ey&v&@E&S>pp{y#oc{kR}J%8_Rb*((tw7$gM~g_w%L zOrtGb+o|_RzSXXJC)7AS7xT}wC&>0g@Re9J>m6&NDI@etI+V$r)J_fR`riu^*#|P= z-k+BU7rkL!LoX*6;!T@5e zo7>w|OA9z)T6xFYjuJA2H8>fp@q7vA3w8{Iv+(cN!?-_x#_S2Y{46e7;;btRA$5P# zIeGL^q$ch^KeFieuzc!iLABm_f5o#*x5_iB&S z-G8bg8F$&|;Mw~i#=oRXsmict8M9Uw3WoDMLCz;HDAw&cIB(IO3{16l>F}rh6=hya zyQ*@?+g=qH5|44nLwYdVdXKINO{?LBW4~R3@Sz7IiARyEF5u!f8@qAFizh+QkV2NN z{&fOQ2D1izx_D4EFjJf*UoT%M|L3PG8=eVXuX&^s-1!hHLnObrcwzKK|JH%VY0}8? zi(kT@L!Tq(hT#4zIk+D!%x$OVrsC7)RYiY8M1#RvFY(s6cO-DhU8sdJ%Yl`$htoq;jg z3A0z(jtdITUsq<~*;Ub*b0LKmFRFo{fxA4D8DL`Rt6JUx~ZF`M8ZV$S;n%9~u%fvAJ8DjL0WYmkR zm)?Bqg$JY>c?NzQnbr(q4 zQ}eUI(fENjI~Gk_-lBZ^qkoIk{E&vGW`}A4gdu@Q8ATCwMteY?sBk*F{(=NSy>G|tFc9ZwW!X};T;@&)1LuJB@u~0eJMHS!8zb@|D`z>i!PTp z=mkk3oO2HO`->&q9&9wU#yxC==(zNKoV|k9*Vtbtld@z~TDyXKKg5Z`SGzCZyuTX8 zv%T{wK4_3pLv4o&(!h_0kHFBxcy}qHXCU4qU-8H?yWd8X%iFQl2}zZg_d8HssQ}5M z`n#H~L~;S^gl!jP;tmc4OfCUGHx6CBcXcA%RjEw=yfi_Fltbo*2PV_XGp%MFh((w) ztXJ~Pc3C>7pV!KmM-E%Eq@QzC47j!EIF)vcN3x5|tPqT3Dh;@mEr%)wtmO_x0wMto zXX(`?@ot&hpYeKGLDZ42Ctt5J`}&RNzEj|r~rSi&_3nGOdU`Om?nrdaOK5(5yn>X8qAH!&@o#U zL#N8Rx4%u8{>3Kk-Y-il9fBWuqhm@%!$rM4nfJ4Q7@yu$rQ60v`Wbvl z#iWeCI1JcwYK6p}a9zg!6U_Zl3CIS8B6(y-<_S}K1?NMyKh%VDoHlXOr@Lclz|zG! zRlL!z>JqjMU)g}|YR_ZkScO!wAwCgUMx3tc2{QDgJ`BX@pD&dRgoBvyU^H44ELHW~ z;QdCvlzw>sfl;VBWjz^-IDY!WLJ3!%_};SX%QC}Z(~MTn{MQc0`z$Fl^uu^}4CkqS zSw``~G44x8Ls&#Z{Bn(C+kNUFBFBZXq-4@j04C&7MScyio9suClO)k@MeV3lJZ3w8 zlQ%x|o#Z$zU|fpt=q2r8mGw*KvhH?8l~3pHaM6B)g7x*%fy#~PhqyP6yZ;!OT(W8f z-wbtMa%-=@R$_eh^4y!FXQD~bsDBvMrnj3K=xilx#@ydXTN#?69#bi5EvNF@h&EQL z+m1FGg&eaJ9cOokMTt-fwIA&(J7{|YPd*{n`nyb z?dQGBh|SSa9sH=}TjIWPQkCSVH%UrMPK z4fFmm&m4zNikuw}LlKw_N;A~DfQB#7)? z&_l)h%VP%Kaz#QE_mm-gwI#p8ldB@8>z?7_kSExE&!!SfQ}^F()`{Dp$8I}QtvQ9>%%A{aRC&CcxzyA*Tls!Sfd!B)SiIu z>1`iuY9woOCuX`qFG`#mj9;^-H!F7>y4}>p@Dv}3SETtc`0nhUwGU6TOcp0HJqcIE z`&8g3Oja?_(;uP1E{gZrWU?MRF{?R`Mec=2I*Js`=pS=ifomCV$}W5 zm!d?c*LX;%sOZzeB9hvW@4l?|ojfnmng(cr_Q8)LeX)wEaL=DTOR{aolu#2e~LaDNj zF^5jn&k6fJg@t9;`r(B0)FM;a+arUQp^Kd1{p}NrtFguA0QR)Zb2GV2)XuZ^?E}h7 zQ|%gT6Hf0ELpJ}!rd(r6efG%hPNHR70Eer)^f&yhI~>S`=_-0lR+tJ~9`|3h9umf! zuU&%g8?zhpW#p2 zoP=fzV(4>q9=+l1dFfdFtFKGIJCG_Md`<9LMByuonb}c5Kte^pcC^g%uOzKmCSlS7 zNM@u6MxvN82CMMA*vwQqswng6gdo4`Yn#!_qhzkGT?6+d07)*>(Q$L#UBOolY7`4OT^*5Nm}x?jLuF2oRpsObHo z(i_Te)#l5M%=_PtO(M=Hu6We)`}d@-ZZBvW?FNYvQ9rsq?gv$#i$BB$KO)GNDSBA- zU+LaaEU$`SIi#nS%m+<5!W?~NU9p#UG8FsFh`th#mv-kB9@ItC>8V&fW8n4CVH5S% zE>pd@vBa?MHZ0*b)Zg1XY{QYF)0jy1Yik!vK1g#`e(y++Vsbcr+Tra$Wq8SgCX`-R zEEqAcXSH{zH}6j#U2%_4axFg8oc%gY@k>2794pb=+^1Q@be%SniVR<;e?6bcL_r1~_%DQaJeq?BZiQbgl-AFCb%yDKk4E*U#Ok*Qd>hcrjoI2;V_OU{h zLm4e9Gd2xJd%$Am%g=tBBojSo_Oyc-YqN~>PCJ4O*Jf|o8{8H92!X{~b^}F$vj{ga z4%DU^g3&7lVvh3ID&78vgetq;VXE${I8)3;-rh6w1(gwc)5Z*p2STC*{nWlg|Gr<= zs8*$&1kFQ|M3nW=2~+9nuaR*HwcKVEGQL+oRg1$23xEVC3AFd;IZgS^T6G<#(oT+`D9!adk)mU(|gWjMTi7hYYVXpT|fQojhy z94rfuF;2K(cpfI$$+xnQbsPZgtU2N?&df-&*AeZT{;kfmGi7v4c#iz0KZ2pDy(GLA zjKm(fEZNt*R#;5DT&rqHQBE^XZ+Y~uiDQb_acvIcheE@#8dj5|kA9*+U1@3Zth`Qf z+l+KWcxJJ-bmZvE5N4*B$ja*#6b*NUOdP%R-gM%a;)}Y`nx?m|Ir*!1#WSZZkVqyA zs12R%7;h3((-P5UlJ&4+;4DdT=5NT^lj{{INtDDs6`pYz&7F|Pa0OS%FBpuArpShU zCYVa|vlYja9Udk1oS^O~MjN~M?MsEIPo-f(DC_6U%+;YQql{Y|DM`%NPBLkz(hxOv zl8n{iSr%^T5vgpcO*hsg^H0KUIMxvRr51O*w(8;};@UV>Yr2DIkJ;3sg9s7vX*_)8 zk;*crh-`qesV)`6ClPL7h|?z#=Po?bHf|WI3z15On8_(JeXW#^rER<7FUDQvFZN7& zXv(NziqKe*asmXwqP$%)5&DMscQ4f$AKk*w%fp>IXK81kL^cbkeoSL?`jl2Dm8-`_ zH*%{Jti_Ohu_Bl@DVVZd?)+_aOW~UHUbw#AlSI}K83zvEd6h0ClN!8rN*-Evr=CWZ zAE-0GKGXP*AgJsu+o1amf2J9-rDC~=QqX++$ z*($eVH??R|QBs9mp++R;ihdFSf}Gh|mBttq$kf%L1HQm&j3>I3pi+8GBOjWcTL%;K zd%xmvX_Y97ez;_$_ccW5SZz1)TciyVP9K?MUK;t&61*kbx-0?2Kp4Y#m$d17vKE zA^W2Jk37vwGQY)Bv6tEBByvW@k3O+084Fz@6&oR$r+w-?rdJp_a@Y4`mDfhWTLl$C zGU_3=Ys)EPV@69uCrN6=j=9-%+%rP18Z&yp>uw%W07&fLKm)W-YS-+H*JS-?|A+eYsZbf+GI14RjJjb zAUG=NnOOgdF58RVC5|z)P0l!-L31D4sI8>wgTa0yIC7yF!jHcbSsx*ir5<=uY{p+q zG}mUpSvcM|9~t3IMv0BV_hK9N{#bms>~(Md-hEFGOL-Vgn+<{mIXud_hM3&vgleqx zG~O4Bz7_c5=|FR})0W$Is=Z~#_!9~!nxNuzODEKnL~GM2h!u3a_3(Xv+`RVIR>)i} zG3JYf>yW1ELZ!`DN1fn?K9e`}bi!_wsk`>e2lI<{|S8^s$QK=P$WFN`mnY z4+^YrOqZ|Rn7DO(^re{`-xLk48VE!)+8Xg-5pW zlNDM$BzChbgkgd1F@^XpmL@@i4)v-|{I|TJ{KgJ?!(MY-D!c=YhImTum$wbgEJw}F zNfkPXM*+26P__-<2=n4+upbX!5Ed#$y*pL}zc?zbI|#kX2?fi+ZJP}-EL`hc+d!@+ z_sVlUTt{Lb5ZoJD`#I0A066hiQ)`PKM8rYNGhA6@QYhOMg@hr$uFCIJ&3c_*vF9*=Jy$ zyoAFn?G4-B$P#CgzN?fo5qxMu&YtMt;2JQ)^c(VpH~BV3CrAaI!iekiRhkhm@3VfY zutbElI_?xijXMv)P_33ta|&aw`&#=QY&<2H+zxxm%#eIXiW@pnQm(7?S(7$A@yWTQ zf2oW5br-kP21GC)ilZIS)ySUI4U@%sLK#yWBXsCjke*g5oQ(6ZW{kZS8Oy3XL*A#qV z={<bmYQHK4~WirQo#^9@in}*Iao+z)6gN) zsYkyw6|#tf;dWPD!QtrBA6IN;jhg+57?Ci+&IR3_p|biS<@Q^uR@NO4(U63_-eb|a zi+jNMyPQJ9cqnr$_B322VXs!h$ONKMnshyNnH2t4YOP<6=4As0a#4Qp;9=f4yy58v zO=%R1Z;#`R$zfg&{@;llb5w)hQ#m`ru)}2Fbv-D;2p3GNOwI;IeSDa`p%l6nD^ScI zr9%PTjx96aPF0ZdmZ`lxe~d^As5@w($8A>Qh2Xx-6KlKmwI^p-JL;qj+FCg1I+;() zTcNc4qaoIogqZ1{EH9LNV8)tEiqJufBOz57!{C`7?=y>(2pghL@}^)>n$yDU$rg7C zm5w9j2k_jJ)J5W36k3f-m#q0TZ?KKjk=D(c@0(UXHcV$J_A18Z#72`OuPHvPk4Ha3 z2U3$azY{+>)2fYIqh~r14s}VihYSEJtRHggOh$O+H>h;Ikg*>Uc3Da{ii!Re>o~E> z^i!A#FN$IH;_A?*a-2O+S>k;gl28$_AU~<0<3wo zYckY3SUESO4~vdZ9@@z0#KklOPrqI{MVG9``mU(3?Kkw#dW)F8VJNn_IsBV>ekqZf zCN8VC{JG=nN1I8F>+x0VH3>wI7CE5C@v1rAxt&JS(6Lme-Y(W6e0E6{ z3W#5J@ccRLD<~8CR%~qUU0*VDLpjW1z4iYVSPhb9)hJ&-^5pH)tOLyIUQ zH~koR5I@m_Qm5U`~@Zv zk@w^~xK)WE3Cn;Hiuym)G6B@X`V-M&?J1@z3|qVl8(K4t6>jNr%;)h~N#mQdm|^nN zPUQrt+%N;QaROt_=W2cLyM4gvf0(qi``dhEIgtu=u?JR`r52g$LE79aZLZvm8&gTM zoLm|O-rpX_tPxKYwxapfrtKA48?ZGeV)}!h6Ly{*RIskyG~x>u6GV z_o1Rm#&EiBrVl$vkK($eAL!q~D%$oU(jsa9#z#0yM`Le?nTecnvAO$rJ+)9)vjtjm^o+c*<~_O?-TZIOqG|TdS>;k#vxnZ{OVUla? zs5^U`4?1-9fHlHouF)S^yVmAp1Lq?9!v6Z^Tgd z1cQQU{Hbc8A=@hNFUPxvq!L-#85LK|Uns{qsrPdJp5U?Om}o5rc#+dAVy9BsqSP)D zk*HT4jX|kLCcVcB&BwzUF&!~TbE(7tB!(w@t!oAYg&t;7#ctPYwrIUH)+l0w*xCKv z3mpdDy_QfqfdpW^1g}gb*6x>{24Zh=#Moq=As+RWqRle?z4tQGkC>0T^o0Q4(FK?f z-~^unXL|ChU6@1hcQMwh%c}KF1@sSKW*oUzoe3u~Yh1h){e_&eM~Fajg<`5U_SbGW z)pxlsKXVp)e@{T1!3DNJtnoqSK5#fHKWs|O1rQsrLBgCv1wB9%yae*1L*$JnSRBA{%`p4H`#r*|3FOQKQ;V)62npnaB zRW`~Uo=Lks3p(oadHiY)FV99?G1f?xNzxzUi$A}?ocp(f| zVID^Y(M-b+5!vys3sWb?{x$H9wY>9(@e})0e&_Rlc!aior2KIfn!NSy1)rc-2ckk~Avi*`Qt@Jt>|e}$1@tXZ0Q!1Sq4OAjiAp%jO0ktS^yqw zFag_wP@(yNsPKH4YXCsf5&|HpHwHp$EV5S#@^f%TVnj!x)&y{AgBsW}kQmmHmI;y% zSs$@gP!q|Kw^beBx@1k0(<4jwV~AoVM4G}vKHf8>n#;Y?`p^Z4i1~>%>^nGK4v$V}rX-OM`$PRscfpS%Ac^UBJfPul?!G8Fj-rLbfV^@kY~nS)e=#*G!*~T4})5fqINauq`NSKLBHUv;Za$4^WT62)YGn zjR#P%cLF}{HGprCc7$ue)8}e+zeWX|^sYm+h&w{IVCo~c!adQpDuEq?g5BQ`|5<+9 zm451I!FgVcTLlS4y7AE(c35E5h+K<&S=TCtk5u49B4r+;gj?<+;dVJ=Vb?My2l^r6 zmXO2#naP7vA_Rjx6-ewUmh4MWT*AXpc!P!ElkP{qk<>S$|CW8(^SzM(wwh3~lEfoB zZ{_R%dZf&!B25k3wv*X40To>Xz#QH%m#z9J!jy3^xydq+DkEOCZn~_nxd}4R|3=LM z4|X}h-rmfYLHcN&^jZ*XBPpOU7u?H8ebi3IIB4FH9pK_F5!l@us#Yf#p_5Vts(CmG z$hW5pX7NV4Y!=4#lF5bZWK!{rkI37iKo*-7H|0Z4FPek=$Y+ z-aesm?jn2$|Vr33Jfs3j8dTWQB^RR1p%OjlcZIJ5OS>s2O6E88VH}F2Kpu+kyPnk zo)mp&O}Bi^q0BjNpJu%7t*qm;8Mwf1Rib1(PMT6kbU$e>r-m0xfab! zAp^CuY8-MyZ6E4_@h0#g`3dwg3I&F?pkyDa8rnlO$cwC4$Su&iB2 z@ksAg=326Vi?OU-MY&J!HRM{df_s?&2i_DYU*+HYut9)1%hyP_CJh7O1`5GcPdO9l zW488zLj_|4saJhr)&N6l0P~!yQI9q_OOIlR^}KV+=^Eh4~-gswLs zMHJDoatDXMezpwsgI_tATEUMyZRs=ewSVc zDmrM#hQ5JEtzw5*UO#>F*XQ=iV|)Dh<*mc8VkfybgWV8#1d>A+IU9Y#Ul$i{C~)U4 zy9L}av6P_oSYI%i3?!hY2&46%8qC@S#i|>KV@_(pi(nLh@XGG{Qrp+}s1;%$dPFcD zI%`BOPYr|DF)SVDmOw*FQ!8m)4w{Ar$6$m1`sF#_jVp96B7p@yPf z7W@DFl>h$FXcnZ9z7|2hPdM}itTSW|7Jw(5zlqiDXX7u0U=u8bViPEZWD_cduHmko132SuSL#~OG6b`mBNUzhA9R>t3q+Ve3sjg;3#1Hx3v^VDP#|@V5U?n_ zBamiN+PK`6576j}4v2PTs~vAc*WOyY;B<&2B;gMJW(inAiB0cSTvN}!5vJ1g9!DxgB2_R%P7^YWVV~t68s}i`XK;KfhA?dZ%BArDG%P zm(&joeB<50du|O|zbx13hRDI|1NAPe#}89OQ>3x;``D zFCxpkr&Tjds%?y@8qdEuJF%9tSSGs}pNjn%+lt>Ay^A3k1&V>k6_+v?GPw7Dk6xKS zXvYuz547OQiz|a+_sefH-!W3&ZyAh?#ZPYJn6@>@Wz z;nFXT{yK_jRrlE{s#spsGFiU6M3N>?{ZAqrVO1hJVNv1*y~c=D^p6p(^>o-p@gC+YsN@+%~8&|ps9M^<# zD&bs4uRT|~8Jz2caW3IFUofm??Gy@LMz85z0aQ1PpL2{a`tx?XD?_X0wK&+3KMhD7 z*NC#Fbl?K`O9$*Y(}#@hoIwJ3=A6Su_fYP&lIfMt1nn~dE0locad&!b_;-3vi$v3A zc0aBuPGG9>TOs+z+#O)Mk~5e0%s&B)iO_e%~L-CxKJ5)TD)rz2Ya4 z|4?BX>hl%niK5_}z!&+S+F(rZL+3`(zGrOt?r~hjU#8rzlrn9~h5R&y>LrEhMFwTx zIjY5!Hm&x3N8I7OhuSBh#taSuajS1Y@{6#>DJN95EAEK=lkSB48}3pxY3{iEz4I{H zhwX6LyX|P%r?zkl?T!#-t-66427JI-{g%L4gBBo{zGonpfhVv*{~^%5`USLH4G$8i zCP9_hKZeadI7ZFB7=>j8+(ELs-NCYY+|B;7zT*pqv}B(`fy?MMJ}a0>E9>P>Af7SK z)c*!bU?PTcY-1uP5oquQFd4vthjVZP_0AY!WYDTG)`+w)`CV+Jzzc1iVp~oHJLv6( zq<<3DiAtvn^0tWHmX{D>3>DZGtV4W@rRlt-ZEn*HX{ZeUOy_yWEF9)_4qD&x8Cnp% zg)M3;A-J?z%8gP|GK3l6%GzGsY1-aeb}Z_Zs9k8;?G6swaCRlQc_NL;`QFT?9C z(3)_J&33 zDqkSAMi-=hN;@VA;Ykd5upD)THYOl0`qq*qCxDz+Wko{e9Wu95|ITs#aM7%JAh%6I z*tMjcR7J1k9HLs&6Y6B%fT(Jkcl+E9@F2bBSLLTvXX#gcDH>DW=W z&(a;eyHjc%dF{{n?6Bk6;;-Pro0!zBN*aIFSA)_g4{EI^A7q2wQ*Lvxi zHiKzvhl4+|HZ#_8Pr8+;%8|VMC5B~R%5{DsS)RaMMz0i#Fy#Djg8En95_mAb>h%hn zLUJy3hjy*6evxQh@gUnc|MF$!7#hogC+u6}ydmhs*2%ab6S=eC9Swo%AKa?g!e+lKRK?GVgQ!@eUsaW3O$f@w z^oS=%*rLI6f&)~d>iVPuA*=M5iVW-%1=0K4o|{7ejw<>cPWx4DW1uD)GmL~oBT|2u zZ3@Ul7Z=c~iAqus1C3|5BcM}F1g3X@(yfrpLSUY!g&eX@0$S*@04jN5wX2n2HLYg@ zQ&!xJQ+T1Zt0rJ#XDuOz?A$>_4!nRMUU=<_30URneaJG~8{ljsEa+%O0*vB-2`FtQ z;8)Ots+>)Qva%cFCrsPRjvhr)9yF(+Yp9D%0%}i;u+O=2LfY|{zw3gL97q8r&19|e zs}TBC4loOLs34vdTClDI7a*rOBq`NtuXufx|8CX8IJgd-A!a}Gy`;B{kp-H+qd)&kP_&;ZyuZpo(yw|RZJs`d0I}n7c z44`tSS)u>gY6TuNR)B7Fu`h!>P`%VT&^n8GpxNyB0<{|Pz(3AtYvnqmY)jVnx!c>I z)q2pjx}ghf7tVt^AkSG_@y^J~@mhZt>q?+H%FKadJ@U$K@*3btA~SaeC6gXp`fT4N zM)%a6_-t38dCrEq+8qCwk+=M)dCxxP34Cx*qPllYg1Yxi+C~M)j3o_CT%&B=j{7=_ zHUy%(^=Wodm%dRyjs>r|?c3IZg!u$6D4}lF=aOL^>y1Jj>oujQEPiKIF0o^hvjTo) z?Z5m#Bwb}(lmFL-jqdJlq`SMjloAGlfb_`GFcATf7LaaG8mS>Q8l*w#7!8ur&40h= zd2!w6oa_F+*k_-;*!RSB`s;hh<9gz^Sd9vdLdfbqWT5B-a)U(~k2sp>fV`Uy@cIzm zx||FkPXKyd3Uaw+0C`=O8IbdIcKKLR;%Gb`()A+QBLTuQ%?1J{G&W#Z@#Ui=T=)QB z-$Pg=rzc|(W#?K5O$|2<>uRKO@ra%vGvsCR8c=+@A1vI=vrpOIQ)nv znEIk+oNL?-8Mvg@1kSfEYQYv?I=mq~MLxo6UH|^sRrB1*gweh`!g%ZO+c?sSu~3x`NyBGk3&zG87d85SKrPX$1Tt0u>ib^Gnxk`S>1gXeu@fl-fA4Vi~>cJrn-0q7F=UTvZ3g`>mmB{0zjj zin`~QoE~pOR4iY^lfzbl661P~PVGygGGfQ~Fmcr7P^;{{Fcc3G7$$s^JR4S?Xfc9cm3q(mrmc1_=m+hghE8B3tV;n>fgdH5&_UpVt zbu7A_W5JJvs(djK!4@edezZ$=vHl?LKBzh>Q4M-B0}^3b128cn5GXgS4{S#7_o*Gj-Sq6P94t3ZeX4G z62=od1-u)QH?jK4{>gBcnNW6VRCG|q(V-^#VM3PhHubiiB#($)b{`b+BiCC1Eze&7 zkmn_Uk>@9Xn&%^co(B;Cg1`cpAm3UPkasN_$iEf<@~XuE`ON{dmt7;~mR+H9D+du{ z$Cq&0V|+NpwK_r%0z6F*PK_=JY=|xiz!e;9_;Wrvd?ucFB$2|S)U$Gk%>W~IfH?q%4wC3SKCtC%*nDx%to?6x)Ukf zs((2^{nH#w{R=A;{WB{x{VOZLY!E-NJfH@pJg6o}GbT%xO=T`ZM0O4;A~(j6Qb-Gz zHo)aB-Q_@n0ts;>2)^g;)+`uYk0QcK<``B3r9d}Ue;ouuYRV}kQ_4UH(}18z*1*5` z9%-DEbXqU@VL=9rU^bIbc=hEZhnyC<`*iK~MZZ`|Whbn8N+qt7&7yIyZTLUuHPY#y zA(U!)e-NFsB>UL0|B(2*57<6g8y>}wfAs+~Xt)voY+Bc=E@K&zmmxbyBoG)EQu~M0 zN!1|dk}N>z{G2SPkTH)1fj(h~P@51$uup&y4ii`c`)`Hv^xbVfm)l$>^_I+XMhA|G zkj#C1)Y!0Wh^`X5M6o!aAjG%)PWWyzNM~sAD5h%V-{+#D=WIdzj`juiqSMl%`Qi>y zI=W5v5yKtwaD7B+vU=+`{itvHrCerd8E$G#W)HFtFmwFi;O`$>SO0-ru4x3CPSFIK zR#k1oPuLJBCvOpoo_ydW2oAUo@qDFScE#oGyzdX8WYyweA&=uQm~Nr>*+I)?S@4|t@l2KXcD*YD}`_Rb|f0p$m2qinbj{fq8Ivd^jaT(g; z*x3&`P08&Q9c-e$22gY2%aOKx5)75n_CpjB{y;)wWrmRW40>hd)N4U@JZS2_AFP_N zbvbS9+f#m!KOS~V#~?Qdd&Idt0L6NO4w=rsAKguaVk(Z*%xMuzf? zI6-40I)c$>T65f%IPT|#lQ9V&|6FNBT1YbjWsYV%0`?VJUVrlpk${?ne)}Xk2BDQ) zfnZAZLMSC?Ac<^akbDne3dcoGxl?5{${X_p!lIqvtIGEG^`Opvc_&Xc-hbP7d0*1+ z?ocvr4b7ZeYx7UIoug{I1ai%kMM8`jw2k`b$^D1t-b5tMx?|k!9o{nKw|+Sy?NZC! zEfxbcqF1kP-M{NESF|n6e988;u&==V?fwr>m_c&QjXEOJEVMsH;#QsIG0T(e^k*&F z{2`Cp9sb(8EobBpvip!(9K*RK!~x+E$peH8N>D6YGd5MQtemGswh`9QEdy=PVRZDQ zrr?eXZE%O5i?75~iyD zhBxc1#%@qfp2jR){S7%hTV!02c&!8-6!JN)fmHvS;&OctkCo4AG9Zy$(D(?O)xeSO z*Qk(tRib;IT%X6kA%Zr3(eHTl^J~*VgJHi>5Ph9$K0fcCT@;N2pYO>Rfxjj1LR`o~ zQN=!X5}6kY08IbJL0{dG*v7ABm0JHTzP%F`{e|{2n3~3+sFQA)Ew>NN2N;SDvqY9i z^rp<-XXALV!zUEFM@$FC0j(G|n~nWz|khjosc^P`$XP^=d2)Mc>jh_*U;GW6w8RLV zFP=05ke`i%W@V@QRK5q(Ag(pMc>(K1jX5Vf-zuH^WXZUC%!eBO^n&Ak8%e~bAC=6l zipl70b>h#{B!k0z`Z9Pm9dmr{vAxEWRL8^D-C~!H$HDIH_cEw8iO+1>Yjfc^^Aq7T z^K0Q4bC`%bYAeP)1zZmzSOWs%J`r#Z##E!(P>B9GdYxacJPxJ3)`@bX+Vl|$z6{?1 z>Yp%?ws7SMRPrZm`shVCzjJ-QXmC!K0JuH>;^)AcO-3oUV$6?x z-{2G^{{zX*DtuKP$;Zt3%LvHXIr%b9X*+ZP**@^?D_5ix`K_Frz?@)GkoLr~mA%b~ zQ*}-_^Tx&OW~KMvm%t}t`0bOOl?8$^_D1=ctB>+lCnD~#6wdxM1uuOPDgiwS8}mGy z%jF6TG)_#6`2A=i2k@YquJczu{(%QQOCo5($z6U>aDQqf;67b{qAU~X{8In#jyqha za%$`dvcgXNZZnpw`DUIC$MbgnEzZe}IbYPfS#Gi-t#ad-og8)MEN|(kcLUU9S91%x zI8)#TF4f{c`#mh;H7V_~BUz`S+WiGoUS2MuWqm6Y8o%b4GD;Oe!>Z0nAU8u0(E^NIf z>KJHTxCpp19M`xRmE5^4yi&i*<|jUk-X#uK=E3)UKzTUloqa}l27j1mkx{wc(aO*H zz4=J1_@@r|N|>~B$Djdc_4VB~vjZcMi2rj~A0dj6%{8Oq1Ce1e!95{MSYJ3+0NFRq z!G~yKg<}PPEb7aW)TiQrGv{X^1og8Q!r~blA@!_<2z=&7pg%h!)Sjsk?9Ubmhi54S z`EwxR)ib(n>NCq})-%cJ&u8Jfg>dwM-f;5y4bL7@Pr$m~;~a9=b~t^&;2K{0K^JQK zt|#j1^%|P|=^9{%s$~id;)^Y=`PX3?cqM)e^ohrW%c~QNs@g>2=_wRT)O9I2Iz~)k zN>1(_Q0C4M>gG)`O7=1FqlL1FQC&TLpxNKXE09At8(6oVfwrN5b=I)c3r(WvR z8=LsjfgtguasCybO@E3(9MxLcIDglyn6Phm5#02-d!wW zH1Q8w&WZJaz-t;F=>2DF%>~aY<%ftV`P^DH4YXA&cZyaJSztW8DeT|iw}WqX7_U7s zXh&^}^YwMbVx&EVQ^n&1+?fXsR{m0+=(>qS9)+#%{a-=MD}!1ztJ}i_aaACdKox9w zRy+XeOQgP!7*spY6})17WHU_Hr^bvZkB@|l3^02K4!l7~ZDJXZ1IhQ_dyxeYbLnJ! zwug@lcp=C)(WYww4&Sk@6D->IZVm>t`m&)ve0!PDJ%x~;mu5@RgSs62yfom9px?wh zt?{A=n2^M5_sqeR7vx9r0Z>9a02vV-zzk?Blm{*ktt|0@a!j|v#gOouZdDZ7w?bfm z4GYjECBdm=0^m3#vXO{JA_Iv;B=X4wP9w+!lI#`#0XiaB0UgkOs1;%eMXJLHm83RB zk+I|p#vKh+dsTD=dcni__qB_-7L~)lA@E0naX%rJ6cbEL_GR}?Di8H z0lB0u0t{uv6W-_tXwZ}x7vp86eTk_oWpQZKq_)RuDPi-?y>_Z0tgbir}h!0vO-aGXSYXU36dZ+DVv_ z+iAY3wQ~!i2k;4!2goT(uhM<}coPrzwbil3IOQO^k`W~Rx1=~41!$Q30Rj5KgP{xX zd#Dr~6WR*TVZsipMacFAV-DM0V2=+%?lCBtN^QW*b>U!Qup(FpYzxK)8-ls-oMlQ_ zx#XgoS5d!Xg}G3_Xj_gLCT49)dx_kx^4cM(vxdUl6Kl+h^=ng6$80h$`dlh6xaYa<2Y$ z6Or1cnjw~DuQa816L#ZlS|c5nFgfeL?AF8{TZxp`*pepDDxG~{r^bAaojLdaZ5}w!;m}L8oNdprt z??r1m=}U+&bD82BPcWQ6hYDzB1u1CK+@gHblwzJ90V$4_E5H1@Ow?qWPvmFaH7SY_ z89+rtmV&Fgn{-W2R#Da|3(&)Hc0BWgPL0!06XmK&(2x{4P7uZ`!ZN5#izH~FoXYs{)IvSDN#Ph=q>vBZP*@H3DRhUQ7aqZJ3+dr;g}HE@LTmU) z;Q(AaK3~KvGD~Hl4cNHaz^Qm37YuBiZV*r$IlBjn#widLINU~}T5iaZ6|k@NqFPqU zksz63)Oy}$DeGchv&QMG+6jx;e8mCMO?=Pf;vlnK-OAF254ux~@w8Ade`n~wOVu#yT z%$}L$lBy%J>`2GSFNVTjTV=IpJd22Lq!vGLg*CO&(z`{OdBHOy;`fBD$p0)%6PEE8-TW*0ok zC+q3awk1ko5mnKM)rg0f*(lparLgzD(YCEh`bt$Qf@@3)DtRh(>r7p?S$N$^kvSjH zqHV{N#-owi&RUqQ@Ii*?d2JTT9$M`BSE~H)X-Vw5x`A=)p&!D`=}IP2*#Ty_yyRFm z2n~`O4povH@kVjYF>YL(Xj^MTn3WP*P9Z*gcv2m4KgofJo^(VE5=9y2E5BAWh-wBX zL^q>$eP{-jtH?y0_sT$Vd)gv!d$-|g>nrg7bsR*>DFb5q6omM3Dvvk=v)6I8Gs0M` z(54DC966#?OQKT zU7MwKzxQePmUma9LTHv3PpQEUZ-fs?UQ>FYwaDvYfb3{{oW37q*wqj;_^9%q*So*@ zG2Z|j33YR#a-@BmoOm<Z&{{4M2F&T*oXhHMuftr?@=Gs=cAMP->o9V!2ZzF9!hP27;bo^Nry)0}L5Ip;tx#gE@d)3yk#U$Q+KsI9r@m7sXCQ@3%RM$4w5SE0MY$hUETcmi{jC@Dl4v zq*f&l)A`^R+GX;Kj?bFRneMJ<+@STjL)0wkE+T)Pc9dlz7&_u(FK)LS zS_{##W&km4N>J(rNiZ1*&x2Q&Ag*tqR|iJ~`bS>ZWTM9|D~RE#ShwK!Acgvd4z6=f z2KlGbiS4K@Uy4{A9<+|>w)%>s7pA-(U$CsKhZZWq+^2p4ddzlIOn~)M%gK`ntPj0g z7VVfl=QydHcf?o|JXRl_$|6qNdkz%Cu}!Lk=|O}+VIS<$(32HDl2obfk^FOq--o?- z=Ouf(EmM{;+_4{FrM=lv{@2y{8mHeAlYH7B)SVP&jUa%^pdXW%^MhO9IM86UV{({* zZ7KW_P>E)WE6a3R0ROL~AH79QcRweiX2~~q4Fj+g`D#>l|-sE67YqC6IN>ibZ!<#XH zR~SW>ArPf19*-g@IIiREybeRqa7@PMpkY=4>hlyYfxts{gZ8cO8M5aoyCC6pc7gV- z(v0@AlsVAZfX-^ru*|#hSgcZ#$~fKkGT0s@R-s#Ru#Z?$b|f<7w{3OjPtW-=-V;Fuv~1>tid7N% z$XJ)1_~r{!%bQPeJ=JKf^gdc-o$R4fgAc?}!PwsAiPfKb2GLqa2DOX8B1-A^^I2RW zW4g8ydRYg>cGJs5D_Rmfw*AFmIi+JLdE$?Tx3$+jpEMq~nT4y{&`m$=N#tK+AtzH# zBK;D7gsPhM{M4{uPreUz3nycEG4z5_hRETSs_FgwI#(sfSw!L=)pgi3r3PbV{14oV zP8E57;lDCeB$d@$cC#7~78ixj0WVzWaHjA=k?l874fI(oS&E|AM_9r7@u$gAoxkl{ zC9qclb*NY;*Nu=}-JwB!4elUm(o*z~16KcdcA}Vq$6&@8ucgFr6Nh8?gg~ zw3Am#_W~!!rf}iuduoVnt`J9m_C>sQ8h2Ds9EgKbUVCcok}Imned<1hjY#tECVS`j zy9@1@jc=9AcP0m}fY<0C!cfRNg%<=z8cSSmG0i40q7EgfW+QN({s`?#b=|W;ftWKh zs2G&wEwQLJO;8h8A{P`_Lch$Ha<%84a>XUJn{>s6P8(??Fi-UfRI)C)W6x@2bJ_Cd z?A-+c{=63>ZQ>6PEaU3B&O9c$#H-0MQu!<4UqP`|k&mB$w5jG@)DLq#geG0qeKnfZ zcpI4*n(!lx#h_b#fCxQ8_Q*cY&Mjg{M7~*cfPrXX&t6Ta4})pqZoYzwmgOubu{xpt z4NG>2n>!vca0saoDnFne(~hvuwsZS36er&-_E8eB#m=}yY;UhBes3Q5Ii7T3!#>z9 zhF=kMRsV}BSb2+_u`;2)Ton}6MWZr`dPdVeOm%PKYh0N~pBUK570hsFWcFv^iI)_1 zY+r6Str|0%V51oE*Ir=q4}QJE^O2%VAMZ{uwebAHd}Y$`ct6ObULxdB8Lu8Yq>F$g zac7=z_2bY}C#fVgi@<59=1n-G^44u=31h#y;#qZ7W1pre|6rM_wS4q9kWKs23^Q^C z4PmMX4CO0~PomQuyq=FyeCF+xB%8);z;&)OO<6*oQII z0RMqcPzif>c+LFZx;p7n&<~CWu{QGJmv$}ouH7rB$ZmH?6`mC#Oc>lDn>JDV-Vj6}IuYTDk5RQl|m zjpruflF8P|I;f-(cKBQrVMR)I}{Z{wCsCG1iSSLU_?;#5k`wZmrA^KHk7y12NDh2P87v9usjs~Rm3)8 zTokYVi`*5jl#!7q(<_Kp#q40XAuUIsG;UG@6wzl6~m)4s*>PoN0W^avO$~$%tNC0_66gexmQmMi*h01*fV=<_$4Kjm~rVV zR@LXpsmoWyQ}q4Go^AFf?|<6+6rnXOW|`wJr*o+dFOibbYPo6H>239l!da*1&-zB2 z*0z`VyiM7DB{><`(StqhLO;yD9*#ND2~ckru7{o_nmqkgeHu79Vcd>mnnjEKS@+JTwQ;yT$gEeeKPHz$d zcd9KLIm0?wlv9Tp?y#NFtTxI6SvFckSbe|PhJV<}t-#{rFhl;A%9ElhBwdJRY4i=b zX|r4-YC6`Wi;dxP*65HC19|hZ0GzX&rAY^kcC%wGZOz`l&wCv!jW|M!l7*05!jI9= zW#wW`;Hzj+G7wUyh-(tE!wdFtz&$D1-(>?)R7?`GJy}gF6ao&eQEF`~00Af0P~g{h zs0nObebjnZsPfu|5hCd@^|Kp@wiS>1J?SNK}e-N-0@~Oj_u3|5-Mq)k?`~$3|AAvJs~2&mw*P0Cg6r zVjkt$<8(Nt9cwQ#dA!h|m7*YZzkZXztp-zG@x?T#}6}Gt)YFH-`Nt}<5Q$M+)|lbiXd6a zqeJZga@FS!8%?%Fknk87<2B1jVN_`*XuOA-fj3h^GH;9y2a`FI;jWTC!?k(p@0uW2 zhfaBuIYfG43_|nJEwnQR-A<-{%}zEXSdidAf*FY@SXaMq-rI1K0pN*XE=Txv?&QNT z))9IjVTLFv4JW)3rWT34PG_D{Z69N*v{ zR2T7YvG>NeTo7Y#xzRC(#mI=*=8Tz=c#Gl8tpxMAsu4p$DYOwC!}0L8VLf>8@EE*v zi^4YCo98sln-J-=nlhg0rSFI`%HI*i8H*C}7-v9v zOw5XUo~AU(%4+~R#&Z#sCe`q1vdi%-vdf`GvUn4VztUjq3VfLSAA;qipQy`U|Dt$k z`vD}%-|@DTcmP_;zC|q=Tf>jOzlPIuyWEby#0^R3W~|h_^@v63d|?2 zD^KZ|@^o6NARBA`^S!Oe;u`G=`;am~L0g1MN(j@q5#c3>P934jpe+~EQw)&6I@WZ- zS~ddrB3z6KyXk=vfa3rcvXfdpIY6FfJnDh*rcq?Bt{jGSeh`V61@KJgknGo&`F%3J zZ#hcT;BUsyr83&PVFD$eCv1eSM1RQ#4S&hdjoYlZ>H9Ztuz~k1LbD^gANX?b;X_6{ z@~RrJ-v68DN>#Q%lml$)F#-3hB!ZjVeO+4SVz-HYYm=L~8R4X1>BBG|ah{9E6 zn|C(hZ;w@}e4!BicWzs!zardLe{s33T(Zar*n4M`sY%)*y@_$wA4v|h#u78DB$}Ag zvEeV54eFx`Z23PL$9xijs-1cpA1b{03&P7zK6{=sx!$1CV-pi311!sMDr|}aFb!_~?1ySSce5g^Q8o21g z?q5D<_(bxnOCq=Hs_o%k_34){wfC_>Ezq=d4p=!u%Vn$WS)$0@fgQlrK^-93vAr~% z7-Diabul~NY+mq1TOrT1d2ncdo*BFg@vI>ClullaGX6Wg4Nu))f#3O}*D-fs2E6E? z43O?14B)V)zRwcdpidKu&DERnOwG{=?$Vq7vTE?yZfZw4wcY-Lf-4eMlIzlbtoT_k zmN9jYBpMX#i0v%5=eNVmc8*ip%hihRK(92MF{9D{Z5FXeZYA^4)odpFjBhqeJ|W1; zU=FY}%^7jDFO7)5(6ZI|$uOVkfwHQb5AZKF7{v4E3B?GIS;1;gMRo=1=L4@wvLib7 z&*5$RxB*X~JC-_uQ0)19kB=``4O;p_+?YbC{Q@I?TB%!O%tS*~_Gu8{JDj|rubnvc z3yO9kJF#N{cb0e_>*`vtDAIjf*U$3y)``g@a~$eLk8R0F74Hp)JB-!)7b~bCxyNXo zT5D*Xde7G5FDYFv`Ss!mNwRg<0M`u5d|<|D9VtS$bfS9Qa{Cs0QQBqVS9=Mu3f23! z$4BQP8xJ96bF|5AL!E*RBvE|t34If1S%e!|>e*%pt+EO)V;nM3ZH;!64o@C;)SN=i z-nKV%@`yxod6UDG+6$-zlFYRnV@ez=`)1$H3;qPt`mNu6Zqd#T)RbuH<^EMi%mUGL zd;Kw48x=CuKNuf#mX;fqK%`N|ulpq~WYC=cb4@s$8zDhZ_BI zwcPQytDB+mnS}6$%tW|PrUASRk1ru-A_N08G&w!gKPq}^{E(A%%)H&g}jjz?+e4p%_$0zZo(*HTeT#ar7aMWeEgwIrlnmJuOE$jk<9lgj-NsC;!|SpkgvZWU+cRfozF;z=D%~M$aA}mz;CLl z>N2zAu8pC`@BMS7?*%zD`FsWWMH~bN2#uu4Hlw-e6aKM!rOXt=vm|BItv^SDUYuq$ z?Si*zT?UQ*id9q0SLC9A=Ke;wFKXGgnG&`aicR9A`hPM_Z=7i?Dw!(M&zQw(FU>_? zooz07ouI5LdTV7>1rqJ=KlEDF;kR`QYK((}jz~^xnu)0sx_`PRI~omAKr_&f^Hpw; zgPl;b4_3e9^dM$RiBpS-HxW}Wwj5g|Lw&6$FP3_Nmb4X@ip9m0k(M%h%*+zKi};g- zVvC0oMN=6uMpLDUjR^rxvS2H_M6p@p(+sF(tlUga_L{HLoWx4t2CvdDCrD~^`)8!7(Y z6b&a_#5ye&$9X7`1L!;3@AXbBN?xqTsbeaaiAfU)+m!cG<6aClPL?a6@=xba3+F%K z!Boo|aCH1qHXZJKtSo8_P~t9l(D~4z(rA4_H~kWPVYhm5HvRqU1#?9fp6!kumsxlE zR@oOd9U4mgcbK-Z`Wo7%2aHM?fAb?;PwgVB|CB3c6nbO4E;sqs3VPQ4RUMA%@w*(F zeQ}E|X>w>x0Xw9y5|rgUVT#iV7G zep*ixDs@Ull+X@B`)TT_ktaeT^L_V-!YS93?ZZti8Fq#l`v(s)&VoDXVcST3;Q;Nf z?q}giu73kk@j+E=%p84xu4h%QYL*-73 zsMd7uFeb&lS{ToFy`7f;gv_y24d6q^|hSKuE_8PZl%T7?54`iSc7uIls z4!Zg8C;D{jP@mHoKO1!Z<>_k_&jSfue@?(I`)uXJe0IU}tK|%$wgw)-PmoJ(Ss#Nn z!o!)Ry_-*c7{2`nU;oR>62#>`{{OvCQeA_2fmO*Ys0~)xM-`CW|DBR??+;vQDnq46 zAo|i{bpV*bCSGx0*&m6iS|)~$5&S^|PrQs#_bp(IB)FnMrNEL1pX&Fp$UKMr_#0o> zWG^&Wk0g$j^KTS0>cNQq0WaHFBU~%@9F%k#Ke*U{7Q#{%dnTHby_vv3+f6R-%RGiG zcYVBiD8O^x`G)rN&~%dwoIMpGv!tZs7VQR)--`5%UL&ku!6j@ zGc#ZH+gzmRtoAz!I1^9U=*Q@{r7%_M=qv<(uH38Xz;ND^-=x{oE+&Vq6}X?i!a&Mn zh`&3yM~xKkU=)29chCHvBmNHekvLMGgi&lS6&$bBR+&gWHDA-?8+^8oyo7ua&B1KE>3`=K z`#0#3z7Iu8(qY3)^q%6HgRhbF2$Cj8(iKR03`vV=4%X6^Y`SCY2ecunUh_olMy*ng_Bd&FulQ>4LIUrh16m_j~zUU-?k+{pW;n*U9;>sw!_Q7o!a zEM^f&WD$u<5lOGQ*?ak5Wn1EGq6Ox9FElPye`QVLQldZ;J5sDyOtmd+SJdk`S|-WV zd;K?K5+?x4uh$W{WAX@=21eL?JE4^w!DLqFZN%)^n383$gu)BGU!yW4jM`Pgz+Tu( zH)9bUU6)0d)GSjMe1SV+&N^1!g(iw zO5%^3Yu~;n9*H{JU-742)GUX5UR-16^r_{}84cYbby<{)eU*90og7Lc^X`X}>Xpu6 z%y1rQAmdZhFh>ksL`dc#dNLuCIY+S878BdAx3w{J?{zZ|#gcnTWITUJsLFqtXHV^5 z_eNt#9bP4t!l|8qo2n|GVxB#`%Gs;~6^ixydI+?p&oIvzPB;@VMhH17%-nrFeOery zsp5WvCy)D(LUiv`E{C3zUqar5t|jy+p!+GDSo_YrrB%|op20_pB)P1WEMN|K({h@2 zzLxiq+6zlfuRO`-i2!o&nJNgHp<<39HzrDP6T@iCK8_kA>RK^wCarMkghnEYccc-l zK62pEWfVFIiK4B+9gazZ(J^@W4h2HQhv&4ll`j)pwiFt;jX&z@6PzM$s&kk->`!z{ zm)AM$Pa?%!&z*Y2au(HBre~_ZrSl<{Vo7g{Czh|?9G?&aq~q4w-(|t|y&%|==+458 zFxiv%pM{%1@(IxyvoNbSNoslji`bAviy6E7*axP1K8i|~Gge34xL2gN*hLQYKvjLM zsvbMc)RPD31j&-8R&>fn0p(*`x*t`1Rb#@W&kTu-ZN2>iCGh<5u{9EhdE`cO#=b$jE%8f?kxK+SkHuqMc^1{ApJymm6*D%dSqyxRro3_^i zLm1CVMaI8H2sNha0H!IAFu|wKDr;})nrlp|bspTv$XUIc^5b7uf1{TNkXlJnulSt;#>V_|=t3=Jca2r6;&EjSO?lle53*oZdJ&>GzS`!X|r%*19fk zJLXZK`-+O%s`=ZHRRD9YDPxTRfcS6X!qA<6L)1QLg5;D!%-J=c!#_Ij+F%BlW5YA4J7ifuAq+IBQlZ(^813Awm zZ@;=yvEpv#-r=p+P^@j<5Agb~mp4z7O%PVw#7)B8u&;O{9ZbfzsC)3t!ki!4p%gPd@YXgr-@O@ksD8;Vu^3i;WseZQ#|F1OlEHw9v~J~m`sz!*pIVp8Oh((>rTeYk z%y93>iRap_x+?UZ-@8dO+c+ykXL+7BxMb@^Ebc}3Fg8c^FxDHKbz!-kHQ4(<#g*LX z-=E2Rm-I+|`FpVzyib-dckgHXV0c4&F^hfAclUz;%igoAcZB9p3&DLaciQ-f8Zhwm z^&t*Up&;Wqar>o2j>}|~M?U=e6Yd5%<&nTzyWL`N{{tCbhn|27g@6mOz)v>;_$AMk zGU8RR(O*~pu`&ZP64xfop}55zCy67eI1^EHUM=h{YlJX#1f3$bjVHo@#f@G2Z=D&c z%#odKhINYZ0$;G$X|wew9>}2>+#{H;ZjfIG{}fK3aL{o3lWfN`IP?YSycYc({9sb) zo+OlPZQF^^eGTJZPdxWOKVp83*8Gn8&}?Jn3yETQ%N51e+NRUVQEhWspC_N^dCJkM zij1*v*<@WKDPee>mbm<4n_~En5vYlHXydKhj8m7ul?PeV#DuA26^mLh$z#?0o8Xw` z6Q@#wC7riv`Ds#aj11LR4fqLG+!Zj!D0knAi0m8}gySv>I8G&ByjeQ>^g>BtY5hMX zb-%F$l*BS~J?)1h(OYa8`n$&Z5h(&*hzqnWmlTduP7p|F^88YIb&7tM4cURkgW16o zofA|sZ=@jew+>^usxZ50b&PcU`%6La=)_-oFQ(3JYGnn6>jny^0q6E`!Vu`}Mb(0dXs#vY zFe6GtbZwGyqS;2rsc1rHC(?g%3)IjOvrki=aqsrg>5`0dUGfEgnC_BH6s(&W|2nzi z^^eUxDf46+BNP4D-fJ5>&uUM;J2h^(oaIEMFlddJTFxL)M_s;op1g}`TR$cmgcXu` zH^nk7d`554z!b4mZF0aJm6 z^s6v6c|HnF{{k9HYs-P3TgPZChsWA$>rn9k-5RSrq+0wbZqKL6W6{&B*U;Iewcv}X&FSk#&^6a-&1+!$E(7qYbrAaK!FSpj43I?3qB6obXMABPok4g%SIrWc zueq!$-emY2YaSNrU~*|#ouF)g(-~x8Y+bD%63R$WOK3wngZz)i`=oRCrPJm7)hh}< z9ZmPU9tyHY{0hPQ+Lz8L=O0C#2fvHnbv{H%07Nqm~kClBD~ zdvfd0`h6W@`QT9q^Agg_-{Z&rX)(zM5WsC`sj(ry5QA0&YUB9bb#QCDN1Yo&Ki@{JJyG902KMjCqIMTaVgPls5cm7@s&GY3Z0xCVRV zu4PHE-<43E=sg;YAO#Q<_GS?ot;L+u6QAt`!jiFtMEIvePDI`z8QAkmN9fUS&q)BFfch=k@pM@s!^TL;UJiVS+l(-dKsZ9+VXea*v0?{GIa~)kc!a@mWGhWLvM-%RSxjPM2*Al z7YEIdx!Bz~r=cM?q6_sq^RyMT_PiB5w-FE2W~UZ_=i3%knIB8g+y(lJWT7_F`Lq@E z_B1}s)p3HJ-xv252Bxcgzp9Bmi(XZ&@;-v#D~JB(QNb2>em$Ls48Pss6Bs|fMheBr zpEeZou4N0&gZ+uEsZ_bXq+Jz$j>Z!3dNfLRT(3V2drNoKz_~#EikkWOPZ1_T0f9lo zTmO6q!uMf$a$l&i(bON?=dU^LJqesNvlHI-2`J%K5f_K(S}E{jw3<$G3O7d9=}&Ts zlr&sYPs1>h55B->HZny3wEbxf)P-BSs?8i;`|Yq$rAf-J)ch9ZuvG_v!j#knN5s7w z?x{+8CvVs&sL(Ud;;u$AtpnpBr?mEy&5t?gjKy78>2NjI@T5vO0V&tL2rc^_uhsH`jd`x_YD{a0EnYSK8Sa!P)=VG>y zF9(8`yq&t;C#IIU>*-rHCO_mN7?eo;w`sg;>8x0fkyGsJAY|X~@=_`-W((!ABrLR* zL)Id*Sj)`r-e<1+)%H7)$i506J_JF8D=I_~LcCl^r#C<%lhcNBj0M9*B<$2gRH8!A zm+O(jbAvvj>?+|tyYSqhsY8OtF*%M$^y{w|5_6w}@ujkU7k0JkAoL^K(2jMFX<+K$ zIe6|^vPb?%;LnvW!GI}-$hlm51CeKb!DA;gpC>2fj67WW+@YKKre$1P*JB6A*Sx16 zIBKq}5NSzkb8FZO@j3G&S-~na*}(_#Q!)aXs@9&!Z@}E_IP_zB(ZivBLMYQ&YyRcV zyvFah?^!-P<-`yj@5(y}8g&+2{i+J)vX2=bE;zTX~o;AeMz1H1wRR~VA*AacW5pQ#- z6p$Y$@JDkg9owoV^mRO85e=h{TEJ!bG7jRU2m7gy2l=T^4V7dr59)Y+8x73XgB!fQ zEVj7D^UGDtg+KnHsC89SAn$cq=vaCL&kS3$FTdEE1*=-@k=>f&U!BDaucaV6cPAAs zF8r@*1CBA;8{ZzQpOj`dG9K|*KI);C`be1cuCac}8EJl(3CE;KjQ8meaLZ~-^9Z|W zsP-Y|`BfFMKP_HuDBSG&dE$+X=*~!8YL3lirLmmC*mf=qq-t}RSsNq2Ao4w?b3r7W zIJD78WY6Hkze5xG?ozp|(KJ@-PP5cdZM}~tGjFw|{s)LacfX$DlYCYs-8zxs`{~xn z46mYF4H;go$$sT@h9A)68A@Y@AJk-7IhWywG&xT>pW%l!d8TqP!;ffkK*6MURFl6_ zFyYl`@+<|D-AC@D>VM+LMEyH_GmeA!TULwuB3{vgQYSs&zv-(()#tGFl6ZcDbW%Kj z(qrqTdchv^`x~gDm@`jNMKNE}?c@H_A~T%VLBGf_Tut? zvqrv*^5(E>vUqW;d_}x?a~|85$ExxoSHVI+uHm5rv|oTpO^E#P%D-i8nkrT2wQH*X zK;8{aopCU)LsR8Ld7YY?cR25+rp`Q)*QKd}qj|S9^{bk^+f+ezM+?q6me;MRvybQX zXlj0KUazJWoXESYsdMV`?rExWGOtfl)l+%>ni@QvcVANr&*YuUW372J2dLthJ04Ky zz0L4J8s&ExK18EDnc>4U%I`D$A&v5f3?D%k{M*^HM^Vx1dBb`BN5~&yW5^w1ALJ*B=?_%k%~-?QhUl@rLkV&)69a^=jIXyvMzuh7cknXl2BHyZ1n z$p&Y#&ohNYf0?;3z?KBqnt3Y|!HoicoIxN(K(ydvGbo3xwtfT+f5*@wAmg?v`woFIQvE@3ngB9t} z4YopuX0Vky^n$I@p%tuHmuD-iM3?j7=IL^Q!b){{j>6XHvZAoHx~wX!OqYWSTc^u~ zaOZS6q_7RT9ELlm%Mpcb(&ebaHtTXsVOw-LuCT4ToKV;{T~5MX)a8`IcIa|iVLNp> zqp)4NtSPKqmvzK|x@;({LYGa2?a^gRVS9DiR@gpWb`(~r%dW!q>vC3MRl1y0ShX(C zRoDSt{+_}P>hkv$c1V|hOksz0`3DL+qRT(7u%o*C6AG)*<)2j8FU)T$g`VVRgFva|%1D%RjHMdR_hng*E8%4;6Mwmw!=Nr0~hjmhZH-^j z<=;@cHQubtzp3GD5U7A1MVF8?>m5}n`I<$s|p)A@id|F=q!&L8OVf2XX} z`JgWU_e!zOhjjTbl+`*P*5!YxtkL;HUH(@}na)Ra`F~K@s4oAH^xK?|boqZ$HtKv# zm;X}Ptn+bQ{+|{0SeO47g+0;bf30lS`BPo~H_A?(Khx#^RVml`b6x(oN`=lRbot*Y zdv*Rom;X0~z0~D@udr9T{2vtdT9^NKg}u?`zf#y+UH)r@z0>8tQP`v||3`(r*X94D zun)TYpB45|m;VoiebVLsQ(;rO{C_Fzvo8PN3j3nVf2*)*UH*R*Hs6r{Uxh6&0!Vuc`aA&>3oABmvNU~!IdeUR~qsju6)t?enZ~NmH7s*GUR<+S!nQTL$2h?VuK$r$p;G@Kc6-k}DMk zKW(sjjNcg}D0k0lG*|2=r$z>xryMNXdBba}G)>T6-7?^dLLP#v1pW(0%7 zvqopJ&)$6hWmdaE^L@>1RyW&s!=M?z!%(G@v(L_Ew`a4S*{p9idoY_loXy5&v!}D! zi`neWZ1#ROo0`q$=d;E6Y6{@Rr4-=4oKpH<|uefg{^Kkqg@U(NX)dcM)%-SqtV*}TVqv1u}Rufb-lr0o+j z#z`2)>ipV#b~2xx&gb_~?+m+`|2KV9%0+|sQz^{`zfYxHHuwOQa@F7u3>d9egAbw@ zrOn_&1`O8?gAW@pU7ZGhXux=N8GOWm`MPcJQ3D37+u)B3n6O@hj~Osx_Y6L6z>M`9 z{ILN;_934?F<{C*=kuoqjM>Tp{>*?mdz;Un8!%|Y2A?os(nbva!hlhGWbl^;%-XoY zUl}lLPYnLrfN6VX@HYmG+l0a28Zd7!4gSu6fy0D4X~4woFW~PD7`dVX{=tBmTUNk7 z8ZdOtQU1w*shiB_QwEIPr+og|fVrE_=U)sMyhR0k+JMPhQo!e%FnXK)e1QqGH)-&N zrkqWy(jrsNAz5t7bJKo#i79_C9ha7x^7qqRT4u^Wmd=xwoAM8|S+j~v`N!vRX@x2O z#5_q_Y05u2FHc%!%0D$PBo&+TPvc&RDgVs8gtXd}e>OcsE;Z$!OH0xkll?rBwWjaW3t~5u|_kPxR-y{WPcE1=geTT zFTcrDQ~mkpO*MT#|AHCJ4CG%lgW7}qOJ-0X%x^YTV<^AHRL$Z1%VyAen196#+9UZ_ z&7d=yf6WZKkMdhhH9MAn-Bfeq`E4fq!w_pXgL5C}Kg;*uFySe3sl$|g=-N(Gme92~ zP1%pGT~pvWp#@zg%?M2e>|z1GWs+vK7O?gL={7PemrZ^Lxs|IX??!f|)#SYetgnC# z6!0E;pv~k%1#F~XW-oC!On#Rh?=<;6dc4czeR!R6+vNQwbg|py_f6nZdwB!E1=b zi-I?%I_qV@TZqJ~f_G*x|8>D6gyBuWWC8nFAiU;J1=CPT(L<$kSlJx;1L#uDK2nR{ znw(~-b#p$MO!`|kMXjDR`DavnUY>k(4*x>^1Kq8I!#{_$&dHmm3!h9r-$M4!CSPEo z!@ih&p@po|CSPQs!xmV4v4tiFq$L*1gMKzDUP=9aep%s5Es#qr-m1vUEXKESwj8C= zf0Uyz`j2vyMStvqqKdp}^t#e1HcQ@De4?Bc7GGtl(txsE<;7H5vBh_(KUYHJYKyO? z%B`_@DOIk_;%lgK>n*;PD!0+%WvHC8+2ZRgjOJF0ueUIo+bzDq!pyqU;u|f@tmPKp zWMO8lu=r*RGwWW9Z?S?>xw_R-{T1pqOP#S--EOIJrAoo!eszbX&a6@qE(WUAotFC5 z0d<$9&N`%)Tk7m1>TXNTuTd*3wcxnA$5Q9is(UR}Iic>eRJBg6wAA29b-$$+)~i*P z8fs9hEj4^fMU)pgtsbz{=o$5(rN$c7LzWsps~)!0#5whdr6!xyqn4UFuhv*<`ht4Q zQZpCTJ8yb5a-Hqe| zMrK64h+Z01R|PllOBfYIcg=VxtxGLG)6-fzh%MtJ+%03 z3)XMc;&&`qzcGt)HEIE#wgO;2~&y|KOIXUlp(y%3`=FO5HS}=JZEIwk%8JLbyOV*G) zvSdBY#w^)LvvEr{)8CgKTe6k@G3kjV+iCXHlAUx&dS=OPdba%BlCzlMCM-FJ=wqWJh8%zE{n!UB;AIBu}&O(s4%I1?6jGQFBw_xP*qz@L1 zoGE>@VB{?6lO_KwhGoiVd8#9T57|@&5@SbFmWkqxeXH+lZtHl>-5h` zD{T2U(myAywB_GS|FpEqmVXOeu`T~LxDs3bo%GL3t8Mvrk(Ao<@1gc(4jQ85+ zmuy6NZ*AUeBhFh;z*}s@dGBq0*`_$}qs_0_6z5IZ{HjfH9_GhuHpO|URIY) z@!m>@-?Ay*D|Yy8o8rCI4!>hlytl^T-8RL0We)GLDc)P}@Uo!XYhx;E_wlej0K+}!+7wSt>!%rKDX7GPl6M+8h9FfVXI#~3%<0~S_ zR%m^sr!F}B6Fqgw;ZyWfi^D&oZ>%KH4QX)@aJ+T+dItf=q{BBjH2XSyql19slfyST2sl1Fe6xdqW7^?c90VMw&sGNk z$3mBHb1=&k?kZ&Eh1Pb5LGWC@!x3x2J00?acHx2Dh2;+OAE13-F!zNOjyhvc;T}ho z_ZIGT)VzI#`y6#3chs+{3acD-R&`;uqs~51c)(Hf4;CJD)Ph5Wha7dz z;ljg?svIdi;;8D;!lRBFtSPK<)WTzh#~d|uyzscAhHDFJ9W`>I@PwmA>k8`}HFmP_ zq@%{`3+o*<(NNgnsL4}>ryMnPy7084rq2|fanwv>VWXpJXA93ds(!BUoTC~|g%=Ci z)k0sBgK^*Q^79VHz1rn%h3sXa@Sk55UU0~N-Ww8jeP5^=QACJ-gYS5Veq*m8#LmFi z53vj00~bS=Lvt=taR*&~iHbYy@@5BObkyZ74#en~%P%_+qgt0=aUe!@F271*RPXX@ zBu1xP-b!M0#^u*ZjLxDuBt}gxZznOj;PM+JMweXPL1NV6@=g+?E69h~AjCRD>{f_% zhuGZ^>kqL9AvPRhqaijPVoyVCBE(*W=-0uvhUu5S%EN3=*ng8Me9h%uRN?C`zeN>p zclm9qaEHq)!>lzd`r~@|j_8jkVbR>D;TK`)N3L%-<-X~1a%*0O7e{yx6?@C&%OdP) zgiS=)s|b4=p_e1IMcH(eEsU`xF}6I$R>oLKjID{WbuqRv#wIjxUeX!Pt^G z9eZ6DXUDzkwekA6bd)}9JaG8~Dsjl=gVg;GU4A;w+T*M*E_%K{J|ud6Re}#w4MtsF znqa#UtSZ4yCj1Ybpj4k2af1Ga#HbUTaVqi13CgDvXA^m2qEh1yeY1KDwau_6P}_3} zyx-rPcnW=ONvut&^5w*}g!dUJ@l3p`Bq=?oSG{!k1Xb;|%U@8{-nx8mlI=^*eo1#H zUH*#hesK9~y8FrHZ%A%FyZkK)`n1d6k)SWg@<|f(MOpry1bs=Ce;`3$mgOHw(2KJC z6A5}(KA$2%UzO!mNmz7DJH=UkJQ@Ftw;@FOf|tQUP2*j#Q1e}wt&p_96(2?xx-eVc zlNPyfkAGQO?7}^sCoOT|2LFn*)Wu6SW%)7}FWHji%Uw1bfn<@(@)fqiWd#ab>9RQr zTjd6&+GMdC^q)wUxWO59$<=O9KA9|agL(DIHEwWbLvpPf44g`qxxueaC)c^bS!a^# z-QeuTWK)uTNlF`B5twguMPRB}z?}??6+O<5|8FZBb5S`7ShuT&{AoMyb#8-PD{@SzbZSIg{mkT=d!5EZ^&5 za%jr(eJ&=43t3+2Vsf~Y<@;UOmWv;2q)8`G8LM_t&M+gV=Y!p3xG`7swZrWXU_!p7Xo@>&-*ra#M1xUew; zSzhPD#tdfpNf$O|ILqr@*qD(lZ*XB_9%cC{7dB=*%TK$qr98>Ce zam8xLWmiPVSJ0>QNf}*=IOrTsb_95{66(5<$F%8D9`Z; zYDYzmPp8B{PWxWtF*@q{#--2uqh0}z(ofQ2GI^SQ>xvJZ9y^tOC)m;qE6aG3eP&aJZOyP9 z8CISV&+N`jif3xQ2To)fGOWX+J2SU4J{q0w42{&C%-sy@&m`Z2zMuJk>jRmO=+y_A zPw3Ub%oKWcDDxS;I-L1}UVWIEcGa&&GV`X4S~c%&M#!eU&NBs(o3Cxksxud8o3mgU4HSXI(n$(b;{Sjp*#L?mK`YZqpXSp!7t4u161{ zlnMPXN_n9lL7QIcN71HNdJWq2T5t5LGvDaP(5AQgakS~3UW+zO>L<{q_j(=L^g%y~ zHht9V(WXy&1KKpDpF*2H>!;DCFZvm@Xk?}6-e|^qr;HZV;gfM0HGgef zLCxP7S5fn~#x>OZozaTXm^7}VwjYf)6!^+$NBut-(*|2q?;oBRjEs)zb4%h={)JSNPk_rBT`4|7AYnPk$x@piu5<6yCVHf>7Gb`OX?G8 zzSRFsIrl}%r2&!twzS>!T%XdpyuuV(vd7$SvI8bNY_b}Y)tc<2$xfN9(PT~kKXLB? z-^Ov}kI&m(fJFoeQdF}ok|seCz^+Qlt~jpZu{fZ{Ey&-+R+%c4nB(wq>)O z*=$cX+n>!2WeaEWF=?p-&gNqyAMJpuY*v#kokMQt1o1pFaUiYF$1bj|cp)FVIIH=V zF64Ih{cQFqn?1>9&$C&t9M(67_0JJ565d1yTq3;54j7cfhUTylIc!u88=J!>8ab zB{sIv#tzt|n;7jhuv@4(_G6i;;z8SOtRIJL$87AB9{aTIybbPY#b9G`~?xI|_RHv8a zuEM3L9c@|TfOWYk1ME1}TIYa)cAP10z>>2w(Ynb2gY8VRZgId6J2RaFo-yllhuTx6 z4Y|WmuZ_9GQLjz8BT%o+xg$}pExDzr*Vf!osMogK(Wuw<+%fjlq#e2Ya@nC=b~KmW z$Q8$;xM9G?*{L@gZ%@U!=964DG!G^qJuGiz9-ENIrsT0%d2C)DTb9Q*tym6UYn8!(fSo_4@2N_y4-voYyg z3E~_~Nr!#yINHA>&ck%*n{UTyrzkG4V~A#KbTmyo_! z9k7(L`?>>`QFb>tU`xKZ+)g8Es(A%U^+B3>=xeFs*8Cm$;)!^MiC1C@dfOdM+?l^8 zpVj5FQ~61&G0|I+I3<^FF|R>IX$y?>j1$+Po;VF!k9xk|?UaT1pxM}jtoBuJ1T>5K$siCK1-pp68{wI;Agkn+p~CJC&=&5$TT z>K-%1Ni1!A93)B5wlWU3VEXjgaj-vLV(m7@!9jG}?~Q{)$nS724*o@gjsxQ1DtbHB z#>4L=_S%_vcwK_mpT_v%Ci*AlT5nhwPb}A7nQQO>cZD2mSd6U|}F?92*+CT>h>=)WV|0Ibyp0lWybW$7A`3`0O- z?`=wkO7#D5Ycg!JNbE;@lOb1PKR%EQyU|;CBpK`y{N#8tRH65$r;?!>-JhLJhHQ!b zygnJ~(EIn7lHmw~y#F8>j-vmA$H{OE-CsOUhU3WpaCizhB>0EY6u5@$UoJ|45vbxn zu1JAy68qKG6d08(v7+@>;mZ>H^;D#L?6g7|s^{Kog{~4)H7iWU6vchmG%XcMtP=Cor3(Gf{ikw_<2{iIgRK($_IxT-qW_-;_AjMruo2^Y zT%HDBkl>TbG+2p9zuTAwT_pDVgK4k~Bmbd34ZB>4{pugWJMF zWdEtOEmUBtPsg@}i5UFnac$vmB=+xH+rmur{>SdNFbm!P+}{>>EKI~*Z|Pdp%)SZp*kIUBQXeS)1eO% zgW+g8^hII_oJfZfB!5+mSpIt)Z&BwR~}K}eKBLplsb zViep?hapIehH>rSyAq6niS1w`GRDG`cCZPFaZuI{HX|_}D%!yoBqqR23_?vO!rpf9 zJ&8?%tL>mZO~Nw1*$ztDN-zcbw1*!_Fctc>haXF98eD4+<1wHN8rs9ibcs!e+wGwg ziE_Bt9!4Qi0T0{5Xe4GpV|y5bL?t|H4`Y#-3BC?64vAUNrvr>fVm9>a027dy0|Pt2 zL?q_IkPa{jiFq)*158F@K9qKVDM&1UaUEc4x`bsvu>(v)&LWu70m_hA3}qc)BbMHu?)SP4rzz+5C&!HNzr4~f;VrUPun zJXr&WPy`Zd;d}=;g~U3z)B(1ki1l!_0~VmfHo(meP>1?#ggYJJ2y!;T{SH{9659-q zI>0d`w!o7Pa2$!P@Vo;Svc$GQua0mMiS5w0Bb-8F2lVfV#V)a(FsLJ(L1GsS?FeU) z*bO5(VnvYH9vIaT&LgoG#&(2yB=*6Cj#xD$wjU;Ugo{WVfN34!5)ucYydzc?i5-H< zj&KDD4Q6+Qt4R1^UPr7x603rR9pO3>)v%-^+(6a}*Ad>ASS@Vs2p>qS z4z_iKyJ+SSIM)&GA#oHgbcC_(Bsd1WJHZ0Xoa4~H6D&l|2^iD~79nvGhIWF*NSuNZ zonQ$Pr(sklSc=3MSlS7eA#oN~b%Mi4oP)KU;2$J*9u9PZ)reOQ$2-AVBrd?<*T5~| zGI027uo)SbVA^Y-N^luwzXl`QOK=5Nz6N8FxC$FygEAzp!JgM(dV7gohoP@SIdX2m z$k*Y|5;Q>R>o5mVZo=%>;R=S_f~Bv+RU~f1rq|&<5_jO)>+na3-G!1jU~LD9-Gj0> z;7<~}4>R9@omc@Lz{WSA4#%>GaO@5EKZ!kp({Es@O7IxYzX83GXoSW$pif7MJ)s-4 zpGxo)dUb{pWIThuouMBR&!K;3EO?1E!H~`{02BFyk)2^661{}6ov|uN&|8?;8Lp$g zeT0h6Fa$Y$g(aO~BoZaUmd-Egz9Zf1nwSCg9qEF_lng9a35E-08E_Ga5yG+zxP-(=VRZ)F zL84SRlmT~<7$qFefWDn17%d#lfD$Ce2q!Y&CJrlOg~kjRfShr{$V?cB#CTz0CX}LL z6NGJaOc;m66yaJXXq_ZBRTz{7J8=-2CQQtN-AI%P z3$tJn#+fdx$ii}$pj=p&1qYF+5UR4^5CYB+>aw8xHSBbRlUY!Osb&iGS#SV@W(ila zpbjI?7H(w0e2g2BCtj1Z)d|~~YP>Y-eg7zlXeC%|D`Zuv( zm0*!@=}oA{REveHZ^B_DmIycAgc>B43b!y763c|=Z$cg7EEfi4!x7}H5XNRhBaV10 zg>l(%5jm@biP>-&iPb`RHq56^N0^ljS25LEVQw~D!=QD-f^4{s#Cl=OLh@Cb?B!r^RqjKm({W;QHF#r6vKvSBh#5%&oXvti2X*y#w3 z*)SD}1H!Xxn1;kb!IuMNNE{OSlfi=iEEo{hvwMd*1Hs`=PB+d%ka$r3Y=Y*X(umOql z!k!%1h(x_mm4iJ2c09uI9N3P;MWH?ib|Y~~xRe9?k+>{e&4B|*ToG>Mz(FLg3b%6L z5E9pfaW>G9xGv1L!DS?F2=i>vfLYfdEVjW-ByI{DY_JL|(k)@X4H}ViTR3XN?oncQ zgp)QH^#*o6!Z{m^c|(GG!UY>_$H@1E2R7_ECH6pQvcW`*^H3O^3*|^W5{BhM1x9`> zjLd}@NHhwgbD!fFiii7Rtq z4RU&kYja^Oa(at!H}ha7#u+W%$-{w0Vq?Tv`Plzs=Ob>& zhvyhHPTZUi^~f17ZqJ928QA%VyYrzGiHTw@u4++@N#euGcah1Sf39i zC}OI3B_H}AF-^Rg53@0-3|E@4AOkxeahDygAyF>wx5IS|st^y`;Wlz+h;?>&ghZuy z%npx{m?@sNLn9Ki#2a>ag2Zg`mL2+JV&@~?wL@Pd=86LyP?9OZJaME0Mk6s_9PNM! z7_>l~;DCw9Stw3+z$D}>5;Z$xv~GNdF_Qoww9&d34HmLKWZpl#LwDGWFiRk82!?_8 z-;kBeKolt~GY~ci!vycYA}h-T$tkaC-Fr;URHi59E87$E-xt)WneJn43isghg|RmU zAvq;c>;9XM!LLrqL{7FKSgrByJ$Aomul-%da=4$ub-yiHw5Ii!wC=xf)^z^}vV0kz zh`M9e-23CbPX*0=D9QT_onDFF=YsYD^EUBcpQydhyuJ8uZ&CXJbMLeJ_S=gN*mXiv z57<8ft>Cf1eCeOSNALl;0C4y5Tbl66dtmh3|X2XtC`oM*(q{?-wtYkS5y@lH{kVDQCxw?t+H#m zo8!FI=p2!}hwYlOJ>Oen*NSTGn&*(R}oWsJC#b2cqL}#a#G&=Vp!x41n&_v#>W2iiOHJHSVGZp zyOC)o%+7-2b|^eyXXG9Er;kAX#6%>;@C-_Acc`i99cDghr_G>Kb|$2=J$Cx8d)m&V zT01*qXC@!8vvy|AV7UTVtrpG3)N^*N%MaA^cC2c7l4MQ$71g9#tV#Y)KqF|=Y(ewP z64HRNceFh3EcDgeQ&SkziZ0l*+!yVx3wA-Rw-fvAT=i0*d@kFabw&wYwpV|fIpW24 z7+gX1QdvGgiZx#AuKjq9K-JzZqCXq`o<%}h0zwxq6__=dG55iE<#eXzSt=Bs$P_T9 z0|Y%~;R>G8DWV^nl>1)_E@m=ile6e!*T<~js-2Y;9*?JXC<}<)4pZcL=b`TNg)|ch zSjm$sp}_eVI4>fwizKF4e}LG3@jT4*{iVk5?w{nD`)0wCL@23s|GsE#l51@eE4-Bn z?%!*gR(Ly8)ZD)>xRc4$xd=8_aDV8TkIJv&)d~T-3aBi02^v<2!fSTYt{de<99ceA z#MazB=p8}cF9f}#$@|5icLI686!cCc@0Ww#ape7*pm#iZzY_HJCGX#oH&OR`X2c`s ztHB6EDZ@U%hAY=cx^LzgFOQDgehY1Mw?_o+}f2>y9{n#I?hf%G)PW2vXTT9y3 z(a#b3IZHq1=;u8BT&ABZXiGe|Wok6>!*%gfMJoA#_#cri|A^uR7miv2ia#r<=dFI* z_tbi;KX<;sby+8nF5TLy_xbMw6friMi2k~Wu_85sfQTQHh(Z+6!PSBJI-rPQrj{ZW zirm~O(O`$^uv0{8Oaa(JGs1oxUb;+uXs6#t_CO}0h{Ke5M=5)b)6WU|IY~dKF}F-S zx5}f*9Hq-FN13C7GJo>ox_PX5-TZ0Hy7@E8lpkS;$z@_b6Cz2Zw{AnO&lJ*LnH){M zp}KmLMe2P5>iwKR-$78xh4W^KXUSuGAd3yS(b3>abhyzX^+o}>zYkd3(bbXpItH!f zI%)-{(Aq|On6>W*tnK9L#C)C5+V>1=KZuF+gpkfONBTufqz?o2)$B4epBa%73B%Tf z8~O;iq2DA!$ur2zoxx_mG9jATgLJbeh}0(s%>D-w@ivNxcf~Vbe2t-|o|nq>XgH-h z&UBG_-~i4q38!ax1^r%F1s%qVICr$9*U);Zk{9XcQn1gQ7){h*UDQO8Muvc>e|&Mh zywJQ}{)+OqV~cu;s;%x!;YFl64&+5~t~ln4tKoX?i)*H}GAWvZLv#fvi8NLP6zoBO zpCVwQE0OsUd9h*R*VW8z1cKu|XTJIr8HYr5Z=By&Kr-=nf1F>ba;h~bvf63;V&OBi zLKz=T_&{Cwc#%fNfbd@j+FF7uf%y_@j3UsB)iBBSOKwqFG|-VcXqiX@Y5>$7s3mP& zZJ4i3vsyAP8qNS6XPii5Z2(7o(ICaML@T(4RRVaGsECF;TF0#rY1R|KEhgNe$nKFk zT^5$_M~upMo$B3<;7B+pnvjXQkU1hvo&rL82BrkT(ZlG?ck>eMmcj>&6dEvi!J_o% z_?xaap_tjx#7xk|%ob_N77+8B7Z2nOr2fsI`ZJ^9j?-~xiZs~^;C>V+L(wHNpNP0A zMj4`(%B*NO<8_=_BFz#5IG#Yi`x%C!Tcqr5`nelu=;0y=?w>wOH$EnscKvki#)veF z3~1+laW{UadFT7vn4RxGzqlK}*Bt3zVj_J^CVm-1UUR+1e6Q8`aUmGRo-w*TGtizf zL3=(4qI`h4bX}1Yc(oPk4+HJV7m?{L){w}y0TEbT>zYqGCbN?S`nb!vUH}^=< zbJ#u|ll*I(U`=xdwhKNmmi8axq7xUJ+S`A~QtF(p<912i%a@+-GVnQQMfq<86|X5r zooX)!LjRHcahlDd_9pM2^kDavc(o7tKQ;W7ZFK*i$^V9?oOG&v9a@(kswEChIqg*Y zp>x)$_NO@i{u$!@$7hK1pA;uq!_o-`BKN-xh1=)~|HX*(BXxj7b6+*o{%=F=0ZF?5 ze+>U-!~egAzjvbU|3AZDpP>7FU@#6DfV~2Y`9?%P+4Z_yENqRouEOEPb6{&J3a|)y9{v{EAt@^zOHY^ z&Qpgt0x80PxKlLLpEEl%S85yC9+p*MfQ1_$lkF;_HM1nzAqEm zCzi-Qtrb~9A~8l`sRQTrrcpR0ALwAC9rTrFjDv~kY^;MxgB)y}gP8_9Sbv~>aI@Ck zJv9?2{R1GhOD?=iuXvip6zi9Czb~V<%HJu6G0m?I7jU^H6x1a^S{gFkCxAA1tNaDy z9a3R!0)4R<6v7%oSc5}YBOu!e`Q zN+YmJqhO7V#2OL88bw$mLs+9Cutr6}8W)LG8p0Y)SffH%qa(0JN5L8&i8VTeHHNUp zgs{d$V2z1_H6apfYzS*CVT}u6jg7z>8wG1(B-Z#4);PkN5W*T4fi*4))}%v?y5Rkyx`sSY?DYCxlfNfmId-t0EF>ZU}2SVa*F+O^?8u9tCSg zB-Z>8RykoU2w{~+V3kL~s*J>17{aO`tVJQLiU_QVC|ENiu@;B0W)Rkr5Y~(ctQk?T zW<_Ex4PjLh*0K;*Wdv4b6s*~iSj$6LGYM-&2y12p*32kab0V=;f&h?QpmqOKkoqgHopp06D3jW zj`V8ynIu`x#08E*Wcj8zXiLTa2^39r(17fk>Hs8)rs=+EIH*$;cbUUk=brAMt(9^| zwK7Il#>(Fo9PwiFka4myK6=OmS(z9;WRk2*jvg{aR;EZ%L#E2gwCHKdWMz8vkaAh6 zh#oRSRw|>1%#@W`(L-j-%ADvSb7f^-^pN?ovcjx~R5&~{9BIF0%w6dyoatchS-LY@ zcjoBMT-}+cJM(pCf$l8SokhB{Sa+7_&Qjf3raQ~IQ?$aNY?TXEIKb^{o5WbrO7gp1 zg)1F`^$o0z-K)C)k~!;~-DRu~VS%0FMM}F}Py4e#+U>IYXAx;3ENvjrNV`K%yUNkl zq9@)Vqlc&NY@`;#QU^mZ`A4AamX$rSvR792$;y6NIUp+sW#y2pXtLs$l`2`OmX*V@ zQX?z1vQj52M`Y!wtQ?b-R!+*wDOovR<+iNck(Il$a!*$7%gO^;c_=H7WaY7}G|I{o zS$Qfe&t%2-rt%zRIh7`)6{VM=oO3F@6{U}&^i`A+Md_y~{S{?^qMUIm0~KYEq6}7) zA&N3oQHCkXa7EeCK^dVaBb5(+s?WM@>=VhF!B_$v1q-YoJ*ypsYiJSqv9y^^OVQGj zFE8n|RCQC+JK_VeR2nONywmjW8i0t#i;xrS&+)p5kB|_#FF;ok?%8 zHP}-~CY)PqKcGGKwIB!}wh#0}86QfWy^}=uMn`Xc%w!#QQ=-&e>)vBpru$ZsIxVwD zS*H7Dl3JG8V|u3hT9P_FvqyQRyCF#}&+Ji=>AsPqR?xw}^IBzdup8Ip~a=x*eS}IqD9FmZ$EdpIyk9qNuy|;623JtJC`&bnI)t zzB7IRoiar|h*&>W4`E2Es!?1&^3S(dt9aaM`~~%}gLc$w@b_nGEybxrc9MDo87}oG z(&_3k9{o7~J)sLY$v3c1IW+fahk8cW;4Jb4^&F3O9$5<%wO-f%0+)1=hg@>-j}4a* z|L5uzJ>^v%at&F3uU_XUHym2N+MwslO>_=A)m!N7&sA^hN$xnbZt30HbxZEn{sT$9 zi_8^@dJmnIihAF{KO{UrXSJd}M8F*N5m(_c7u1LW>lO70_dMkR&q&^LG^fd-`kb1w zMNxY>DY&;2v!suc8{L<4N}O7k_tk#LDtle+kDd?I0Zzggh^!roI*7*_jGoMp2hx znqR5QoxH$TpmSDHS0b-SU4@?eHg&a=%6bjgVJ(X6sIKDz)^jsA@a)>?)Uwn~Ja97^ zxkVST)yZq}Hr=y@iPtd+s|4a~TLysHuIow267g&gv7Yj8mAH4 zs0;tVg_%g0-rV)_MGhCag~KEp_D}=aM(nMeof5Ptz~9FCaatD@qoaR&bB%Wx3Ej0$ zwa%%zr)R21DB@1ew`uNand(vGmuITS&?(DQkE2tOsh&Uw+vO>Wyo*QvzNYl!J{Os0=s(v6>cXPBa8%9tDo<)RnPW3!TILLpo;=Aje z>IGip1Z36|@8OBNYs#Q5>P5_;AzjoYCMR)mpLQLC;<2Pn0bFC zAb5fy_-cSL(O_H)FeVv{>$v8W%&Q7Ri@Sjiy0$?3w{eCyp0D*j;`^}5_AUjJWpGb% z^f#7)QNOIm+z%cc@x6R-a6g!4s`SBpiVTLxqJa+MJU>lgoAfDWUX|mA!&uOo55Rzdw z)?8&gYJTB#S&aRqW)S~UbD)cBQ1mY~Xs9)ood>(L&dv?5%+5otvQulNof}`7o&HwY zS=CBAH@z}Dt6OE~;a1wY`IXsO(<%U}KvlmxYg=jOmRDwHU90Ro(n>qGzA`(Hw#v?9 zt+aF7E3@->tL!|{N;|jzzq2!J9&oZtEIUrN(vBUk#Ew%j?Kss+J9fSjJ5I;6<8&+S z*!4>6I1|&3Gp)2^_bajEY)m`Ow$hG0udF{C@}mCiTuejHx6;tPuguUvtuwT~m4@zn zB{eg)9p_qU$NpDh$Ay@7Txg{o2VRLC7h~FSv6Xfld?j{VifPBCR@!msmDq7PrX81C zX@~Yo?6?xsjw`LS!~e=U=BqF2n6Je&^m;1|t$JmK-guFr4KWS9*-AsJUro)7xrcbA zm3xSXUx^(LW7_esm3Gv;vWj=>MHMf$p|@LE@oHa5f!&GOfbO)?j=EQ3$K9BA+-;>D zM_!2?VMpkj+0jdGogGJCi5*vCwvVf=>dEA2Sjwh|OqyE)Q?4Nc~p1o*deHPWV`(Q?ZEUkMHy%SlUtQC}rOe-kIA5Vp>d1lD2DWVCHACM_hJB(Nq z%*#|ZWO(Og_L!fkY|8M?&+M@vQ`wT?U69#hVWzSz!@DrE$D&MSM}~J%W{<_0%B~FW z;>;dPGL=0U-X)YTkHBm;$63g#s%mbR3Av9+MN_9hZli`%MEdt(99_Tr5MwlAb|qQ# z+jmbetCB2%N3fR?>{DbVC&#;I%6`u*8I69XGx#&uobep2VzPCsDat$8Ce3|6$$LuF z+}kYP)96%Lyl2pyZ3 z?fC+|pl$meJ)o@>Y@%wng??)2=cvd&ki0kTnlhj(J)&K>5xL5EtdS=~dgeIzR`!6d z;cs3yws`Y881y7|P>B=_%8wc}uxlvj11apq?Lo1m=YMwT{bEb+7fX8B6W&s@C%mad z!=CV#^e4Onm(oH{c$?9ipa=Dn#Rpah&@lnzd)(w?`G5Q+3fVpm`TPNNr>&aXG(j7wl0!gi)2O``<3xs3zp%4nO;}4SavN&E~#I% zM0PDfdWr1pX{xp{tOx3?4C);Vmt(drm0e3Ql#C0H8E1%`$VF0uIC|l3g^cb4MO}$* zm*1#^I~JRZ;|QnN?9TG6!gjcZw?l+C6T2Ggl?{?JP|+~(_-Y#j)rhBfRah*`saPI~ zRqAS)T+eD*mq^yS-}J0OVl4-^cA^}5BxdoL;eki^L+5=2s-i#Fx<@M!XKJ$H31s-Z zG%I6%Y_sX{g!=$<{D8%eJxIWxkAAG}tEqnX6-30wfzdq}JP$MJP4jomdnI{Nf@a_b7{RI&822;3>SH%H>Bw3PYV}tQ~4qH4^EG4zp zA7NA0ijG*^M=YM>*_!K!MWB1=R$mzZWEkHY#y=It{|WM~?=ewOH-5hpG{38o0{e{HEp3DgAEiUG~r7)2gq^d zFkcRTV{@(Sw}HA&<}Yoomo>lluKxaHUrF=a4Zc4)i05bQ*LF9H&0gCb%=0zsGtfgg zmJ5SyE*taNf-k7r?EIC_VO`V>vR^ruqi&Q*#U>K4m4=nQqVe8o^VdU%3MPd7T^M8p zmaR$M)B1-p<>MU-3y%q~Fw~`>;%I2Bi<@ z(y5C#s?gC;6{6>9KBID{!jwA~rrd=v<#rm%J&Tq#*LCHdVb)v^DmSvZa>pW+E9KQA z6P3$z}SlS zaXgoPhVk-U`OKFeDC$z6qPD$HX?TVlFfycHv`ThgSD_zPvim_5#y2m=(-Gx3;j>CU zWJoTFCi$K&xdbKO3re2YT=JO+$&)@~-c07b&EG^mRQ%i?EUPLioa$H|%arK#FB~F| zT9W=35U4I*3ag6&x+z+TH|Rz;i8M9_jGoHn{WeCU%?mc#`YuZ14Be$4+~1C9bUZTw1~XoY-7 zm)=LBQ8gfaI*0#fgm<_c%;!LO6Mv`NM2PtNkpGgXIbGGWT+|f{74>Bc3ak_9k?`}F zDZQeJyrqlmg(7bSMV51sKSYsEmy`LNHIZTtWNV%yMlSY_26|fu?Jd#dGyqx=)^BX! z{l*L~<`-cZms^qf0pjt*UZu2a1fS{lNd8G$u33f7ZItYsmrS%kGb zgf%MyYgQDjr;%7ILRhm2Yh?&)b_CY!C|J)Tu~vn!<`CBE5Z0UstT|Dzo=0M>31Q78 zthFJmxe-`%qhK{fVyz2d%_FS!A*^{3So5M_`J@P}4I!-ggtak*H9rDteiW=;kyx8T zSPKYia|mle1lEEmSiK{$wuG=264urb*1`y^g;B8jL}G0VVJ#x8?IEm15m<|&VD*i} z+7ZH9OjtWZSc@aD7DvG6XAnzlMD3CeUQuEF2OzLp&pLc8dDY16!hGvY9b?ynW% z#boPaA?hZ2(GyX*X>tEr+1OPXFDq5j`=D&<`gXPOzUX=)g1501TjN`$s9WPJ!?(td zrL^1{-y7T-Uzw@BeOP$AM)>?&NRD{nulrYAxXhEs%-VG)K?gj1mi!zjY(Py}@tML5G%>+cnKoZSU5u+>29vTm;#>bu9Pxk#uf) zxwp5$eXZQvSJH}}i>~J)^U{XJGttjCG-(TRd$zZPB0dv2i&A(;kTz%e{89hzbWVt~ zSdz!m4z#aZ&x9=Bdp#4gd=sE&8*BhQab-48vO(KKY^yf#4wS6?4`)o~8;)yJSkadW zp7bv`C_}-Qp|A-nhTn4}#XCqsdyb^Eh~f8~NmkD!x8QT*3mQ_`r#&Sb>uIun73-3} z*i>*k1xT|N35pXu!;(EC+v;v9xxMZf373~AdF=b#h7 zH33)Lls82gt_ zw{g!*El%{zNXDOX`l(1RSdc3gHnfMW@x}4Q=61cBnu_BJ4_K+Tp6A~&=x+l{{ZuQ&ZblqY)uCaQ*8EJwxVIw92(wCAIey9 zoYFtJ*c?$0Bwi2VJ-4k{>F-e#qee{D3oNcU-n|fOyp0!VJQW{@U2P4(>+W1DV%)P9 z%+HkyA6UWqdKlCc4y6^FtE&B2w(}*ERm0#g^{&5}z7aV=l?(1$0W-mgxzM)Kh)Px5 zTCfrWC|@{>@+P)TiLq@;B%2=THYL8uro_)~lU{3$_VOZ*Y#8_XZO>zf^EnLVs?Rzj?)pvwj7qPQ_9yQWnQ$wVkYMNx2m4SCg;;`mz31Vf~|K zUMv|EFpgJ1`crmEMy;8u7grKiqfiBm!@@IafT4)rsC{wGYhM7TOs{?Z>SC#?IEmN3 zB%{x~BAD7(k}Cw>wP4vU;$_>VXQI2Gl{zu^MyqFst>9v&;Pdp9sHiq%`_g-wqKs9u zQ#|Lb+^M$~&PoxYM5))K)bl7aqei))N4dbGRHk5M&1(B~`Ur+&O+HPT7J+LKR{2HL z+_CY*V>hXJ21sQ%E5I6`K;t(b8%#83I!FT>?+wj}5NGYqN2@raM@%GpR%K(|&cJr@jR|PW;Fu#h{e+P?Ks^*0$MK=6uEc6z=yV2zr zOT0uRqeQOpL4yAJ-wYr*1v3EM@?;%L7K|Cix)k=AN0CW<6uHi||6>&3sT}yT8&&qX zjk>{y#&>8NZjID(D#X9h+XOG|-3^k`s00e9Y7j)x zVpXFIwVG$7q>gMkr0WoxXByYN+omN^@4)9{ zy=mjl?E_Dp+?z)_W%1(-jg$Mj`aL6(v(hn!V(o2>r$i%?JvCN}*}{&h!U_q3hSV8` zi0^>87nA^*az_y3EXh95XR+ogK98&`N_VB>5(`Uu)E{v|`98Ljs=$QO+0#sF&P_G? zoAfVIpJ*z)lLB;zK(~!f1-G0j1pW_8S9BQQ1ScyuaOwF)LAz1a6x@ttK<<0V*Ab~#bs!b>=vARpFo}oFKtHc`k zka3?EmOhDp5Jo@bwFuj@y~aH}wcxIeDf{`6f^OzdYph+dNLFOJC#HHv<#MKk%uYe( z=nzw)&+_QDs6YO9;oWzCNV)zfun%3--PN6;@sGpwXcSW7liOZ3)3Um!nby@M`h$a& zpuad+0d&5S`;*BngHKWnzm?o>pQP%m@HFFH!YW!TSJT?OSfW*AvB@~HDd7Oi7p(di z`$+;{U4~Em&={+q*47vj7HSNoq|e83S?Lvl7@<*?RQp)u^ME$`flhiy+r}29buc3H zBjmy3roT({#Zl&sNMLE#5CGTL@d1? zsGvVi!=5D+2YUm~s}1t7i%H=}WmBW}GCcMv3lHag4QK4@${ArjP8$Ow*y*6J4aLJLu{Yz>mH8s&`+^qD!V=a67kl|E$aK?j9qH$`t4G*lb7WPXqTfg_R#76m> zsqkNbLpyTai_O$5d&U{qSlKa|iB@)8W|G2A$jtNw zc2Z_$D?25#xJqEBWforn?2OD3mH|5}v&0N`PG)V=*?E~Ib*7yd%Ui5oX2}@&g3MCN zfL)ZC6@8avmfDS7mRVW`d%_39H=+z)e$sjYf2{WDiz7``-h>n(~9V_mpf=t0ly#B8Kj%w%ddX^}Lmi%yBv2pu+o7Z8TGTo*KWt ztkVjvlGNI&D%!VeTdpGJyIJ%{$+#`)QFNtKYT^rP$DCm87%YYc-XUUWcW-FyQr35G zhKcmu8>cHpUvYhf`M$#csQWekQUAJ3^bJloyzD&Pa54Bvx|9QtK#h`<1&xkQiE%=* zRgU>_c7&Lv9M?ad?v4CHS}F$jRUgyWicwvP5g)IZs}A^N9= z&;1?Yc=YcGtHQq{EJ|(p9pQHHJHo0=?d@^m+vCO0{~h7Z=lG6rNB@qX6;w&=1MuFA zc~t!NU*&VbL^1Mn!7eHAxnLLVeoqpc9TlG()?lWHresUfzFxJ7F>0^e{O23D%g?AcfbQW#~C`uTYt)zL-7SWQ}taSOG||`G0}_i9J^=M0 z?dc_|k7#xMSZ1^{NuD_FkqR4$MZcQogj6ii*?G@NsW^@kC#1qB6mpWg^ylhCA<>e& z9BAjK4y}~(X}51yD($kR(`H|np7HrT6EM))hs>|WD(9Y++Mh@9GQ4qSNyUs4LZ3cbEQzi>c?O7RT#bntTGmQgF7J*E4}e zlC7vbM{2hdSBeR#9BivtT}7-vH8thY(KS(!EcC~{$TH7D+5J@R?|UlORuw$MEPF23 z@jv!c?P-!dKENiG{n*&H-R5=ljx9JZg1dc zO_wPsC3tAe96V?CL!CM=D-RT%Jnpn52M?c}GY+5CL_1WrP2wYX4UXX3q`(M1o9p&5 zs`fS4*O>2Xfs>($p@VnEv39MXMq+ATg&(!6P1Ob6>8g2ZCHdDk)%KuO z^FKpY?gl+8k4DeRV@6gsL=$>a7uq24p3e}v;4^0B!mzA7#Itgd7(9V@zpL`#Whd|! zM?`=4vgk|r?C-lVXMc-u_V-Ai{oM{fnztDFkHh)FS>e*qtZ)Zyxh)IL3U^51v%(!x z%UR)#$XVg?5Y|q@S`ot98G*Gk3RXiT)=Kg7o`*>cn_$vva8=j@b9KZ7b2Uvc*MvEz+4|rHhDViis{XzcCuu zY#9)T1roLlh|`w=e2X?>84%xc88AR$Qmvg0RG0~!K?*aYgKL90eQgk*!PYlh8{7@9 z4erv~U_Pr}EfE4-T2_25m#huo_kWn780LT zoiWi(2Wz}e(^Vyky|!iSbc%7#q+jnm%U!Eg=j9tba;t1CJsCUMYj!Ny!fST0ChERt z+^2a?ncQ2zvn?0b$@*t4gR{K_XGaUp&LD@*kn;SZ4TLS=FW3S=DyvPYIC%6nQKz?= zXV9-`y|e|VXc|AG(#HhehY}{yJP#$!wFT#I7+4iZTSaMkCSHyUWuoW4#75J zP;JQH&J%UjO{)uL-^-Hi5QA4b^$JCQVUAZ`EAbvlG+)pPdznbFU1IRN-gT4lU2nH2 zV3y{F3btT|$S{-oH!CUQI4fUDoD#I|inZ3-AKNSC=YiakT5AF5o`dB1n&H_+9>wtN zCQqi}*+ZT*!?Tw>Cd0FjJdX_M{p7i3cn*>0l;P3HFUWhz@S3delJ~0NHCw+%-YbST&g#^gr0$KU zV+qtUb#FrO@@gW#yqXvKKLM?Qa=x^BX)K@OaFKcYw#EdY9*Yge{~2E96*({^;K4v1VY%nn59J2BS5D1J>No zt$B{t+z488D5f>PbU@`Gz%lx;0gNR{vkkud?wwY_=4>=y;u9 zPon#5`%IzxY*nVvCDh%f(A~D7CVh^7+Z1Jve@3_Uwuu^ez}9NM1m_L;MxY@d=9&EK z@cV$jRqL%}*6PlFDhXU=45zupNct(IpV6kk-QcEZvKw^SP4o^xP;TgJjokjYIc3PR%~&7`Xl4|bREyv0ko3)w(Hx>_w5?G+BHF;--(L9 z+v{Y9El!<;oL{Pwd4XX{o2X7v=yxjroyLF5c<3X0U=_&tic7zs_B5KQ*K|{#qN&${ zrXJxM{VsY*2QH#LHcHwbR?<7dN_Uh|y0@ZNbX!WNRET(c_LqA)w@I_wu4bfCPsjJq2s+|m~ zcARTMSKPnj`VRAbr^bNS3dR!TM3ZsdRJk2(y?R<-uinPibUL_RJ@JC(#54A2SjO%# z=xMU%8E0hdSnL|c8}xMKPcZ0*(X6_tTlLUHBSJuhlVMBYM!pn26~=kOIj382&b&Escxjly%fbv^ZqWCm8C3HZB+cb zuJ1D6cWVOkBR&&UZblP-N*90AM0+0r@dKss3+dy!y<~rTkR(8IataP(io3z&skTqI z2^DlCBLZgp%V35`bcKCr%q#3!S;~ZNI3?#7$@?jxjdBc_*gQbL#6D2UQYLldJLm>q zzr;QW`I95~`X%Iu`}&W+c|g5Y~CZDh*+skH9(~1?yHM)~FCxJzt2gmrv9yV`;k~vLReP_YibDVN(9!GC|D07v8IKvt`b&R2s5Y|n?nj6Bp8G&^(3f9v|ta%}sA!3 zXOUP7LRhy6YheiMb_CY#C|J)Uu@;4}?hw}E5Z0XttUFP#nj*25NT2tMVVkfohVh87 zRH7U7?X>Pa)?_OCGrVgud#ue=4rX}Q(g(w3QusH-b;MdOg}xz{(s-a>_&Qgi zf1R`a#(N!qf1-b!duq~8uIZQFn@lgd^j@y~HBPauk|MuU-7*EfRNbOW>#L<^U#iwf z^o?W&@B}pV?Pd1NP(H2or~QDor+b;*-}h81nx|3UP1PAQk?|zN_=aZ|G9HH*o4`|( zt9c%Bj`jP^fsQl>I?^2INDCnSt<1F&eNcFlT8*J6oyih0C+SR7yN69p^fDD0x=x}m z9a(g9p4YuTW{n?a^Y%7t9{ShEtX`p}uwF8bJ7xL0)M{EFLW8XI{V$4jl*~Bcwuwvs5oKH- zv!8A&yeI*=T;@XAGe;SvmRXu{3g;^PE1pDOp}x)Yu9obo^Lyqgm^(5RISN7_+Jb?G zy@!ML)>T)LiPeFJVkFUIvAV*L^z`#1(^o}JZ%r{S8}*coTMg1X(B>;&r^`lLKO1oM z=LX)!7Y={Gg+qa>fcXk)aB=s{#MA{!vo}GXoAjeP`;~ls*>g*_F`b&ID4VEi_7b)&~|E+j$Fbi-O;Ay~BL(;NqY@OEEVh7Ibbh(X=da=uvgcr);Fq(H*};r|xb1+5IS^Ar2>{W_>uJ&q~eu`4V%WpD!`fgEr0k z`NLA^@sa)%qb7_ofEcxsDc+LYhhK*LQBM=y5f0vjM30#dSXIU5g8ixB`;oJ!iQj@O zPo}GX{C#HZRJNLn%~b{aQdzrdy4c9OspPKw%5ofi?@ZvQS(hp9AN400TCpjss=9Ev zS-)FM@!K8a-DsU;O0*>RHl)vd z8O$+lNogtBLPlwx{${n>ZcWfV1ISZsvSp};(Q*ISa|FlA5oUf--h|4pZd*mdKadKS z)37nhjD@sb9j^PYi`-3XGAvXGg9Eb$7 zwrNXPo2G_zHmpsbiXS$u&MMKnmN~pO{F>Gf|QC=>76nDK0|4`_qbVek52cV zKxbyU_ar(~(!Hn98Jq4sjn1TW?-_LFrhCt#Gd|sW4xP$$?|F2lrF-kqnU(InfX;+; z??rTGr+Y7ji zAG%v?W?JDgGYcM{JM9er!wQeh{Esbki}EKD^q|deU{JS?&B7XECu@8`vL~^VJ!zTj z19RBvy@lOS?GMj6hdSQ!ALPNEQJ`ELX1oy8Y$>KeQQs;gzA@Z zy8Fl+IO)XCBRw_;PCD`PNR8&eNhf|D>4`aT(kXBrN#f^`qe;>y!vKN=a{@C7=A3iRIn4kBz?^f=nZ!HiR8NONgCN$r@7?cx zA28jgs`{_fRn=AJRGm7NvP9I8yNu*+jnwQ~ZrW69wmA-F&9=aS5w~oOt=Vohk*>$4X2I;nATBD<^q-P~>YCyLOLQi_S7~aryk|pm!1u6FUpbP|$*r)|s^N+YueP_C zacxL5<67oW&A663T40p+!1iuNX%B7hW|a2GrWvKpap;WF9=GIeR%&mv%FzO&v?sQA zGfI1EdpD!BXEx0!jlGRxl=j^A4%T059BBK4KkM;lgQMlvUoUJeu>M->NVEQWX=~E@ z>y_<)H|ww0wiZ}_-F0ZIp(h>x8SAe%Hr2LI?baHo)c?A%{TIzhsOy_(3)Ti_0h+P} zOB8Lyir?dCYPH(lXq8(zO<)r~x4o(7dfTz6eyMMLL23>>)>uwD0?>O3=rSO(z6dgp0#mJdAzwb)4c#=6*=+k1|YWtS>S48+hs`#XsTV zKLN(tM=$!ZQPrpg_epf4NDkgN(U-OvzU<|=cLeUCByJ!0c6toMJHGTnj2xf6eOt7ZDatV|y;eqTVDK2Z5BH!0H_&6eqa zcQ4bG>1Dc0Dbq5uGJVZ>EOX+RqprehWx9~cw8ErJFTG=#4x;w`Nu&17z9V%T=Uyz( zWK)fOupPVFKhl4U%15#fpF4m*hw$f!qlxXGL#PBxo3^dEs_RW|>3Wm>O7X?bitiaK zzPJ+wMD-*eyJjCT&q3?%&1HUDm-#7O<_DF`dz)qcoMqnIiQ;G~^Wlv$AJJUq=X9B0 z&}DvD$-IwQ<}X<0eVi!#rZOMdDDzRxWqw7M`B`1&2_^HsW|_ZanfG;~sI4Bi(U z%Ol3iE8yjk%FE=&yzDgaGR3Z#Ep0KHElstz$ZV;~j%G_=zmwI{x~8m_*6FR5rr1^M zq;-0$rKxt+I%%D8fnu6noi!Ydvxd{{>a5{t!>r+GlUc*(##zG|8rB%ZnyF!pF<^}` z!FplDnx$b?BGzmTtI~i~X@d3Ah&4yU8jDzSHLS4)tg$9ouZ&ppG^}xmHDALTXTTa~ zg7w;nwLrrfk5~&etnmh{@g`Vrj97~_tOh_zh9nqfQS4tI*HyY<*>XQy%Wap)$VE2XA|!Pn%*C z>d|hsQ7w@-X{kIe)m5Wg$a+?GHCS{BD24C7;m%>ijkK&);b z-4c+t2E?Q7qgw;gwt!gIKDsR+Z4ZdY+DEqsq#XhAMEmHDfV49po@yW6iM_}%(zQ}6 zvb!+oI0R*8vK85#xBz>C1<;Bt1)PLJ$jlmTdy8@7a3?Nzj&>#@r*q`laJiBr&wb((?SO< zZ|aI2u)MizB2hHS3EJ@#{F#bB)A479lj~{6#oO>iC)d>a=FZ>C`sOKUO&OWm`sOgT z&mZPQ(+B$CbnBaEw1C}Y9C6le&&tTWU_(=p9O$OYdO6`AJ<*^F{Cc5R^a*jf zSF0|)GE~DIrAJ-TOKYZhu0+v#2qkAA*we4TV+!{GuuPnN^q$Y$|tr*WSroWi#wFMmxV zeB`&i@Wsjt+7bzjxcfJF& zv4r|Sf!NV^ptq0WuCCMzS(RoiQHrC~4dFfvcWA}>ZCtkf413Y}nq!kolrW6zxplb8j``+z5q5-g)K_)>)@<<|bIEbD;9S1yD>U*Y zelpRsJUR+Sx*98LEHQAI2KA4r^wD@0o`BZW1`)PmrB*AS91imAi7WPY(79BjLBn4b z|0Ngy%i5%P)hF%<(#+5j=VulqFEet!LSAL$B89xp$W;n?myzog@+KpfE98Af&QZwc ztqjPoTN#k+S>k01dEEGH4I>vT;MU?qcK$AbaNE*N~LAIcYX*FLiFI*|4j28TKMVYEs9Y4K0F_)lrp z7#BH0xV+Jc&WTeF>)wYG$W=}*y0|NO5j?|dUIeEpEblgBc?)BCH+_*QmTywVg4PHj z;Z~M#j}zN&D&Z~NyG@{XyZw&ucBi?@SgEUwdAiD2psS3T%A4&pd$Uc9;hj$WY}GC1 zjVj|FC|{YGsj1Gb%}sUQHzeQIT=EBYr$tc~O%1N^*#&Vso6p>-n;7kJAHsL&!_|4t zhnhfNf!g0AO`xxE>IM1=XJdhWr%|APtYHm8tS1`QAOqGQ6RcfEtfv~*V8nW+VGTB5 z4K~5rZNz%6VGTj77aGIq%=MfgsPq4!_@m!=mL|ez(Edm`ffWm*})EV z`fj_S$!<4kvh~I$J4D0UfmlN|tQ`id9VS@Ej99}QI2HIO@23B+qV7)l!Kku>s08`4&0yk#C(5ZWNB-; zzbg@0)>H+M681ueH*V zW&}LeVY6jq{6^FLXeZzwp|`(t&dR*398@LGIU~oNHK@8pepFs`FNgnKHb~~x6bO1< zDw6a%YYmXd?#6}&>AbUAKJP5K?hIddVs7K0Gt2O2v$m6n><;u8>rlS<@$|)aAeV~H z`l>{%ZAZ z+E;kY*8()5O~ww1)$l*| z5FSy~kTwEqaRPkmq%v zW3HG|jJp)ErBM(l@A7dc9%G2<=IhhF$I|iac&=2^MC`azARQ}p6f%T`FCnM&Wx>~> zH3sziiX}it^5T=|wpVEfI1SK~T&iL_d7qqto^z%pVvVI69rxrAcXd;vq1lM_nflb? z&Te@7nN>Lh%0*{Dk)vQthE3{U*fCH&CON`~#njHr5s(DmeJ*?V-dX(b=m;`*Ho0>h z;eu?%Hyt21ft{0pJDw1xPcIjmZbRBq(DFaRDpr!?!B4RxB0NHO2SxT^cb78@K0=qv z9i%M(yCru(xZyVti^jEJrA#S&s9JC+m^v75?JIMfyScC1J+Q&DjZJtn5t5MC^o9nf~}k%ZVGI*tC$YWO5mpmPje-l20R# za*99Yql-kpprrW|s*T(FG%H%OG_)E4H8G!Es#@iGs_2gP?J~E*6i#QEX=(bTRxMhc zgnnA&YDLcSU9L{VGr;Oa&h`m+OyukV?zqS~a<~&B=Y$UpI&jw~+)0sh2e?xro&a`Q zdu1YMm`j`A8RlXWLAqo*Vw1?87_56@u=2!k zsJS67UE&L3ULCqmc3IfT@6)N<_A({}JoSR(X3#M3DNfP;tgeypm+Tt5D8ly$B49PN zo~$JcEah%b*X;_Iqo(_3c=%JZo_>T9YM0h8@p z{&pHZ#?Q|}{M0hfEC=r;-^j{>ngd&8{|;Z*D%U!^mUsBNUb*(NQGwKS`5GsH;qEBh z(PVC4h@|P?K5&B)+ia5jJLu~uts1U6tJofaIaHEZ>$#kK6@afev#BnwILWCp_AHQW zE)_2B2Bl4;iQFfU*dL}_58nPc?v(g1Y|^a`>%LmqCGi2P*lJ~qL~8qkg|N$n9t^U^om_{cJ0PJ-;bPWrtI?_jR2!ST)#}& zixpG$1rD^i!t+~u7Q;x^(}>k6dI@K0o;aJ_L_XMMGM53p1kPm)re>@jFhNZG8RYcy z;-7QzpVy+{E$$Bggm#CAXm@ysc87D(%k+B%@~rI^y$YB5ZqaMBt6&i^{BymjG0iV^ zY_KUNy-%?Wo}uvg!kKa`IMj^I;fzg`A%?4LE^el9pQjh@5=YA0xLUYB#lr2@8jU5< zjK`s#`e9<6ud|1ziKPB6Z6ax)OPfd<;L_Zdy>x1B%U(G(w`H%D`ypm;JB+<8_ASHI zw_WDYY(F26Hn&_Ca-Tw0GzwYSY#qGBqH4f8=napj=l6gLHLJp{s*FF0Bswy0kjzr`%VVz3pK3wxG~Kw~%_kV;X(@|$J-qxY;XwTaW+4<-#9UEB?HX3C0jt&oYp@Y(hlW*$SUWYWIs;an3DyuJ)-DaJ z9sVr+Beiq<`n&EN&(_U#pmej}p-uE1 zaOiiA@5MQegAOz>YMl^Ibc@~)6XL0E(VJo-*Al&jW=4l7)+x@&??h93haK6LO#k=D z{Aqh$?ytqA{#;I6=Fhb=za!cdVkyoMu5+Qa(?JJL{~dCCW>YMq&_%`(hl}_7+o=GZ z7~b@}jyL(w(3w@jVdJy1TCw1|yxd!#;dz@$htHCgT}TYTqgH(21g~Wq#cbEQFvEmH zHO0aM8>=0yEdHz?(UUib*EEh>;iJpw(IXDSeCJUga zaavx-g~Zi93%$lscn!Zl15$L{Zp9?urT3_Xf`wqR>$(l){XQ%2I_0Gg2%)@g-~>>hLYp$xugx(qCc zvVz{U##jasj9Ei5M~yMe`i*M3mTI~_m8q37Jq`t*>Hl-B&FsJ*HOs%oN2(ocZdhO7 zt0}W%#sWX#a9c7m|JZ1MM-YdN5WNs$JwY6I7^bIB>Sp!s;4I!LhvqAR0!};J)(rm% ztGQ*4F3%H6p7InIDB#MOgpc#Zv)z;v3B_d@qW?3VmI#%&bNaaR-HeeJ^pO`SvZuAU zn3t!2gIU6r=Cg!*^|OT2OlAr1sI!E71Bo6d9X(EcgIU76Etn;|tC-kq&6n?qbUD~H zAztbxKf`mf+7a5IU^#u`Y@5d{>k9HFth5Q-^2LrVgjNQd5Uh(ZSc*W)>o* zxC{#s=SUF^fU4mo?SHE)mk-|u6%_7h#-Qyra^G@Z8#-2@0C0i0$N@!H^e@Q9^TMxm zLoFkTt9ln57F$NfN0A3&GIl(3L0(pCoSu9jLYf841_s07L39TK%1(y=AN1y;C2RTO zwLB+J!zm*&Uy1(~8wu6ON;lWzqNC`ch!Y!l1eH}>k{QW~Jrcu@(d`R9^o2EA?#J6) zcl31YL~Mf#iD(1eVqr&*XMW0AABY_9=bnJ>|6A@U=>9p}Wrxk4kr7Q6O}BD59>$)D z;;nA)VfjWjx~gN(#mIWTygK$mjELpop=~TBFU7q2*h_J1UN0M3db|`}HkUQ>O3Zmb zWqK3&JT^ZNc`f2Ri1bG66n%r;=@oqKj9;7OB)t+#KB2TTv6ZLXfb+OmS27D;=Xhq(EEiu^ADQMtGnXvL z0Ky|1TuMyMf=aBdlG(1B@N5?k$*RLATl0}Elstz_o)}{6TqcCVFFetns6AcmhK_&4hutu+sw}z| z&wjgxGt(J4kTe-P3OaZQdL#I*Smbqz%*05_++WVZZ_sr1d|vA`ec1Qpa$k~nLTp8y z@k12iGIln2abTB3sX7k(aayt-mmMr&k1KfN(A5R@R49$>Dg&o5F{q^04X?a3(BrD& z!(o#v^2^w<4n3|ZE*^dnJKwR#b!DF2(L2QPKJFE?%}=d<;r)mM}3qH7JZEIBJHAshQvW31`Chx5w#btx?eKQe%JD|6e}dVa&h=bvj4pLENG zu><;bDg$MPoX1K;TPNU+4FL(3RgYU(#x`StD(7z5*aut|;wo!(*~-T*c1#p+K+~xo;J0O(nn1*f;DAt~c4Gf_<0!2Hi%~qn{0f+uv&6myD zm%Je`S7a^D;0=d>1_y4%yVIlx@gC1XbA81$*E@QPlNS*F+7Qlm;=P3MH->Pw6Ymv- zHyFa1|M1rk9xu>`+bR4Fg!eXtJCrSeeF{Lrr!9a=gj0#=TL5CDKEkC$^eX@nRTrTu z-*Kn52@ngvw^Q2$=rU{qbTw80ml>7GJ{r~-#OkYIjWJ-2F~M4H#OkMERU%fIhE-|6 zsx-k`VZ`dMVU0zsat&*&0c)%Y)=DGR01ay#Vhz-=#u>22nP9ClVpV8Z;}L6+hBe-R zHQoekwGnHuhBX1PhGH&d<% zf%dW+2dF)+)KRMB)vXC%ZhKr9HX~oW=IfN^U2S)xDCO`{hSR@5!_l0uSsERoTHbWJ zw5-Y;nvb{CIjN|6p@D(Z0{XnpMoU$VcA;uC3Cb$dud}L{?6g7pU%}|sxwtbI?@Xs- zKO?sT=o#k^aBjJCbQ_voZfAC*m2KFB>>jhp*8Obc-UEZ#es$!YLV5gGT^>fn5enjN zGsJxiaW^3DQxT`qYcP`~Y=BkJ05ko}WXaF~cbGK5-NptuO~cxWSkpDEod&F(CRlrn zSTi)Ny@)ka!`f@W+G~Qf*N8O>KMZuY`Hq%^m)!-C?JoTPJm*8bLE$#6_}Rdj-N8PR zIdJcAI_Mk0wKmMi{%xq9K_Sd(aHt@1$c6u(x5noW;`8&IHr{H3H<9)QI!E^fr2T=& z0$v@;7UDG$oeC^yD&_F>lndbttpMl) zKnSZ2Cj)4}v&3ohSskay)ogdR7K)Y@NVtUfFdlc=bnoS<$>q?LKN+j(@)eogeDzf? zN2x6pdK5yf=m-~rotQ{DYqxvuuk(t#TjJeuI-#U{siV|MB%+rLpyc&S3Auoc+>*XnRRhJYL7jWT`A#16J(y1=1y^70f zZ>jwUd|)@fpGUXVOPv-df_x}~gS3}%UJ&;(meoe8+QhDQOcwRe;>+r)1$3et+3b() z%moTpsi;uVOFATFPmZ7`L8mOMO$s@vp!#dkL?Id3A1E3X;!zz|l1@t{O;$l-+zU_j z1#K=;8^EL3op!I)wv?w0sdo5hdz|7kad%H)aUmBk?By!83Gbm7TvsGN*8ihYQhCUa zZ;W<=x?`h5$V@MLwRZ2Q(e9m*F`-yxC^j|}nVp3@LQCyMD?3^{6^#p7D5p|asRur+ z^2p!B5?#Z4{T3kqCN@44ITi>{2wBi0a1tk_hBq{ny26M2__eHb@|IM?TjjL7thQck zS8eJ=$W8J0i9=_K6I-=*Z?Dnr9R?18zfv1<7@i2ZJ4>BO#iRufjfbz)YRgfpaU_+n zSXqEGNNXsvt4U-Y_AehR!J}F5SbAoy(`vKZb4wA$szt@Tpe@TEq2Erk;1^`TKa&#!1Y+`?DHik*KHzGLXoMVNLA=J+!vPc&5pLn zv`}Pv2+EWKpd>%#ER#T+hYk`HRgPQlwA*Zs4Wxn8qfT8$Ds>r~ftbnT+=FJUW^A{Z zQVE%(gwO;cenhx`icTz_Qa}?Zpl_cIP_#9Rky8uk`Po^@oTF8&Dkxgj(OQO+8IhTx zqALM1ge#gA;)#(S>zu#-9u%M&W$npFXNNxJ98*H5c~6EHlDVo7n$1iF&D+n-32}Bm zH!Z|DX7bzyrxn`yXgn5t#>cU}@0Zorh_efdR&?d#IeEAf8(IQ13FuXLxD(4d70rc= zb9y;S=7mZf6kRkg#DCq($pUyaz{LVAYJi&sSk(Xzw4V$p?M^>{8)dcwx{syV6xJD+ zFr5~M)fU2juzh_lR|iekmh1yvikCUcwtWQQ+b!MgwyZl14KBOOhCRb3_>^sSb@dvdFJ3u5zYHNJ&*fN+Q$S(VI7H6;HHjmE62~4*;z$@Ij)aNCQDc-i_G(zQh_z3{sx@HMHZQ&G|K`$5TZ8m+ z1S{nLpxNv_K>9cv5FfRd&jzG(0r7Er`CLFc9}u6km(K^J3jy(Id-*~@x)>0jwU;jj zq)P$ud3*U%K)M_dqL*nwm4Kk~BbNi%T|i9Y`y9jpjVDw?=bn<14wJ-W$CJ!)MN}7) z(A_7U_${#eYF&7Z?*6FmzSe+RM-()+lJ>>zIb2L6xK#8pL*nBG>V$zhX`oK&GCZxj zKcl-ps}l&%>B7%bxcYTpzlO#P#d5b; z=I&{euLh)RS{SG&*8f$JXwe*cxUR+E~j;9 z57iFsA$~ho(mS-PP^FpvZ^1XPBotd3!rx^fpABTUYk?m`uHtuajh;bi?K+azQ%@v* zygbAuVvk%XrY6EKpb9$6k1&@Tlq3^c!irEQc||DkgIzxjw}!sHch8V7LCinZyISX3AD zu&APg+NA7d73b#uw=E_c!fV6Wd?bj5j5XtwL`76>% z)VDF+OnthUY3XKa>GtT;?MX|wM@zR!pKeoHx=kz{zN-nN6={rCG{I;^8lx3WFj|qu zXhjo@R-`dnp)!h#KcG8h`u_wp%gVeg2QK!B2l5vDu8!@Iul`*gdM1FtRRwG(!vfr@ z4DUw zsVjW+XTW{w`%u?uR6Y!Lfp`iHOWqHXm#fJiHqFOV9XCfcK6<+qJ_e-t7{q`FxbfRf z0Y9Q{QE#8fJVJN-wql?7m~#HxCY&aVYYWiXD^$WV@)?abvNp1vwV>^6qNp#7Iy@O! z-Y^sXZZhHT1_*yQRpIXmWr=6cb}jD8#k;CmdZOz?Nf;5$>=)U~4Wxc01@x4Feg;5) zSp0`v{12(r`ijZU(G4Ny&AW5-0?4H+L~&?{&90T3fmbl_ayK@7_2_0z4!nhO;B!q5 zyk(FBZ<)w}ecc8*@P&qT8?jz$Sho#Ww@tA68L?hzSa%TXwT5-afOW?NtIUY?M#H*` zSPdH1T?5u#6RiG5thh_Xx<^Y&E*0yZ0qdR#R=E+YkA`)hmXtKC`v$E0CRhWESp77t z2ehQ5VLdQlJutxu^c-G-ps7&O>rw^?l{6Wt65xKTv98Gv!N z=KI#@%>abq0u$xamL+))#U%(X`9j=KQ2YgN<+!0PMJPU8g$|}rj~)Y;C|p*T&Hm6z(mt;CyAvg&_~KDKCl7I}d;LbZBX?+)XFd5|E6eMp zPVp$mj4j3)4e?CJUbd3Efl^!eZh%j~Gvby4W$sa)3fTIyoIDg*oau%p6P-+V)#0ISc?$YGwlt84t#va~846eo0c-RDiy&YV3n=-= z;(z4iVQ#GL6x=L#4TGD7iI+j*t;*9Buml1&>I3xnv(oS*!+H3o8 zA>5b?cj6v+mlN*rW)jJ#(L2y-G$Y)}7>u~M*BG~u(RY=pMBuD@(MRnup#W;-KT+8seZgU*NJj z?9Q*$De3rcnVFYpoQzJeaK&8pE1X=;<;Xslr@kczH5;5q#SolIeUI(irO8yl>M`Gi z^T{}+dWB7?e#$v^htM)*2k_({$@9B_tKV`vL%0X?K!~${!tDuh4v||3g=n+mTrz$; zS`CM1vK}K5n+E??@IM{?r?|s&+S*w7Y!aB*5 zQoZA1wra4)ox?n5t#$JWs`Z6|MDgb-KjDk0>2;!WbS44L40r4S&lG#OeaJJF8ov2q z^sO&elXupVch-`#CugOSFL7DyHv1e}vTNVV7J1wzHn9Xs6l-?Ey&J- zwmAqtU3`H-Lio9l|5X1?)M5BAp{%|-wl)iuwn*Q0cpE;`iT^Yi`FuroKCWwhUe1hD zY4E9Jj@U~4rM4nJFZ!8rpF)<^v;1npFML=WOQ|1dt2pbN$(Q4iPKnrh=z6+hcd*Pn zenTpLIhD^}L0}Hw9q{*jha8U*djVq; zu?gfu3=T(%1hkcF#cF)u`AcH=4K70JNHq zoy|?eHmgHYcz9b5*`eVhEp`^g;tCq&+7VuD5_PWYGdb1)ca9zml^hBsV*A}42Xqb} zq7HQxNM?4sfDX;B2GRN0>sI3NU{8A_2a4=)NbyLA`_WuZo87bDk}}lnjGrr8SwbsK z?G29^-td^=4Uf5*DdzMHN}scay$glaw4uvUb~%?BKGK%#VetSvckFa#c94uVfhang z$yI(yu5S|s)wniWuPn{t;?t3kSW}>2M0&TQyV^FfM5xCqS5Y#=7ai(EcHT6XfY7Hh z`}m=U632D!Q&b(YmEnnrAzX?I*MxXA6JE;%mmjs)xYse~TV}5jPPDc7+v!u@?U>_Y zDZ@#qD$BoB@I(18j)uOx%Rj`mWNR&SRKMfuprZj zrWbv}f5jFu6>DKz?3B{>eeY2f>LV1t6jsWt^`eFb^3bvjk;E-xyVrJL8QPT^`Q)$Js9e}c}!6z+BI zcdCgsoh$)@F7jP6f=?EY;Q8wC$PDbkcMub~=}hcnOr-WHg!fX8J4rdbf}YCbm3*xb zzkr9hSMv3E2Lr!0WbCHl9e(F^3fG|&0|V2C+m6Q6&?Zcq8Ei!Ozf@CyYXKro7W`*WG1 z|Gi9(gQ!KBN(iQOlscp3{!&Neawv8s6us1@)E>DSid_puuZQ3kCE!HtfSa8K9T~^R zZUElF6n!%kyQQN+ZN1Zm_SS;fYqL+_)zNrECP(%3qE$J(YF%}#+>gzvzFN!S7=G1S z21IK3K-NIF#$&ezt+0mfcrtQe1}W%D7B~U{Yf)_}qLJU`L3t$VHlxn9CF%~N zE&%l(u^pYF585VCgG{0ZnT-73vD=W{VJhBaBYko&Npqm}YC`EyCX{mAK8gc%PP|t@ z!o!FRPBEI=51pFLj`jfGE&eWt9Y8W#i!S9ByZLHmY)!K6GZ{XTg=hy{HbCo~{;?&M zKIn7ylqR+xbXlR(`Um{nX7li+y=YaBjT;#3FDQ*0iaOQgQmx#Et=vYf+y<>Q3GK7G z)CSE{`$+0*)Ye&}R8g`-3jp^5#@B? zIBa5fv5DE}{h&`PwZY(lh>23W@}h@b9vDONBKMfaIzNy=wfBBV?E69F0qL#}L$ODo z`)b3^5tj`l${7}IP!ZXnvc4^|RH`IPB@hnC%hEhP<$%jgiFoFS>$m9dh(;h9cpisn z3(}VTJr0yRxXF4-u>o`%BD zLiijS53p=Y*7L>dAvMc9!7~5Cga4>VOzx0ZAHCTcmmzPo#z5$+5wHll>+qWl-v3dW z#A=d;gjj$h@xI4l(y>3~r|>uUJ18T1AHu-cp1ThNqsYM^Y0c)IgK)9FE$ZC%n{Buk zpv=Mxy$o^APqB{&)F7MVWFSSy+_+Eqs4?wvN?WUwWb1H-+Ukc7?~P*9^sNu& z-{P?ZE^WX5F&Cb7{1+(hmba77yAzTA?c@t^DQhQRbT?(@^lSMR{ocmiv!~q5z6p;c za2fZso^+>H@lWEc&+EBvEu0QO`AndWN1545$|gwNtbqq=P<7 z2}MJ~3tB?Grx5L-bFP-2IrD*T;ot)_bfFSeJdnGxEg6}I-(sECoz8*p&d!0qi7$Q| zf9~SXebxS?e?iLr0sxV6fJk6fc`C$X;Q2T!uWZsCnF` zJfeEvKi%2JjMQqc__`pvAe8Lpz`{=yJ;G-BB=u#AFU)d!&2oAHIlWeMxty`n;)Lx1R51QuZAr<4l=@-rQ3;w&>hJMPH%6p5@f3n-TVy;Ko@1ow#6m#wDZj*ZV+^mRS zu_AsBMf^&$OK_>)rmy1s{$rQwZThNVCH1PwO6oJ?s_YXD>l$J`)v&G^u&$Y4JvU-K z)3B~1)^iQ(x&iCD3D%3WReufZ1!BF_uwEFjUNpa2{L1x?M+)gyi!ZxB|F(Xi_!9PZ zuU*=fkvFsijQc_cSkM4;5-tKaxD1BPakmpBkY0&`QhP2}63-W_tiWrh&v@Je66>Ac zldmq0=i8#a^C1C`38v?X@j`t9K}&!E$#9>1Ub)9-;1ceek1yHVtq2_KCEI@vOus>< z`?xhT&Ax8KzMX#V)V`g5`Dy!h+T%<2M%R30Zf%t7?{-72yu}7PQB>xEkFng7+7L(M zS<447Lx|b9RPHv8OZ_~laj73NJ;0qdE)8_Qy%*^3N$UkF+)a*4gWUh=K7X)VZQgx7 zXd2*Fn|EK2zIpfcH2Vn;)vyL2)-VlgfB|cOr`b_H z>s{t-YungmPXGLr%bdr7M2}JK9;4kYcbQY3|L!hxFl{x6i|uJkLwjblJQhE#N%%9} zgPwBm`&!aU|9vfKg*L){3-#v6dE!(L#vRTRulaJhw4J9cEpdO*7Z*iZ+yyL$-0!Bv{eScB^YZcC`@iMgU2l1J^Y=U4@@6o%$!1XgwxSsDwxaO9 zr6{Z>MX|5L|Kg%BZ3gzYG=u*)-knBC8g?dm60tcR9CnDD4CGuQoAR&KKmVQlYYoUp zgM)$jxByg^kN&kP^2xu}pnUYNRp~bFD5zA2=SmzM#=6sX6pVAHYmit|0{sqF+j09}ZFulRdh{Cl-Hr7>Q_-w9%}+XpzN=Q^Vk zA>^0QNupxnn`@0uCZpXc^gES)tHdTPt;JV%GYeijJ1^ayh~2cOIGR8l{h|ft+Y>xY zA1#`w2r13jaZhxo+i{2fJF}lQwd0=TZjrh5WJ>;D4D&dXJt<4(Dzlndz-p!nYG#32 zGgAns*jVK#Iu%X9%C1r?dx{z4JO()hAm^!&Qwj3Vjk>2+w2G)VHC2ieJW46fVqg;h zY?caEMNK%nk#|~%n)XilOjD{2K5!+U*({%lkk4#2pXq8ohT6iY8Sa#^x7k+#-@i%0 zEM$31gFF_hdCY|G&F^u_f7PUapP6n!99T$xcKYY* z{QJy;@CrjX^Y1eo!UyTYf57pBsRxE1N zg276EAj%9o+}h;JPPbyQA9=zy;Xa{FxK9E=<1T17PQ!Sad3boS2PKT%?v$}Q=!lCv ziSQB%-s8rFoYsIuE3WbOwTWbGNPc*!hxRkOZFZZz02dhXte|9{UN&51c9+^}+LzTO zVvC?6s$)a*qeJt%+pJla8ye7aB`(PlEFJf-$diN=xEAZiwOF4LRt?YKYAfaN3FV-y zjn+a=n8cV_vYN7Mlo@vK2MOdmDK_8zVO&E^%^Q^r%V!fu!4KvCiOZcj4gQEhgMWq^ zd_t$e569O_>NI!?sCKso4Zg3vX${`dat;2lxd#7CufcCmY4Et*>0lcCa8-kU1{!?A z-6Q!8H24uM(BMZf4PM!I+*#fbN_1RkL3O_4UY_amTT#y0<}vt=f;Yg$pM4%>@#jmM ze)ln`GDDau)05LFIcB?%^TZt<{k~soqrJ#O3-PI8g=rg#$^FGbdOU5}Xqrd2Y^31~ zS8$L4ON*i2%C2skGSgS=Y5IyCDpsej*qOd!SC+XoeZ|pOUl|GdN?jLJTkK42akS@Z z($tnMs@k#zyP%`#YD;Z1+Qo;YU3eR57sh3*=Q@F3(=>D%NDH)!IyY|U{azCyqj8;U zJGQ@_o+j2!>fP_Otx~6_?C`wP_ReEX>Kh3ryKV#7HKEF`$0_-5^l#L}Hq%7WE)O}= zNEGeHSKF(q5If8y}krS_e+g3H>pZo1%rCv64yTw^8cZxki#Jh2*W>Wk5DV>Z0PA=cK!oo2k( zFy40p?=>p#7l?^M$ms{gKj7j&s8x+DGO&rkFE*VFYC0LzbTY8%pf7MY9w*>I{cLy+ z^Wl1_anNPb+L}HG_#$XwqnH*pT(7lVg7DG$a8*0IqDh0RQ5w9eNrS5m(%@=Ov-^0j zX;^Cz>$--u#(=fP1Z$g7;=Q3^twpSx8rE6^)>;#+?MAFy8rC|*x~*ZYGhnT2UJ}2f zVXa53yBgMd1J-&ItQ|(Idm7dT#JaCxZ7^VMFu~es#Co7%ZA7ex8rDVw*2d;Fghv|I zCd7KIVQn&CZ8E{yW#sFLhP4^7o@!W|4Op8^uyz}yb;N*mqjDC(t&YfFJdHnShUbjO*hURY~?DHp$+e zwDs{mlpfc||GoI%x%j`s*i=~!LME&{Q5P{U>wV!e}OK8t7-;iO=ob7Ww0MIIHqRM zzi|e@I%WVbqGfPh&7i#L434u54nPLS)eHtS&Hz})494j*xT$6^u;~m=unZ1D1}D@E zDk%M*8)nvTV}pOH3QE__gpHRB>^gwGRKW%j7>cR?R{U>V{NEt+y*$b<9fw<^J5Un6 zlMj|urn(m(H${u!-@EN`1-*}$^A4Oup*Sq`QGGB}?j>rs%5QJ8t3#GCg? zyb%<^W(aZlM>@y8bikW<%`DRwEYoX{=?gW}p@h(*5yF$a=p*3%rWw#{26PjEUaLUE zJUjs51X0lg>{a49WI;dNgN7sDZ^Fk52=}NQFi$UuqK87|0=}B3^rD+_D1rM{(eT;cOX)5ngl=lyGDuhvO_}iAM4WkLLxUnf*4hqZ&`5Oj# z%M9`jgS-WhZ&b)J1o}fu@<3}pVII1E=uj*Fav$XKyLu(D;2cTgM;a}gtwe; zFxG>opm|Z0e$Y0TBUyT!N!WM_Gl<+18V60J3Q;LXU9}KGP6R z=P2|T58<;6;dG2bj|mVy+Ys)i@QDyUM<1@L9Fsk&HPcBHC~yP9av6hIPt-b;<WYiRT+x%YCHR5b97ITk5g$zE&_Y zNG}4p-Q^bn>180-BfkttuL8NhlwSp;*MZ2ZK(}_&<<|k}O(54Mzd_YunFlwJ{9}{m zn4RTG`5^LbzzOI|5$-1Er|lmZ>rDyJ9<@rj$0JmydD+21 z+;Wd`ze!(jO2q8zMb`kHwEZS4JvIn{VN7}&NJO6oq(}D7@*_K%Y^%I7*4ceg@9d`j73_utFIBSJisPd|Ko4e{8MmY==sSm_Ec zIh6^YbGM@?#70b3zMb*B1abLjfi<6DN zq{EkgN&X3Ipvv&~5^j_j?`6~JMH9Sfvzgn8wU5wln=kGMK>c_;Tx%xFbU1x8sZ4ix zQim+7GoL@CH3&;|9r=IWNnHJ@exBb?EcuD0XT;Jo#?mB(lcLGqG;`@)&1JLOlR6Dd zne_*Tr!$6!da+rh7~Yd=-ih!as`0%Z?d+>cFKu|$g$$#R{ko9h6mr0$o-h;l;u@(( zJz*y9)%WvpugQ_WUPC{BNWYD?4rp_+L#Xwn zt^U<{OisShRtx?Bzn`>oYTC8*!gM?$AC4*+w93Vr!=euh;>@ST42Ch;B8hgJLCDr^S2!h^S86G;?L?n zl5-xtB}4-XVdp)XCB$N!uD#&VEFmc1q9@Dh&#p3?zjY)cbKA)YZ_B4~k9bX|aU1m0 zxNl4>Ar`CCxDA0skMo`$7d$PW#$D2aY1}2sUIqbsk3`Xa>^Ba0&8!~Q!9cLyTU^)0 z(#Y~b*PCqcV%VrwhG|u;E123=XM?c5P~6#BvqaGCgngBtW`CfA{boH8bt6rgDJ=e` zW(rG9%oHxAbyREBj%qEo*URZ0)fMVQKGW|o?V?$#ic4DI-qOy|WjKAg!OQlRZZH#T zYT1Cj0qUt%9k8!@Jb?aF$WF+sg(OKAPj~mMsk?eLtWLeFQSTP1cgM7Jt|WPFyyj_a zY`oE%T0!q^GvVzvb@-;(X`qP;_n}gd+5z=J3KV~>7nUQ4^4=Am>cNL_(AMY<;hKE1z*n!eiIaY zy;|@$Df2&RG&QN(8f-!2t@yJI;H_r!g16K$tUq7eABwm?Pt&$FG?RC8uoab+N4ZR{HfWdfV6g$DB6|M3wEdL1rI#wChN@J2v>YP=>`yL)FUbfNq0Pr z!O+K$_g=4ZY|TDzOOLI2>}hmt&Hi@Eu{BR9E*Ii{Ui@<|{&V8)GMP(VA!DlL`N>?L za$wC<;`bl)V%JC1Uf+LPd!@QH%1#p%*=fC5#U5o9yB;d`s9LelsG9yl-wcgeH*`t) zPTznwA_uY34>eWk&(&^O|LwhR@-Es}x7Li;YR2nY;I&%i^#!5-g?^KQMJW{EQruj~ zw&NdGT9dfNtE@pBXJ}gh?YN5e($nN_h*utU^T6VE=u};!mm&QI3eE5Dq&U;vQrOIC z!wuTw<8UuR+>2H%Uo~mf^2#HKTiI0dV!c(%YY5+F2xof{-azE2#dGF^<4X&~(SR*y8 z)dsB9CRm$|SfezoHHbA@!&+m&T4RE>#fUXV!%8AnrG}L>U?rQ^$i{lVu}0R(pph*^ z33r@V+Y2z>+l^Na$XfxzeWAF!P~1}}?kyDe6^i={#RG-n!9wv+p?J7ZJW?no3dLlh zSY0UA6pBX+#o9u#u28Hm6ps~(#|y<1h2qIV@l>IBx==h*D4s18&lQU23&jhC;>AMo zQlWUcP`pwoUM&=_6^hpj#T$j<%|h{3p?JGcyi+LNEfnt+iuVh}2ZiC4`Doui!E5jc zG0~gmrJ?hO@(FySNnXt@)MT&4;%k-CG2;SyFNYvJf_-+^WNa0xlv7y%>6jEy<#k#! z{8O!_HbRk0?c`V9MC3v{`88ZFx0Bz%YXe%DKaZJ94KM(Qe5&k^EpJy;mJ5VPLUk5UL1AlJf z&n@_&<&hUOv)`2A&Z>7a+?hv*$j|SJD&Fj_sNyZ?N`^ZNyQ1OFG_P@0<+7^VUB-4Y z-J7M^S9aaZ&*<&&(Ejl^=8%34oS3ARF*rc%5u$2rt8OE z>Y5kpBL%v^oARNSQWMfZ@21boFQlq6$Zf@n+_tDW4)3cR-Z0~^KjZKQF3+hPE^dy) z2k9IxY0Tl@DI6{(4pB3)6kE8sB@GPZ*~j$zB;|I6$+n%MgKSChsu|CH8P8X}*t%0Z zFQaV!K3x&)6rJ8Gr444P+Ta^S8^qPU*UJ5DxPMH2LsGnKmThmA?PV{1FsW>pd$l!- ztF&gZq9u$p=oopWW8|sA$Q3h2`Y=YWc=3x(F|ty}$TebQ6*2N>dMkUTZYyfwb4BwM zFQt@*I0L@q#XcqlyjrbVGZ0rJXdIyXRX)HXJllRd?%O7OT^a0i)_d*{*Dc| zY|>Eood|pp{e3-Abx0j|os8tHP)=2gY|LMQ2lgi8Ie6qs679FpCHQ~h*$vQ?GcrNRV$C~h6(iP84eJbI?b5K$ z7_iQmU|lt0?bfi)BGw)a>#PCmtO?dNBi3FG>l|Y3)3DANu+Eua^)qU2`!%fdh;=~2 zI&Z)_Z-RB*$k#y)>jGjO(y%TVur8Qjy*BPSIILk^M64qk)MH8$yMy!N}bqTSO z8rCHP)+H0H8^(96_O^5Zwu?@cX^V@lUMpxX3-Q>~-U2&xthXTb6(W0rV!V5m+*gqL z5z!lneu7j+L?0l^1gSp}eSzpNNaaNI1EO4z1`tsO!~j7WNJM`i1`1Mz5ZMtF%Ymp6 zq(MX+__#_QBuIl*Vz3|$Az}a|8zM+Ui5LjPP(d0-LE198b`zkAjS#Ocp^pu zFj6NHZvA5)d;4X(q)?24bcl%_3q75VHhnHYJ-1#B4#D zLoroA%n_uyL`(x>t{}}LVmc7>1Zh4!GXseEg0ukNM_wRE3n|G=2wf;hi-?#7#3Dgj zOvG#;77Nl6BIW?GM39yeF&BuXg0zf?c|a@^q~%1+2V%J(tsr6n5Gw>}B@qjOSSd)W zh*$)~DnVLJ#9|;;3(^`QmH@Fvkk%5h6o|Egw2p{nK&%s_^@7;fFRvG*4T88gAa4+) zjWDKV%Nqr0lOP@l$eRRdvmhP{$eRUeiy$5e$Xf(ys~}dlm$wSiHbI=3A#W3;?Sfbn zkhcrc4neF9$U6jSry$k`Zv^Bcf|L-%TLC#CNJ&Aw6OfaF zR4s`20&=w=)d=E)fLtR;M+NawKt3u+wSxF0AlC{~ogh97$aR8L4=)&y>jmi;jK%@^ zm>?a8!89Nr7o-z{7#HLdf^8v0Q z6y&plbWRWl3Gz8XIxmPr1o^xmT@b`!f_y=cE(+oZLB1$RmjrQ?AYT%s%R&V1mqY1a z7NjeJI6G6mB1l&SajYO;6{Kr|I9`yi3DR|HWGf)ubwRp8#7ZD;2+~bKoGi#U1?iR` zP8H-^f^=IDrwQ_HLAoP|GX(jLAl((jS%Q35knYiwtKi9df^?sV)j-@Aqz6Q-0pfum zJtSf+5Dx|E5fSTvcqB-ViC7QBV?laC#0DUq2+~s`HUjZfke(5-35aKc^qh#zKs*1V4S{}GkcR}Np+WJGAP)^n z!-C=wK^_*Ah6lx@AP)~pBZ6X$Add)2BZFeCAdd`6qk>|+Add=4ql4mcK^`5H#stNa zf;=WDRR+b=f?OGt#shU3Z9$$Al%@v7yMjD5C{+c;`+{5*l%@s6hk`sUC`}KF zj|F*pP?`}Gp8$zKcE1YpjG#0#h#$_(pfoEez7XVDL1}hSd?m=UgVLO!_(qWD1f{t! z-Ua2kL1`WgZ$WupP?`^;Sx}xIlokZBO)dyZ3t`|2$_sx1&D zptKsg_Mp5vD6N6Kg7TW6v=%z!Di?%Ikw@Dda`}BVJH!K8$P( z7JW$G-zh8u!uAD=_60d{fA=cfkWay$L;*H~0~AzGWB!K_v>}+~=QwFYFw$EP4|d0+ zQ=&j@2%?>inrahEwFy&2rqNkyQ6M&9s^e;^EiBa*O0}A$0%8lMIzg#IkZM~nOMq0{ zDAgW17&8h41iM-AUV+hQ%|o-Scpm9yBu{~YW3}Z1xg%Iso5b_SlaU3yc&PjLdGT=f zqD}dhGQWl6L_b>ZP>$^(@vdN27C`R`0!n0iuu4pHuZjY-3o*}7GCVbPcQC6JB-@S2 z#3UqvyWN=Ntjfh6B+r3rYPJ0mPZzE3j>l|@HQnK^r{xDp@o_!{JkA%-=2O7gKu#tE zfIbF^&gP3pyZ5v~a7}kShz>42d7x?;Rf|+l4tIo8j2t3GfYcSh_ha`4J ziyo@g_gJWltwVeQ}v&5|W7~A&Mse)pTPNR`6(F$|&UBJuloLCO+1mh0x6Qvb*%eFB^H6 z(77`|mnUvf4gnt_ign#v>aqNuwvsf^hvp92O42}|UgsLy`b5hBXGUUTRol3|M1)&3jV+=Bs#lhE==)_`$!{^?z@?db`TQILJ15HM`0! zxWpCrX?B$q(A$T0m6vV5R}WLGe5T7=hl9H1t-0+Q+f{B+m$wcF6FnNdJ>tHWFK=ya z!SdEt#jf)2X?05(7?xqbvD{~7T{+vAh|Tf+?{8h1C$6W&w|yE9YSc4#BQH@U+wzOI zAd-R>{WNym981Z)%*m-NZPvkIy*D%~VIZnb_$2`qD^E=PQ+EU0sk?#dUAcO<#+PotS?)`j zuWOcY^RS7|$Dc($#VWA{mYf58@9xmIDJQ<~;EJmSF1H5yTI$euflt{+v(WcW4t*;q z2T^al$K$q|x4QKmz-@%kzhU67|aRt;>h2{y#sw*8UzDVcj&V1xyS3X;zN)#=I zH`$$^6o>dsifs*(mSC`otx=_=A(UZ}&g?Kzw8W>F7cTX+)Vy%0uaSA-)s%VRFpBHg z*s0f}d~(0UM;C>XxsGTVr5;X<#q{=t?`~80u*EioBYbF6`0IC(8XY7rwkH$fAEGY@ zMO@TQ@ktb|zz=JsuL+aGk-nBnhogKcE7>&PW5j@BaD1_=_(W`}P&nGh4E<`ov6?Qp z{ojWktujhx`Izlr(JUY8)s+;SWe8?F?Z^7w?xlFNPY_Rar}e5W`W3V>5PsSa&Q{PW zed^}+Ek+B#aXwXs8jmv6c%LdmjW@_p<9*F~%AN54koV^CQ61T#aNpjvb>F@c@&X>P z`gXGz3bjVvEoYXz%=pXnFdENvCKDV_67_4f>~_BwJNc4{{a)TL-+W>bV&8W#h|Pcj zgUwaIctdy>5O$M^e5eXHtLojP@@>eQ)Ir_R-3 z%|uwUbXYS@ux7gM>nV4(4r>;|dRd1x%LHqd>%QJ?=jgCzBdobPtl1`5vt9SKCT!7R zy^OHt>9Afl!Ft(sUu(koI;=SeYk>}HjtSNr*L{6gE!1JnMOce;SaVIV=H6dMe?^DY zg0L3ruv$#8TJA5SFVSJmLs(07So2J<=DF@`G5M+vYd*qSro)H4$dp%SDSNe!!i)BCBdDRA0UALS+=}kWe$V zUX9?JcU;OBW$Omk4zx55gatG0t^c$fS@Q;$Nrm;UOI2a*P*hm`yQkJ8={CCbE!-y8 zcT!<}fD6?}f20a)j!PHx|L^}W6_ycd=PInt9fbS$HR1k!B*&JH!u?j){Zv@nTz{Mj z>%(uS!g}v+De#}T6u5_H2d9BU2VC}yDqOtFf zUoa8yQvwCeV(`WVCUFv7`KIr&ay#SWqi{y&Pn7f^2S(wFKF`Ae$d#3xaH6kSz+bSAuMDkSz(ar9t*;kSzdTY_wBkZlXH_kwJDki8#dJA&+kAp0=LJ_@p(LAEQ%b_WLrl}b5WNks#9%TC|)$ zs{!v;#QT&1@6#r{KdU6X&$wKGcYnZ}56w$K_DPUk4zepjK1|uCLHzqH$UYAabSkx; z?X=b))Y^`X-c;*VPOS^Ba;Wvsq1J0bc0I_x2(lYNb`wTgFLo=)ZU@<&Ap0`N zz6!FhgDg+s#t^<86k-w^9Ad|O1B(@8E_RAc2#`5|$XqfY^N9(WAt6HMvP%MFegMb} zg(^a9Sco-;*zgb=5n>}lY*dJi4zV#IHa5h@h1mEIn-F3XLu^uLV4;G+l}<4T0|ti> zgHH_@d}hL6GRNR^*AD@MH$n7bQ$lQNh)oNz=^-{F#Ab%rtPqrYiZisCRu}vYiImEVv*wzr+7Gm#(*!B>6Kg4!~ z*aso@VTgScVmm`@SBUKn4eYKE;A*D?r~v{TMgm+j5a7Cb_HY7x;bK65F-U;DA(jrY zOo(MeEEi(?Laa5!+Cr>7#P)~SfeVn;&kD2#;=J04;uLhNLSoeHtj zA$BIj&W6~z5IY}Y7eee}h+PV?PeSZ+h+P4CgxF^x_IZe14Y6w>c0I(t2(cR>b~D6o zh1l)Tzz3CP-RQJgk3+MLVzX`Y<75{q+p!y z6yqNN#wQWuMz@afAh!|Ym&1hdV7E$%Ibk+8tWjc!yEC{y1h}UW?ob2VCKKEi4tJRQ zF97aM960mBY<`$62(yJ@wkXVA3A4pv_FffR5@t)o?A0(^7G}%CY(<#87G^8MY*m=O z9%gTZ+3GM`0}b!Z)`r=-Fncr1-U_p~!)$$+y%S~|!tC8J+Zbk>!fbPxZ3(ljVYUq* zhuQWpdq2!}gxLpS_FvP~u3d8B|I>e}$z~T3>No?`@n)zKz5~?% zqCx!xp-wbFon(eO`8z=UGY#rxggV6lb*dTawC@1*CmPf%2z9yv>I^f~nco5GPc^8Y zBGg%KD>v$iWxQxxneoQ56v%pGIWK$Lo64bXWVRayjJ+~ll|}QQPs8k1pC_zrXMik( z+T-&c%w!{%dRm+MHrOl5tsvwNNZ>t>m)&Szga%amyzz`TgBK{!0jS%giTWp55M1!{H9?*WKK)a66mb&fG4}Svv(CTHc3aM6a ztj){b^`_dqv34)p;!3r9WBa{qvp2Qh8$0O5Znzp|*TPR&QwOn!UUjSA&pN;jzYciu z`&kFP5J#1v+xY#g8!kk1IrNU*f%gpQGgYZCT%-+)@8^oH)=Zg%4)(rq)$Og!MD|t+ z(LKG$-=-T?R%k!9p?|#H8_o46WuV(;w>!{X+$%z+_7y>Bd_`!lOIPNy(R3wpm6dLX z!|r&zLk9kVtOk2JVUNNh2Ld}_>rXwHaAfP7B>Z`oeYh=eE9ZWs{l8`b>w< zZM{Kc>;l~KMwlpd?m-Ju3+)0|yE|MCj&x6rqL1qtM$cOF=vk+Yp6oqF&(D?7^EHm1 zH{Ghbb3GQe0za=CJQ=A*#L#4 zQa2$G%T@MHKyKb99Dy@P!Px_STEVrdjj?2mYa;8?cHp(#9v-PcRpih09yRHog zrGC85ZL>+GJyE0f>wT3%CfQoq*jCw=Ek(UrHttQfSEiFq?&!?^Ncv5N-23m5yR{$Y z-t4wR?mnn3nC^~`7MdGJ3vJn#`r>`8$Fj+3?w80bWVUxEI@pc9vjvDNm7=ZTA)E(W zkv<+gy*^NRZVE8H+q|idy|Key zw%waL?2R4qvK`*k5pV3Mmwo6>9rebJdD%{H>Xyi*o%FJd zH+9k*JLP3LZ|amccG}BYy{XgQ*cmTt_omKxV`shWfH!s48$0J^hrFqC-q?9BJM2xJ z_r@-G*)4bKf;V>2%f51_E_!2^ylj-1y5x<0;$_#}sZYGI%U*WUo4V|cUGcKh-qaOu z>{Bm0>rH*?jeX{2=e?=Vys^){?4mdIxi@yz%Rcd@u6kqFyzGiMbQ?q#2OQ`fz* zFT7|R|AjYp!^@V4sTO5OIx?s(Y^cj}He_NABI zai_lY#=i2hygT)kH}&*fGwi8GIW|aUH@vAqa%`~d|8Z)t z92HCm31!S`e2*jTye*@DzqIW|rXI8x)}*mx{3UXD$GXZ-{@HWA|! z<=7-S;7m=DW0Pe>b+R0rA|vusWHz{0d5Ogm=;0Rvj|M89vJZenJWUwg6VoBp8Sn;V zJ$>9aq>t}e4zoVsdrBA(=mxLt0sm9Dq`%)uWj*12FTc=9WnKW=t&_?+q$`#6#>(vQ zx*NT;Sa!J4GPnsXL&|H*Esf=^O07QvhE!MOxA^U~Ro3W)#{`P?HAeim4Y8~KawR5( zl%jpVv1I2FR2#buR>U9DyvOb_oY2&5mjT1bc3CK+qae)q5%5u)eX0JapLWxA4#f z?d?S^bV&<+u3_+*miDO@x~f6BqNQC^Lh(&{_z8-}cSBfxJhv_7&opSQk~&u`A>Aw+is_R^$y6eh)TxwH&; z)^hnNOZ{>gq6#VyLKnHz(sE-ICN8;>dR$vu~qb$T+IC8+;q zg!*mi)Ui{Jbm+8>oqMdqAkaH8N7&06_Q2Z+MXfRA+LeQSlohF9VjKKrD>Y`Uk@t-& zja>Cx*sjWQ7Y<)eF`RdIkB@KLo{od`{_Sfcq=%q$o;7mmOVGz_u#eZs5LK$d&`~XP zObZ>?LMOD)NiB3r3!T)ezp*A;|v_AYh$_U!&_ykDNef-pLRYlVr&{PUE%dn- zx~7G$t0BAxL<7KoFV=Hf>y?9qF7C-p$%FeY|#321NL})vfQG^j+$bpO|cWkGE+=trkKhYV&}9n zht&{XThh49M$Tn6VyiaF5LNSS#C(ToZFwwRg_OfN!y0SYpc=Nj@+sQ@9P4zqXfP#M z$wc=E(H!qMy(woR`}zs~yht+=XOcc~k5aaMhPjym7}OVRkMbN+!=FQyXOr?AraYUK z=WyjYLV1oBjRbPZ7zra&+SfVn@P7h3cA z{hTUi?geK2w+3^TI=yFyPWM-vJ00TwXCU`Enw0%ai(Xe;!sg0~C6#gB@rC_7jf*vc zf+_Tkv``%w!?c0%&zz>s+Q3jcYPgbMRXb{el3-IiYNC>0S37E|lHgD~YMPSZ)TmKF z)F^<__AmK-!9V5mcmKf)#Qp-&=QMKR-E!%E;8(kmU+tD5$}1z5#Um4qkwM1DG-D+1 zH$=WNMrIhZ4K_xajFDl+NTV?_)EF6Jj7%^_Mj0cwRSfX#)vVpU)KLXi+db9n#)DTP zix184aNoRFj-_$moR(u5+&5?BSQhuqS=cH5nH$4^mJIZ3EnD5N6`1)+A5Afy($ zQKOkl&2y(SsoCyyHubVQov^1S!LK7V$DNC3W!zk*d#C1Otyc&;ey0n4k$&p7+U<^C zrD3brR?#?GXvg$Smmi=BN@}zlV`U77R~vB&jAtYJn4svM+H>jpx$dpjEWW_K&LO;4 zV)=|zq!062Ug}$h(yNlgZ&`_cecfoPS4!8vpgIRtHwF>BN=3WyH;Q5_ot)%G^XO~z z4nKth31xjzJKN$0fPL}1IgeokUqB@*_=j|W2#|*8(&~0yZ~H`S`xiPA6E!3zA`&;; zR)^h@6Y%>kwXG^?q<_F&!aGQYUa1)Xd#=0eCs@y1H&n$lO1orI$^` zK(2TF3?x|w>6OXnrT>Ny)5#g`sQ^{_Tdd?Mm}P&7py#>K$Wl(&l}Qebj;GbAAUy)n zj2g9Slha0%(^hDIWL-XQ`%OOoR6f5XpI=9vb5ke7a3sSmx6?+-UyK_qkcPWEarmDgd7GQk?v z39JidSdF3vYb?SVBx2$Ou$pvO z<4v%}cLM7ZGpu1ctO*FKS%)>j1ZzSkur8Zn4cE&~GL@a&N!cUjvLp1e(@bTjc2f3) zx$H>2>+bXpX-+oWA$_wG7pX_JJES=|{gX-JPbQ1s z{SN7|?{J6om~w}-2U%wK;Fj5MxGm|(I{ew-wmfAc^X!#wqj~m9H-7JUNQdto&!z7j z@97Jy%5Uj#ZPP$O3`ofmVER-pLQb z`wi*HYPah0c5Y{v7GC9-7UmYGldo!*7G{Xw`u?wl-~V0XR__0G4SkV`qpIRJ90267I8{Bz?sER3X8TnfLfQgN_bq2eYt0UHdXaFbgFHdnms6Bf@Z z-e_CCRXy)0-3BvBsb@2<)LZy!KGpM+Zy0{x;iAj}QTs^7d6YmG z>hW_JU(_M~ig@pYtaxnwNRVG-g-1oiN^{x(UBf{FK!`f(q zwb6awTTh$BKl;|wljct$;)1$a)Gg7rh$c(4t)gm)cKjZeXundRZ9{0=MEr1ZmvmKZ zpUiF+^=7wl2mMZ2V3UDeR)} zyAg@^X$$yEvJab5AY`U0F232$zRT3$d6yPkSg8dU>A{&b%gPKecfdwf^hi`^?$;+P zZR(2;M5|Nue2jXprq+ta5kedOwBt{MoqipFUfJ6gOWmo;$f-(8Q)}G^4C;@3zy!>m zVP96EjSJ+;)}Jqw#sSx7!>Y>hbI_1+QKgcx9Wvz5LwT;Thh(!@vW-13dmOXhsVeWw zvoBP$H`pP6!j86W3A?F8C6>5dRo;u2m|3HiKtvM`D&a7ez>n?H4jXOa_MyV|BkX23 zN(-mIg-zV0hpOVe;qU2R8;4R){64Q?B<(Vfq}|#`I&+Va6jgwIfFo%S6e)3`Wpb+w zTe4KE9BY$7C{MM?v38m5lvC|EsP>BZl@*#;J8@#AMf}oAC68yi$fVQU>BbnE#ipZs z-E^W6-|gljVh?qEhKkY0qa7b%^;v?eH6Tatee`}eK>N^L)&)wH6)7MjhXNaKC5rgz z_a7h%yWFLCqHwk{a<0;%*fOTw=*?eEJ71Z+pe2Hky9+CCH9{!s48s1-AV6ZeH;2%s zwWoJ#Hzu@;1tl)`U~9Tc`fIdmb;K`LX6MzPlpu5ozb1}D)s&nYkE#Evr~0i64Ec-F zikc|l{B_3d{J9hbdNdTr+vG&CL08+VM!BxGU5(zYt1W)ywS3<8_xb$be13X950Q9l zN&LCy#^)Le5{}41o29X;p)meQWuhRN>jOXg`at!Ck;|2Kcu|yaCJK`$C6K)+bV>pt z9YRHzmgAvQ`2B0VsEMPoBy@iU`mgZ!^k3+s919;XjPir#QGQ4p#I75z!cALYAs=Z8nLBIIIe!sA# zv#EWU|2S4b1}L9V6=m@E^lt$gmOEiU?W7sCQyOZY-vhP3Qc!Ehs!l@@hZER%?10Sn z%Bcf#?4Zmta_XQQJ0!E5oH``OK9*UlocdUf9hOznQoH`=Mj>_zioH{DU zj>+t>oH~XWo)Mi+XMvluaU6=jKz-#|M9$Go?OkZo%QpOfdLSaRACWmH;?Wbx&avaN zzc_VVj-8PG<*5^L?4;~}D0NbfokHW%Q*!LI?C+5}EyvEt{ywQQa_p?^uTGtnW9QHq z^_(0#FZ=WL=jGT1d|r@a7x8%!kvlJ{UShAx@e}eYJP0%j*>nx zCY_?B%jP6JQ@UbII!U=c74hJ7tCiNXI3inKC0NMFRPk@o)GGY}rZ_Yteq4r@NRq%~ zCn#oBVkaqfP04wRVrP`tX^QPvVrMA!krF#gu?9K~KU)z^XtxolyLdW!oG77JTc zqaNYHg2-N}QO|Gx5@L&M)Wh39huD%D_2jk&VoPh(W7|Fud$mSAv+V}4WlF3-V?2e# zcnS-xkNk5!UuezerF_0eKF{*`ALjD|=*;LDI&%lYp@&NmjZwb`gXX-P0nAk@@(+MS z-zcVQn<5^m58(91K~WyGDD+l*h8VtA!lY$ofD8^E3k)7S+s3c}VJs^w!)ufT@Xt6v z99<|IaDdBe6o71M6xDJL(!M*-$$O%e@8)3A^8syk7Z~kgaX3wAWv+#0-#-iGEQ@ z$6;cJL+Gcwrw$^Y+>K{Jebrm3)3#KEE8zO@?`FHbwZ!{`yuW9(FG;E|)mY*d9PT zUBOXqro6p*-rH*4a>%Pv0Pisj&!myT4&yPkJMou zMOdSBSVv8;j&=g;O*5>~dfDTqvL`wzyUJX4j9&JnsqCpv%D!PPJ60Wd@teqW#(7Xw zsky(Xf};7y?x%mJ3oDP|RY{LNTPJu-vvs0JovnB7FCm#cz(}w1@lv1;bfZZL9qmR&n=nmrrnZphToDQ zj^}kA^t++nP5X>w=&2r?)#04WH)84dmzD7=?%xVeSW=hW>G~F=`J{WGpv{)8mL$%muh<)x>V_P70Rg2{y z*2Ht(k=ZJh*^+PY4gE99wYO;=l&;FLuP?jnuDCPV+AD6lF@U;hkIm_D{tm4uuDBZ< zm?b%~^!M$#-#6H$$H|=JvO8fAe+Mmdy0~bY3m_n%dBxs?B7faW*pF zNBa!CVd}Bj$#V$;Y|k-hXZ=@|IkvfL7M^MLdQC2R&5aA-to!7AL(4gvD7OTiOC@h; zO8y(}bln&B_*Zi67j_|a6Z+t$JN~E1Q7oPOn)XP_jlnkPlx%cOv5;l0h0v0zebJEc zu?*e+!ZfTl%U0L0H8ogq-75kvdfUA5FJ-#>m%0P6@3`@vAU?ILgX!cYH(OhyfNhB$ zE)>$yuV_%d?7_>@QM5w3?XJD;wxn(Wj9cz_Su))(oy_w+941T`k{9}?lZ~R5ad*7;lF9>lc zw6P{mZE0bfYADywyBFHh(LtgGyFdD_oj(^nWcj(!Ehn@K&#!;X_I0I2D6`}%E!Oi7 zS{eg*kkmq41MdSATic4V z%6hTLgI*NAr{%n(=4^#b8P%~Nf$N930f~e&ZVfFZSSutt;K~Mc!J%dF%F? z2rxdff?h(@e)#Sj$Q!X0OFPf-zLw!t>Vby<`L-ejp{srzwn>L?|Ri5(~K{=P6#dX-n=yrhJA6_D`a3-olmhr0gDw0N>glbz+&%iSwSNhrcOpDL|fKGgshnYS#$H#bWNI2wOC#w zXzH~62&Qc|da%%{BX`|6C{}t*{wGjwnIt^@w;-g9Cr6SV+~}YV<(<$aGOD-G!gklRP<(QivPU4(o|^aw zo?&8_$U-Hbcc>;kef+gpR-WUFM(z|v3y0vIRq(wUkT^2xE+A2}k6* zM@ZsnWm5pZv65DjfGSe4#j@3bcj+J4m(L^qrP}qzH6GIzZLLSyY1Iu2@U7P0bx#HG zTDwQRqrTOn-ces9RygqTk9{Sl8hx=rKK8Yo8sv)&_OZO2 z8tjV=@v%X^)DT~6sITV-LTacl*5rfTc9Rbk-%wLgF|X+(tZBC);X_Q=Lvpy{zjH6W zrSC3p7wPIcJTvv@p^tYc@f{RLFMI|_?;)fNLE^3lkq%iyhOL+(2MoBV_z~cr!z7Rw zR)`=tTN{(DnTjsZe;G0g-lqdeBal{Le?`U5;98MvldABpAQZ-FaM{a?w@FVJQZH$# z3}ymImzj3IHTMly2W)sXLs(7sGO~D?Os~8ZD{t51TQI&~kH3rY19}VV-^CUl)HAHb z42KLPSc@4x)-$Zb42KOF)?tPtdWJVK!%;(qH!;I8J;Q3ua9odX#P|sVP8+enNj<|R z%y3GNw_*IWp@udra0ZsaqGEJ)m5!&ord|=#brS?8)lL8@b*)HLep|-hcj;nR>TSq? z_l{EQ)xahQ1Z#tqR2l;O9&M@}g8PNq{SaK?!L3!@WTAF4#5TZ-i9+o}2(|)r7|KUP zw5zY31SzYP-AjrfImkm&(Q%y ze5);&jf@Fc9%#$wGs&?5r7G!Hdcko4;L|)fK7e_lN;gbkC1o&vSUBD&B-{H9Mjoza zj!Xcy4smRmR?AY_po&%{M|1mr*>6hc!|SfhZ?G& zhM7Vpo2#8E*cxXF*jpPA=GLwpCYDp9XGQX`M^!vX1u-+-3XjYbgyef&QI`!nprYau zuG){@648$MQ>yE)I*!K+G#=|NK8VSYiy+Nje6X!an|vieDuSJWLJ1r=qFBQPDUfDoFYlII-Wz7udt$;FxzN=H;|&Fu{}+4rkeEf{ zBW`sQ1GN)DK$;ln+fdM}eo`P;(dBPpD)gxB0b7;64TWs(BMC=+a{$lS>Nk24_JlLJ zw;u_9(GMi69!n>$5ZVc6E>RGj9I)0k`T91LB%6E_8eEBzgbS9-LRVo)b#YN?2qtK8 zAv%!REg{XWdF*0Q@oXDT(+NZ{J5o*|8xU-%&`^kEE7Hl4HdtGd4!ch(6{GLkAgq`SF zV4!C!EPtrpM-5JfILWfIUm=Y@2Encm4pk8uOFS!%0 zgd2OwUFfPVDK6dhb-u8qusGpVdg(ebm)~}rj#v0}Tr6agnSPPQuti%ev;m2;$!x#K z44B^=J&iru^^QZT?iX`_IE>hAbaq#A{s=pQqT)WNoYXqlT+OF^6{?61@!<5lao+-; zsRf2oft$1_`^|z^@^f*3QSibzN@=$`m(o5L%~IOuxE$X0*a4GGRxUu*Efk0?EffTf z##N3+@l6-bfGuW8u`P>d7g>6_rk^0yVFd@pvVmB^`(o|;Pyr%} z{|EI7J_JF&vliW>g6+HlGNYL3!SQv6R)|NTOFPo=8mFO>?@Lc%X;JZdClY)H8tfp; z0OnxljP^V-+9u>0FkuS&G!zm0D8?KmknU3WMr%f48&?%^I7b)<=#;ZtSAq7aYEOL++VfHFqWL8IxQJ`^*Vx40Ys~n^7ZjMo) za)`nN@R(m3I7CSY4v|fi0E5V6jqD+tDAag?hj@XM@FXPU1yZ4>T6C8d0LK;!-6~bm z$yK6ClZcTfX{zW8QFy6u*+b~TgG5=ae%eo4R?%SyCRJ2qDssuGfn0Q$rvU3&&Fi5- z{TsCxlr>P4jwx03z;4v3uP%WuTmruZxo7+bllvEUkvrk~_Yk|Qk=W3*?bP_k4UJDj z1)Ru|Mr24*sEb!Y6E37}!UcqNBFwEEW=7%VUlD`r3%op?d_!EOe5HbK`XGkt4tTRz zT&BA<`kL53iv4C@enf;F1)9L6s%-gUeCr;{^1{%4}Q`&)mW?wxu^giR9+xGdTOr4AYPKfUX(Ik;@5iC{U9!I0PI z3Dw#ECs18;Z&afvMELoHB*jL_QBdr8h4hXM4pKbs67VV+DIK$@XUw6NFkz=#6++ox zqLMJaOHl8VwM3To7L+p2I~3+S*n{kh5>!RDmZBC!-61I#FF$DKio=8hHHQsOuA!&% zHr8H4n!|&I*6xMQp9}s!3`QNHV_Lu>NS5gVi&c_@83Bt89y0?L`=iChvjP^!F2OQL zvKJK<{|W{d9ZaQ_PDtGr0eP4^9BYt<6qE-Mf{8*i!imBR3S7s;=-RHh8-P6$K>f|P zhC2A0prYvz!Ue%*O;;zL-Ahi`(Ee0~T(?W8g;o$SGgT8EXqs>UunNL)O;W}u-sdYdF%2m5uDvoKdb(veOVc*)x7f~q4OCfV)9o>c}N zHVg~(F?TT=>yQVJw~Q%nqRH`DGYZfDjBM8_=woTD9%l zwrcQqX_c`QSJ>ax(8JWw37s|c#&>V%%fh^GZ0K;Q5XSa=LEiu=J4WRHd{F9QuEJL~ zi+61tCwY_|P=U5?6iPq9b)zs*fE!0;rEn-7H+tYg;i#xc*ekFAr0?!3BA z)rAG6n_=ZBEG*DAYa^t>Le5+j$qO<%z7={CRrH)@8KOY?5#m^oaFPtssm$PcSQ8ll zTap<7%L1yry1-ew5wI*MbZS_Rl!}T=+y?|;t@f&CE#ASvL-E(~tOZAp1=*_w*(=Hz z&iFwwIX3V=0hRdrawa_?sCp~J30Mlq4&RH93&iIJmf;$JHn6ZAZVq%WEGjI->T^o< zjzS03#9GVhq-QP9+mqw44XjO#j@ML9WHruJJ`%_kb&Z0Wp-~V9vmp^EfO4JEa#CJ1N#u=ILm@o;- z;~=RhzoT^PFnj`0U@Bv0y+Jekbv3%0qHn0tH56T~M%Pkwom+{nqv#s-?VA+++*9|c zlJFKK9IIItc~n4;Fuez3YkLhISb&tLUVpY@ugBYkW@T0al8`DUPfCCvg-%I;8ih_v zfE9(#NPrN9&ba{>3Z0bz4GJxmcx5;uww<7ouw=3uzSzLhzdJ_2jPY62tHf`9k9Q` zsaa7zU%~JR{siQ(_m6waam)AE{br=LU4KE6$~&D;65lgE%3ppg;y+}NRE03|K4rAx zR;0bqrDV&pi+RKY8qhV)X#T8C9nYy zWyh+zXgb{@+O!rYiW0@RX)P|qEJXt>T^7-Tv;h_*K=WO)9@q#g()TT!U_~l-xi$wZ zPS`AL30Mjy2rk#wfTd7E38)Bo>9&BSShBnqu#|MSY!6sm-7W72EbcbJvLj#-+Xc%9 z0gI=H<->qQk}MwuETvGx&VZ#1+PEuV=>iQHBjJv=r=qeeQdD-)W{*Isv?4`khY4tP zDd7(B4;^Lf;atX^AsEz|iW(CY4Oy%O{l4Ju3eVTwsC`ULQ6q}ijgCnQ)oFk|8oD)e8Lxs~GS<_FE>J?r3;c^I~ z@WV)MRNq58dNgA_=|o|4fnC^IfYK;7<1mokJgCs-R&oH5CZNt^mQXtj_{1!s4G-x+ z=mS_8koo9w#0?MS*bXR^0oe}{qT@VPB@35HyZHGzU@p0}YmQt%vnw^Zp zwB(ZSai7!t_>>Ro@i5t_0OX?#XXzYo3Qf%iu%9>Zqe?sh$V8{nc6X|Tr+hUy1)hV^ zE|sHt9fEXe4@jIP`aahlU(qd>0pJ+`9NE&__AemW;}@hQho`7`iX&asrws^5bEr>) zt51WwPlH&O4%DWBxupZ`xpeI-qNP3)P&{}x*wuhT4LEhmp%xLQ&F|3T1wXG$6h@kr z1Iuk)6&n2sbX@_^rL!ywo$h|c>9!T7BEG=>oSDxjpuSA6Xk)1j@#mg48U;Mfi3}+v zvmV$m6k~NT`Gn}#005>Tj1njgdk-pffksY;VmQ^*q-F(@^h(dXu;j%CSH~BH$_sag z7d#b2Fu#3)UvT{?UP{Hte7~h7;exjd@aRcN5?T`O4oTLQgs3E;DG6+!AbDZO@_MQf zgq~`EqBp)IpU)+mL1;l1n6TGp0~EbVQHL76Mo}k3aYRL0d>~^q6a&>t=#akdxkPcI z1bOIlLOd5p?hDi}>)$c4wPRwh`fCnjJXhZq*jj?8jELA0Ztyalm`zXOT~Zm2e`Cw+6Z z-}bmkt#-#<)y^VC*UvhscCv>bn!!q5LN`gagN)iWwS}L*@uVGUk^*hE`hQbUP+L>AY6sqQ~11gyd52k}ERfy1z#tgi|L5D_LiGdfXheo%( zT)9y!%~4M7eS{G(gam2@>ZC;H+JJu{<#MBtP;~+SLJ)XeNjf1;v|? zi|2Iq)UyK%PdGZ~;dmtfxBN(+Wc9gfOB4f~Vrj5$d{Cey(+WkD#TFH!HA!J|R5$n; z+0B4wVRCdg{0aaCns5`tq<;sR|3k4HaPVcPfD~A??nGyRyb+y-LdOJqDUGtJ5aCu! z>F6v?8Y$CM_wk`V)ZJ@mkcPtoR13dM;z$QAZ7rqEmF$rA6I|X7ipl)| zWI&t00l#J0)V`%IvKWPg1C&tK9p_AUB@4)EO85YVql-Lv2;M?~-n4N@WoP)=E9@l6 z<7bHqa4p7-@YWdMttEJiJywbx>`?Sj$D#)fMGsNYSCpdr6*DC$?$Mi~rTNsf{egJ* zX5M5&J|&H&Qgn^|-c6@LryOM`mw1vNbF4)I$CC~d;$3OttC{q7yuA=Rb$8)YcNIRR z6{dH*#SmNQNgfFpTf)x~eSf?X$^TAHQ`$OBQzb z+2lS7*H&4fJTjn<|( zsi=4cS>YtxaYJGUd{7e|MAM}ta?&8$;Z&i7Rothcgv(i&AogkS^ln9Fi5wKq50Ot2 zH;o7=#$^$uBVPQSBEweuEwP2Stlj)_vgsuV(MppW90|J`bgD&8cnx{`0&7w-6as$$ z(qLC2?|BTwW*#kj9wvVkyakdt;irW%wg5dKa0=5-Nf;w4HWb131Ed7_De+tVjs+kw zDNi@hl{^gqQ*_OrN3I57;det2!~srLlq`VjVZ~jZplZ=w0eLFm;6=5UJO~YyH3<)P zQv$U$36I)Oo`i=3#A_ln!048#Hj<7TN75n*tz5{Nux_Xl&3DEAeMNG>7N*(BH=7Rp zQ4A&a0vD$hZ?nac0|^`!lnn9eToW<;?ResSx~l*g`!*E5#LeNMB@?^7R5pfMIk6k= zLsv8Ij`cZ>n@LIw-62ZLtJVQ)K{D|t6*pIGRHd)|&Ma&~AD?t=b9+TD@bBn{w= zC&}h4Dt=1kcgF(A@L)gKK_EnKlTnyet_=3Yb;knze_MMjAW#uy_t+OX6z;ZiuXw>*51b{?5_zYb_&X+b=lZu@mz)0L1q9rFwE4 zEX~=6mGOt*VHA=Go`L9mT4z;qQz^-tor1jh9D3q%lvJk1w*+hBGJ2Kg|8c!`Os;IoJ%J zl<@bIL|fv8?17^+Fkh#+@H^7G!SsBN&jTY&96&X+Ww9$ao9rBFU%cuJ*b$3!&`s)l@@+BZDl*k%h6OfjvxMS4&nq*KXp*BeG8vI3N&6 za#$#bW$??OMDFjI@&TFX6B@#RO!9gkpzB)60n_vEa0*qo691|jC)AFE{pUELt*+Yt zOy6ET^FnR49bUs0b-f+hJ)WMYr18;--?L`@&rmeiXMqyh*JnX=+V`xPbT&GnKYjab zo#X&Q{57w{06(qBRqZ(_4nk!P%D&j(sH;Y1(#vmAszpI_d`_=W=-UDQoBw}5lYdJp zvlqLXZFsWYt~e@JJe1qv=)>7z7@`yi^tyv;#D&e(*-_cC|A!JD#Dvsh**6 z6PJx1esE?3(x?gPO7#@eYCgrZnolvU=2J|o`4rP?KEA`o8#!sB-_p;#|T(9wsiop&_ZPB^f`o%iVQM+_bQ&At8h zy?R?Y!?YSthaILtfHcugi5=Q0u|qp0c4()>4(*iKp`8*t=#*INOs96 z0}hXx@Se+lF;UEKQb6L~et4UrTJn_sE3iJP&_jxq;VQ0*8MP$+y@F(qCa&a56h-!Q z75+2v8LQxfr+{dlT|!hmrc+Tj29xkogGR#!N1BMI9IZZVFe&Hhx=ndA?Ls;s_$n=g zrZx=)*;4ve&I%7V;|6Thb|*?YZ+CY!KeWEN8|f%Jk^zr4Nw!|*p%(wh&;xH7dSE;C zz${}A0Qv8-ZTop8fzvwGa2 zs>c&eK&m_pE{?gBS=l zOGFL1h#GQH*N}5$#pLL2|6be%bKDXxgJRreP>h4bm?cj}y54$&gbtx<(p7cm0-gJs zS}8pJUlo5)p}OqNB!#_lrA&zMMCmxIr0fNK<#HRKy9mAB-Ac~(Ypv)cs4pw6c8I2L(qft*<_S1 z_i*WwV6kD3tAKhLEm`Xpm)0&WwE%t~@#Z+7)gG=UFi5EA6j?%#S>4c|gL0eu4Ue*m zTkYX43*MJh7k!tNo``o(wO~i?kW??A!+fmCml}qC2|j@BD~R*_LhUc`82&@a&b_nL zRi^3qYe7HQi1w?kv^7?eQ;Clx)jQ~wfaV>v9y-4gJtk0h_l8P_`{HfgQp0_*5x)4o zZmAKz*hpWzwOeYWFE+{-&vi?UBEJZd>VL4=M?S!sedq(M*#~j_^s!{K*&U4nIb^8& zG*J6#z|#0>pf%$!tp6+!|2z<{M)zNhR|9R?y5YXs;XX@zXJvEpS^$ZctsCL19nm3a zq_1{lhon)y+EJ#Y47z`c&#Pp&StfctfVzY|D)o4B{THZ#*-MEYN{rtKByR?IdRpq> zS1{2%H5>aNBUuDHZI<^*s<(@GJrz$kq)uaEtEBs7Ym;<$0GmAMs#h{OYTGY4VXyZX z0C?Gk=ah7}C=E+&26`-mJ@&HA(fG2hEuH-t|2WeDNx2K2!EDi60j%<%nwZW+ZU-!> zjabzoy6PaR9#nh%nt$@?V+k)qyJ!!($%DpW=$@ANL!ZuF(ajU^|LJEG_Amnr95Hf) zkv`55j!Nj|5k_5xO?H{|Mn;pga|%?e~Cu(1lK=KJplI60nPU zg&$yrmkbzwfRH{hB<#S1%X*0&SmKHv-;ME4DPBz85IxD0nDiOJz@r6J`J~dwTTe-; z41)WdFhwUY=v4$(#f*pRgRYtj?NbW1VxeosLhvTpsua3zE|gUY<*?8f#zOEWnNteg zFbtbE%z0C9QXArbOR_rcj?YP-*ILmSfOVrkE*rlDv4hnzOCxK`rjv&}^@luJ>XT#m zJnpGKj?Z15`d#=u=!xv_Z>isd;Wo%4X0cPD|FYOK&~E@-dJqR==kL7`5XtC2u8ZgLq9kKx?*@T@k-cT}LgN#Q^8P7sSz&6XBV@EG28PD;I zfWQ(@{Srjvl&Ag_K2Lkb56;V;gp0YQ5K#=QFv+;#dl(T8$OAm@Fa@DlNyGj z02>BRY8YM_rcS4s^**r2I{|3xm-^6sA7?gxSdj)zIZwjP4ZT43is&kqU_3yhZN3=2 zga)GkOtDeSOZd6aAELbR%XX#Uq~Eup<#-WBv&d_H*$gky6G;X?8J!!zwYd*}oX?}f zoyJn+Ur*cxqSrToK=T$%<_;hgSUJ)u4l2cd{4M#G$dEg#seQ{HP__-5aXO119`zURqcVMrWSYO^ZeB7{V4BZuy3sZ}LB8I|Pdf>v+ocBQ2w2&Bl9a3IC| zH$(DBLY_`8`kRsW6Y|>ud7c^G=aT0n>c9@TQyus%EW~{jRTMz6i1!$kQM4uGR+y(m zzr=C4T^om^^)?@ZHt(P|k0JD)BlLi!{Sr`nk(_=Kio`X5xWr#ta|C#~)be6Gp+z(N zFqsb8r3aL(#9`WUS!2F)oMGkgdyiCK!`=0DTGxtiS=WkA>l#O$#3iQjr8Z#Q!%6D@ zCGzb4Xmh1aq~0AT5}tv5<4nrZ84EAlj+cC?A9HFqqSi*~M=B1lc=6m8Jf(P;zG-He zKp0IYjA#`JAV%BG7;Wbmaj15jhAPNTFnUkL=!bXBF+@q3>m}S%ET7cN$Px~-^5L#v zxQSaimuft3JMp~j2A(&m)K+45d_q1e`nTcW<~~=RY;ZupSx%4OqE;;YCupHP2JN@sELP~Nq3V=Gq)m-jAto1_BurcVuAb$ml56FhZ=IscOui?RbF8W5gN#IvlL9B(TzBi4naS6M103d!?Pf(j)! zmPdzho3)>Dn>Do2F0~if9m}{8xxF{4AsMu0O#jHC{)EhU8F%iz8XQs*+4S3`%BQ3; zNE`dt%9QsJdSH6lkCc-s`VccDaF)cH8yS#_qmo6z8|uSD4V-BTya#sY^9cvJ97eB8 zgC!gG5`?3JBs{$(@q0=sZnoHRPTz(C9Gn?WbbIs+FihAA z97CL^mO4u9j%{cQO5=JgseGTrk^L(i*a5N=FUBM^69<`PTPd0Z7m-L$LJvttif9Al zuMS(9D30ucd;o%T??i#N+Li+;6kn5laYWRQ74gz-a!MDyWfWCg2kk;njWB3XoGMNf zXCgaGEe}iw?pINcCXtCEL&+jTvG`n}8D=4wE#~y;*tem?JRcJ!h6&l=!p|oZ;d{lk zUx!ibmVRS+f2ouAu)V_57o2Vl9=|o=`39eVo=4W_^TN!09v}ubmrvjFZjP}8_D5^grC5j4* z>QCdTw;jl@a6h{yX^20A(fZ5UUs`ajETk9cBMw7vN%aePXsLuA<1n;bs$VWqXoXb2 zLc&1{^1Y;3-%`i&rX}pT$QlV}h*O&k1qmlk2E4m6sS6GH0vhr*JVjqESsvIy>(z7; zZ8!4m8Jqlg{A;;|O?kWpw}vfjDh661FbxA~2u#O71_CoMkcGfZ4CEj%>+zO0+&00E zzbMQ1VYpoe=~vrb}&eb&f3z_);VxX_bQF5$u%I-&{# zFhNIFC7fK@oN(ei#cCHT)#AYQTSUC`=eO1$6X`ahUw{x^11Uv4RWGhF0f|bH*jCE} zD8Z^Gtdhx*>@3R83_9!gRGsy9HSoR~*rRB%XP2t(f=5+x4eGPqQw*)`OVRx}Di6o_ z*ce}G3@VZ5ly>&Pr@06Nb!T;>tIS_~N}?{Z3Eld%l%g*34*+hgkB#%C#`9aXO}-U(HEQK z$y_8UWZ8npTcVjqtz0Z#$WRfCCYZ3*wb_3_-u>G%WUrT>>8g{hn zU+UoYU$2(hfI@g)bLP=ZoLf7_pGB?0GSi!JhBwP`mv4VGLwvsOxlH6aG~8qhA4k*8 z_@pXT8?b^%_e0$;PPs-rWuRgFC(G|a$H_#;Nmck&ZcfM7sPc!Q@=`RZoF}XR2lpd%|3X--*7ba0J`F5r;RhVfNpkQmvv3R9Uys zrx8E0&?mskj%xe9Wsl;9W=a)A`j&Rl!c)1~P8MRzIv~Fqb$`x3>tF|@+x)04fW)7? zfi1A>EwC$evkkD=InGn6$mtfKZX?v~Da#rfr*$|^%V`tOB$$umecXPa+>2ie-5EeB z0p8=*$}fn3A_$ntsZ~vF(xXW932OFI9>YVDX;rxN+PP4(7MoGjp!dNDLF)vv(K+c( zPOnPNsKU`avr34M5Sl3uUU@V*N2(amz0gL5tWQ`PpX0umpcGjEK~se;)ivlPX%;ki zo?w{`Egm6QUWOJwXIV#B{O&%j<5Ty5B6dIqXGoy(32m=AJYm zK-NwM3~W*t#2`mb*6bPzcK*!=LV;|%1_%%T$&c|v4D&b&^RdG%3jhN^WFd6;bC$PC z?RGj>RX5^wOMSR`U+S}=+U)I8dx6dVoMLND)~s|y4I?=lnbcpX=;B2CQ(A(M7yb}? zoGkTGY3Ri9fHvb!&At`&4^TzI!Ry%SOgIy0VUEtOVSukMwH4Xy=Rs`GWFi;n_Kn>S zTP;Vf>`7$&xjuL^X+Z)lPZMNxDwbmUJ|zY@(WE2GU*{+xgGR3j$9y#2&LqE};1_-B zs%on&ja7Xcu>PBv`<8NZXFlB?fP@>EdPhq=C23^}vQQ+el)&tea03!}X1qoK`;*9` zDgi$^n#u5sIwvKx9M0h36J6Uu+hP1nbg9j0vp?U#IzLlUP9AiK(&glBpHw6@v|c#W zwFh?gbx9=-%a39ZpRi|jOJh1h;OY?|^JcC_-vHy!W*^KwMYLhfxY8LbMNT)>w~Sxc z%b5)3 z?}^LCZ-vVg6D}Y9(YUO*CoY=^mly7h%0yrJcdhlcd)B&{W;`ktv-FAL_?Z4Uf0Ww~ zs1?lN$B8ojyx|SbExdm~Q_Y{pDDn!NgG9uOT~CLDMP6177KdoPM(s$$Q+h2&xheQ;nYkLG1`E4Ahi24j4>rX`B^+$-<5?b9 z`*_06L+j{W-F%@U;i#Q2SP3%GHoDp;Xm<%-BXr&arf)AgZ8LtNr~n`H1#->SnBRe1kaY;{Fi%GwK!LFyQ(~CN=is#TASMegMkopBD>PJi~ z>(6OnC2ypAxV`yEN%5};!|4q&{k1)VF(4s6kc!h3i)JUUPHBqtPvk>Pp(nQY`2uJV zuB|{hip_nTY@Lw25=$?5KAt0ryInAO>zLqA}z0dyRto6LDG&biF<23 zqcsESjoNzhJD*ppvroG7Fo0mrIROMoFn~Gd3=+&eGX%h#1DJCTbKh6h5o}^9J^T10 zrn{=E|6NsGUG-JfS6>kuNq<}v?1m^fT8V-_r!p|78ZxclXZ~X>GZ9Tiwy6OrpqjDF z2Pq(`bap@p_}H>AU~xn(ivpIkUs-Acmh`Tc#Q{qO1YHuaWJWDZ1C}-)Tk1euqFd8K z?SWfgkeaC5XQbfvPzo-Y*X>C6cS$5k&9mCi(CvP3%L&Yg^Qjbmn|t2uPr|VRJA5n? zS{5L>XlDJ%J#X|USH97otS9h*3ioSpx%b!sK3VxeIQC6CnW)xg_Qd*kc;bFiT?e4} zV)u@8@<mzwuIu`N}O@5hl!MhDvg zhg`T{^(UBMr5hFJr*xCePU}4<1!`$V;eHDwI}>@eTGkyV4N8s?q~1ezUUJz%Z2JlA z(UX=L_sDD{LRvAFe|5GcAx}TqK~BSp61({hc*SrI-*Ox`QJEA#0WBeqT}#kKwb^r_ zB#r&L5nEXW6rWvPg)De{+?5W3@=H4R2Mx)J0L~u#3TF?B`(^Mud&A@0;~;;Eag`M= zu_`IH#)=F3WhCsaX`Z-kg_$Htw1(%#zz*RP-c4sO;0v8r}4xal13)B-Qe`L9F|d`$=PgFRu} zY}SUlfx)!_3t!*c`}cAH{^hr@!%Vx#&>f&C5;=J$B}1O{gQ`Nav`3~o(8ykbJ|>OW zc_PwUmCN_TR4U1DbfO%9{j{XZupik`m$n;P1J;D7;)Z)T#l@jcDIr#1$D>hIQi(@~ zI3+1Glx+IbM21vx--LDYkm|3xh=ZM_>t&bNMXbhf$8^s)?o#&NwyJw?pD;%0q>D*Y z6fjP?TByDLQx|bKM(MOmr}BAFR{1>RQZ?^Jph$F9bB{##In6x^-RDWVa)}1khCpP5 z6OJ1Lk&$@Z6o`z%2VF2m?xIUkhTbfv^4DF&d6>#eWK{Y+8l#FVh>@_}&sxOoeqje5 zci^z>Ws=2hP$~65uc|~9MB)nZiogS)JN~1_1f6q;jBzG#mN_z3K90lVnhufic--ub zOmHSxOJpMXo#ae(i%fPV@*~rniSTxRWCaFV?~E*$k29S(m~z#H+aHtU&&A|7yR7nV zuyJuNruCW@U=9Yjt_v^+1KiL8RAYdfx&YM};FcDk3Ip8M++)yvM{|!w_g&3B4&C=O z_jq*Q*W44({Xlb1ME66@Jqg{9H1}k5Ki1sS(EUVnPe=Dt%{>*}&$I+ZrecDgYXPQU zfET&|Q!v0w7j8X@A5C5^#+Wu~1WB4aZ$6h`Ip3J%GzC@=-Ry?*Tmb1dMAiron9= z$D?}#!H=29bSK%2tv)~(i|T^SCp!*enGM!{$V6(KQWCx?2^zEIP$|Oa1ep?vku8DZ zc5PiC;^6*N6!v4Bl#^lkI#|E7(jS-n*b@73VZThYm06t?+JNdOnW2?V1}RBBWe%gm zaC%I7=^UnH4zz7^aMO{pbUIzvCbWi9j#3IH>LN*0@L&Mv?JO3o{3_gOHb+_?qS?RJ z$p8bYtEEizDJw-cIqB8{H7*Hi99lLOITO)`&fsFs9(qh#j3I6Z0KVJO0w&(u-AeqR zgdOq^Ww@5zQf!OXdB3&=f+M= z#zbw=5+!e23rVSPMyiNb#E=hhIjz=)Hzl#g#711|2JthCJUnl>Ti%hj^l(78CGG#{ z(nb6c>T1H*X|vCQI!D;;XYJx{zfk9Adx>>^VUM597Wepty?(C7F7EXU^?vSxRjl_5 z`~2KmtGLfE?DvQ3{o#H7+2Ve`aKO*@6c6|X$!WJ%j9)nGXEVjK ze&HMjJm(kA``HfSdB1SM&$bgU_=SspwhjAnwRq7lT=MhJ{Ng3Qa2XyTUiJ%D@OZ^9 zT=j>qA$*Q_)h{#?$0>MHvtPL8XVb)Me&ISKwTF1!FWm5lZ_=wb{K8E?YZGt!ghKI4@2v!)$hKIA_NLCodvVFx-tS}mnqgi1L3&|YA3S;p&mKDa~aU3g* z$K!Zbn1BzPzzP#t_V2`rtT2gX9pWTbn9M>hOlE~C=$^s~Q_($@6{fL}2h&(#It#fq zofT$aBxkU~Ocvh6Ojel1_Ua(cVueaPR3=ixm&DZh50O>d|#Z;3JX~NsWCSE7Y?5URJDSg~cqtj};fQ!V;E0z=}&)VJXWWV#TGbu#Dx8ye}?eh2<EPsj>*RsMo zmOsOa>sVnu%Pqgoi0fHl1LnjAR@lgL4{hQ`R@lVy7g=!=D{N-@%dEJW6}GVaRaV@> z3R_wJ8Y^yPg>5W2!giLw#fsZmVF%0KVZ|M+u#@HQvEoiv*v0Y>SaBCC>}L5# zthk#M>R7&imRQFMdszM{EAC;1y^v9?xR({`S^gy}*0aJsmap`S`&eN=%codzKPwzy z`Kf;K04p41`N@9qAS)bV`RRV~5Gx#J`I&z4Fe@Bk`EpJ?!U__^=L1nwqi3unwAM)i{;)D-{B+C!y#3U;mW%-euc$5_ySbj7oHn2h?%a7&6MpkHI`SG0C z#0tk)ej+CxW1*fL>BbI;4>}kYpDUhVg_Dq%oOqHIPLWc4iWN@d>p#s3XYd0# zgUOsggthOYV7J{_vfXJBw?V`5*d9L3mOQpI;tr>xEaN1*_LB2misx>O!bCUpP162~ zZ2asDA7?#uAms=dNRjthX-Y=7Ipfd`fo46Cj2YUq}`w7)}-dW$epYS zi+fR6oZ?0yIG5~Xtgz(GTPP20)Vgu=_JAxrj0ZtsJjfrku{}t}dhzB2$W>%lXD1{x z630&DG?EX0fxf$(beS^huS5M&=afPTh-df&8`9k{CO(YqgevKyxGXD&MOc5#{k&@pP zO8!}vpT&u1S>YVZS8?JwRyfb{)tq=93;0}j%caKi-116diX{t)|0h7#V$5sYIA+jQ z-$TCul{hC}V1nn9UR?*sS+D7;8Jqu z&!DQHT7wO7DSFX~Q^ivBk~4A%kC&a1%Xqxvj9kHEbNfhhdpKToMy{fJz7u*k=elKa2bII=sHGtkN9`Wi8>n+o~VAOo$aXKY4n3wEq80{9Wi|?bf6}l3FsKyfPZHc&>5%dcUA$NC4S+<8R*YigNNR?f(M$q(#Xe< zyhcYp4us<^$cmqyd|W0USIEbayjCM0NAfyd;!gnKM2o~Le)`0pK+t*(bOJ#ebfA-P z1OA;;KE5lfE?T0=hByHVDZj#u$VQT>?!NO-}wb$8mIAmK`V1aYc5VB#iddaS9z*>6Jtkf4X;76OL?daXZrOjz(PBUwVm+2QNWO z(BLe+0;j0C+f;fP&QP(ppS|=doDwBoM&AN1QPvF~%DW_3I^YItWPW!G>b(<- zhNuHOm}tSn=YxweX@Je<0i<}eF#z8u9Ge30eZuir0KQK+9uL6xiK|cp@O|RS*Z>-c z#PNtzX5$fP;=-+Hu%4C$h5w_A*aI$XBef;er9v~yFXqH%7Av?@vSp0zT2p%)U;YlQ zEf#Mhcc&KMItJLKxo@C*x8}Zy?mEqV3*CD(_g!@Fb)!Np8Dna2@=y^U6xrN6IfyiyA-p+^AQAl@J<4q`oWKFyW6YzQRB+QKKnxIe-fx(Sv>uYk8pyEjY&$RpW`1sH6RcKhry2 zg|aVBUXul-03y_6RrGQo^xBE*OA@$510M=P(*oW~u9LI)S55K)UV2wjzDMs)Vx-7& zX1c}3_fd}qm#B0m<8I|H=Bvg8oAO|-pHP<@A9dR^?T(FBMSn%ap;j*)X-&wBflxQ@ zb28P0Yl8aOvD}gATHLdvob2~Pau_qVEQ4IAa515wE-RkXM`=^iyHY7U2~dlDnI>8vGmCBT%W$H^fL!bp25w4*N1%j}TJ^wra4(h#q6B%2%D>QZO9utCXabmR2Q zN7_Cbq%Z-3EIiNujO_A53YrgOah&gMa;vrh;Jrgg@H?h8$}g~vJWi-xlt)1c9)NmQ z>5yw5CxRa{pRp+jb%MNif6Gu=v~1Im$VY9gliE{XDo;H{?*E9GXCWn;s0^?maMIUv zfxI4CP~oG&X*D;R4ERX@#HOS&?S4@Wo`mmBzT=E0Uc8j2InKIq1#k(4gf4eBeCd#W zTonAmDK84vK7F{KRX$qX6;c=tmDH_|1A- ze0|#2Mq-2|L87U+Kr-)hsMgfkV3fCM`HQ?n*_oE!2&Sl!kmDE|@W%3yAY?QttCCU7 zzDV9vF-=LZIbey)$J#<%AMg>O5^s9cDH2>#M+&aV0>J;-MI41y>}6dQdj*6$oBc1z z@I~}Oe$3kt{(bbx`~08}@O2V1Hl!TKlhNyeu(KlJRa9=2{a~;&d6iIlQOeDHVts(# zmyqvM%0H^=(EBis&HDQ;zV*It`up&C*GS*Y1NV{0Uh0jJMLi0fhSW1Jy*u-U{=Uoa ze&0>~eOKQ7zFTfo&-oW>w;67|nlD>zc9Sl=@mAR=Gu%p29Ij{=T}i!JeOykTo=9Q&Kiun#9ErZlb?Tt}mk3K`2x946u_BHq;6IjGuyWxJOEy zPmTlLbvY03$|IJI?vs>#`j!|H$3i(03I6Q+wS_LS5`*6wkaw|9@|6KXdO%3HeZ2v- zQbswU9nZ}FEE5d|B$~q0T+uOHQr46DJBtN9#>pNGu3Scsv9gC1*S@016xqXuEirmb zl|AgLa+QN9S2;3lxsy^U$M{rA|9=vFEf0+&laJK;=7wC~{A(9+vyUn>u8L}yPoMh#-PV@?T#^c#|vG6u^8Z`7GNx~r=trn4gyXd<+pRPbsaODBe~5-7WsrTxGmCB@O$6c6*HGim88WYAKEOpXStY|w0v zMmzO*A{+Nx%A}#y8IQ7J@?MJ-lfT6klS_$(8IP_ot;nKJb`JuP zhZuuVp11U+rn=<5)MVE?^`)k`41KB59@D-QhH9-ZHI>-*8RKcumwJkQDZ|wDSmT=> z=aDCK4R7je$d)-|<3|tHPisJ;7oM~HPELHz3NKiGHz&Seg_kV9hZA42!Yh`q=fqdg z<7fH(ocNj*QY?Rv6H}}Z5k8xr-Ck*EJ6P!4h6Dm0V6em`2!Vr!>!-+#UVJL@#3PU+z7{{OI#9^E;oZ~NY z;&4tF!SR0h9Dj=w$8f?}j=#f+V>w|Q z$KT_`ahx!o;~#M1cuttW@sBuh0w+x5_$Qn=krO6y{4-9R#0ir*{skva=7cF6|B4f* zaKcoMPjTW@PMAhwIE@pgbNqmOaXN>SA0AZj{BKe~tzdr$UCPGr7%m~#t_7%tD!Ule zC=5@PT~@W$w2@lVmSN4^kxJRNrc(6(4q9JM^cd>PNgk!Xd??qKzw07S!*6^F1hg;^ zFgyb*ovFl`Nt{&JoCd|+!hjSVp6QB5AEEF*-D9^~m|56vOm~H6xlsEHuCQIJSnKS_ zre5G1d>pX+wh2z6n|j5mZeg;j3f$e{y0&X?V?27HBWuZmegj-1wh1qE3_a~(i$^bY z{3^G|V#&y}Sc=U4=i|Z;>^>zzPXc&~z2GaI`5V1Uu5@N>*zuU*v8P*@XK2!gs#Kz8 zYg*}CS7@%wB2PRCGa*VdU5aZKxMsO%;=k(W&|=yU=Wq6oJPnW)Vec`POo%V^SJ<8; zw!vosOHallN8t{QLY#dM5*rUbhpZ^X6;WRK`aOCb2+%Ek5x@b!g-o(!A;ZKLLY9yl z`q>lm!y}hFVy_nWk-VP9i*3&Rz_!WNn;HgWm-4i=6E!pPcEKh@R=lG7H>t z3?9%J$d@l+I7mU{gmQ9GIk}*mRAHu+r6nSduplJy7-tLdWzTXYX%O(iE)`i0=kT3+ zjUCsS9y^pCDC=+LB*eIMo+~)dWuZj|bCbS%whj6$V8RQTpE4wh-(!RskiHoZ$SH>= zkKBX?NN0KMHVg9$QW|j%t>f(9qQ)_6N%Z*F*}<0q>u(zp9}%krB>$kG{++iY%}lwl z;@h)QYi)_I$N#o55zmgNQkYSXXhyLXC{C5+OW>(_R+=0Ea~-~c=`Nb4IGlxE1(?z~ zuFxD(`Br%>jKzYr=46kJu~@TcrCJ#H^8e~0{uxd^k;=3a)TJ{yzC1rNlM^aAB9BEX zv9_r8*x@?#w8OJF7erf_#g*1FD5uT*fPYp{Qp;E)vpBd2F`T1@olV2eR>DqK!_Ma5 zB7~jm!6kcT5cYK-Jh4Y~QjcgV5R4U(mA%_@h@t4Gz2jA%g&{gXm?q1V{4?;xt$bZr zmgaH6c^nkSs?SQRxnMPCiPbX1W)%)i_q3Li;qQ6x@Tlizk9zS(KdQ!qO1zMpGHNzO zL798m8%KNRlibGXZ;Inz^_Eva;dGh@S3i7B77k-~0oM-8oGOL$JEK9Hzr`gPGda4L zm~=4;X&0k^5#GG2Cw!@^douK7KoLFRQ@yJ~1B)1?>v4!KuP0G2gs9b!S2i@Sqy}n) z8u(zsmwQC7^nmX)4$%p&YGa915TS072UnUdAVbtO493@yhq)q~@&7}=3hh!10tB_{MMMH3~U!2koOf@3o3Jb1%e6re*0x4;JzeY+?MCXedaRwA$<~6kcJHB zP{u;8Y|iuM;!;#xTUC~Z*$f&<`fsV)m{a@&@*kjhXa4%3L2ER?t_57&)Ah~W@@HFA68tGn~Cy;iR3 zA~a79uppSVL;5nb(%1$kjLb@7yRr-@Cb-*X zS$kT{+QgxwYFN5;bdNf_F6U(yjQvVMUP*Xzj z&4LON4H_y%1lRT~<8blQGR{g0uk$^NS|(idD(@uMZS*=C*nz^|Mt&GHHtD!0ng`bs zf1$Q@0G>fx1#v8MXeq!(VFgHpHhWK8 z%c7LYMtsc6yaYD5&`W_LNp?UX?(yh?+g5sTb?D#F53^B@2sR=~UB10iq6)oswJD*w zhOtc~AwIaIWt9h4ZSU7AGtxN!pX#5m|o5Jd{Dv5gaLjvLd9MpVB8zssUOVBuRzaLUx2g zjn+x|sU|`DW#|M*Y>hJIdKzx}3>lO1Wa+5IjdF{M+rp8wJ)vonr7cxvcq3tUL-Pfx zgmi$I$Up9mrTooDO(W-8lVnVrspL^e+X&N`zkzGnCm>OOGpp453{5s>lEt#lgCR;^%&+(dk61cM05I)r&@D`FY=IjLV_pBy^;rD4vK6DT=d9 zWN49GI&1UfFh@ujk^)%)tx6R$`AY%(2II0cx1M}>H9Da!hCw~UnjLR&m^i6+Dkyw#FH<0*_Vo0AQ z_ItJ7Nm4EqT1mtbTKp8xTh#NG;+at8UF~iyR!KQh2C*KE2WuZbiB=g7kZvTk;h&Re zQEFpCgUT=HdY(zr5^~Bmwdm0d{N^6bX3{^vhC$AS(hEIGF7&X(E}$X8MCf7Q#e ze>QMC=>q+gJc~nLRZ~){!CS5A?MbC_-(egw+^G&34lANVhX2+@tid6}T^?;pceh8K z{a%2hg>{;HA-eZ?aH_g187v=O6j|Vk2S*fH${VGGVyJT=BKI1fU9UcSr2OoE?;_5} zfcwZS0Vx|2Iw()DcZ2k7k$sur`ac3^U+}=3a|#$)m2l zTqlpP#y#rV%jGVjfre^7n&%4DGwHEA9BF?mZzWp^^{!@@+l~{Xxn%p?;C2^-S8>=d z8AlDkP|SrB{!(z8%i=qUh6{jpluRm!@^h8-q2zg}aygjT0meGKkKO=yqY@y2p=l2? zuBm9E;cQ45**60B8`7^kZSbh;Nmsj6L)Ey7Tg#Nya;7wSth%toyl*8@%R6SgFj&2C z+=B}O{u-)mAV5k>%*NB+VCGl^-18!lAws9$d%zDPX-94iKG_W8xYzty1BtgEzPT3`ph_`rFoT{=F?izR>^6uB1t=Ayf9e3a8{$Q zG34ku0Ea+$zwM4S@*RuG9p|-KMR6&9Q5UoVx)dXEQA4gYMEH^x;gxcPFB4b?IV_3r zkMSW_jQ)ca|Et9RCpwkAVo3HeJhquStXIsew&gD$O%2N!XqMN{VDl5{REDbK}SC!ftO_{u&Y zsa5ry;+{4dmBW$8qHv`waK6E)yp`epdb=)(7|}%Y&;Ve%NwaGx@z7?n&(B`_*cB23T{FfPl6?{q5##r2@YdeFxP z&|;=!F@P{f-&U#;a-o6}RZrnt)GZ@ks4$RqzpA6CT~cb zCVgQMQ&#+q+0e>BfATxP2I5KhKtb$aLFu6adLl&*75sNb3O;aIDCP^<`l^Ju@J=qz z>nHZI4j1rOa)O5oaMNPk#5b+5kw0OF7$x#PWj@NVLQv_G2cAzJdQ|&NM+zMB(H0%C#_!zKzO_J4{=_{|fC^^m0C9Tx~hcU_h*tm2&l zi9cH?u7|8BZ7h(Ym!Lko>?&z2u*Mn-{@E@ZD=7U(en1BZ!!Il>EiEav@B<3@O>NO{ ze0#pRUAMlr;E4j}3#PBN3ebgBR?usO#57OkB*WOHteyg||TEonn~S{ScoXiqebTi(-R>uQ-$WU)6E zScdhqIAV-tcuz}OSIc84W*wXzvEFekfZFnc%gtCU-5TVns-fJ+Xa7U1tQ^81ARz9@+E3wuWP zw~u#=tmqk+f>&IYNJHB=RE+)wyvFW)|dfjxCt3a#s3beU`pWY z2g#bNXClLT#JMrH$fP2O?^P^u&G>Tzik&TT2NKlZZW8yqHWK&#b}4$-ro{av;p6T{ zrJt63YKeUc+2oB(GkjrbniOk1aBj{LUi3mE^Yyet#aB!DChq&(^Z| zi7ulti(fiSVsyhnV)W7>MQ=Ei7`-Af`Ui-Ruf%7G`QHBC;PI1r$boC{#-10z$#poH z+%7Kh<(Z)e1y*>%kWBJ~@=Pf@BvX09Yw`pho{&?LV~OQ7;7G}a9`PQ(f+V0(Bzn_e zxM`?*Q;OV_4>xrz>1c^{Y>4;xDGgphgAan>6>9L97lVt~>0?TU!J8Y#s0p#@a>s@V z=@!}D6XQ_VGoByW-W^hM6H>CLXPh6|&LrE`wIdH4*$(;#?UV=hCl3t51AkreYfJ3c z&;<+L0?HE1q1$jWh>!Eh3=>>q2EiqvRcXvna09&f5qbdk{gUrnV&6x>EIYE4$7=)0 zH4d(Qx8%E)*mp_7wsnv54|_(ocE^M)>4EAKmavu>+e-0Ci>!ch+cmNh zet#ILgC~ya5!r%I-_!$sCSlIq!w>5|*5~+P=_7y-8%)xMyQ%(L$-h}*{|1@PKUK=! z3tBFoLb-UMmWv8<$KS&peMmEp{bl4Pd@L8c^N)F&@MoDO34ck+&v2cB zN*>~67^gEm+|V|fL@TI6y;g8%m0om(4`f8Av=3e+J>Ox(+hy>k>afGT=~k!vzbTFR z7jiTF8>sW4u9rR;;?3hv6_=bWut&xf5r2mG4+a0z27fE@9|rz&i*){)M!z=lF4}s7RAb;wM^zO_>bp%}e1^41Q;ccyP)`c3Dat zrLm47YqZ8XW?&sNVU-(MV>H%rWR2BW#|^CGCal3m);NuI0$JlV)(Hdagb6E|VPH+r zSSOJ+QDdDnuuht=`r8exNgC@EvLAohCYO8tb%yb=rjW)R zG}akpP1jgw46HLItY=2n42^XbSu-`(Sp(~=32S3p18bJXI)|)EjdjkzI%mS#WMoxo ztntuWG75?XhlO>Ko1V`SV@#I4fdRvU3^RNS;yaQzkBGsLac;no>( z>s8$JR&WCp+;hZj(BU>3ahp`!j83Ru_0`3Wv~a;$u~= zLOl0)gM?Bn?L`QkoK*w67B^Tqv~aDd}C=Zgn8;ULFv%@+@H z!Xb{|o-ZEagu@)aGhaN+2}d}7cfNRp6C{q`lP^k~5a;;%d@+v05cOWOsfc}EoQmiH zuXD%SrXqGQj@S+|6_Ij9Qe+BZKc*b*ca~Nc8RsA>@WqQe$Z~64Av$O*M2FNuG^dq9 zG(;&xF*nX*=x|4jI7!9LZ3Q<}!SzR6T!%{-aY+?7uNB-d1vdb3M|HRcBd$@!)wF^e zuHXhDu1SYGX2cy=ar0ZjjZkod5O+d{J88t7QgI7f!HraK<%m12!<{kW&Z@YDt>8u} zxWR}!r^B5$;x4GTMXlgQE4T{8UDV+&8F80YTx~13F$!)7;;!g$SBMSmY!@bVp3OL;FEUtvZ z&CcQ~I6Ukuu7<;yO6o?kui{!=29J2DkZesKkCs#uh&nj}}N$ zaE2RdxS9Af8-M2E&qBB53x{~803!MjTB!C}+PK+Rw=!-v7Sr?y($qdnH*WUWYqzz} z`WX)9?_e4wDISe?4^DS8;siITR42G4s6(yfVj?un&7fT|t~s4$N*>#-;&`_d9q*RS zWKDKcTUz7YvMsGAUK_xFqQK!oo?^%y9nlf|@7zT=!wGkwVJ!_c#f=uXAO_(bOf=55 zhy#xIK@Y!u*7wL7#FjTtCO2b5Sue4FW{BmKma%;1wb|QevBb(QMzjf2UET-}PbkmD z`4Rfu=Ol1GO;VGZU2hBi0?HlDZ!~|73mwV(q4OzJ?tbO90&y-BE#BGa{BvAa0cqaF zl{Y#^$d29U_z&4phmL=h9edF6-_iJf7+M90`4+dbru5G-V>h~$6{Usf+~ii)ljfpx zvs+nBsw{)DlVwo$3|sE9RLcJQRBA{nH8GW{PNkO73E0;p{vW`H6eVj*l<*SjOv zGTs;#NqOxMavTmSawVK4#x>Bfo%~33dmMautqjEQ*V;+ZwQf4pF}J4_T_>MU`;HV{ zBcE47b3Ti_xi~+mmlUm(&u4>wm3%(HZ8A)<#Z87u2DmYA)PXsl_7*0R7u8?qGl}>N zc*AF)?_E;#LQc^#U5ZxfQnW#rqH0}==IBy1S3U=s<;@grq$x_d@bxMw8uUhr%HN3p z;5U3Kz9B`a0(sz!q-eP=MXPivTCGb_jV?v=btzgPpU2GJ(I%Rrm>Wx|I+XQBiiW-s z|6y6DM!b=tk#EF* z)EhpdeOP5v+xBiWIq6G-O7&aRt?%QHbidihPq_?z{IMEq6tc!?tWgHmC=*u9ZD5Vp zSfi0OL1T?JutuA(`WsmjHP#qpP10Cn46HFGtN}*WWFIv3?Y{fY;~31B6B*s;#b4u) zmQNETruqzm#5A8GNGxwfkeH+h5?is+ovy>pFydyaxD~D7CM&pYh?}LuRT^RaMecK92K{!72H$>w*zr=eb{^K2A#(Q$M4S<6P%Fb_=EXkk`s<{{Na4@ zC?_;?}{>K1*pX{3*~4d3*9pC+I!@Y$KHtoHnJCu`wXz)xQ^ z&$`f;!F1@5%^xV_=k-DF7tniV+wj%!(-)Pt7WsVE4$cq`c5AotpUu%eD~gvcy7P$j zD>wX z)NHyQmD7viAlnu=W#g`E2|ceR{V1hlcsUyDeD<{VS^J1?)i0XzVr!Uw_BfluoikbJ zAJn^XZ_LuywvyL2OYF6+F+3nU7|*x3K|(G4MaeHLa8r_B&8{&aJY#ZWX2_19WbxbWhZl;7ItmO5e{@v5g z;isLW=ekKHPdi&ou~%WDI$4z{vsd-%j%WA_j?l&;J6=wJ zPa*MvGsrBRH&49fyLuSzlA&Y3D@lIU3%q&(Z+YX!#26Kfr}Tk1JnXYU);pn^SkhUF zo^wNHFX@Krkef+`kfmM#Z%pGB@>#KDas*27Ave5hdP+Y)a;kiTTZ!z~o4!^x#09rn z4V-h6Tuzcxd=J(+v(ad0sL_p?zRky2X=g3eL_D@@9>ylcRj09b8CbhaSo4jnJsN8_vi54M-3Hcf6V?JFt6pQ(A#0z; zsxz?aOjrwzto=kdLv7DZMXgI`cR@P)1^oYVx?Vc_8yuSTX&P$>eR_?xMieLx`KZQP zP4{?oGb*SZ_Gubx#N&vsqs{3an67E8sj6xYrD7Ftxuw$4Ovz|Cz2}y~&pL~*;V?5- zOu7Gfb+%V-Q+2jRy*gV>XIY(%=uA;{w#}+KTO%iZa>)0|Vc#FG&bH-`P-ojh)!Dj< zTZ<$%NXDIlblm9)4m3T(pXd1V!fpA&u4%U!_1M0!=(NgK_0em#)w$7cb|K%~jtx>B zv=-N@Te&u(7hY>)dTpfXwLRooT_?EKdCe8G@aUD8dV2OQ`G_OEz|+A?CR73?Nl9*Y(Z{N2Xrj# zj>;g5x}!Q^O?OlWtnF^G#~91v?iNQ^i{vxv0p3u>&KqPR#MeR(FyTYZpCS^z!YReW zJu1YTQ0?DzyKy7g=pavCXC`AW& z^66;aQJ>B3^!=-DXHYrZ@91XGvJ1qn@FZrHn~cHTlBKhay`<YXBH*OUYG}v z40%wp(U%VQ|2cLIilyish|FDgevkiAQfwD*gX6Xv1o(UI((Oeh+lwrDdHJ|gB!%5} z)68q~p+-|SG~YXlO1ClLZA`R*lS;NRiXQnf65tEHLSHd7&-i;3ejTX92ftHzZII?Q zYV$pH%i4T(Zds!$<{?8X(AY#{9%X3dxbJO>dHrc{=-x#8tHDo@;6K4$JX5k9H!wU5jp?=kJREtED4sEp|+H7sqp{PfY5&Zp|PTtU&}yie6{xndAKu9%1( zbw<(Sg2uXvtcx1!s)2RYgtf=Wx}>q1k#$*PH5*vXCak?i))kF)4Ov$;)-?m`nhC4k z$ZFPD*O7HiV_i3}uA8v-8Clm+RLcs!^EleBqCohv8~?tX!59>RE@4f5!>6fH-1I4G z6q%|T#VwyfjpDX1J&o*&plDHyPt$2p>{hiNc2li~-9_CXP?!i%lpt-t*z+9(L$Vp;1tuwx6g6O?ztYQRsfCxd)^Bkx$*} zBQhAD^;io~fdQWA0#smtr&@ra7~q*Mz)%eETnjJ^1H8}$7={5}Y5|60fLFQz!!f{X zEx-^Akn*AV#VmPC$FZK^PCt$d#X4$xsbaAH9qo|wBdv6O4^DCIDT<8s#Q8-z!M#OH zu)YZQ33QSD^@e!h^1hMiB4!YRKQD!Hm{W004F{ZRjGAI>Uf?b$kjA6*aEQg&e_Hkrj&vigY z%spI$N0-Wt@X&%fuwx5twOLT!evCV4cEo{Dw03!nu{*d6>q?yDp$M-hxxhUEjZNVinrmgIaj;` zhpoBdT{vvY74N}eR<3v-4s&wF2XL63D?Wt7qFnKj=WVmtzZ7r6Z&%uz*zJKn#Ay#* zA%jyp9kCy$iFvC%ikP<=i}J9J*yYoSdBZz8(z7~{o#%htFOBRJorhM8%N)UjE(SNx zOp7jZC8E_?xR_KbOB2_6aKGqe@PNzWYe=Oe5NXzWaM)^QWaU# zArbx{x}m!i-R7Yil70|vDw3kxRo6P)>(fI8?9tvtXbn%MtvWg&=l(&?xnERZ)Q!>n z`hO*wsHpvoPx$Ho;u9v4lJg~Gey@^VmRK*`Q*^B-GAfJi@{^2?%7W4_FCmAn1YBO@ ziHylg#v`M%Nz}M`y`JYYHiTf3I8Y#J)#F=MRY(O+;rYSO;|nLzX#79uq-!jF$+q5x(Vr?jAsG%#f-PVx~n~_FQ(qSNtQb`L;NH=w)y=J5eO4<`+zi5CDodcF6v0@%}7sad0G#or)qgxY(l!ABW*AvJ)@)z zKzgQqwi-NG~X96Odl0q@^aL%R16#Gtx^++6<(ZDruPs>8_5n!;I9Q=J*aE z^;dIzxe4j2juU(}cCr$l9i{ zW+7|4#+qed%`#zaGO~7PtV(3<)L4}UR;3ARvyrt+V^tw*x5lb6u&PX0Ta2tajWrut zdoTwja6e{)tIn$8Ch|SH6K|CjWyrE zns36|ZDb`i)&gW5)mRG*tOX{lIwPw=V=Y8hqsCfjU@bIZ?J=^NG}aa zti49oag9}rtP>im*1)PYVbvR1CpFe$WS!Djiw&&BCair%)@hBk1X*V^))E72i3w}J zk#$yMEk)KjjkVOkT57^NU}T-wSj&)gL1Qg5u$Gyy4jNe(HP&)uUD8;~4XouRtV2fD zWsS80SywdH3Il6}3G1+tbyZ`nL{_uLT4`XdG+`YvvaV^YRmi%ou~r#at4vsuk#z${ zYTN&B?>s5O!v8O;^wS~Y6dcgJ*-^LhsiSe_Q%6PV_Cza6x3d+c+p%ao{EiNH*ND5P z;!d`Lt5$I15O-gPdtk&pRB@+T!Oc-{;}Q2rhkI)hM`0h zyVMG4h2+(;d6lo2;t#a(U%w^+f=K-?G|ZmbbEPQ_hm1-C@O%|zVzPTGX%gigwY zXj^qcbYdsto>QG#T~~gUt}7=8D;$({Bg` zxGKcW>ZDB99q0JQeDOF=*Hv~ho35+sBv041v|+n~%+_tiY?!T!U9~ZGbJW<~Y$bLp zmDtV0*v-}9<{5D{D(+S*xK#?S266LsxCKVsLKSzr72IkCHy?3}bhuh0Zn28H(+X~l zf?I&NB|6+vBW{_ByW0wGt%6&KxaB(B3L|c%io4eeZk>W#gt%2Y+-f6kjf%V93U0lE zt3}*ewcMTH_+$Cv2`qQ(Ov~N+PKvpMoo_RDu#<7bc2djB-pFDv4sC4cq%5U*&|-3V z11YXMi7t63)Qyn0W_;A1Zq2x-B0YnSeJ6Fd z>$P5Lo_DwAwMq7>>x4QNP8y0@>|I6d0`Dl#1j0}of#prke9j~yT zgT}|x8FFeBQ?d$jbro(1Q|6#HWYa^tC~#j3U^A-#M;n0lXsnpu9>7KOZOG=v_yBOb zMO@r7a$_G)ISwbQlQ=_W6&Y>yB@!wvP?fMP0XYy?T8 z5^FQ5lcp;Z@6;B0e}5oVw3%Lt6qLM{FBnagT?!rYTBOin{5j&aw4&Mm4)#*5;xSZj zNpv!*w;c2;>MaMc4M=usq26+|6Ap71=?yP#%SFSB{MpV@UnVlJSc;2DIzV3Sm7+;? zfV|<&J9ocv=TUm+9JuqSdS~OCch(5F)v&23F;!89x$@Yj0Dvo!Hlou1F-%e`Bz8>3;6P?tKeZ5!Tv9I@j zqjkNL8fzc2PHC)t2G%|kR<+kSaHO&JBkPRD+HYX(H(|{&vd(I(1IRk3u?`qm2TWLV zjjZz;D}k&F8Y^L7CA{BgE$$+IeeJ&oZ)kAwJDZEUocZM@!&t}}qD-qwKqoo=M80?u zC7{cu63`V@0^0R931}BcK)Z+pw8#}%L<~M%eVe?#nFv6;h~}(Ls=H>C>aMF&T}AQR zrMfMORM&`K^bK9-?xxzgb7QaW7Qd@K$g; z72HY0z0~1e8F8;w+=y0iyA<3h#HDn&ShfMzKU=|#Yz4Pl!JS6jfNTvn(1;tP;zqTC zt5a}i5Ld3l4L0H`RNUxRaC;QoS;P&|;f5M)jkqx?Zd@z4eG2XZ;>PN5u^(yxTz{`Vk@|V3hpxErs;6gjkp;qZc;0_LkjK+;%4e_vy8Y(6*svR++hWG z6>(KM+-xJRTE$Ii1$RWjH6w104ma0`o2TNYwt|xs+%?42=y3CmxCJV1S}VA?g1e5m zg*x0KBd%7(O>YI4P;fU8w^)Z;V#F;~aWh)MB^BIF#4Xd|mK$*^RNTx~a7Pu~EyS(N zR`#7b#qp=|#Z#Pcn&Z#pi>I;eUzKgv_OH&ywja6*r9XR1)BiI^>}N#P$QfyNqC%B7 za+?f+tjSjN>t_`kC4dGZ0sIWdVX~DGkTcvT>#`$f$T&lu)NExRu1dMb(g;m^UtIm3oz8S{ z;;!XqIeuijZv4|f>jn~Px4yQ>S&YXPc(~K0Sw)3tIbHN^Y*Q|U&*DDh+wmD4N^m>0 zZ;;DQwGV`+!}$q#Nhjei2>-uqGOXO`B7TAT61sQ4)A;UpWy^+g4bx#QUi~rU)jzX&ex7sJcwaWiQ)++xKt}e(I zFQIjr?cJeoH^c{JWH|nez@L%6KW)|W9k03qwp)wEv3I>K7sr~exBaJ9*4wtccJB@3 z7Y;*ra!V6VTp9a)DIT3&EWX4+l5a@O zMop4zTw=@NH}uM@tgkKiQ5F4H-WH2%_h;i$-XGD>zbkaNBMWL@d6m_)-SBBCueO?Y zuuOt7M1!?lN{gdo+3HeRxK+PYmN-KdKHXAT;$>VadoUZ9%J!9)%Jzp08Q_zb%ErI} zWfnZykLN_@7E{*%;+hApm@kfAX3J<}J{r42*>*}-71W8+oqpA*6dZ~rd6-Y$jex)J zHR)AP@R45ieJ{Q+rB{8J(2c5nWAMrGe4^TS$BZcfnvsv(zKxRf~?~j>xqH&#DsOv$U331o+9g{#(HXCJ@tO$ z8rxGE>lw06YpiDm)-&%nu8TdRv7RIAtj2n7U_Ccs-8ZK3oW^>Mtn(V{wSo28g!RD4 zx{&=Ruh%_pT(A2O8{YluD=S@Mt&tjR6`Hf{ zxJL=vN^66b+7f+;?Y3*#86f0zGa5=;!=Qb$3Lly-YtEMKn=!<`+4by9_;kK&4F5M6 ze6VceOm8A>2tiy^5LSY?k(~juNgvHb+UqoaZLd$RW@Fgva#(TNTO<)2>Vc$n=%6L- zR<_;N!S&aA`w+Okoiy6heM+M}9h!+t1+EV8VoNU<`I9 zC50}WZlTU+1y?WHVjoRWn^=%_e@C#6)m-HB%9)@e#wtB(CqZ zG`xnX>~1BA$HA{`2fU`?R-&)#bLXHyQtJaD1u`)Tc^F;f3Q2Ce)Az=OW@l)h-7ZBd zeK>zN;zQ4746?+BA&5DwCFDZ+hr}Qju(R>{VjtRac+`_WMr=7m?sj#?(4SI^4amW<`M*ZX?#171WNQ}> z=V|!&T^S%tO&X=8P?aYowsccGnAXe*I6AxGdw5Bo^2co+_c zbHyWnQb&6)c1rf+&jI{7_$PL>XZhaR(XRCUr+2igd~fM!>uh`(BKybN@iKV?quI{F zQQ#b7Uw)%17Hq_~I60?9Uw#S+KZ+`@;jXgD3MXzmxm+n|!oyKQ%|~+i&(Mef!;Vk9@PQMc;l} zj@q~1>{I*pn|+49{Z^mWx37~)P;6;1lfM1*9JOx`x9a=$#2MP7@7ohEW8Z#8j=pcd z9iFs9>DzAu2Ye>rsr2o4lFLfpejE1fcbfL?x5<6`nK|#!x39;KXWyUDx1W{sW{>=c zu5UlfXF`%F2^&*MB~_Y`4(s~%m1d+kC4op6jjN=pod2@E{p_6oy1spN&L7#gKcw{S zt9&vyL9+wo+-O40jyXB+)VH6TqxK0`qa-jdN9_}?Hb?@iO(cO?MoFMXW355fe2uln zz*=L%sx-0|Xsor!TBxzs8dz&hSXD;WB8{~US+yE#oq@H^_lTbq*sLfum_erlUEf~{qM3=FVV3y{$=KspB4s0B!G z8325bmbi9p;}7E7eG2bim!5g4$h=O zr6MeUpFfu`E`MJ*$MF~P#dDl+p5rg&i|26yX+w_Ll-kA|WnOG`i+Qn&WM1qaaMDUw zRyOCTb6|~Fq_^a#Cdb4^jLp^@R7%Z(!Zfmn6m9TDhqv9( z4{@={hXPXR+G74hpLkWt+G56rGhI3Gl{mVR9c6tiL+qawHo*Cg#&{xf%$H#$J9Y0S z!SZM@DSE=!P7S!-5U>s!8N1^n4A|hy!^q}+hN;H;##evUfZp*q`cwsv^}wF%9;iR; z4!WnUq5e2-Qh&@h*0+1%_1hg}*yp@YE&(7&8341Wd&X9s2m5ygh=Q2`oF2j_JXBhFkPu@i@M^WEgCr^f6f-=1x zV|!TF4>|&%%r-qqRV0PCI-{dl{GG(I*6P{fbszB?t@pcu?^Pn*CsI-`U`dT@?u+P7 zXzoksPHOJU=spUG%4|am$|VFg=sYf?M`MmXGqX)C8Cm)^sxdd`_Dgs6MI*T1F8Q`4 z_U*!cY2md@^el+Mw}|jsmWG-3B+KUf3PUyLmNe&D;I_hk=`8}L$IBdv&_27(`2*bA z>2EBSGJC&_@a^2_t!`x*^8QX;Ef(~-t@tqNCQeqeiIX)WBeyPYbos44tFnT zm(dOl$dla$5>oIQ4kPx3MPwq4Yq{ zk^?<0u>(B|`(>7;MIQDl%Ph-mNiWNUNQoDGcyhEryoe{{f#GjgU^#1p%Hd^gLMgii zM+6h$=G+QWuG;>8)V&9IT-R|ZeD5|a`bEbsDkb28f-Wfv%h)9C#I%#F7$nb|JjaTh z7i@MH_GbS?O1?yv630ml76|NOCq;=O*n5{Kibd>AY+DF`UF>4-z3rQsbL(QE;@`>l z|KCSq@0l}aPM{-aF8f0Cft(&C=glgv_c zuj+ATf}b*CA7j|39fC>7`8DbHx71esT-u6%j4o8d1+t5leFe-r$`=lUca%@*_#jHU z|C0`;&)27qDCzgh=}*b&Up15SmNQVY?CdNo)$u-53M$%JM<&|*rJ~KKt-fOhxu$xJ zSu5OM;4#7p2U0w3%$6N!Y@`yMaj2&enAthpFJv=A_G|0#K{W%AA$tOR>9Cu#bDo)! z8?slAFql`Fy>gY#%DIGY7kqm|_RWP!4cVX88?uilF=W5CPBCPEx;otdoTLAF$G10R zzpn0^8?r~-C>km28M-0S&)yfq&@-sLg04aJ6*LNLDGQN#b!EeRZQbv}hWQ1D@%H~6 zRmF1$SCWg4uRhYbZ9LMsq-lyD;!<^)sI!&nA=10zFk58Xn4j>>e&5hS_xd_+PzOm| zvFP&{5s3uvmIO~`hl6(u@>4iYI-7y(h9vmcnCr}@oHh`f%yv9Pxr)k~?7#Qkh2?#w zne$04kSuh!z<0mEH>?n(kwuea)zE_i-$MxH_U1UR5*fN*;3aqn{{EBuRs{!e6xpON z`glH0HTi}XqPHC~8U47x^Oz1mu3?rrg=}Cqw59rf7Cc$q|Efbi@VV|Vfw-3~*TA=- z4*o8}<1L5HBnS>%Qho+WmRI;btAkjv{%49LbQ4x5A*b0y2Xb6xlLY04?rg1w25| zUagNcfB)+a_m(>TZR-4Aa1EdE^`F3s!m@rH|6BZbOXN?p{|BM)U#6j;uhh}GI`*zkvg1hSI!5Oz4;P(h# z6bbIG^X;gc0YbVR#GcRVqWGW>&-Xw)$Dr~ZZgO3VOM;7)xEkOOIGSR}w6V!PY(akbEKXahX*dXv3if#I*HaX#& z?fBt20i+lpieovQRI(2WkR(j$7rA5^MU=*qvr!6&2XSAM-50;x?4CGynGJfL5DR&# z0h$Wwp1%edNPswrDQS#NRq@Nv7`78ZSqy}Kj}$Dy(>N!tytNE0UFg%wqFTSg==~sP z3e24U)1}e-xT8|K$c)~vts^*3@Fr)abjbiW5qu!PFYDo|k^I3Q5<1!0I&JvzK$ z*eKpevQZ2hH;T;~t(!>e9gWsa1Ff4$Xhn>)S~Oa>kk(L*)-40ATS;g|jkJbowC*9T z;To-b23q%$(3)m^x-`Ox$D=>|dSzO|>F9aG>8KA65S_})r8Cvic`o9N}z@IwFaLe!SL>r~!u?@Lh7d`SwLO<12XPR$MCSSQ}CVUqWL zl)T5$fQCj{E%^`B$?$O1V}BT9$5X7GNwTDH{u_Ep{56WYSNf1VI?TxHAXPh#|=lKMv_oQzN6rU_*O zS@J~L06v*)FxAOU#>NyPjJde8z*^3;wcI3euq>PXxT0Ht<_Az}a#X04`&4yUI`xvS z)YF`*zpoLv5Pj%W{e6un)X%jMg`MZxA>+KA?)-+%SXFml7xeDF{P+sQshwlbaHjIv z!a%;u*SuBvq3w7aJ-$$R)BB{C{`~n#uf*fp$DJULdL@16D??tjuyfm)PUE@lICU(I z!?85WnQ(49+leQhZvCkePp3*eohn)ARLMe4TFq)~OymOvL`1=Tr|KCK~#0V&T_5^PKPeb_Wmm%5#ey|G#$8c&P~>pixRqWvf7oCvCxYXyK)J2Wq;!V zp?WB2I4sQaZ+|gTmF*wi13K}Ivts<&u4*4a(^_C_mN)<#fZKoc{HLa`kUN zC@&cY3SbDa1oL2R!KMH&zpUuTk_}aKGGcp zp^tP={=DBudLVy3>?1vrKOgszp2(k1`$*5^&v+lHsW1B+*jF0FKJlGV@)AMH!5aFI zzG~s7_fqLK_f?DWPG7YcEq&F}50yWmdc*pv6&c=Ft;mSJYLQ2(C0gsW*vyungnLys zH(GpWtFb^jBO<fxEM`kT zLuDC3Jn6xUf~g=?p>-7aJ6NV+jzy8gnRpzFx87+uyxibSI6Aw`mxWrf-#>HWi?2M8 z-Y!)Cl=EMx_Flr@ODM!`bXx6Z%O6u6tqr>^kym*vJ>IQECm+6+jEMX5Zv3Fe6d@N+ zol*j}=K<4qsT%6zkJiMrkDT`0kC}s>-4C;wmKl~Yp?6S$?5K>SZL{{n2k z57nVFxGgXVt=2SM1h*B&kk#s76k&vD6b~asJhuW)WVIdVX|uw08-$7w_-mrSW@x%2 zb%R)uj?^WVK7Tgs>5tZl{-brj;2Or4){igcDCz4aazfmHv(s~|j)kZ2!Am{*Z_xli z?s%Ovv2UwydXH9VAndGSb)FM-W{mWFQO7|L3Y_;tRCcJeG1kmzZ&gT{JCnk>z(|>q z)GM6%AhZz2wSiQ`afe|C&T-qFX1m2Ui4+KpRus~j-$(SjnIGE#sFjg>d-{kJ)P{zL8s-AF-g z0qW6Ej{7;POJCva?RB`to8E&n30w?HEO66$aF!5vw2re@a3||H+poFfbzF+T9jW8& z0=L6yF`F&8V;ENoqcH*<6p5o@qq9T?FvOs$@=sPEjjt(1BWlx8xb@r5;?a(}SdrH7MfdBU~`~?0~-RU}R zmvNf!b}Gk-XXN9=D=^Pz;5`3aCv@y_>ixxD#i_p6sridNi(2)4PR(B|0roouvyi*M zl0?mJ`}QjI&y%aruj*Ck(@JC&I*th&Q=y+#Rp?i%!~OR<`|oppdlmY*Z=pgzSEus@ z%Y}yb0Ez5Vlt=uRQwEn zkmnKZoSFG{D2fG&qPjq! zCnEa`YyA5%(RPv3WF~RaxA|pXJfo#4p3xo!PRAjR$Z!q)CE#QM!AS66rWgsf zXL_14@szhMNe=BKCD-f4Z8Hg@=EVDWVfPwY#FlO#?)5kaH{zeo_-6~uMhjgTy`JoP=3G{+>rkw@YO#(|P5)Hy4Jn`Q zP|9YTHWVuU8734ap}CLIoB)GwpGxx>jnJ2X=D*kfJJmbh~` zPGxcFo5+N>BBl5H`oFA;^!QKa%ykdTa~$NkN6qs@=X#Xu>#<3#$JJzQGn>)83T-o6 zrTGQX?5Dq9s=G}pUn9Mu^!hAD;tG(MrII*FBz_Jg`qcN~n))bKv84G@RhoR?Rs9+$ zNhhCYpGRw}vf0Yyl%!qXQdH?5`=)DVy(3T#NCMFxR`&m8{3z5Aj`JAJCa64aHU&}Ss z!tQF{bK&65Lgqx|L`D)q<1>lSiHvY?e5OL^yi;?O`*9(eG1oypBFF_NZ(=;%vziVe zE&`Jm1dA_UQXL+B=OSV1U2lJ8}{ zU5mH)U%I)m3!)iqb%@cRH?Vt{88`~kq18sGxK9|C-t9q~p>-m|Kx?o@YYEaCqS0DnptU3kt%=5RHEXn%A+2{b zTFVTymL;Jz$w;e3qqQ7q4b^BZH_%$1gw|vutzjCi6-aBiMr(zE)`}#wrWk3B&}gkh zS|c@DD-E<(CZYA7k=Ce^-}+YlRihqpCQ8SnOO&hF*Q%wPV(416_jK|v>njUAhMS`c0>ckSWnd3b~H3D%w z#I;9*7wdrX49K9$F((?lR9D5fRu#-y5Di|gs}k_{N?lbt{$8!Cvf}SGK$*M1d!+D1 z{}F8GNowIcFq_FGCMY~?86w^eK0au`wG*H8`v%3(zL zKt(xl)4doc197B{=73Dah%+OGd1IlqknOR~6lmhAw_y^m_ z@$PFqcxhlCywo(y*jclQKo%)JBHnhO(T+6cl%Q&heDfkTlkAbYw%2Rd`LfUgdJR;9 zR;m682I$Rd>Ao1cS?#@5Ej<)Nx2nCjtEIn$V+a@8fDImKl0n?R`=$ zjjRbh!4W^N#A319QrU?A6Wr#_$03TY*wrDL``Qg2EvwNfQHgS_zNShVRpVb%g~vru zZCgq@y9gc$T}8x2B^H29B0t!qSquknGYy3Aa*yB@U2p>*yj~X$UYCQYIt&MIu~6`8 zA;>`~wA;N>Sh*M+ zg5v%78VP%gseEtaTmPGNk>IVmjK9Nuv7XMML^?76T{-{1Dg>TWm6##>0=fZX1!}pz zHC6Sw%C+C66pODNvDSHiqAMA3&77|)Y66C??3GYTG#E$Sg`>36bF+{Sd+w05yPUvf zXsO|L-72D>#ennL|yYcc55h2@MpzgT$(g&>+z} zSggtl4Hmsa#3~^)MD#X`RXL$%(ff`lO{odJBYImzX=+WVMf468tK$BlB0jGwF%rd?Z;J8$be^!n0XXH?vLTz%WiPG+rLxU;wsT>+Yp+$12nL^X#&{LxFF2_YX zq`f_3^3ww!$4TeE8KKK*v%zP@py_9kN1nm2hhJ)!u8FnT z+YJxL)anjr)g7)?cLA#|K!#)e)>Hi)vL^*ZSjC1547o|Yko*QBRs$F##L9f6HbSGe zmQe!;{CkIr^I3^O-@dUV;aKe!tTK0Ter+N|rf%O1-&Pw*YXghW!vhq{YGZem2NvPU zl!h<}5w>aJI4*YEwFLe+Qs1E=JVS(?I)rD4uuDUDf(W~{@M8>ru7w|Ac#jr-is8K= zwODO`LuRH5tAN2hEW`&`P5B^Nx@Vg?ym%Uph901r^Z_o_p@+bg-zf?{g(b!;!>af! z)wGU(W~LH<#f%|*{G?@i4>R3Qwa8%Mi06DZ`6Sek?jur|kkI2pLw%C9We3k>dnQ;=zBmXX6YcOir$li?5ntL$ctFcTxobQ~gNWN~@+`C= z-)tvY_%-C}nZcRQHRZSA$1M10$B)_Y(IKax?B_%FLe?e(wK98Er&S1BLK^eJ_*$Y__hJjH>c=R`9H}FyfE9jE)3n z8Ys_1uQ5bG_otyr8?B5 zgnG2Z3aE`n)F(W>5M&co{d~elqiCiJt&@$Sx!@UPv*@E#_-Gm4gip1H6?t~kY&k~7 z`d{B9FD&dbU18~aL{Su7$2?V9iM7k|60^-}8%B2*dNktYp~5DqJskCnEaDAhM-;j5 zWOHvZUr{g9OY;#$0gL-?Hs90(ef7w78&Z^?!zm>~zcs7^=q)N%uqz(dx(HBn>Cr_( zSDh#^!<^n~4fhiMf#*^q!FWz>I}DKV9nqNotbnhmgl3a2VyrIWbuHoyi#Wp~exi>U zuZ!p>N8tb9IpL+uR{uFc1)L|qc|piaM4OR_HUrVF@JXl%?R=8N!X`ab&1hjFl;}>- zL%$TN_*Vayg79BP=y-(vz1C(IGN}bFWKu={LLV_+7tseI1Q+a)paa|4`WuzECKq8- zL2GYR-kls`fbBBCgqt9?=0@c`%4!DKDFZCR90u4W1FXUX2G}hFY{Fm$_*@302>-$W zdt`uJ@H4<(8IUUcIRosI0cpYy7+}8)NEdoCzyTSMA(SydSO#ROd!#JdBW2l5C6AuP zvnD)^FL@f@@ihL$)A)m@@rq}0_p|ulJd6L!v-r?w@eiNHKYAA5^(=nsSsbuc78lR) zELUfo62zyvswk=(;U`PXcB}0@lRW8A%0A>;<=T!)(I{lq5v|8e__?bJT8MuYIx1}T5x$q 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 z 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

Hey!
You need {0} more GoBucks to get me.

"); + } + + public function proceedToSaveError() : void + { + } + + public function resetCCAction() : void + { + this.ui_ps_container.ui_ps_charPreviewer.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.onResetCCActionComplete); + this.ui_ps_container.ui_ps_charPreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + } + + private function onResetCCActionComplete(param1:Event) : void + { + this.ui_ps_container.ui_ps_charPreviewer.removeEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.onResetCCActionComplete); + this.dispatchEvent(param1); + } + + public function saveSnapShot(param1:Boolean = false) : ByteArray + { + var _loc2_:BitmapData = null; + if(!param1) + { + _loc2_ = this.ui_ps_container.ui_ps_charPreviewer.capFaceAsBitmap(); + } + else + { + _loc2_ = this.ui_ps_container.ui_ps_charPreviewer.capCharAsBitmap(); + } + var _loc3_:PNGEncoder = new PNGEncoder(); + var _loc4_:ByteArray = _loc3_.encode(_loc2_); + return _loc4_; + } + + public function showNotAbleSave(param1:String) : void + { + } + + public function updatePurchaseBoxButton(param1:int) : void + { + } + + public function updateTopButtonOnRole() : void + { + this.ui_ps_container.ui_ps_buttonBar.refreshRole(); + } + } +} diff --git a/scripts/anifire/creator/events/CcActionChosenEvent.as b/scripts/anifire/creator/events/CcActionChosenEvent.as new file mode 100644 index 0000000..86e6673 --- /dev/null +++ b/scripts/anifire/creator/events/CcActionChosenEvent.as @@ -0,0 +1,31 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcActionChosenEvent extends ExtraDataEvent + { + + public static const ACTION_CHOSEN:String = "action_chosen"; + + public static const FACIAL_CHOSEN:String = "facial_chosen"; + + + public var action_id:String; + + public var facial_id:String; + + public function CcActionChosenEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcActionChosenEvent = new CcActionChosenEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.action_id = this.action_id; + _loc1_.facial_id = this.facial_id; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcBodyShapeChooserEvent.as b/scripts/anifire/creator/events/CcBodyShapeChooserEvent.as new file mode 100644 index 0000000..c6315cc --- /dev/null +++ b/scripts/anifire/creator/events/CcBodyShapeChooserEvent.as @@ -0,0 +1,27 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcBodyShape; + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcBodyShapeChooserEvent extends ExtraDataEvent + { + + public static const BODY_SHAPE_CHOSEN:String = "body_shape_chosen"; + + + public var bodyShapeChosen:CcBodyShape; + + public function CcBodyShapeChooserEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcBodyShapeChooserEvent = new CcBodyShapeChooserEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.bodyShapeChosen = this.bodyShapeChosen; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcButtonBarEvent.as b/scripts/anifire/creator/events/CcButtonBarEvent.as new file mode 100644 index 0000000..c1e8ae9 --- /dev/null +++ b/scripts/anifire/creator/events/CcButtonBarEvent.as @@ -0,0 +1,30 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcButtonBarEvent extends ExtraDataEvent + { + + public static const UNDO_BUTTON_CLICK:String = "undo_button_click"; + + public static const REDO_BUTTON_CLICK:String = "redo_button_click"; + + public static const RANDOMIZE_BUTTON_CLICK:String = "randomize_button_click"; + + public static const SAVE_BUTTON_CLICK:String = "save_button_click"; + + public static const RESET_BUTTON_CLICK:String = "reset_button_click"; + + public static const SCALE_BUTTON_CLICK:String = "scale_button_click"; + + public static const PREVIEW_BUTTON_CLICK:String = "preview_button_click"; + + public static const MODIFY_BUTTON_CLICK:String = "modify_button_click"; + + + public function CcButtonBarEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcCharPreviewerEvent.as b/scripts/anifire/creator/events/CcCharPreviewerEvent.as new file mode 100644 index 0000000..2aea247 --- /dev/null +++ b/scripts/anifire/creator/events/CcCharPreviewerEvent.as @@ -0,0 +1,16 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcCharPreviewerEvent extends ExtraDataEvent + { + + public static const ZOOM_EFFECT_COMPLETED:String = "zoom_complete"; + + + public function CcCharPreviewerEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcColorPickerEvent.as b/scripts/anifire/creator/events/CcColorPickerEvent.as new file mode 100644 index 0000000..1ec5aa4 --- /dev/null +++ b/scripts/anifire/creator/events/CcColorPickerEvent.as @@ -0,0 +1,21 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcColor; + import anifire.event.ExtraDataEvent; + + public class CcColorPickerEvent extends ExtraDataEvent + { + + public static const COLOR_CHOSEN:String = "color_chosen"; + + + public var colorChosen:CcColor; + + public var undoable:Boolean = true; + + public function CcColorPickerEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcComponentLoadEvent.as b/scripts/anifire/creator/events/CcComponentLoadEvent.as new file mode 100644 index 0000000..b5d7007 --- /dev/null +++ b/scripts/anifire/creator/events/CcComponentLoadEvent.as @@ -0,0 +1,29 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcComponentLoadEvent extends ExtraDataEvent + { + + public static const LOAD_ACTION_IMAGE_DATA_COMPLETE:String = "load_action_image_data_complete"; + + public static const LOAD_STATE_IMAGE_DATA_COMPLETE:String = "load_state_image_data_complete"; + + public static const LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE:String = "load_thumbnail_image_data_complete"; + + + public var stateId:String; + + public function CcComponentLoadEvent(param1:String, param2:Object, param3:String, param4:Object = null, param5:Boolean = false, param6:Boolean = false) + { + super(param1,param2,param4,param5,param6); + this.stateId = param3; + } + + override public function clone() : Event + { + return new CcComponentLoadEvent(this.type,this.getEventCreater(),this.stateId,this.getData(),this.bubbles,this.cancelable); + } + } +} diff --git a/scripts/anifire/creator/events/CcComponentThumbChooserEvent.as b/scripts/anifire/creator/events/CcComponentThumbChooserEvent.as new file mode 100644 index 0000000..7e2a3e1 --- /dev/null +++ b/scripts/anifire/creator/events/CcComponentThumbChooserEvent.as @@ -0,0 +1,32 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcComponentThumb; + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcComponentThumbChooserEvent extends ExtraDataEvent + { + + public static const COMPONENT_THUMB_CHOSEN:String = "component_thumb_chosen"; + + public static const NONE_COMPONENT_THUMB_CHOSEN:String = "none_component_thumb_chosen"; + + + public var componentThumb:CcComponentThumb; + + public var noneComponentThumbType:String; + + public function CcComponentThumbChooserEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcComponentThumbChooserEvent = new CcComponentThumbChooserEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.componentThumb = this.componentThumb; + _loc1_.noneComponentThumbType = this.noneComponentThumbType; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcComponentThumbnailMouseEvent.as b/scripts/anifire/creator/events/CcComponentThumbnailMouseEvent.as new file mode 100644 index 0000000..f498188 --- /dev/null +++ b/scripts/anifire/creator/events/CcComponentThumbnailMouseEvent.as @@ -0,0 +1,18 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcComponentThumbnailMouseEvent extends ExtraDataEvent + { + + public static const DELETE_RELEASED:String = "delete_released"; + + public static const MOUSE_REALLY_OUT:String = "mouse_really_out"; + + + public function CcComponentThumbnailMouseEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcComponentTypeChooserEvent.as b/scripts/anifire/creator/events/CcComponentTypeChooserEvent.as new file mode 100644 index 0000000..957afa0 --- /dev/null +++ b/scripts/anifire/creator/events/CcComponentTypeChooserEvent.as @@ -0,0 +1,26 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcComponentTypeChooserEvent extends ExtraDataEvent + { + + public static const COMPONENT_TYPE_CHOSEN:String = "component_type_chosen"; + + + public var componentType:String; + + public function CcComponentTypeChooserEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcComponentTypeChooserEvent = new CcComponentTypeChooserEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.componentType = this.componentType; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcCoreEvent.as b/scripts/anifire/creator/events/CcCoreEvent.as new file mode 100644 index 0000000..014a10a --- /dev/null +++ b/scripts/anifire/creator/events/CcCoreEvent.as @@ -0,0 +1,36 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcCoreEvent extends ExtraDataEvent + { + + public static const LOAD_THEME_COMPLETE:String = "load_theme_complete"; + + public static const LOAD_EXISTING_CHAR_COMPLETE:String = "load_existing_char_complete"; + + public static const LOAD_PRE_MADE_CHARACTER_COMPLETE:String = "load_pre_made_character_complete"; + + public static const LOAD_CHARACTER_THUMB_COMPLETE:String = "load_char_thumb_complete"; + + public static const LOAD_CHARACTER_THUMB_ALL_COMPLETE:String = "load_char_thumb_all_complete"; + + public static const LOAD_EVERYTHING_COMPLETE:String = "load_all_complete"; + + public static const USER_WANT_TO_SAVE:String = "user_want_to_save"; + + public static const USER_WANT_TO_MODIFY:String = "user_want_to_modify"; + + public static const USER_WANT_TO_CONFIRM:String = "user_want_to_confirm"; + + public static const USER_WANT_TO_PREVIEW:String = "user_want_to_preview"; + + public static const USER_WANT_TO_CANCEL:String = "user_want_to_cancel"; + + + public function CcCoreEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcPointUpdateEvent.as b/scripts/anifire/creator/events/CcPointUpdateEvent.as new file mode 100644 index 0000000..374873f --- /dev/null +++ b/scripts/anifire/creator/events/CcPointUpdateEvent.as @@ -0,0 +1,34 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcPointUpdateEvent extends ExtraDataEvent + { + + public static const POINT_UPDATE_COMPLETE:String = "point_update_complete"; + + public static const ERROR_OCCUR:String = "point_update_error_occur"; + + + public var gopoint:Number; + + public var gobuck:Number; + + public var coupon:Boolean; + + public function CcPointUpdateEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcPointUpdateEvent = new CcPointUpdateEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.gopoint = this.gopoint; + _loc1_.gobuck = this.gobuck; + _loc1_.coupon = this.coupon; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcPreMadeCharChooserEvent.as b/scripts/anifire/creator/events/CcPreMadeCharChooserEvent.as new file mode 100644 index 0000000..e953f8f --- /dev/null +++ b/scripts/anifire/creator/events/CcPreMadeCharChooserEvent.as @@ -0,0 +1,27 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcCharacter; + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcPreMadeCharChooserEvent extends ExtraDataEvent + { + + public static const PRE_MADE_CHAR_CHOSEN:String = "pre_made_char_chosen"; + + + public var ccCharChosen:CcCharacter; + + public function CcPreMadeCharChooserEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcPreMadeCharChooserEvent = new CcPreMadeCharChooserEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.ccCharChosen = this.ccCharChosen; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcSaveCharEvent.as b/scripts/anifire/creator/events/CcSaveCharEvent.as new file mode 100644 index 0000000..2dd8336 --- /dev/null +++ b/scripts/anifire/creator/events/CcSaveCharEvent.as @@ -0,0 +1,39 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcSaveCharEvent extends ExtraDataEvent + { + + public static const SAVE_CHAR_COMPLETE:String = "save_char_complete"; + + public static const SAVE_CHAR_ERROR_OCCUR:String = "save_char_error_occur"; + + public static const SAVE_CHAR_NOT_ENOUGH_MONEY_POINT:String = "save_char_not_enough_money_point"; + + + public var gopoint:Number; + + public var gobuck:Number; + + public var assetId:String; + + public var gaTrackModel:Object = null; + + public function CcSaveCharEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcSaveCharEvent = new CcSaveCharEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.gopoint = this.gopoint; + _loc1_.gobuck = this.gobuck; + _loc1_.assetId = this.assetId; + _loc1_.gaTrackModel = this.gaTrackModel; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcScaleChosenEvent.as b/scripts/anifire/creator/events/CcScaleChosenEvent.as new file mode 100644 index 0000000..bee0022 --- /dev/null +++ b/scripts/anifire/creator/events/CcScaleChosenEvent.as @@ -0,0 +1,25 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + import flash.geom.Point; + + public class CcScaleChosenEvent extends ExtraDataEvent + { + + public static const SCALE_CHOSEN:String = "scale_chosen"; + + + public var head_scale:Number; + + public var body_scale:Number; + + public var head_pos:Point; + + public var head_shift:Point; + + public function CcScaleChosenEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcSelectedDecorationEvent.as b/scripts/anifire/creator/events/CcSelectedDecorationEvent.as new file mode 100644 index 0000000..55b6deb --- /dev/null +++ b/scripts/anifire/creator/events/CcSelectedDecorationEvent.as @@ -0,0 +1,25 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcComponent; + import anifire.event.ExtraDataEvent; + + public class CcSelectedDecorationEvent extends ExtraDataEvent + { + + public static const DECORATION_MOUSE_OVER:String = "decoration_mouse_over"; + + public static const DECORATION_MOUSE_OUT:String = "decoration_mouse_out"; + + public static const DECORATION_CHOOSEN:String = "decoration_choosen"; + + public static const DECORATION_DELETED:String = "decoration_deleted"; + + + public var ccComponent:CcComponent; + + public function CcSelectedDecorationEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcTemplateChooserEvent.as b/scripts/anifire/creator/events/CcTemplateChooserEvent.as new file mode 100644 index 0000000..f385955 --- /dev/null +++ b/scripts/anifire/creator/events/CcTemplateChooserEvent.as @@ -0,0 +1,20 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcTemplateChooserEvent extends ExtraDataEvent + { + + public static const USER_WANT_TO_PREVIEW:String = "action_preview"; + + public static const PREVIEW_CHARACTER_CHANGED:String = "event_preview_changed"; + + public static const PREVIEW_TAB_CHANGED:String = "event_preview_tab_changed"; + + + public function CcTemplateChooserEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/CcThumbPropertyEvent.as b/scripts/anifire/creator/events/CcThumbPropertyEvent.as new file mode 100644 index 0000000..4585c5b --- /dev/null +++ b/scripts/anifire/creator/events/CcThumbPropertyEvent.as @@ -0,0 +1,55 @@ +package anifire.creator.events +{ + import anifire.creator.models.CcComponent; + import anifire.event.ExtraDataEvent; + import flash.events.Event; + + public class CcThumbPropertyEvent extends ExtraDataEvent + { + + public static const CCPROP_UP_BUTTON_CLICK:String = "ccprop_up_button_click"; + + public static const CCPROP_DOWN_BUTTON_CLICK:String = "ccprop_down_button_click"; + + public static const CCPROP_LEFT_BUTTON_CLICK:String = "ccprop_left_button_click"; + + public static const CCPROP_RIGHT_BUTTON_CLICK:String = "ccprop_right_button_click"; + + public static const CCPROP_SCALEUP_BUTTON_CLICK:String = "ccprop_scaleup_button_click"; + + public static const CCPROP_SCALEDOWN_BUTTON_CLICK:String = "ccprop_scaledown_button_click"; + + public static const CCPROP_SCALEXUP_BUTTON_CLICK:String = "ccprop_scalexup_button_click"; + + public static const CCPROP_SCALEXDOWN_BUTTON_CLICK:String = "ccprop_scalexdown_button_click"; + + public static const CCPROP_SCALEYUP_BUTTON_CLICK:String = "ccprop_scaleyup_button_click"; + + public static const CCPROP_SCALEYDOWN_BUTTON_CLICK:String = "ccprop_scaleydown_button_click"; + + public static const CCPROP_ROTATEUP_BUTTON_CLICK:String = "ccprop_rotateup_button_click"; + + public static const CCPROP_ROTATEDOWN_BUTTON_CLICK:String = "ccprop_rotatedown_button_click"; + + public static const CCPROP_OFFSETUP_BUTTON_CLICK:String = "ccprop_offsetup_button_click"; + + public static const CCPROP_OFFSETDOWN_BUTTON_CLICK:String = "ccprop_offsetdown_button_click"; + + public static const CCPROP_LOCATION_UPDATE:String = "ccprop_location_update"; + + + public var component:CcComponent; + + public function CcThumbPropertyEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + + override public function clone() : Event + { + var _loc1_:CcThumbPropertyEvent = new CcThumbPropertyEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + _loc1_.component = this.component; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/events/CcThumbScaleEvent.as b/scripts/anifire/creator/events/CcThumbScaleEvent.as new file mode 100644 index 0000000..1834ef8 --- /dev/null +++ b/scripts/anifire/creator/events/CcThumbScaleEvent.as @@ -0,0 +1,20 @@ +package anifire.creator.events +{ + import anifire.event.ExtraDataEvent; + + public class CcThumbScaleEvent extends ExtraDataEvent + { + + public static const CCTHUMB_SCALE_UPDATE:String = "ccthumb_scale_update"; + + + public var part:String; + + public var scale:Number; + + public function CcThumbScaleEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param2,param3,param4,param5); + } + } +} diff --git a/scripts/anifire/creator/events/ColorPickerDropDownListEvent.as b/scripts/anifire/creator/events/ColorPickerDropDownListEvent.as new file mode 100644 index 0000000..da83a02 --- /dev/null +++ b/scripts/anifire/creator/events/ColorPickerDropDownListEvent.as @@ -0,0 +1,21 @@ +package anifire.creator.events +{ + import flash.events.Event; + + public class ColorPickerDropDownListEvent extends Event + { + + public static const COLOR_CHANGE:String = "colorChange"; + + public static const COLOR_COMMIT:String = "colorCommit"; + + + public var color:uint; + + public function ColorPickerDropDownListEvent(param1:String, param2:uint = 0, param3:Boolean = false, param4:Boolean = false) + { + super(param1,param3,param4); + this.color = param2; + } + } +} diff --git a/scripts/anifire/creator/events/MenuItemEvent.as b/scripts/anifire/creator/events/MenuItemEvent.as new file mode 100644 index 0000000..1becc75 --- /dev/null +++ b/scripts/anifire/creator/events/MenuItemEvent.as @@ -0,0 +1,25 @@ +package anifire.creator.events +{ + import anifire.creator.models.MenuItemModel; + import flash.events.Event; + import flash.events.MouseEvent; + + public class MenuItemEvent extends Event + { + + public static const ITEM_CLICK:String = "itemClick"; + + + public var item:MenuItemModel; + + public var isPropagated:Boolean = false; + + public var mouseEvent:MouseEvent; + + public function MenuItemEvent(param1:String, param2:MenuItemModel) + { + super(param1,bubbles,cancelable); + this.item = param2; + } + } +} diff --git a/scripts/anifire/creator/interfaces/ICcCharEditorContainer.as b/scripts/anifire/creator/interfaces/ICcCharEditorContainer.as new file mode 100644 index 0000000..6d1f2e1 --- /dev/null +++ b/scripts/anifire/creator/interfaces/ICcCharEditorContainer.as @@ -0,0 +1,50 @@ +package anifire.creator.interfaces +{ + import anifire.creator.components.BodyShapeChooser; + import anifire.creator.components.BodyShapeMegaChooser; + import anifire.creator.components.CcColorPickers; + import anifire.creator.components.CcComponentPropertyInspectorSpark; + import anifire.creator.components.CharPreviewer; + import anifire.creator.components.ClothesChooser; + import anifire.creator.components.ComponentThumbChooserSpark; + import anifire.creator.components.DecorationPanel; + import anifire.creator.components.ScaleChooserSpark; + import anifire.creator.components.TopButtons; + import anifire.creator.components.TypeChooserSpark; + import spark.components.Group; + + public interface ICcCharEditorContainer + { + + + function get ui_ce_componentTypeChooser() : TypeChooserSpark; + + function get ui_ce_charPreviewer() : CharPreviewer; + + function get ui_ce_facePreviewer() : CharPreviewer; + + function get ui_ce_colorPicker() : CcColorPickers; + + function get ui_ce_buttonBar() : TopButtons; + + function get ui_ce_componentChooserViewStack() : Group; + + function get ui_ce_componentThumbChooser() : ComponentThumbChooserSpark; + + function get ui_ce_thumbPropertyInspector() : CcComponentPropertyInspectorSpark; + + function get ui_ce_selectedDecoration() : DecorationPanel; + + function get ui_ce_mainViewStack() : Group; + + function get ui_ce_mainEditorComponentsContainer() : Group; + + function get ui_ce_clothesChooser() : ClothesChooser; + + function get ui_ce_charScaleChooser() : ScaleChooserSpark; + + function get ui_ce_bodyShapeMegaChooser() : BodyShapeMegaChooser; + + function get ui_ce_bodyShapeChooser() : BodyShapeChooser; + } +} diff --git a/scripts/anifire/creator/interfaces/ICcMainUiContainer.as b/scripts/anifire/creator/interfaces/ICcMainUiContainer.as new file mode 100644 index 0000000..97b31d5 --- /dev/null +++ b/scripts/anifire/creator/interfaces/ICcMainUiContainer.as @@ -0,0 +1,16 @@ +package anifire.creator.interfaces +{ + import flash.events.IEventDispatcher; + import spark.components.Group; + + public interface ICcMainUiContainer extends IEventDispatcher + { + + + function get ui_main_ViewStack() : Group; + + function get ui_main_ccCharEditor() : Group; + + function get ui_main_ccCharPreviewAndSaveScreen() : Group; + } +} diff --git a/scripts/anifire/creator/interfaces/ICcPreviewAndSaveContainer.as b/scripts/anifire/creator/interfaces/ICcPreviewAndSaveContainer.as new file mode 100644 index 0000000..af5978c --- /dev/null +++ b/scripts/anifire/creator/interfaces/ICcPreviewAndSaveContainer.as @@ -0,0 +1,23 @@ +package anifire.creator.interfaces +{ + import anifire.creator.components.CharPreviewOption; + import anifire.creator.components.CharPreviewer; + import anifire.creator.components.TopButtons; + import flash.events.IEventDispatcher; + import spark.components.Group; + + public interface ICcPreviewAndSaveContainer extends IEventDispatcher + { + + + function get ui_ps_charPreviewer() : CharPreviewer; + + function get ui_ps_interactionViewStack() : Group; + + function get ui_ps_charPreviewCanvas() : Group; + + function get ui_ps_charPreviewOptionBox() : CharPreviewOption; + + function get ui_ps_buttonBar() : TopButtons; + } +} diff --git a/scripts/anifire/creator/interfaces/IConfiguration.as b/scripts/anifire/creator/interfaces/IConfiguration.as new file mode 100644 index 0000000..7bbbbd4 --- /dev/null +++ b/scripts/anifire/creator/interfaces/IConfiguration.as @@ -0,0 +1,13 @@ +package anifire.creator.interfaces +{ + import anifire.creator.utils.ComponentThumbFilter; + + public interface IConfiguration + { + + + function loadPreMadeCharsEnabled() : Boolean; + + function get defaultThumbFilter() : ComponentThumbFilter; + } +} diff --git a/scripts/anifire/creator/interfaces/IMenuItemOwner.as b/scripts/anifire/creator/interfaces/IMenuItemOwner.as new file mode 100644 index 0000000..9feff66 --- /dev/null +++ b/scripts/anifire/creator/interfaces/IMenuItemOwner.as @@ -0,0 +1,12 @@ +package anifire.creator.interfaces +{ + import anifire.creator.models.MenuItemModel; + import flash.events.MouseEvent; + + public interface IMenuItemOwner + { + + + function menuItemClicked(param1:MenuItemModel, param2:Boolean, param3:MouseEvent) : void; + } +} diff --git a/scripts/anifire/creator/models/CcAction.as b/scripts/anifire/creator/models/CcAction.as new file mode 100644 index 0000000..2aedc94 --- /dev/null +++ b/scripts/anifire/creator/models/CcAction.as @@ -0,0 +1,145 @@ +package anifire.creator.models +{ + import anifire.creator.events.CcComponentLoadEvent; + import anifire.util.UtilHashArray; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.utils.ByteArray; + + public class CcAction extends EventDispatcher + { + + public static const PACK_XML_NODE_NAME:String = "actionpack"; + + public static const XML_NODE_NAME:String = "action"; + + + private var _id:String; + + private var _name:String; + + private var _enable:Boolean; + + private var _category:String; + + private var _group:String; + + private var _selections:UtilHashArray; + + private var _require_components:Array; + + public var imageData:ByteArray = null; + + private var _isLoadingImageData:Boolean = false; + + public function CcAction() + { + this._selections = new UtilHashArray(); + this._require_components = new Array(); + super(); + } + + public function get group() : String + { + return this._group; + } + + public function set group(param1:String) : void + { + this._group = param1; + } + + public function get id() : String + { + return this._id; + } + + public function get name() : String + { + return this._name; + } + + public function get enable() : Boolean + { + return this._enable; + } + + public function get category() : String + { + return this._category; + } + + public function get requireComponents() : Array + { + return this._require_components; + } + + public function get filename() : String + { + return this.id + ".swf"; + } + + public function getSelectionByComponentType(param1:String) : CcSelection + { + return this._selections.getValueByKey(param1) as CcSelection; + } + + public function deserialize(param1:XML) : void + { + var _loc2_:XML = null; + var _loc3_:XML = null; + var _loc4_:CcRequireComponent = null; + var _loc5_:CcSelection = null; + this._id = param1.@id; + this._name = param1.@name; + this._enable = param1.@enable == "N"?false:true; + this._category = param1.@category; + this._group = param1.@group; + for each(_loc2_ in param1.child(CcSelection.XML_NODE_NAME)) + { + _loc5_ = new CcSelection(); + _loc5_.deserialize(_loc2_); + this._selections.push(_loc5_.type,_loc5_); + } + for each(_loc3_ in param1.child("require_component")) + { + _loc4_ = new CcRequireComponent(); + _loc4_.deserialize(_loc3_); + this._require_components.push(_loc4_); + } + } + + public function loadImageData(param1:URLRequest) : void + { + var _loc2_:URLLoader = null; + if(this.imageData != null) + { + this.dispatchLoadCompleteEvent(); + } + else if(!this._isLoadingImageData) + { + _loc2_ = new URLLoader(); + _loc2_.dataFormat = URLLoaderDataFormat.BINARY; + _loc2_.addEventListener(Event.COMPLETE,this.onLoadImageDataComplete); + _loc2_.load(param1); + } + } + + private function onLoadImageDataComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadImageDataComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + this.imageData = _loc2_.data as ByteArray; + this.dispatchLoadCompleteEvent(); + } + + private function dispatchLoadCompleteEvent() : void + { + this.dispatchEvent(new CcComponentLoadEvent(CcComponentLoadEvent.LOAD_ACTION_IMAGE_DATA_COMPLETE,this,this.id)); + } + } +} diff --git a/scripts/anifire/creator/models/CcBodyShape.as b/scripts/anifire/creator/models/CcBodyShape.as new file mode 100644 index 0000000..781fba3 --- /dev/null +++ b/scripts/anifire/creator/models/CcBodyShape.as @@ -0,0 +1,223 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.managers.AppConfigManager; + import anifire.util.UtilHashArray; + + public class CcBodyShape + { + + public static const XML_NODE_NAME:String = "bodyshape"; + + + private var _id:String; + + private var _name:String; + + private var _thumbnailActionId:String; + + private var _thumbnailFacialId:String; + + private var _thumbnailPath:String; + + private var _enable:Boolean; + + private var _shapeType:String; + + private var _components:UtilHashArray; + + private var _componentsByType:UtilHashArray; + + private var _actions:UtilHashArray; + + private var _themeId:String; + + private var _bodyType:String; + + private var _defaultCharXml:XMLList; + + private var _libraries:UtilHashArray; + + public function CcBodyShape() + { + this._components = new UtilHashArray(); + this._componentsByType = new UtilHashArray(); + this._actions = new UtilHashArray(); + this._libraries = new UtilHashArray(); + super(); + } + + public function get thumbnailPath() : String + { + return this._thumbnailPath; + } + + public function get id() : String + { + return this._id; + } + + public function get name() : String + { + return this._name; + } + + public function get thumbnailActionId() : String + { + return this._thumbnailActionId; + } + + public function get thumbnailFacialId() : String + { + return this._thumbnailFacialId; + } + + public function get themeId() : String + { + return this._themeId; + } + + public function get bodyType() : String + { + return this._bodyType; + } + + public function getDefaultCharXml() : XML + { + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue("ft"); + var _loc3_:Vector. = new Vector.(); + var _loc4_:int = 0; + while(_loc4_ < this._defaultCharXml.length()) + { + if(_loc2_ && _loc2_ == this._defaultCharXml[_loc4_].child("tag")) + { + _loc3_.push(this._defaultCharXml[_loc4_]); + } + _loc4_++; + } + if(_loc3_.length > 0) + { + return _loc3_[0]; + } + return this._defaultCharXml[0]; + } + + public function getActionNum() : Number + { + return this._actions.length; + } + + public function getLibraryNum() : Number + { + return this._libraries.length; + } + + public function getActionByIndex(param1:int) : CcAction + { + return this._actions.getValueByIndex(param1) as CcAction; + } + + public function getActionById(param1:String) : CcAction + { + return this._actions.getValueByKey(param1) as CcAction; + } + + private function addAction(param1:CcAction) : void + { + this._actions.push(param1.id,param1); + } + + public function getLibraryByIndex(param1:int) : CcLibrary + { + return this._libraries.getValueByIndex(param1) as CcLibrary; + } + + public function getLibraryById(param1:String) : CcLibrary + { + return this._libraries.getValueByKey(param1) as CcLibrary; + } + + private function addLibrary(param1:CcLibrary) : void + { + this._libraries.push(param1.type,param1); + } + + private function addComponentThumb(param1:CcComponentThumb) : void + { + var _loc3_:CcLibrary = null; + this._components.push(param1.internalId,param1); + var _loc2_:UtilHashArray = this._componentsByType.getValueByKey(param1.type); + if(_loc2_ == null) + { + _loc2_ = new UtilHashArray(); + this._componentsByType.push(param1.type,_loc2_); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(param1.type) > -1) + { + _loc3_ = new CcLibrary(); + _loc3_.type = param1.type; + this.addLibrary(_loc3_); + } + } + _loc2_.push(param1.internalId,param1); + } + + public function getComponentThumbByType(param1:String) : UtilHashArray + { + return this._componentsByType.getValueByKey(param1); + } + + public function deserialize(param1:XML, param2:String, param3:CcTheme = null) : void + { + var _loc4_:XML = null; + var _loc5_:XML = null; + var _loc6_:CcComponentThumb = null; + var _loc7_:CcAction = null; + this._themeId = param2; + this._id = param1.@id; + this._name = param1.@name; + this._thumbnailActionId = param1.@action_thumb; + this._thumbnailFacialId = param1.@facial_thumb; + this._thumbnailPath = param1.@thumb_path; + this._bodyType = param1.@tag; + this._enable = param1.@enable == "N"?false:true; + this._defaultCharXml = param1.child("default_char"); + for each(_loc5_ in param1.child(CcComponentThumb.XML_NODE_NAME)) + { + _loc6_ = new CcComponentThumb(); + _loc6_.deSerialize(_loc5_,this.themeId,CcComponentThumb.PARENT_TYPE_BODYSHAPE,this.id); + this.addComponentThumb(_loc6_); + } + for each(_loc5_ in param1.child(CcAction.XML_NODE_NAME)) + { + if(_loc5_.@enable != "N") + { + _loc7_ = new CcAction(); + _loc7_.deserialize(_loc5_); + this.addAction(_loc7_); + } + } + for each(_loc4_ in param1.child(CcAction.PACK_XML_NODE_NAME)) + { + if(_loc4_.@is_premium != "Y" && _loc4_.@enable == "Y") + { + for each(_loc5_ in _loc4_.child(CcAction.XML_NODE_NAME)) + { + if(!(_loc5_.hasOwnProperty("@group") && _loc5_.@name != "1")) + { + _loc7_ = new CcAction(); + _loc7_.deserialize(_loc5_); + this.addAction(_loc7_); + } + } + } + } + for each(_loc5_ in param1.child(CcLibrary.XML_NODE_NAME)) + { + _loc6_ = new CcComponentThumb(); + _loc6_.deSerialize(_loc5_,this.themeId,CcComponentThumb.PARENT_TYPE_BODYSHAPE,this.id); + this.addComponentThumb(_loc6_); + } + } + } +} diff --git a/scripts/anifire/creator/models/CcCharacter.as b/scripts/anifire/creator/models/CcCharacter.as new file mode 100644 index 0000000..259fe11 --- /dev/null +++ b/scripts/anifire/creator/models/CcCharacter.as @@ -0,0 +1,934 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.util.UtilHashArray; + import com.adobe.crypto.MD5; + import flash.geom.Point; + + public class CcCharacter + { + + public static const XML_NODE_NAME:String = "cc_char"; + + + private var _userChosenColors:UtilHashArray; + + private var _userChosenComponents:Array; + + private var _userChosenLibraries:Array; + + private var _bodyShape:CcBodyShape; + + private var _assetId:String = ""; + + private var _templateId:String = ""; + + private var _templateMD5:String = ""; + + private var _currentTheme:CcTheme; + + private var _name:String; + + private var _createDateTime:String = ""; + + private var _tags:Array; + + private var _category:String = null; + + private var _headScaleX:Number = 1; + + private var _headScaleY:Number = 1; + + private var _headDX:Number = 0; + + private var _headDY:Number = 0; + + private var _scaleX:Number = 1; + + private var _scaleY:Number = 1; + + private var _ver:Number = 1; + + private var _isRandom:Boolean = false; + + public function CcCharacter() + { + this._userChosenColors = new UtilHashArray(); + this._userChosenComponents = new Array(); + this._userChosenLibraries = new Array(); + this._tags = new Array(); + super(); + } + + public static function getComponentScaling(param1:String) : Number + { + if(param1 == "female") + { + return CcLibConstant.COMPONENT_SCALE_FEMALE; + } + return CcLibConstant.COMPONENT_SCALE_MALE; + } + + public function get isRandom() : Boolean + { + return this._isRandom; + } + + public function set isRandom(param1:Boolean) : void + { + this._isRandom = param1; + } + + public function get category() : String + { + var _loc1_:String = null; + var _loc2_:String = null; + var _loc3_:int = 0; + if(this._category == null) + { + _loc1_ = "_category_"; + this._category = ""; + _loc3_ = 0; + while(_loc3_ < this.tags.length) + { + _loc2_ = this.tags[_loc3_] as String; + if(_loc2_.substr(0,_loc1_.length) == _loc1_) + { + this._category = _loc2_.substr(_loc1_.length); + break; + } + _loc3_++; + } + } + return this._category; + } + + public function get tags() : Array + { + return this._tags; + } + + public function get name() : String + { + return this._name; + } + + public function set currentTheme(param1:CcTheme) : void + { + this._currentTheme = param1; + } + + public function get currentTheme() : CcTheme + { + return this._currentTheme; + } + + public function get templateId() : String + { + return this._templateId; + } + + public function get copiedFromTemplate() : Boolean + { + return this._templateId != ""; + } + + public function markAsTemplate() : void + { + this._templateId = this.assetId; + this._templateMD5 = MD5.hash(this.serialize()); + } + + public function isTemplateModified() : Boolean + { + return this.copiedFromTemplate && this._templateMD5 != MD5.hash(this.serialize()); + } + + public function get assetId() : String + { + return this._assetId; + } + + public function set assetId(param1:String) : void + { + this._assetId = param1; + } + + public function set bodyShape(param1:CcBodyShape) : void + { + this._bodyShape = param1; + } + + public function get bodyShape() : CcBodyShape + { + return this._bodyShape; + } + + public function get createDateTime() : String + { + return this._createDateTime; + } + + public function get thumbnailActionId() : String + { + return this.bodyShape.thumbnailActionId; + } + + public function set headScale(param1:Point) : void + { + this._headScaleX = param1.x; + this._headScaleY = param1.y; + } + + public function get headScale() : Point + { + return new Point(this._headScaleX,this._headScaleY); + } + + public function set bodyScale(param1:Point) : void + { + this._scaleX = param1.x; + this._scaleY = param1.y; + } + + public function get bodyScale() : Point + { + return new Point(this._scaleX,this._scaleY); + } + + public function set headShift(param1:Point) : void + { + this._headDX = param1.x; + this._headDY = param1.y; + } + + public function get headShift() : Point + { + return new Point(this._headDX,this._headDY); + } + + public function set ver(param1:Number) : void + { + this._ver = param1; + } + + public function get ver() : Number + { + return this._ver; + } + + public function clone() : CcCharacter + { + var _loc1_:int = 0; + var _loc3_:CcColor = null; + var _loc4_:CcComponent = null; + var _loc5_:CcLibrary = null; + var _loc2_:CcCharacter = new CcCharacter(); + _loc2_.currentTheme = this.currentTheme; + _loc2_.assetId = this.assetId; + _loc2_.bodyShape = this.bodyShape; + _loc2_._name = this._name; + _loc2_._tags = this.tags.slice(); + _loc2_.ver = this._ver; + _loc2_._templateId = this._templateId; + _loc2_._templateMD5 = this._templateMD5; + _loc1_ = 0; + while(_loc1_ < this.getUserChosenColorNum()) + { + _loc3_ = this.getUserChosenColorByIndex(_loc1_); + _loc2_.addUserChosenColor(_loc3_.clone()); + _loc1_++; + } + _loc1_ = 0; + while(_loc1_ < this.getUserChosenComponentSize()) + { + _loc4_ = this.getUserChosenComponentByIndex(_loc1_); + _loc2_.addUserChosenComponent(_loc4_.clone()); + _loc1_++; + } + _loc1_ = 0; + while(_loc1_ < this.getUserChosenLibraryNum()) + { + _loc5_ = this.getUserChosenLibraryByIndex(_loc1_); + _loc2_.addUserChosenLibrary(_loc5_.clone()); + _loc1_++; + } + _loc2_.bodyScale = this.bodyScale; + _loc2_.headScale = this.headScale; + _loc2_.headShift = this.headShift; + return _loc2_; + } + + public function cloneFromSourceToMe(param1:CcCharacter) : void + { + var _loc2_:int = 0; + this.currentTheme = param1.currentTheme; + this.removeAllUserChosenComponent(); + _loc2_ = 0; + while(_loc2_ < param1.getUserChosenComponentSize()) + { + this.addUserChosenComponent(param1.getUserChosenComponentByIndex(_loc2_)); + _loc2_++; + } + this.removeAllUserChosenColors(); + _loc2_ = 0; + while(_loc2_ < param1.getUserChosenColorNum()) + { + this.addUserChosenColor(param1.getUserChosenColorByIndex(_loc2_)); + _loc2_++; + } + this.removeAllUserChosenLibraries(); + _loc2_ = 0; + while(_loc2_ < param1.getUserChosenLibraryNum()) + { + this.addUserChosenLibrary(param1.getUserChosenLibraryByIndex(_loc2_)); + _loc2_++; + } + this.bodyShape = param1.bodyShape; + this.assetId = param1.assetId; + this._name = param1._name; + this._tags = param1.tags.slice(); + this._ver = param1.ver; + this._templateId = param1._templateId; + this._templateMD5 = param1._templateMD5; + this.bodyScale = param1.bodyScale; + this.headScale = param1.headScale; + this.headShift = param1.headShift; + } + + public function getUserChosenLibraryByIndex(param1:Number) : CcLibrary + { + return this._userChosenLibraries[param1]; + } + + public function getUserChosenLibraryNum() : Number + { + return this._userChosenLibraries.length; + } + + public function removeAllUserChosenLibraries() : void + { + this._userChosenLibraries.splice(0,this._userChosenLibraries.length); + } + + public function addUserChosenLibrary(param1:CcLibrary) : void + { + this.removeUserChosenLibraryByType(param1.type); + this._userChosenLibraries.push(param1); + } + + public function getUserChosenLibraryByType(param1:String) : CcLibrary + { + var _loc3_:CcLibrary = null; + var _loc2_:int = this._userChosenLibraries.length - 1; + while(_loc2_ >= 0) + { + _loc3_ = this._userChosenLibraries[_loc2_] as CcLibrary; + if(_loc3_.type == param1) + { + return _loc3_; + } + _loc2_--; + } + return null; + } + + public function removeUserChosenLibraryByType(param1:String) : void + { + var _loc3_:CcLibrary = null; + var _loc2_:int = this._userChosenLibraries.length - 1; + while(_loc2_ >= 0) + { + _loc3_ = this._userChosenLibraries[_loc2_] as CcLibrary; + if(_loc3_.type == param1) + { + this._userChosenLibraries.splice(_loc2_,1); + } + _loc2_--; + } + } + + public function addUserChosenColor(param1:CcColor) : void + { + var _loc2_:String = null; + if(param1.ccComponent != null && CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1.ccColorThumb.componentType) > -1) + { + _loc2_ = param1.ccComponent.id + param1.ccColorThumb.internalId; + } + else + { + _loc2_ = param1.ccColorThumb.internalId; + } + this._userChosenColors.push(_loc2_,param1); + } + + public function getUserChosenColorNum() : Number + { + return this._userChosenColors.length; + } + + public function getUserChosenColorByColorReference(param1:String) : CcColor + { + var _loc2_:CcColor = null; + var _loc3_:int = 0; + while(_loc3_ < this._userChosenColors.length) + { + _loc2_ = this._userChosenColors.getValueByIndex(_loc3_) as CcColor; + if(_loc2_.ccColorThumb.colorReference == param1) + { + return _loc2_; + } + _loc3_++; + } + return null; + } + + public function getUserChosenColorByComponentType(param1:String) : Array + { + var _loc3_:CcColor = null; + var _loc2_:Array = new Array(); + var _loc4_:int = 0; + while(_loc4_ < this._userChosenColors.length) + { + _loc3_ = this._userChosenColors.getValueByIndex(_loc4_) as CcColor; + if(_loc3_.ccColorThumb.componentType == param1) + { + _loc2_.push(_loc3_); + } + _loc4_++; + } + return _loc2_; + } + + public function getUserChosenColorByIndex(param1:int) : CcColor + { + return this._userChosenColors.getValueByIndex(param1); + } + + public function removeUserChosenColorByIndex(param1:int) : void + { + this._userChosenColors.remove(param1,1); + } + + public function removeAllUserChosenColors() : void + { + this._userChosenColors.removeAll(); + } + + public function getUserChosenComponentSize() : Number + { + return this._userChosenComponents.length; + } + + public function getUserChosenComponentByIndex(param1:int) : CcComponent + { + return this._userChosenComponents[param1] as CcComponent; + } + + public function getUserChosenComponentByComponentType(param1:String) : Array + { + var _loc3_:CcComponent = null; + var _loc2_:Array = new Array(); + var _loc4_:int = 0; + while(_loc4_ < this._userChosenComponents.length) + { + _loc3_ = this._userChosenComponents[_loc4_] as CcComponent; + if(_loc3_.componentThumb.type == param1) + { + _loc2_.push(_loc3_); + } + _loc4_++; + } + return _loc2_; + } + + public function addUserChosenComponent(param1:CcComponent) : void + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1.componentThumb.type) == -1) + { + this.removeUserChosenComponentByType(param1.componentThumb.type); + } + this._userChosenComponents.push(param1); + } + + public function getFacialByFacialId(param1:String) : CcFacial + { + return this.currentTheme.getFacialById(param1); + } + + public function calculateGobuck() : Number + { + var _loc1_:CcComponent = null; + var _loc2_:CcLibrary = null; + var _loc3_:Number = 0; + var _loc4_:int = 0; + _loc4_ = 0; + while(_loc4_ < this.getUserChosenComponentSize()) + { + _loc1_ = this.getUserChosenComponentByIndex(_loc4_); + _loc3_ = _loc3_ + _loc1_.componentThumb.money; + _loc4_++; + } + _loc4_ = 0; + while(_loc4_ < this.getUserChosenLibraryNum()) + { + _loc2_ = this.getUserChosenLibraryByIndex(_loc4_); + _loc3_ = _loc3_ + _loc2_.money; + _loc4_++; + } + return _loc3_; + } + + public function calculateGoPoint() : Number + { + var _loc1_:CcComponent = null; + var _loc2_:CcLibrary = null; + var _loc3_:Number = 0; + var _loc4_:int = 0; + while(_loc4_ < this.getUserChosenComponentSize()) + { + _loc1_ = this.getUserChosenComponentByIndex(_loc4_); + _loc3_ = _loc3_ + _loc1_.componentThumb.sharingPoint; + _loc4_++; + } + _loc4_ = 0; + while(_loc4_ < this.getUserChosenLibraryNum()) + { + _loc2_ = this.getUserChosenLibraryByIndex(_loc4_); + _loc3_ = _loc3_ + _loc2_.sharingPoint; + _loc4_++; + } + return _loc3_; + } + + private function addBodyShapeThumb() : void + { + } + + public function removeUserChosenComponentByType(param1:String) : void + { + var _loc4_:CcLibrary = null; + var _loc5_:CcComponent = null; + var _loc2_:int = this._userChosenLibraries.length - 1; + while(_loc2_ >= 0) + { + _loc4_ = this._userChosenLibraries[_loc2_] as CcLibrary; + if(_loc4_.type == param1) + { + this._userChosenLibraries.splice(_loc2_,1); + } + _loc2_--; + } + var _loc3_:int = this._userChosenComponents.length - 1; + while(_loc3_ >= 0) + { + _loc5_ = this._userChosenComponents[_loc3_] as CcComponent; + if(_loc5_.componentThumb.type == param1) + { + this._userChosenComponents.splice(_loc3_,1); + } + _loc3_--; + } + } + + public function removeUserChosenComponentById(param1:String) : void + { + var _loc4_:CcComponent = null; + var _loc5_:CcColor = null; + var _loc2_:int = this._userChosenComponents.length - 1; + while(_loc2_ >= 0) + { + _loc4_ = this._userChosenComponents[_loc2_] as CcComponent; + if(_loc4_.id == param1) + { + this._userChosenComponents.splice(_loc2_,1); + } + _loc2_--; + } + var _loc3_:int = this._userChosenColors.length - 1; + while(_loc3_ >= 0) + { + _loc5_ = this._userChosenColors.getValueByIndex(_loc3_) as CcColor; + if(_loc5_.ccComponent != null && _loc5_.ccComponent.id == param1) + { + this._userChosenColors.remove(_loc3_,1); + } + _loc3_--; + } + } + + public function removeAllUserChosenComponent() : void + { + this._userChosenComponents.splice(0,this._userChosenComponents.length); + } + + public function transformBodyShape(param1:CcBodyShape) : void + { + var _loc2_:CcComponent = null; + var _loc3_:CcComponent = null; + var _loc4_:String = null; + var _loc5_:CcComponentThumb = null; + var _loc6_:String = null; + var _loc7_:UtilHashArray = null; + var _loc8_:CcComponentThumb = null; + if(param1.id != this.bodyShape.id) + { + this._bodyShape = param1; + _loc2_ = new CcComponent(); + _loc2_.componentThumb = CcComponentThumb.createBodyShapeComponentThumb(this.bodyShape); + this.addUserChosenComponent(_loc2_); + _loc3_ = new CcComponent(); + _loc4_ = this.ver < 2?CcLibConstant.COMPONENT_TYPE_SKELETON:CcLibConstant.COMPONENT_TYPE_FREEACTION; + _loc5_ = this.bodyShape.getComponentThumbByType(_loc4_).getValueByIndex(0) as CcComponentThumb; + _loc3_.componentThumb = _loc5_; + this.addUserChosenComponent(_loc3_); + for each(_loc6_ in CcLibConstant.USER_CHOOSE_ABLE_BODY_COMPONENT_TYPES) + { + if(_loc6_ != CcLibConstant.COMPONENT_TYPE_BODYSHAPE) + { + if(this.ver == 1) + { + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(_loc6_) > -1) + { + continue; + } + } + else + { + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(_loc6_) == -1) + { + continue; + } + if(CcLibConstant.HEAD_RELATED_LIBRARY.indexOf(_loc6_) > -1) + { + continue; + } + } + _loc7_ = new UtilHashArray(); + if(this.bodyShape.getComponentThumbByType(_loc6_)) + { + _loc8_ = this.bodyShape.getComponentThumbByType(_loc6_).getValueByIndex(0) as CcComponentThumb; + _loc7_.push(_loc8_.componentId,_loc8_); + this.randomlyChooseComponentInArray(_loc7_,this.bodyShape.bodyType); + } + } + } + } + } + + public function randomize(param1:CcTheme, param2:String, param3:CcBodyShape = null) : void + { + var _loc4_:int = 0; + var _loc5_:Boolean = false; + var _loc6_:CcCharacter = null; + if(Math.random() > CcLibConstant.PROBABILITY_RANDOM_FROM_PRE_MADE_CHAR) + { + _loc5_ = true; + } + else if(param1.preMadeChars && param1.preMadeChars.length <= 0) + { + _loc5_ = true; + } + else + { + _loc5_ = true; + if(param1.preMadeChars) + { + _loc4_ = 0; + while(_loc4_ < param1.preMadeChars.length) + { + _loc6_ = param1.preMadeChars[_loc4_] as CcCharacter; + if(_loc6_.bodyShape.bodyType == param2) + { + _loc5_ = false; + break; + } + _loc4_++; + } + } + } + if(_loc5_) + { + this.randomizeEverythingRandomlly(param1,param2,param3); + } + else + { + this.randomizeFromPreMadeChar(param1,param2); + } + this._isRandom = true; + } + + private function randomizeFromPreMadeChar(param1:CcTheme, param2:String) : void + { + var _loc4_:CcCharacter = null; + var _loc3_:Array = new Array(); + var _loc5_:int = 0; + while(_loc5_ < param1.preMadeChars.length) + { + _loc4_ = param1.preMadeChars[_loc5_] as CcCharacter; + if(_loc4_.bodyShape.bodyType == param2 && CcLibConstant.CHAR_TAG_MATCH_CURR_THEME(_loc4_.tags)) + { + _loc3_.push(_loc4_); + } + _loc5_++; + } + var _loc6_:int = Math.floor(Math.random() * _loc3_.length); + _loc4_ = _loc3_[_loc6_] as CcCharacter; + _loc4_.markAsTemplate(); + var _loc7_:UtilHashArray = new UtilHashArray(); + _loc7_.push(param1.id,param1); + this.cloneFromSourceToMe(_loc4_); + this.assetId = ""; + } + + private function randomizeEverythingRandomlly(param1:CcTheme, param2:String, param3:CcBodyShape = null) : void + { + var _loc4_:String = null; + var _loc5_:UtilHashArray = null; + var _loc6_:CcComponentThumb = null; + var _loc7_:CcColorThumb = null; + var _loc8_:CcColor = null; + var _loc10_:int = 0; + var _loc13_:CcComponentThumb = null; + var _loc14_:Number = NaN; + var _loc9_:Array = param1.getBodyShapesByShapeType(param2); + this._currentTheme = param1; + this.removeAllUserChosenColors(); + this.removeAllUserChosenComponent(); + this.removeAllUserChosenLibraries(); + _loc10_ = 0; + while(_loc10_ < param1.getColorThumbNum()) + { + _loc7_ = param1.getColorThumbByIndex(_loc10_); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc7_.componentType) == -1) + { + _loc8_ = new CcColor(); + _loc8_.ccColorThumb = _loc7_; + _loc8_.colorValue = _loc7_.colorChoices[Math.floor(Math.random() * _loc7_.colorChoices.length)]; + this.addUserChosenColor(_loc8_); + } + _loc10_++; + } + if(param3 == null) + { + this._bodyShape = _loc9_[Math.floor(Math.random() * _loc9_.length)] as CcBodyShape; + } + else + { + this._bodyShape = param3; + } + var _loc11_:CcComponent = new CcComponent(); + _loc11_.componentThumb = CcComponentThumb.createBodyShapeComponentThumb(this.bodyShape); + this.addUserChosenComponent(_loc11_); + var _loc12_:CcComponent = new CcComponent(); + switch(this.ver) + { + case 2: + _loc13_ = this.bodyShape.getComponentThumbByType(CcLibConstant.COMPONENT_TYPE_FREEACTION).getValueByIndex(0) as CcComponentThumb; + break; + default: + _loc13_ = this.bodyShape.getComponentThumbByType(CcLibConstant.COMPONENT_TYPE_SKELETON).getValueByIndex(0) as CcComponentThumb; + } + _loc12_.componentThumb = _loc13_; + this.addUserChosenComponent(_loc12_); + for each(_loc4_ in CcLibConstant.USER_CHOOSE_ABLE_BODY_COMPONENT_TYPES) + { + _loc14_ = CcLibConstant.GET_COMPONENT_TYPE_OCCURANCE_PROBABILITY(_loc4_); + if(Math.random() < _loc14_) + { + _loc5_ = this.bodyShape.getComponentThumbByType(_loc4_); + this.randomlyChooseComponentInArray(_loc5_,this.bodyShape.bodyType); + } + } + for each(_loc4_ in CcLibConstant.USER_CHOOSE_ABLE_HEAD_COMPONENT_TYPES) + { + _loc14_ = CcLibConstant.GET_COMPONENT_TYPE_OCCURANCE_PROBABILITY(_loc4_); + if(Math.random() < _loc14_) + { + _loc5_ = param1.getComponentThumbByType(_loc4_); + this.randomlyChooseComponentInArray(_loc5_,this.bodyShape.bodyType); + } + } + } + + private function randomlyChooseComponentInArray(param1:UtilHashArray, param2:String) : void + { + var _loc3_:int = 0; + var _loc4_:CcComponentThumb = null; + var _loc5_:CcComponent = null; + var _loc6_:CcColorThumb = null; + var _loc7_:CcColor = null; + var _loc8_:CcLibrary = null; + if(param1 != null && param1.length > 0) + { + param1 = param1.clone(); + _loc3_ = param1.length - 1; + while(_loc3_ >= 0) + { + _loc4_ = param1.getValueByIndex(_loc3_) as CcComponentThumb; + if(!_loc4_.is_randomable || !_loc4_.enable) + { + param1.remove(_loc3_,1); + } + _loc3_--; + } + _loc4_ = param1.getValueByIndex(Math.random() * param1.length) as CcComponentThumb; + _loc5_ = new CcComponent(); + _loc5_.xscale = _loc5_.yscale = CcCharacter.getComponentScaling(param2); + _loc5_.componentThumb = _loc4_; + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(_loc4_.type) > -1) + { + _loc8_ = new CcLibrary(); + _loc8_.type = _loc4_.type; + _loc8_.theme_id = _loc4_.themeId; + _loc8_.component_id = _loc4_.componentId; + _loc8_.money = _loc4_.money; + _loc8_.sharingPoint = _loc4_.sharingPoint; + this.addUserChosenLibrary(_loc8_); + } + else + { + this.addUserChosenComponent(_loc5_); + } + _loc3_ = 0; + while(_loc3_ < _loc4_.getMyOwnColorNum()) + { + _loc6_ = _loc4_.getMyOwnColorByIndex(_loc3_); + _loc7_ = new CcColor(); + _loc7_.ccColorThumb = _loc6_; + _loc7_.colorValue = _loc6_.defaultColor; + this.addUserChosenColor(_loc7_); + _loc3_++; + } + } + } + + public function serialize() : String + { + var _loc1_:int = 0; + var _loc2_:* = "<" + XML_NODE_NAME + " xscale=\'" + this._scaleX + "\' yscale=\'" + this._scaleY + "\' hxscale=\'" + this._headScaleX + "\' hyscale=\'" + this._headScaleY + "\' headdx=\'" + this._headDX + "\' headdy=\'" + this._headDY + "\'>"; + _loc1_ = 0; + while(_loc1_ < this.getUserChosenColorNum()) + { + _loc2_ = _loc2_ + this.getUserChosenColorByIndex(_loc1_).serialize(); + _loc1_++; + } + _loc1_ = 0; + while(_loc1_ < this.getUserChosenComponentSize()) + { + _loc2_ = _loc2_ + this.getUserChosenComponentByIndex(_loc1_).serialize(); + _loc1_++; + } + _loc1_ = 0; + while(_loc1_ < this.getUserChosenLibraryNum()) + { + _loc2_ = _loc2_ + this.getUserChosenLibraryByIndex(_loc1_).serialize(); + _loc1_++; + } + _loc2_ = _loc2_ + (""); + return _loc2_; + } + + public function deserialize(param1:XML, param2:UtilHashArray) : void + { + var _loc3_:XML = null; + var _loc4_:CcComponent = null; + var _loc5_:CcColor = null; + var _loc6_:CcLibrary = null; + var _loc7_:String = null; + var _loc8_:String = null; + var _loc9_:String = null; + var _loc10_:String = null; + var _loc11_:CcComponent = null; + var _loc12_:CcComponentThumb = null; + this._assetId = param1.@aid; + this._name = param1.@name; + this._createDateTime = param1.@create || ""; + if(param1.@tags != null) + { + _loc7_ = param1.@tags; + this._tags = _loc7_.split(","); + } + else + { + this._tags = new Array(); + } + if(param1.@xscale > 0 && param1.@yscale > 0) + { + this._scaleX = Number(param1.@xscale); + this._scaleY = Number(param1.@yscale); + } + if(param1.@hxscale > 0 && param1.@hyscale > 0) + { + this._headScaleX = Number(param1.@hxscale); + this._headScaleY = Number(param1.@hyscale); + } + this._headDX = param1.@headdx != 0?Number(Number(param1.@headdx)):Number(0); + this._headDY = param1.@headdy != 0?Number(Number(param1.@headdy)):Number(0); + this.removeAllUserChosenComponent(); + for each(_loc3_ in param1.child(CcComponent.XML_NODE_NAME)) + { + _loc8_ = CcComponent.getComponentThumbTypeFromXml(_loc3_); + if(_loc8_ == CcLibConstant.COMPONENT_TYPE_BODYSHAPE) + { + _loc9_ = CcComponent.getComponentThemeIdFromXml(_loc3_); + _loc10_ = CcComponent.getComponentIdFromXml(_loc3_); + this._bodyShape = (param2.getValueByKey(_loc9_) as CcTheme).getBodyShapeByShapeId(_loc10_); + this.currentTheme = param2.getValueByKey(_loc9_) as CcTheme; + _loc11_ = new CcComponent(); + _loc11_.componentThumb = CcComponentThumb.createBodyShapeComponentThumb(this.bodyShape); + this.addUserChosenComponent(_loc11_); + } + else + { + _loc4_ = new CcComponent(); + _loc4_.deserialize(_loc3_,param2); + this.addUserChosenComponent(_loc4_); + } + } + this.removeAllUserChosenColors(); + for each(_loc3_ in param1.child(CcColor.XML_NODE_NAME)) + { + _loc5_ = new CcColor(); + if(_loc5_.deserialize(_loc3_,this.currentTheme,this)) + { + this.addUserChosenColor(_loc5_); + } + } + this.removeAllUserChosenLibraries(); + for each(_loc3_ in param1.child(CcLibrary.XML_NODE_NAME)) + { + _loc6_ = new CcLibrary(); + _loc12_ = this.currentTheme.getComponentThumbByInternalId(CcComponentThumb.generateInternalId(_loc3_.@type,_loc3_.@component_id)); + if(_loc12_) + { + _loc3_.@money = _loc12_.money; + _loc3_.@sharing = _loc12_.sharingPoint; + } + _loc6_.deserialize(_loc3_); + this.addUserChosenLibrary(_loc6_); + } + if(this.getUserChosenLibraryNum() > 0) + { + this.ver = 2; + } + else + { + this.ver = 1; + } + } + + public function getComponentTypeOrdering() : Array + { + if(this._ver == 1) + { + return CcLibConstant.COMPONENT_TYPE_CHOOSER_ORDERING_VER1; + } + if(this._ver == 2) + { + return CcLibConstant.COMPONENT_TYPE_CHOOSER_ORDERING_VER2; + } + return null; + } + } +} diff --git a/scripts/anifire/creator/models/CcColor.as b/scripts/anifire/creator/models/CcColor.as new file mode 100644 index 0000000..53eb89f --- /dev/null +++ b/scripts/anifire/creator/models/CcColor.as @@ -0,0 +1,65 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.util.UtilUnitConvert; + import anifire.util.UtilXmlInfo; + + public class CcColor + { + + public static const XML_NODE_NAME:String = "color"; + + + public var ccColorThumb:CcColorThumb; + + public var colorValue:uint; + + public var ccComponent:CcComponent; + + public function CcColor() + { + super(); + } + + public function clone() : CcColor + { + var _loc1_:CcColor = new CcColor(); + _loc1_.ccColorThumb = this.ccColorThumb; + _loc1_.colorValue = this.colorValue; + _loc1_.ccComponent = this.ccComponent; + return _loc1_; + } + + public function serialize() : String + { + var _loc1_:* = ""; + if(!(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(this.ccColorThumb.componentType) > -1 && this.ccComponent == null)) + { + _loc1_ = "" + UtilUnitConvert.uintToColorHexString(this.colorValue) + ""; + } + return _loc1_; + } + + public function deserialize(param1:XML, param2:CcTheme, param3:CcCharacter) : Boolean + { + this.colorValue = uint(Number(param1.toString())); + this.ccColorThumb = param2.getColorThumbByInternalId(CcColorThumb.generateInternalId(param1.@r)); + var _loc4_:Number = param3.getUserChosenComponentSize(); + var _loc5_:int = 0; + while(_loc5_ < _loc4_) + { + if(param3.getUserChosenComponentByIndex(_loc5_).id == param1.@targetComponent) + { + this.ccComponent = param3.getUserChosenComponentByIndex(_loc5_); + break; + } + _loc5_++; + } + if(!this.ccColorThumb) + { + return false; + } + return true; + } + } +} diff --git a/scripts/anifire/creator/models/CcColorThumb.as b/scripts/anifire/creator/models/CcColorThumb.as new file mode 100644 index 0000000..9cd5460 --- /dev/null +++ b/scripts/anifire/creator/models/CcColorThumb.as @@ -0,0 +1,154 @@ +package anifire.creator.models +{ + public class CcColorThumb + { + + public static const XML_NODE_NAME:String = "color"; + + public static const XML_CHOICE_NODE_NAME:String = "choice"; + + + private var _colorReference:String; + + private var _originalColor:uint; + + private var _isOriginalColorExist:Boolean; + + private var _componentType:String; + + private var _enable:Boolean; + + private var _defaultColor:uint; + + private var _colorChoices:Array; + + private var _parentComponentType:String; + + private var _parentComponentColorRef:String; + + public function CcColorThumb() + { + this._colorChoices = new Array(); + super(); + } + + static function generateInternalId(param1:String) : String + { + return param1; + } + + public function parentComponentType() : String + { + return this._parentComponentType; + } + + public function parentComponentColorRef() : String + { + return this._parentComponentColorRef; + } + + public function get colorReference() : String + { + return this._colorReference; + } + + public function set colorReference(param1:String) : void + { + this._colorReference = param1; + } + + public function get originalColor() : uint + { + return this._originalColor; + } + + public function set originalColor(param1:uint) : void + { + this._originalColor = param1; + } + + public function get componentType() : String + { + return this._componentType; + } + + public function set componentType(param1:String) : void + { + this._componentType = param1; + } + + public function get enable() : Boolean + { + return this._enable; + } + + public function set enable(param1:Boolean) : void + { + this._enable = param1; + } + + public function get defaultColor() : uint + { + return this._defaultColor; + } + + public function set defaultColor(param1:uint) : void + { + this._defaultColor = param1; + } + + public function get isOriginalColorExist() : Boolean + { + return this._isOriginalColorExist; + } + + public function get internalId() : String + { + return generateInternalId(this.colorReference); + } + + public function get colorChoices() : Array + { + return this._colorChoices; + } + + public function deSerialize(param1:XML, param2:String = null) : void + { + var _loc3_:XML = null; + this.colorReference = param1.@r; + if(param1.attribute("oc").length() > 0) + { + this._isOriginalColorExist = true; + this.originalColor = param1.@oc; + } + else + { + this._isOriginalColorExist = false; + } + if(param2 == null) + { + this.componentType = param1.attribute("component_type").length() > 0?param1.@component_type:null; + } + else + { + this.componentType = param2; + } + this.enable = param1.@enable == "N"?false:true; + this.defaultColor = param1.@§default§; + if(param1.attribute("parent_component_type").length() > 0 && param1.attribute("parent_color_r").length() > 0) + { + this._parentComponentType = param1.@parent_component_type; + this._parentComponentColorRef = param1.@parent_color_r; + } + else + { + this._parentComponentType = null; + this._parentComponentColorRef = null; + } + for each(_loc3_ in param1.child(XML_CHOICE_NODE_NAME)) + { + this._colorChoices.push(uint(Number(_loc3_.toString()))); + } + } + } +} diff --git a/scripts/anifire/creator/models/CcComponent.as b/scripts/anifire/creator/models/CcComponent.as new file mode 100644 index 0000000..0caad46 --- /dev/null +++ b/scripts/anifire/creator/models/CcComponent.as @@ -0,0 +1,253 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.util.Util; + import anifire.util.UtilHashArray; + + public class CcComponent + { + + public static const XML_NODE_NAME:String = "component"; + + public static const XML_TAG_NODE_NAME:String = "tag"; + + public static const XML_TEMPLATE_NAME:String = "apply-template"; + + + public var id:String; + + private var _x:Number = 0; + + private var _y:Number = 0; + + private var _xscale:Number = 1; + + private var _yscale:Number = 1; + + private var _offset:Number = 0; + + private var _rotation:Number = 0; + + private const _max:Number = 100; + + private const _min:Number = -100; + + private const _maxScale:Number = 10; + + private const _minScale:Number = -10; + + private const _maxRotate:Number = 180; + + private const _minRotate:Number = -180; + + private var _split:Boolean = true; + + public var componentThumb:CcComponentThumb; + + public function CcComponent() + { + super(); + this.id = "ID" + Math.round(Math.random() * 10000); + } + + public static function getIdFromXml(param1:XML) : String + { + return param1.@id; + } + + public static function getComponentThumbTypeFromXml(param1:XML) : String + { + return param1.@type; + } + + public static function getComponentThemeIdFromXml(param1:XML) : String + { + return param1.@theme_id; + } + + public static function getComponentIdFromXml(param1:XML) : String + { + return param1.@component_id; + } + + public function get split() : Boolean + { + if(this.componentThumb) + { + return this.componentThumb.split; + } + return this._split; + } + + public function set split(param1:Boolean) : void + { + this._split = param1; + } + + public function clone() : CcComponent + { + var _loc1_:CcComponent = new CcComponent(); + _loc1_.x = this.x; + _loc1_.y = this.y; + _loc1_.xscale = this.xscale; + _loc1_.yscale = this.yscale; + _loc1_.offset = this.offset; + _loc1_.rotation = this.rotation; + _loc1_.split = this.split; + _loc1_.componentThumb = this.componentThumb; + _loc1_.id = this.id; + return _loc1_; + } + + public function set x(param1:Number) : void + { + this._x = param1; + if(this._x > this._max) + { + this._x = this._max; + } + if(this._x < this._min) + { + this._x = this._min; + } + } + + public function get x() : Number + { + return this._x; + } + + public function set y(param1:Number) : void + { + this._y = param1; + if(this._y > this._max) + { + this._y = this._max; + } + if(this._y < this._min) + { + this._y = this._min; + } + } + + public function get y() : Number + { + return this._y; + } + + public function set xscale(param1:Number) : void + { + this._xscale = param1; + if(this._xscale > this._maxScale) + { + this._xscale = this._maxScale; + } + if(this._xscale < this._minScale) + { + this._xscale = this._minScale; + } + this._xscale = Util.roundNum(this._xscale,2); + } + + public function get xscale() : Number + { + return this._xscale; + } + + public function set yscale(param1:Number) : void + { + this._yscale = param1; + if(this._yscale > this._maxScale) + { + this._yscale = this._maxScale; + } + if(this._yscale < this._minScale) + { + this._yscale = this._minScale; + } + this._yscale = Util.roundNum(this._yscale,2); + } + + public function get yscale() : Number + { + return this._yscale; + } + + public function set offset(param1:Number) : void + { + this._offset = param1; + if(this._offset > this._max) + { + this._offset = this._max; + } + if(this._offset < this._min) + { + this._offset = this._min; + } + } + + public function get offset() : Number + { + return this._offset; + } + + public function set rotation(param1:Number) : void + { + this._rotation = param1; + if(this._rotation > this._maxRotate) + { + this._rotation = this._maxRotate; + } + if(this._rotation < this._minRotate) + { + this._rotation = this._minRotate; + } + } + + public function get rotation() : Number + { + return this._rotation; + } + + public function get userChosenComponentId() : String + { + return this.componentThumb.componentId; + } + + public function serialize() : String + { + var _loc1_:String = CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(this.componentThumb.type) > -1?" id=\"" + this.id + "\"":""; + var _loc2_:String = ""; + if(!this.split) + { + _loc2_ = " split=\"N\""; + } + var _loc3_:* = "<" + XML_NODE_NAME + _loc1_ + " type=\"" + this.componentThumb.type + "\"" + " component_id=\"" + this.componentThumb.componentId + "\"" + " theme_id=\"" + this.componentThumb.themeId + "\"" + " x=\"" + this.x + "\"" + " y=\"" + this.y + "\"" + " xscale=\"" + this.xscale + "\"" + " yscale=\"" + this.yscale + "\"" + " offset=\"" + this.offset + "\"" + " rotation=\"" + this.rotation + "\"" + _loc2_ + "/>"; + return _loc3_; + } + + public function deserialize(param1:XML, param2:UtilHashArray) : void + { + this.id = getIdFromXml(param1); + var _loc3_:String = getComponentThemeIdFromXml(param1); + var _loc4_:String = getComponentThumbTypeFromXml(param1); + var _loc5_:String = getComponentIdFromXml(param1); + var _loc6_:CcTheme = param2.getValueByKey(_loc3_) as CcTheme; + if(CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(_loc4_) >= 0) + { + this.componentThumb = _loc6_.getComponentThumbWithinBodyshapeByType(_loc4_).getValueByKey(CcComponentThumb.generateInternalId(_loc4_,_loc5_)) as CcComponentThumb; + } + else + { + this.componentThumb = _loc6_.getComponentThumbByType(_loc4_).getValueByKey(CcComponentThumb.generateInternalId(_loc4_,_loc5_)) as CcComponentThumb; + } + this.x = param1.@x; + this.y = param1.@y; + this.xscale = param1.@xscale; + this.yscale = param1.@yscale; + this.offset = param1.@offset; + this.rotation = param1.@rotation; + this.split = String(param1.@split) == "N"?false:true; + } + } +} diff --git a/scripts/anifire/creator/models/CcComponentThumb.as b/scripts/anifire/creator/models/CcComponentThumb.as new file mode 100644 index 0000000..07fbf23 --- /dev/null +++ b/scripts/anifire/creator/models/CcComponentThumb.as @@ -0,0 +1,352 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcComponentLoadEvent; + import anifire.util.UtilCrypto; + import anifire.util.UtilHashArray; + import anifire.util.UtilNetwork; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.utils.ByteArray; + + public class CcComponentThumb extends EventDispatcher + { + + public static const XML_NODE_NAME:String = "component"; + + public static const PARENT_TYPE_THEME:int = 0; + + public static const PARENT_TYPE_BODYSHAPE:int = 0; + + + private var _type:String; + + private var _componentId:String; + + private var _path:String; + + private var _name:String; + + private var _thumbnailFilename:String; + + private var _money:Number; + + private var _sharingPoint:Number; + + private var _enable:Boolean; + + private var _parentType:int; + + private var _parentId:String; + + private var _is_randomable:Boolean; + + private var _display_order:int; + + private var _myOwnColors:UtilHashArray; + + private var _themeId:String; + + private var _states:UtilHashArray; + + private var _isThumbnailLoading:Boolean = false; + + private var _thumbnailImageData:ByteArray = null; + + private var _tags:Object; + + private var _split:Boolean = true; + + private var _libType:String = ""; + + private var _apply_template_id:String = ""; + + public function CcComponentThumb(param1:IEventDispatcher = null) + { + this._myOwnColors = new UtilHashArray(); + this._states = new UtilHashArray(); + this._tags = {}; + super(param1); + } + + static function generateInternalId(param1:String, param2:String) : String + { + return param1 + "_" + param2; + } + + public static function createBodyShapeComponentThumb(param1:CcBodyShape) : CcComponentThumb + { + var _loc2_:CcComponentThumb = new CcComponentThumb(); + _loc2_._type = CcLibConstant.COMPONENT_TYPE_BODYSHAPE; + _loc2_._componentId = param1.id; + _loc2_._path = param1.id; + _loc2_._name = param1.name; + _loc2_._thumbnailFilename = param1.thumbnailPath; + _loc2_._money = 0; + _loc2_._sharingPoint = 0; + _loc2_._enable = false; + _loc2_._is_randomable = true; + _loc2_.parentType = PARENT_TYPE_THEME; + _loc2_.parentId = param1.themeId; + _loc2_._themeId = param1.themeId; + return _loc2_; + } + + public function get apply_template_id() : String + { + return this._apply_template_id; + } + + public function set apply_template_id(param1:String) : void + { + this._apply_template_id = param1; + } + + public function get libType() : String + { + return this._libType; + } + + public function set libType(param1:String) : void + { + this._libType = param1; + } + + public function get split() : Boolean + { + return this._split; + } + + public function set split(param1:Boolean) : void + { + this._split = param1; + } + + public function get thumbnailImageData() : ByteArray + { + return this._thumbnailImageData; + } + + public function get type() : String + { + return this._type; + } + + public function get componentId() : String + { + return this._componentId; + } + + public function get path() : String + { + return this._path; + } + + public function get name() : String + { + return this._name; + } + + public function get thumbnailFilename() : String + { + return this._thumbnailFilename; + } + + public function get money() : Number + { + return this._money; + } + + public function get sharingPoint() : Number + { + return this._sharingPoint; + } + + public function get enable() : Boolean + { + return this._enable; + } + + public function get is_randomable() : Boolean + { + return this._is_randomable; + } + + public function get displayOrder() : int + { + return this._display_order; + } + + private function get parentId() : String + { + return this._parentId; + } + + private function set parentId(param1:String) : void + { + this._parentId = param1; + } + + private function get parentType() : int + { + return this._parentType; + } + + private function set parentType(param1:int) : void + { + this._parentType = param1; + } + + private function addMyOwnColor(param1:CcColorThumb) : void + { + this._myOwnColors.push(param1.internalId,param1); + } + + public function getMyOwnColorNum() : int + { + return this._myOwnColors.length; + } + + public function getMyOwnColorByIndex(param1:int) : CcColorThumb + { + return this._myOwnColors.getValueByIndex(param1); + } + + private function addState(param1:CcState) : void + { + this._states.push(param1.stateId,param1); + } + + public function getStateByStateId(param1:String) : CcState + { + return this._states.getValueByKey(param1) as CcState; + } + + public function get tags() : Array + { + var _loc2_:* = null; + var _loc1_:Array = []; + for(_loc2_ in this._tags) + { + _loc1_.push(_loc2_); + } + return _loc1_; + } + + public function hasTag(param1:String) : Boolean + { + return this._tags[param1]; + } + + public function get internalId() : String + { + return generateInternalId(this.type,this.componentId); + } + + public function get themeId() : String + { + return this._themeId; + } + + public function deSerialize(param1:XML, param2:String, param3:int, param4:String) : void + { + var _loc5_:XML = null; + var _loc6_:XML = null; + var _loc7_:XML = null; + var _loc8_:String = null; + var _loc9_:CcColorThumb = null; + var _loc10_:CcState = null; + this._type = param1.@type; + this._componentId = param1.@id; + this._path = param1.@path; + this._name = param1.@name; + this._thumbnailFilename = param1.@thumb; + this._money = Number(param1.@money); + this._sharingPoint = Number(param1.@sharing); + this._enable = param1.@enable == "Y"?true:false; + this._is_randomable = param1.@random_able == "N"?false:true; + this._display_order = int(param1.@display_order); + this.split = String(param1.@split) == "N"?false:true; + this.libType = CcLibConstant.GET_COMPONENT_RELATED_LIBRARY(this._type); + this.parentType = param3; + this.parentId = param4; + this._themeId = param2; + this._tags = {}; + for each(_loc5_ in param1.child(CcComponent.XML_TAG_NODE_NAME)) + { + _loc8_ = _loc5_.toString().replace(/^\s*([^\s]*)\s*$/,"$1"); + this._tags[_loc8_] = 1; + } + for each(_loc6_ in param1.child(CcColorThumb.XML_NODE_NAME)) + { + _loc9_ = new CcColorThumb(); + _loc9_.deSerialize(_loc6_,this.type); + this.addMyOwnColor(_loc9_); + } + for each(_loc7_ in param1.child(CcState.XML_NODE_NAME)) + { + _loc10_ = new CcState(); + _loc10_.deserialize(_loc7_); + this.addState(_loc10_); + } + if(param1.child(CcComponent.XML_TEMPLATE_NAME).length() > 0) + { + } + } + + public function loadStateImageData(param1:String) : void + { + var _loc2_:CcState = this.getStateByStateId(param1); + _loc2_.addEventListener(CcComponentLoadEvent.LOAD_STATE_IMAGE_DATA_COMPLETE,this.onLoadStateImageDataComplete); + _loc2_.loadImageData(UtilNetwork.getGetCcComponentStateFileRequest(this.themeId,this.type,this.path,_loc2_.filename)); + } + + private function onLoadStateImageDataComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadStateImageDataComplete); + var _loc2_:CcState = param1.target as CcState; + this.dispatchEvent(new CcComponentLoadEvent(CcComponentLoadEvent.LOAD_STATE_IMAGE_DATA_COMPLETE,this,_loc2_.stateId)); + } + + public function loadThumbnailImageData() : void + { + var _loc1_:URLLoader = null; + var _loc2_:URLRequest = null; + if(!this._isThumbnailLoading) + { + if(this.thumbnailImageData != null) + { + this.dispatchEvent(new CcComponentLoadEvent(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this,null)); + } + else + { + this._isThumbnailLoading = true; + _loc1_ = new URLLoader(); + _loc1_.addEventListener(Event.COMPLETE,this.onLoadThumbnailComplete); + _loc1_.dataFormat = URLLoaderDataFormat.BINARY; + _loc2_ = UtilNetwork.getGetCcComponentStateFileRequest(this.themeId,this.type,this.path,this.thumbnailFilename); + _loc1_.load(_loc2_); + } + } + } + + private function onLoadThumbnailComplete(param1:Event) : void + { + var _loc3_:UtilCrypto = null; + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadThumbnailComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + this._thumbnailImageData = _loc2_.data; + if(CcLibConstant.SHOULD_DECRYPT) + { + _loc3_ = new UtilCrypto(); + _loc3_.decrypt(this._thumbnailImageData); + } + this._isThumbnailLoading = false; + this.dispatchEvent(new CcComponentLoadEvent(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this,null)); + } + } +} diff --git a/scripts/anifire/creator/models/CcFacial.as b/scripts/anifire/creator/models/CcFacial.as new file mode 100644 index 0000000..f51f45f --- /dev/null +++ b/scripts/anifire/creator/models/CcFacial.as @@ -0,0 +1,81 @@ +package anifire.creator.models +{ + import anifire.util.UtilHashArray; + + public class CcFacial + { + + public static const XML_NODE_NAME:String = "facial"; + + + private var _facialId:String; + + private var _name:String; + + private var _enable:Boolean; + + private var _selections:UtilHashArray; + + private var _require_components:Array; + + public function CcFacial() + { + this._selections = new UtilHashArray(); + this._require_components = new Array(); + super(); + } + + public function get facialId() : String + { + return this._facialId; + } + + public function get name() : String + { + return this._name; + } + + public function get enable() : Boolean + { + return this._enable; + } + + public function get internalId() : String + { + return this._facialId; + } + + public function get selections() : UtilHashArray + { + return this._selections; + } + + public function get requireComponents() : Array + { + return this._require_components; + } + + public function deserialize(param1:XML) : void + { + var _loc2_:XML = null; + var _loc3_:XML = null; + var _loc4_:CcRequireComponent = null; + var _loc5_:CcSelection = null; + this._facialId = param1.@id; + this._name = param1.@name; + this._enable = param1.@enable == "N"?false:true; + for each(_loc2_ in param1.child(CcSelection.XML_NODE_NAME)) + { + _loc5_ = new CcSelection(); + _loc5_.deserialize(_loc2_); + this._selections.push(_loc5_.type,_loc5_); + } + for each(_loc3_ in param1.child("require_component")) + { + _loc4_ = new CcRequireComponent(); + _loc4_.deserialize(_loc3_); + this._require_components.push(_loc4_); + } + } + } +} diff --git a/scripts/anifire/creator/models/CcLibrary.as b/scripts/anifire/creator/models/CcLibrary.as new file mode 100644 index 0000000..2a854b3 --- /dev/null +++ b/scripts/anifire/creator/models/CcLibrary.as @@ -0,0 +1,115 @@ +package anifire.creator.models +{ + import flash.display.LoaderInfo; + import flash.events.EventDispatcher; + + public class CcLibrary extends EventDispatcher + { + + public static const XML_NODE_NAME:String = "library"; + + + private var _theme_id:String; + + private var _component_id:String; + + private var _type:String; + + private var _imagedata:LoaderInfo; + + private var _money:Number; + + private var _sharingPoint:Number; + + public function CcLibrary() + { + super(); + } + + public function get imagedata() : LoaderInfo + { + return this._imagedata; + } + + public function set imagedata(param1:LoaderInfo) : void + { + this._imagedata = param1; + } + + public function set theme_id(param1:String) : void + { + this._theme_id = param1; + } + + public function get theme_id() : String + { + return this._theme_id; + } + + public function set component_id(param1:String) : void + { + this._component_id = param1; + } + + public function get component_id() : String + { + return this._component_id; + } + + public function set type(param1:String) : void + { + this._type = param1; + } + + public function get type() : String + { + return this._type; + } + + public function get money() : Number + { + return this._money; + } + + public function set money(param1:Number) : void + { + this._money = param1; + } + + public function get sharingPoint() : Number + { + return this._sharingPoint; + } + + public function set sharingPoint(param1:Number) : void + { + this._sharingPoint = param1; + } + + public function clone() : CcLibrary + { + var _loc1_:CcLibrary = new CcLibrary(); + _loc1_.type = this.type; + _loc1_.component_id = this.component_id; + _loc1_.theme_id = this.theme_id; + _loc1_.money = this.money; + _loc1_.sharingPoint = this.sharingPoint; + return _loc1_; + } + + public function deserialize(param1:XML) : void + { + this._component_id = param1.@component_id; + this._type = param1.@type; + this._theme_id = param1.@theme_id; + this._money = param1.@money; + this._sharingPoint = param1.@sharing; + } + + public function serialize() : String + { + var _loc1_:* = "<" + XML_NODE_NAME + " type=\"" + this._type + "\"" + " component_id=\"" + this._component_id + "\"" + " theme_id=\"" + this._theme_id + "\"" + "/>"; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/models/CcRequireComponent.as b/scripts/anifire/creator/models/CcRequireComponent.as new file mode 100644 index 0000000..c3c4bef --- /dev/null +++ b/scripts/anifire/creator/models/CcRequireComponent.as @@ -0,0 +1,33 @@ +package anifire.creator.models +{ + public class CcRequireComponent + { + + + private var _componentType:String; + + private var _componentIds:Array; + + public function CcRequireComponent() + { + super(); + } + + public function get componentType() : String + { + return this._componentType; + } + + public function get componentIds() : Array + { + return this._componentIds; + } + + public function deserialize(param1:XML) : void + { + this._componentType = param1.@component_type; + var _loc2_:String = param1.toString(); + this._componentIds = _loc2_.split(","); + } + } +} diff --git a/scripts/anifire/creator/models/CcSelection.as b/scripts/anifire/creator/models/CcSelection.as new file mode 100644 index 0000000..a93d5a4 --- /dev/null +++ b/scripts/anifire/creator/models/CcSelection.as @@ -0,0 +1,42 @@ +package anifire.creator.models +{ + public class CcSelection + { + + public static const XML_NODE_NAME:String = "selection"; + + + private var _type:String; + + private var _stateId:String; + + private var _facialId:String; + + public function CcSelection() + { + super(); + } + + public function get type() : String + { + return this._type; + } + + public function get stateId() : String + { + return this._stateId; + } + + public function get facialId() : String + { + return this._facialId; + } + + public function deserialize(param1:XML) : void + { + this._type = param1.@type; + this._stateId = param1.@state_id; + this._facialId = param1.@facial_id; + } + } +} diff --git a/scripts/anifire/creator/models/CcState.as b/scripts/anifire/creator/models/CcState.as new file mode 100644 index 0000000..998155b --- /dev/null +++ b/scripts/anifire/creator/models/CcState.as @@ -0,0 +1,66 @@ +package anifire.creator.models +{ + import anifire.creator.events.CcComponentLoadEvent; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.utils.ByteArray; + + public class CcState extends EventDispatcher + { + + public static const XML_NODE_NAME:String = "state"; + + + public var stateId:String; + + public var filename:String; + + public var imageData:ByteArray = null; + + private var _isLoadingImageData:Boolean = false; + + public function CcState() + { + super(); + } + + public function deserialize(param1:XML) : void + { + this.stateId = param1.@id; + this.filename = param1.@filename; + } + + public function loadImageData(param1:URLRequest) : void + { + var _loc2_:URLLoader = null; + if(this.imageData != null) + { + this.dispatchLoadCompleteEvent(); + } + else if(!this._isLoadingImageData) + { + _loc2_ = new URLLoader(); + _loc2_.dataFormat = URLLoaderDataFormat.BINARY; + _loc2_.addEventListener(Event.COMPLETE,this.onLoadImageDataComplete); + _loc2_.load(param1); + } + } + + private function onLoadImageDataComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadImageDataComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + this.imageData = _loc2_.data as ByteArray; + this.dispatchLoadCompleteEvent(); + } + + private function dispatchLoadCompleteEvent() : void + { + this.dispatchEvent(new CcComponentLoadEvent(CcComponentLoadEvent.LOAD_STATE_IMAGE_DATA_COMPLETE,this,this.stateId)); + } + } +} diff --git a/scripts/anifire/creator/models/CcTemplate.as b/scripts/anifire/creator/models/CcTemplate.as new file mode 100644 index 0000000..02ce208 --- /dev/null +++ b/scripts/anifire/creator/models/CcTemplate.as @@ -0,0 +1,70 @@ +package anifire.creator.models +{ + import anifire.util.UtilHashArray; + + public class CcTemplate extends CcCharacter + { + + public static const XML_NODE_NAME:String = "template"; + + + private var _id:String; + + public function CcTemplate() + { + super(); + } + + public function get id() : String + { + return this._id; + } + + public function set id(param1:String) : void + { + this._id = param1; + } + + override public function deserialize(param1:XML, param2:UtilHashArray) : void + { + var _loc3_:XML = null; + var _loc4_:CcComponent = null; + var _loc5_:CcColor = null; + var _loc6_:CcLibrary = null; + var _loc7_:String = null; + var _loc8_:CcComponentThumb = null; + this.id = param1.@id; + this.removeAllUserChosenComponent(); + this.currentTheme = param2.getValueByIndex(0) as CcTheme; + for each(_loc3_ in param1.child(CcComponent.XML_NODE_NAME)) + { + _loc7_ = CcComponent.getComponentThumbTypeFromXml(_loc3_); + _loc4_ = new CcComponent(); + _loc4_.deserialize(_loc3_,param2); + this.addUserChosenComponent(_loc4_); + } + this.removeAllUserChosenColors(); + for each(_loc3_ in param1.child(CcColor.XML_NODE_NAME)) + { + _loc5_ = new CcColor(); + if(_loc5_.deserialize(_loc3_,this.currentTheme,this)) + { + this.addUserChosenColor(_loc5_); + } + } + this.removeAllUserChosenLibraries(); + for each(_loc3_ in param1.child(CcLibrary.XML_NODE_NAME)) + { + _loc6_ = new CcLibrary(); + _loc8_ = this.currentTheme.getComponentThumbByInternalId(CcComponentThumb.generateInternalId(_loc3_.@type,_loc3_.@component_id)); + if(_loc8_) + { + _loc3_.@money = _loc8_.money; + _loc3_.@sharing = _loc8_.sharingPoint; + } + _loc6_.deserialize(_loc3_); + this.addUserChosenLibrary(_loc6_); + } + } + } +} diff --git a/scripts/anifire/creator/models/CcTheme.as b/scripts/anifire/creator/models/CcTheme.as new file mode 100644 index 0000000..93cb814 --- /dev/null +++ b/scripts/anifire/creator/models/CcTheme.as @@ -0,0 +1,331 @@ +package anifire.creator.models +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcCoreEvent; + import anifire.util.UtilHashArray; + import anifire.util.UtilNetwork; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + + public class CcTheme extends EventDispatcher + { + + + private var _id:String; + + private var _studioThemeId:String; + + private var _componentThumbs:UtilHashArray; + + private var _componentsByType:UtilHashArray; + + private var _ccColors:UtilHashArray; + + private var _facials:UtilHashArray; + + private var _bodyshapes:UtilHashArray; + + private var _templates:UtilHashArray; + + private var _preMadeChars:Array; + + private var _availableLibrary:Array; + + public function CcTheme(param1:IEventDispatcher = null) + { + this._componentThumbs = new UtilHashArray(); + this._componentsByType = new UtilHashArray(); + this._ccColors = new UtilHashArray(); + this._facials = new UtilHashArray(); + this._bodyshapes = new UtilHashArray(); + this._templates = new UtilHashArray(); + this._availableLibrary = new Array(); + super(param1); + } + + public function get studioThemeId() : String + { + return this._studioThemeId; + } + + public function get preMadeChars() : Array + { + return this._preMadeChars; + } + + public function getLibraryNum() : Number + { + return this._availableLibrary.length; + } + + public function getComponentThumbByInternalId(param1:String) : CcComponentThumb + { + return this._componentThumbs.getValueByKey(param1); + } + + public function getComponentThumbByType(param1:String) : UtilHashArray + { + return this._componentsByType.getValueByKey(param1); + } + + public function getComponentThumbWithinBodyshapeByType(param1:String) : UtilHashArray + { + var _loc2_:int = 0; + var _loc3_:CcBodyShape = null; + var _loc4_:UtilHashArray = new UtilHashArray(); + _loc2_ = 0; + while(_loc2_ < this.getBodyShapeNum()) + { + _loc3_ = this.getBodyShapeByIndex(_loc2_); + _loc4_.insert(0,_loc3_.getComponentThumbByType(param1)); + _loc2_++; + } + return _loc4_; + } + + public function addComponentThumb(param1:CcComponentThumb) : void + { + this._componentThumbs.push(param1.internalId,param1); + var _loc2_:UtilHashArray = this._componentsByType.getValueByKey(param1.type); + if(_loc2_ == null) + { + _loc2_ = new UtilHashArray(); + this._componentsByType.push(param1.type,_loc2_); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(param1.type) > -1) + { + this._availableLibrary.push(param1.type); + } + } + _loc2_.push(param1.internalId,param1); + } + + private function addBodyShape(param1:CcBodyShape) : void + { + this._bodyshapes.push(param1.id,param1); + } + + public function getBodyShapeNum() : Number + { + return this._bodyshapes.length; + } + + public function getBodyShapeByIndex(param1:int) : CcBodyShape + { + return this._bodyshapes.getValueByIndex(param1) as CcBodyShape; + } + + public function getBodyShapeByShapeId(param1:String) : CcBodyShape + { + return this._bodyshapes.getValueByKey(param1) as CcBodyShape; + } + + public function getBodyShapeTypes() : Array + { + var _loc1_:CcBodyShape = null; + var _loc2_:UtilHashArray = new UtilHashArray(); + var _loc3_:int = 0; + while(_loc3_ < this.getBodyShapeNum()) + { + _loc1_ = this.getBodyShapeByIndex(_loc3_); + _loc2_.push(_loc1_.bodyType,_loc1_.bodyType); + _loc3_++; + } + return _loc2_.getArray(); + } + + public function getBodyShapesByShapeType(param1:String) : Array + { + var _loc3_:CcBodyShape = null; + var _loc2_:Array = new Array(); + var _loc4_:int = 0; + while(_loc4_ < this.getBodyShapeNum()) + { + _loc3_ = this.getBodyShapeByIndex(_loc4_); + if(_loc3_.bodyType == param1) + { + _loc2_.push(_loc3_); + } + _loc4_++; + } + return _loc2_; + } + + private function addFacial(param1:CcFacial) : void + { + this._facials.push(param1.internalId,param1); + } + + public function getFacialNum() : Number + { + return this._facials.length; + } + + public function getFacialByIndex(param1:int) : CcFacial + { + return this._facials.getValueByIndex(param1) as CcFacial; + } + + public function getFacialById(param1:String) : CcFacial + { + return this._facials.getValueByKey(param1) as CcFacial; + } + + private function addTemplate(param1:CcTemplate) : void + { + this._templates.push(param1.id,param1); + } + + public function getTemplateById(param1:String) : CcTemplate + { + return this._templates.getValueByKey(param1) as CcTemplate; + } + + public function set id(param1:String) : void + { + this._id = param1; + } + + public function get id() : String + { + return this._id; + } + + private function addColorThumb(param1:CcColorThumb) : void + { + this._ccColors.push(param1.internalId,param1); + } + + public function getColorThumbNum() : int + { + return this._ccColors.length; + } + + public function getColorThumbByIndex(param1:int) : CcColorThumb + { + return this._ccColors.getValueByIndex(param1) as CcColorThumb; + } + + public function getColorThumbByInternalId(param1:String) : CcColorThumb + { + return this._ccColors.getValueByKey(param1) as CcColorThumb; + } + + public function getAvailableComponentTypes() : Array + { + var _loc1_:Array = new Array(); + return CcLibConstant.USER_CHOOSE_ABLE_BODY_COMPONENT_TYPES.concat(CcLibConstant.USER_CHOOSE_ABLE_HEAD_COMPONENT_TYPES); + } + + public function initCcThemeByLoadThemeFile(param1:String) : void + { + this.id = param1; + var _loc2_:URLLoader = new URLLoader(); + _loc2_.dataFormat = URLLoaderDataFormat.TEXT; + var _loc3_:URLRequest = UtilNetwork.getGetCcThemeRequest(param1); + _loc2_.addEventListener(Event.COMPLETE,this.onLoadThemeComplete); + _loc2_.load(_loc3_); + } + + public function initCcThemePreMadeChar() : void + { + var _loc1_:URLLoader = new URLLoader(); + _loc1_.dataFormat = URLLoaderDataFormat.TEXT; + var _loc2_:URLRequest = UtilNetwork.getGetCcThemePreMadeCharRequest(this.id); + _loc1_.addEventListener(Event.COMPLETE,this.onLoadCcThemePreMadeCharComplete); + _loc1_.load(_loc2_); + } + + private function onLoadCcThemePreMadeCharComplete(param1:Event) : void + { + var _loc5_:XML = null; + var _loc6_:CcCoreEvent = null; + var _loc7_:CcCharacter = null; + var _loc8_:UtilHashArray = null; + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadCcThemePreMadeCharComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + var _loc3_:* = _loc2_.data as String; + _loc3_ = "" + _loc3_ + ""; + var _loc4_:XML = new XML(_loc3_); + this._preMadeChars = new Array(); + for each(_loc5_ in _loc4_.child(CcCharacter.XML_NODE_NAME)) + { + _loc7_ = new CcCharacter(); + _loc8_ = new UtilHashArray(); + _loc8_.push(this.id,this); + _loc7_.deserialize(_loc5_,_loc8_); + this._preMadeChars.push(_loc7_); + } + _loc6_ = new CcCoreEvent(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this); + this.dispatchEvent(_loc6_); + } + + public function initCcThemeByXml(param1:String) : void + { + var _loc2_:XML = new XML(param1); + this.id = _loc2_.@id; + this.doHandleLoadedThemeXml(_loc2_); + } + + private function onLoadThemeComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadThemeComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + var _loc3_:XML = new XML(_loc2_.data as String); + this.doHandleLoadedThemeXml(_loc3_); + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_THEME_COMPLETE,this)); + } + + private function doHandleLoadedThemeXml(param1:XML) : void + { + this.deserialize(param1); + } + + private function deserialize(param1:XML) : void + { + var _loc2_:XML = null; + var _loc3_:CcColorThumb = null; + var _loc4_:CcComponentThumb = null; + var _loc5_:CcFacial = null; + var _loc6_:CcBodyShape = null; + var _loc7_:CcTemplate = null; + var _loc8_:UtilHashArray = null; + this._studioThemeId = param1.@studio_theme_id; + for each(_loc2_ in param1.child(CcColorThumb.XML_NODE_NAME)) + { + _loc3_ = new CcColorThumb(); + _loc3_.deSerialize(_loc2_); + this.addColorThumb(_loc3_); + } + for each(_loc2_ in param1.child(CcComponentThumb.XML_NODE_NAME)) + { + _loc4_ = new CcComponentThumb(); + _loc4_.deSerialize(_loc2_,this.id,CcComponentThumb.PARENT_TYPE_THEME,this.id); + this.addComponentThumb(_loc4_); + } + for each(_loc2_ in param1.child(CcFacial.XML_NODE_NAME)) + { + _loc5_ = new CcFacial(); + _loc5_.deserialize(_loc2_); + this.addFacial(_loc5_); + } + for each(_loc2_ in param1.child(CcBodyShape.XML_NODE_NAME)) + { + _loc6_ = new CcBodyShape(); + _loc6_.deserialize(_loc2_,this.id,this); + this.addBodyShape(_loc6_); + } + for each(_loc2_ in param1.child(CcTemplate.XML_NODE_NAME)) + { + _loc7_ = new CcTemplate(); + _loc8_ = new UtilHashArray(); + _loc8_.push(this.id,this); + _loc7_.deserialize(_loc2_,_loc8_); + this.addTemplate(_loc7_); + } + } + } +} diff --git a/scripts/anifire/creator/models/MenuItemModel.as b/scripts/anifire/creator/models/MenuItemModel.as new file mode 100644 index 0000000..4747d7c --- /dev/null +++ b/scripts/anifire/creator/models/MenuItemModel.as @@ -0,0 +1,378 @@ +package anifire.creator.models +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import mx.collections.ArrayCollection; + import mx.events.PropertyChangeEvent; + + public class MenuItemModel implements IEventDispatcher + { + + public static const MENU_TYPE_NORMAL:int = 0; + + public static const MENU_TYPE_RADIO:int = 1; + + public static const MENU_TYPE_CHECKBOX:int = 2; + + public static const MENU_TYPE_SEPARATOR:int = 3; + + + private var _102727412label:String; + + private var _111972721value; + + private var _3226745icon:Class; + + private var _244896471parentMenu:MenuItemModel; + + protected var _subMenu:ArrayCollection; + + protected var _selectable:Boolean = true; + + private var _1436069623selectedIndex:int; + + private var _603762375menuType:int; + + private var _1609594047enabled:Boolean = true; + + private var _26774448sortOrder:int; + + protected var _selected:Boolean; + + private var _bindingEventDispatcher:EventDispatcher; + + public function MenuItemModel(param1:String, param2:*, param3:int = 0, param4:ArrayCollection = null, param5:Class = null) + { + this._bindingEventDispatcher = new EventDispatcher(IEventDispatcher(this)); + super(); + this.menuType = param3; + this.label = param1; + this.value = param2; + this.subMenu = param4; + this.icon = param5; + if(param3 == MENU_TYPE_SEPARATOR) + { + this.enabled = false; + } + } + + public function get subMenu() : ArrayCollection + { + return this._subMenu; + } + + private function set _1868748865subMenu(param1:ArrayCollection) : void + { + var _loc2_:int = 0; + var _loc3_:MenuItemModel = null; + if(this._subMenu != param1) + { + this._subMenu = param1; + if(this._subMenu) + { + _loc2_ = 0; + while(_loc2_ < this._subMenu.length) + { + _loc3_ = this._subMenu.getItemAt(_loc2_) as MenuItemModel; + _loc3_.parentMenu = this; + _loc2_++; + } + } + } + } + + public function hasSubMenu() : Boolean + { + return this._subMenu && this._subMenu.length > 0; + } + + private function set _1655575466selectable(param1:Boolean) : void + { + if(this._selectable != param1) + { + this._selectable = param1; + } + } + + public function get selectable() : Boolean + { + return this._selectable && !this.subMenu; + } + + public function get selectedItem() : * + { + if(this.subMenu) + { + if(this.selectedIndex > 0 && this.selectedIndex < this.subMenu.length) + { + return this.subMenu.getItemAt(this.selectedIndex); + } + } + return null; + } + + public function get selected() : Boolean + { + return this._selected; + } + + private function set _1191572123selected(param1:Boolean) : void + { + if(this._selected != param1) + { + this._selected = param1; + } + } + + public function toggle() : void + { + var _loc1_:ArrayCollection = null; + var _loc2_:int = 0; + var _loc3_:MenuItemModel = null; + switch(this.menuType) + { + case MENU_TYPE_NORMAL: + break; + case MENU_TYPE_RADIO: + this.selected = true; + if(this.parentMenu) + { + _loc1_ = this.parentMenu.subMenu; + _loc2_ = 0; + while(_loc2_ < _loc1_.length) + { + _loc3_ = _loc1_.getItemAt(_loc2_) as MenuItemModel; + if(_loc3_ && _loc3_ != this) + { + _loc3_.selected = false; + } + _loc2_++; + } + } + break; + case MENU_TYPE_CHECKBOX: + this.selected = !this.selected; + } + } + + [Bindable(event="propertyChange")] + public function get label() : String + { + return this._102727412label; + } + + public function set label(param1:String) : void + { + var _loc2_:Object = this._102727412label; + if(_loc2_ !== param1) + { + this._102727412label = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"label",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get value() : * + { + return this._111972721value; + } + + public function set value(param1:*) : void + { + var _loc2_:Object = this._111972721value; + if(_loc2_ !== param1) + { + this._111972721value = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"value",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get icon() : Class + { + return this._3226745icon; + } + + public function set icon(param1:Class) : void + { + var _loc2_:Object = this._3226745icon; + if(_loc2_ !== param1) + { + this._3226745icon = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"icon",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get parentMenu() : MenuItemModel + { + return this._244896471parentMenu; + } + + public function set parentMenu(param1:MenuItemModel) : void + { + var _loc2_:Object = this._244896471parentMenu; + if(_loc2_ !== param1) + { + this._244896471parentMenu = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"parentMenu",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get selectedIndex() : int + { + return this._1436069623selectedIndex; + } + + public function set selectedIndex(param1:int) : void + { + var _loc2_:Object = this._1436069623selectedIndex; + if(_loc2_ !== param1) + { + this._1436069623selectedIndex = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"selectedIndex",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get menuType() : int + { + return this._603762375menuType; + } + + public function set menuType(param1:int) : void + { + var _loc2_:Object = this._603762375menuType; + if(_loc2_ !== param1) + { + this._603762375menuType = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"menuType",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get enabled() : Boolean + { + return this._1609594047enabled; + } + + public function set enabled(param1:Boolean) : void + { + var _loc2_:Object = this._1609594047enabled; + if(_loc2_ !== param1) + { + this._1609594047enabled = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"enabled",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sortOrder() : int + { + return this._26774448sortOrder; + } + + public function set sortOrder(param1:int) : void + { + var _loc2_:Object = this._26774448sortOrder; + if(_loc2_ !== param1) + { + this._26774448sortOrder = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sortOrder",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function set subMenu(param1:ArrayCollection) : void + { + var _loc2_:Object = this.subMenu; + if(_loc2_ !== param1) + { + this._1868748865subMenu = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"subMenu",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function set selectable(param1:Boolean) : void + { + var _loc2_:Object = this.selectable; + if(_loc2_ !== param1) + { + this._1655575466selectable = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"selectable",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function set selected(param1:Boolean) : void + { + var _loc2_:Object = this.selected; + if(_loc2_ !== param1) + { + this._1191572123selected = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"selected",_loc2_,param1)); + } + } + } + + public function addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + this._bindingEventDispatcher.addEventListener(param1,param2,param3,param4,param5); + } + + public function dispatchEvent(param1:Event) : Boolean + { + return this._bindingEventDispatcher.dispatchEvent(param1); + } + + public function hasEventListener(param1:String) : Boolean + { + return this._bindingEventDispatcher.hasEventListener(param1); + } + + public function removeEventListener(param1:String, param2:Function, param3:Boolean = false) : void + { + this._bindingEventDispatcher.removeEventListener(param1,param2,param3); + } + + public function willTrigger(param1:String) : Boolean + { + return this._bindingEventDispatcher.willTrigger(param1); + } + } +} diff --git a/scripts/anifire/creator/skins/ActionDropDownListSkin.as b/scripts/anifire/creator/skins/ActionDropDownListSkin.as new file mode 100644 index 0000000..f577cec --- /dev/null +++ b/scripts/anifire/creator/skins/ActionDropDownListSkin.as @@ -0,0 +1,642 @@ +package anifire.creator.skins +{ + import anifire.creator.components.DefaultDropDownListItemRenderer; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.ClassFactory; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.DataGroup; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.PopUpAnchor; + import spark.components.Scroller; + import spark.layouts.VerticalLayout; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class ActionDropDownListSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1391998104bgFill:SolidColor; + + private var _1383304148border:Rect; + + private var _1395787140borderStroke:SolidColorStroke; + + private var _385593099dataGroup:DataGroup; + + private var _433014735dropDown:Group; + + private var _906978543dropShadow:RectangularDropShadow; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1184053038labelDisplay:Label; + + private var _137111012openButton:Button; + + private var _106851532popUp:PopUpAnchor; + + private var _402164678scroller:Scroller; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:DropDownList; + + public function ActionDropDownListSkin() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._ActionDropDownListSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_ActionDropDownListSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ActionDropDownListSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 110; + this.minHeight = 32; + this.mxmlContent = [this._ActionDropDownListSkin_Button1_i(),this._ActionDropDownListSkin_HGroup1_c()]; + this.currentState = "normal"; + var _ActionDropDownListSkin_PopUpAnchor1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._ActionDropDownListSkin_PopUpAnchor1_i,this._ActionDropDownListSkin_PopUpAnchor1_r); + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":false + })] + }),new State({ + "name":"open", + "overrides":[new AddItems().initializeFromObject({ + "destructionPolicy":"auto", + "itemsFactory":_ActionDropDownListSkin_PopUpAnchor1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ActionDropDownListSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function getIconFromItem(param1:Object) : Class + { + if(param1) + { + return param1.icon; + } + return null; + } + + private function _ActionDropDownListSkin_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.popUpPosition = "below"; + _loc1_.popUpWidthMatchesAnchorWidth = false; + _loc1_.popUp = this._ActionDropDownListSkin_Group1_i(); + _loc1_.id = "popUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.popUp = _loc1_; + BindingManager.executeBindings(this,"popUp",this.popUp); + return _loc1_; + } + + private function _ActionDropDownListSkin_PopUpAnchor1_r() : void + { + } + + private function _ActionDropDownListSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.minHeight = 200; + _loc1_.maxHeight = 400; + _loc1_.mxmlContent = [this._ActionDropDownListSkin_RectangularDropShadow1_i(),this._ActionDropDownListSkin_Rect1_i(),this._ActionDropDownListSkin_Scroller1_i()]; + _loc1_.id = "dropDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropDown = _loc1_; + BindingManager.executeBindings(this,"dropDown",this.dropDown); + return _loc1_; + } + + private function _ActionDropDownListSkin_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.45; + _loc1_.distance = 7; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _ActionDropDownListSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.stroke = this._ActionDropDownListSkin_SolidColorStroke1_i(); + _loc1_.fill = this._ActionDropDownListSkin_SolidColor1_i(); + _loc1_.initialized(this,"border"); + this.border = _loc1_; + BindingManager.executeBindings(this,"border",this.border); + return _loc1_; + } + + private function _ActionDropDownListSkin_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.weight = 1; + _loc1_.color = 10526623; + this.borderStroke = _loc1_; + BindingManager.executeBindings(this,"borderStroke",this.borderStroke); + return _loc1_; + } + + private function _ActionDropDownListSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this.bgFill = _loc1_; + BindingManager.executeBindings(this,"bgFill",this.bgFill); + return _loc1_; + } + + private function _ActionDropDownListSkin_Scroller1_i() : Scroller + { + var _loc1_:Scroller = new Scroller(); + _loc1_.left = 0; + _loc1_.top = 3; + _loc1_.right = 0; + _loc1_.bottom = 3; + _loc1_.hasFocusableChildren = false; + _loc1_.minViewportInset = 1; + _loc1_.buttonMode = true; + _loc1_.viewport = this._ActionDropDownListSkin_DataGroup1_i(); + _loc1_.id = "scroller"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.scroller = _loc1_; + BindingManager.executeBindings(this,"scroller",this.scroller); + return _loc1_; + } + + private function _ActionDropDownListSkin_DataGroup1_i() : DataGroup + { + var _loc1_:DataGroup = new DataGroup(); + _loc1_.itemRenderer = this._ActionDropDownListSkin_ClassFactory1_c(); + _loc1_.layout = this._ActionDropDownListSkin_VerticalLayout1_c(); + _loc1_.id = "dataGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dataGroup = _loc1_; + BindingManager.executeBindings(this,"dataGroup",this.dataGroup); + return _loc1_; + } + + private function _ActionDropDownListSkin_ClassFactory1_c() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = DefaultDropDownListItemRenderer; + return _loc1_; + } + + private function _ActionDropDownListSkin_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.gap = 0; + _loc1_.horizontalAlign = "contentJustify"; + _loc1_.requestedMinRowCount = 1; + _loc1_.requestedMaxRowCount = 6; + return _loc1_; + } + + private function _ActionDropDownListSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.buttonMode = true; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultDropDownListButtonSkin); + _loc1_.id = "openButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.openButton = _loc1_; + BindingManager.executeBindings(this,"openButton",this.openButton); + return _loc1_; + } + + private function _ActionDropDownListSkin_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.paddingLeft = 6; + _loc1_.paddingRight = 30; + _loc1_.minWidth = 75; + _loc1_.verticalAlign = "middle"; + _loc1_.mouseEnabled = false; + _loc1_.mouseChildren = false; + _loc1_.mxmlContent = [this._ActionDropDownListSkin_BitmapImage1_i(),this._ActionDropDownListSkin_Label1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ActionDropDownListSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _ActionDropDownListSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.minWidth = 75; + _loc1_.percentWidth = 100; + _loc1_.setStyle("fontWeight","bold"); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",this.labelDisplay); + return _loc1_; + } + + private function _ActionDropDownListSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Number + { + return popUp.width; + },null,"dropDown.minWidth"); + result[1] = new Binding(this,function():Object + { + return getIconFromItem(hostComponent.selectedItem); + },null,"iconDisplay.source"); + result[2] = new Binding(this,function():Boolean + { + return getIconFromItem(hostComponent.selectedItem) != null; + },null,"iconDisplay.includeInLayout"); + return result; + } + + [Bindable(event="propertyChange")] + public function get bgFill() : SolidColor + { + return this._1391998104bgFill; + } + + public function set bgFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1391998104bgFill; + if(_loc2_ !== param1) + { + this._1391998104bgFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get border() : Rect + { + return this._1383304148border; + } + + public function set border(param1:Rect) : void + { + var _loc2_:Object = this._1383304148border; + if(_loc2_ !== param1) + { + this._1383304148border = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"border",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderStroke() : SolidColorStroke + { + return this._1395787140borderStroke; + } + + public function set borderStroke(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1395787140borderStroke; + if(_loc2_ !== param1) + { + this._1395787140borderStroke = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderStroke",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dataGroup() : DataGroup + { + return this._385593099dataGroup; + } + + public function set dataGroup(param1:DataGroup) : void + { + var _loc2_:Object = this._385593099dataGroup; + if(_loc2_ !== param1) + { + this._385593099dataGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dataGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropDown() : Group + { + return this._433014735dropDown; + } + + public function set dropDown(param1:Group) : void + { + var _loc2_:Object = this._433014735dropDown; + if(_loc2_ !== param1) + { + this._433014735dropDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get labelDisplay() : Label + { + return this._1184053038labelDisplay; + } + + public function set labelDisplay(param1:Label) : void + { + var _loc2_:Object = this._1184053038labelDisplay; + if(_loc2_ !== param1) + { + this._1184053038labelDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"labelDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get openButton() : Button + { + return this._137111012openButton; + } + + public function set openButton(param1:Button) : void + { + var _loc2_:Object = this._137111012openButton; + if(_loc2_ !== param1) + { + this._137111012openButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"openButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get popUp() : PopUpAnchor + { + return this._106851532popUp; + } + + public function set popUp(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._106851532popUp; + if(_loc2_ !== param1) + { + this._106851532popUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"popUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get scroller() : Scroller + { + return this._402164678scroller; + } + + public function set scroller(param1:Scroller) : void + { + var _loc2_:Object = this._402164678scroller; + if(_loc2_ !== param1) + { + this._402164678scroller = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"scroller",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : DropDownList + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:DropDownList) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/ArrowTipContainerSkin.as b/scripts/anifire/creator/skins/ArrowTipContainerSkin.as new file mode 100644 index 0000000..e2f4789 --- /dev/null +++ b/scripts/anifire/creator/skins/ArrowTipContainerSkin.as @@ -0,0 +1,700 @@ +package anifire.creator.skins +{ + import anifire.creator.components.ArrowTipContainer; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.primitives.Path; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class ArrowTipContainerSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1656758886_ArrowTipContainerSkin_Path1:Path; + + private var _1656758885_ArrowTipContainerSkin_Path2:Path; + + private var _1211337228_ArrowTipContainerSkin_SetProperty1:SetProperty; + + private var _1211337229_ArrowTipContainerSkin_SetProperty2:SetProperty; + + private var _1751797770arrowGroup:Group; + + private var _1391998104bgFill:SolidColor; + + private var _1383304148border:Rect; + + private var _726617523borderGroup:Group; + + private var _1395787140borderStroke:SolidColorStroke; + + private var _434221093chromeGroup:Group; + + private var _809612678contentGroup:Group; + + private var _906978543dropShadow:RectangularDropShadow; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:ArrowTipContainer; + + public function ArrowTipContainerSkin() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._ArrowTipContainerSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_ArrowTipContainerSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ArrowTipContainerSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.minWidth = 30; + this.minHeight = 30; + this.mxmlContent = [this._ArrowTipContainerSkin_Group1_i(),this._ArrowTipContainerSkin_Group2_i(),this._ArrowTipContainerSkin_Group4_i()]; + this.currentState = "above"; + states = [new State({ + "name":"above", + "stateGroups":["aboves"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"bottom", + "value":0 + }),this._ArrowTipContainerSkin_SetProperty1 = SetProperty(new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"left", + "value":undefined + })),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path1", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path2", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":3 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":11 + })] + }),new State({ + "name":"aboveRight", + "stateGroups":["aboves"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"right", + "value":55 + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path1", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path2", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":3 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":11 + })] + }),new State({ + "name":"below", + "stateGroups":["belows"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"top", + "value":0 + }),this._ArrowTipContainerSkin_SetProperty2 = SetProperty(new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"left", + "value":undefined + })),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path1", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path2", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":11 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":3 + })] + }),new State({ + "name":"belowRight", + "stateGroups":["belows"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"right", + "value":5 + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path1", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_ArrowTipContainerSkin_Path2", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":11 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":3 + })] + })]; + BindingManager.executeBindings(this,"_ArrowTipContainerSkin_SetProperty1",this._ArrowTipContainerSkin_SetProperty1); + BindingManager.executeBindings(this,"_ArrowTipContainerSkin_SetProperty2",this._ArrowTipContainerSkin_SetProperty2); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ArrowTipContainerSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ArrowTipContainerSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.mxmlContent = [this._ArrowTipContainerSkin_RectangularDropShadow1_i(),this._ArrowTipContainerSkin_Rect1_i()]; + _loc1_.id = "borderGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.borderGroup = _loc1_; + BindingManager.executeBindings(this,"borderGroup",this.borderGroup); + return _loc1_; + } + + private function _ArrowTipContainerSkin_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.45; + _loc1_.distance = 7; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _ArrowTipContainerSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.stroke = this._ArrowTipContainerSkin_SolidColorStroke1_i(); + _loc1_.fill = this._ArrowTipContainerSkin_SolidColor1_i(); + _loc1_.initialized(this,"border"); + this.border = _loc1_; + BindingManager.executeBindings(this,"border",this.border); + return _loc1_; + } + + private function _ArrowTipContainerSkin_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 10526623; + this.borderStroke = _loc1_; + BindingManager.executeBindings(this,"borderStroke",this.borderStroke); + return _loc1_; + } + + private function _ArrowTipContainerSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this.bgFill = _loc1_; + BindingManager.executeBindings(this,"bgFill",this.bgFill); + return _loc1_; + } + + private function _ArrowTipContainerSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._ArrowTipContainerSkin_Group3_i()]; + _loc1_.id = "chromeGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.chromeGroup = _loc1_; + BindingManager.executeBindings(this,"chromeGroup",this.chromeGroup); + return _loc1_; + } + + private function _ArrowTipContainerSkin_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.horizontalCenter = 0; + _loc1_.mxmlContent = [this._ArrowTipContainerSkin_Path1_i(),this._ArrowTipContainerSkin_Path2_i()]; + _loc1_.id = "arrowGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.arrowGroup = _loc1_; + BindingManager.executeBindings(this,"arrowGroup",this.arrowGroup); + return _loc1_; + } + + private function _ArrowTipContainerSkin_Path1_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.percentHeight = 100; + _loc1_.fill = this._ArrowTipContainerSkin_SolidColor2_c(); + _loc1_.initialized(this,"_ArrowTipContainerSkin_Path1"); + this._ArrowTipContainerSkin_Path1 = _loc1_; + BindingManager.executeBindings(this,"_ArrowTipContainerSkin_Path1",this._ArrowTipContainerSkin_Path1); + return _loc1_; + } + + private function _ArrowTipContainerSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + return _loc1_; + } + + private function _ArrowTipContainerSkin_Path2_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.percentHeight = 100; + _loc1_.stroke = this._ArrowTipContainerSkin_SolidColorStroke2_c(); + _loc1_.initialized(this,"_ArrowTipContainerSkin_Path2"); + this._ArrowTipContainerSkin_Path2 = _loc1_; + BindingManager.executeBindings(this,"_ArrowTipContainerSkin_Path2",this._ArrowTipContainerSkin_Path2); + return _loc1_; + } + + private function _ArrowTipContainerSkin_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 10526623; + return _loc1_; + } + + private function _ArrowTipContainerSkin_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.id = "contentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contentGroup = _loc1_; + BindingManager.executeBindings(this,"contentGroup",this.contentGroup); + return _loc1_; + } + + private function _ArrowTipContainerSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Number + { + return hostComponent.targetWidth; + },null,"chromeGroup.width"); + result[1] = new Binding(this,function():* + { + return hostComponent.offset; + },null,"_ArrowTipContainerSkin_SetProperty1.value"); + result[2] = new Binding(this,function():* + { + return hostComponent.offset; + },null,"_ArrowTipContainerSkin_SetProperty2.value"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _ArrowTipContainerSkin_Path1() : Path + { + return this._1656758886_ArrowTipContainerSkin_Path1; + } + + public function set _ArrowTipContainerSkin_Path1(param1:Path) : void + { + var _loc2_:Object = this._1656758886_ArrowTipContainerSkin_Path1; + if(_loc2_ !== param1) + { + this._1656758886_ArrowTipContainerSkin_Path1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ArrowTipContainerSkin_Path1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ArrowTipContainerSkin_Path2() : Path + { + return this._1656758885_ArrowTipContainerSkin_Path2; + } + + public function set _ArrowTipContainerSkin_Path2(param1:Path) : void + { + var _loc2_:Object = this._1656758885_ArrowTipContainerSkin_Path2; + if(_loc2_ !== param1) + { + this._1656758885_ArrowTipContainerSkin_Path2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ArrowTipContainerSkin_Path2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ArrowTipContainerSkin_SetProperty1() : SetProperty + { + return this._1211337228_ArrowTipContainerSkin_SetProperty1; + } + + public function set _ArrowTipContainerSkin_SetProperty1(param1:SetProperty) : void + { + var _loc2_:Object = this._1211337228_ArrowTipContainerSkin_SetProperty1; + if(_loc2_ !== param1) + { + this._1211337228_ArrowTipContainerSkin_SetProperty1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ArrowTipContainerSkin_SetProperty1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ArrowTipContainerSkin_SetProperty2() : SetProperty + { + return this._1211337229_ArrowTipContainerSkin_SetProperty2; + } + + public function set _ArrowTipContainerSkin_SetProperty2(param1:SetProperty) : void + { + var _loc2_:Object = this._1211337229_ArrowTipContainerSkin_SetProperty2; + if(_loc2_ !== param1) + { + this._1211337229_ArrowTipContainerSkin_SetProperty2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ArrowTipContainerSkin_SetProperty2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get arrowGroup() : Group + { + return this._1751797770arrowGroup; + } + + public function set arrowGroup(param1:Group) : void + { + var _loc2_:Object = this._1751797770arrowGroup; + if(_loc2_ !== param1) + { + this._1751797770arrowGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"arrowGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get bgFill() : SolidColor + { + return this._1391998104bgFill; + } + + public function set bgFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1391998104bgFill; + if(_loc2_ !== param1) + { + this._1391998104bgFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get border() : Rect + { + return this._1383304148border; + } + + public function set border(param1:Rect) : void + { + var _loc2_:Object = this._1383304148border; + if(_loc2_ !== param1) + { + this._1383304148border = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"border",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderGroup() : Group + { + return this._726617523borderGroup; + } + + public function set borderGroup(param1:Group) : void + { + var _loc2_:Object = this._726617523borderGroup; + if(_loc2_ !== param1) + { + this._726617523borderGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderStroke() : SolidColorStroke + { + return this._1395787140borderStroke; + } + + public function set borderStroke(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1395787140borderStroke; + if(_loc2_ !== param1) + { + this._1395787140borderStroke = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderStroke",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get chromeGroup() : Group + { + return this._434221093chromeGroup; + } + + public function set chromeGroup(param1:Group) : void + { + var _loc2_:Object = this._434221093chromeGroup; + if(_loc2_ !== param1) + { + this._434221093chromeGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"chromeGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contentGroup() : Group + { + return this._809612678contentGroup; + } + + public function set contentGroup(param1:Group) : void + { + var _loc2_:Object = this._809612678contentGroup; + if(_loc2_ !== param1) + { + this._809612678contentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ArrowTipContainer + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ArrowTipContainer) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/ColorPickerDropDownListSkin.as b/scripts/anifire/creator/skins/ColorPickerDropDownListSkin.as new file mode 100644 index 0000000..bc1c2dd --- /dev/null +++ b/scripts/anifire/creator/skins/ColorPickerDropDownListSkin.as @@ -0,0 +1,355 @@ +package anifire.creator.skins +{ + import anifire.component.ColorInputPanel; + import anifire.creator.components.ColorDisplayGroup; + import mx.binding.BindingManager; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.PopUpAnchor; + import spark.primitives.Path; + import spark.skins.SparkSkin; + + public class ColorPickerDropDownListSkin extends SparkSkin implements IStateClient2 + { + + + private var _358089761colorDisplay:ColorDisplayGroup; + + private var _1161397219colorInputPanel:ColorInputPanel; + + private var _433014735dropDown:Group; + + private var _137111012openButton:Button; + + private var _106851532popUp:PopUpAnchor; + + private var _814008535triangle1:Path; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:DropDownList; + + public function ColorPickerDropDownListSkin() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._ColorPickerDropDownListSkin_Button1_i(),this._ColorPickerDropDownListSkin_Group2_c()]; + this.currentState = "normal"; + var _loc1_:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._ColorPickerDropDownListSkin_PopUpAnchor1_i,this._ColorPickerDropDownListSkin_PopUpAnchor1_r); + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":false + })] + }),new State({ + "name":"open", + "overrides":[new AddItems().initializeFromObject({ + "destructionPolicy":"auto", + "itemsFactory":_loc1_, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorPickerDropDownListSkin_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.popUpPosition = "above"; + _loc1_.popUpWidthMatchesAnchorWidth = true; + _loc1_.popUp = this._ColorPickerDropDownListSkin_Group1_i(); + _loc1_.id = "popUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.popUp = _loc1_; + BindingManager.executeBindings(this,"popUp",this.popUp); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_PopUpAnchor1_r() : void + { + } + + private function _ColorPickerDropDownListSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._ColorPickerDropDownListSkin_ColorInputPanel1_i()]; + _loc1_.id = "dropDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropDown = _loc1_; + BindingManager.executeBindings(this,"dropDown",this.dropDown); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_ColorInputPanel1_i() : ColorInputPanel + { + var _loc1_:ColorInputPanel = new ColorInputPanel(); + _loc1_.width = 250; + _loc1_.height = 250; + _loc1_.right = -10; + _loc1_.bottom = 10; + _loc1_.id = "colorInputPanel"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorInputPanel = _loc1_; + BindingManager.executeBindings(this,"colorInputPanel",this.colorInputPanel); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.buttonMode = true; + _loc1_.setStyle("skinClass",ColorPickerOpenButtonSkin); + _loc1_.id = "openButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.openButton = _loc1_; + BindingManager.executeBindings(this,"openButton",this.openButton); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_Group2_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 35; + _loc1_.height = 25; + _loc1_.verticalCenter = 0; + _loc1_.mouseChildren = false; + _loc1_.mouseEnabled = false; + _loc1_.mxmlContent = [this._ColorPickerDropDownListSkin_ColorDisplayGroup1_i(),this._ColorPickerDropDownListSkin_Path1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_ColorDisplayGroup1_i() : ColorDisplayGroup + { + var _loc1_:ColorDisplayGroup = new ColorDisplayGroup(); + _loc1_.width = 25; + _loc1_.height = 25; + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "colorDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorDisplay = _loc1_; + BindingManager.executeBindings(this,"colorDisplay",this.colorDisplay); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_Path1_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.right = 2; + _loc1_.verticalCenter = 0; + _loc1_.data = "m 0 0 l 6 0 l -3 3 Z"; + _loc1_.fill = this._ColorPickerDropDownListSkin_SolidColor1_c(); + _loc1_.initialized(this,"triangle1"); + this.triangle1 = _loc1_; + BindingManager.executeBindings(this,"triangle1",this.triangle1); + return _loc1_; + } + + private function _ColorPickerDropDownListSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get colorDisplay() : ColorDisplayGroup + { + return this._358089761colorDisplay; + } + + public function set colorDisplay(param1:ColorDisplayGroup) : void + { + var _loc2_:Object = this._358089761colorDisplay; + if(_loc2_ !== param1) + { + this._358089761colorDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorInputPanel() : ColorInputPanel + { + return this._1161397219colorInputPanel; + } + + public function set colorInputPanel(param1:ColorInputPanel) : void + { + var _loc2_:Object = this._1161397219colorInputPanel; + if(_loc2_ !== param1) + { + this._1161397219colorInputPanel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorInputPanel",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropDown() : Group + { + return this._433014735dropDown; + } + + public function set dropDown(param1:Group) : void + { + var _loc2_:Object = this._433014735dropDown; + if(_loc2_ !== param1) + { + this._433014735dropDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get openButton() : Button + { + return this._137111012openButton; + } + + public function set openButton(param1:Button) : void + { + var _loc2_:Object = this._137111012openButton; + if(_loc2_ !== param1) + { + this._137111012openButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"openButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get popUp() : PopUpAnchor + { + return this._106851532popUp; + } + + public function set popUp(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._106851532popUp; + if(_loc2_ !== param1) + { + this._106851532popUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"popUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get triangle1() : Path + { + return this._814008535triangle1; + } + + public function set triangle1(param1:Path) : void + { + var _loc2_:Object = this._814008535triangle1; + if(_loc2_ !== param1) + { + this._814008535triangle1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"triangle1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : DropDownList + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:DropDownList) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/ColorPickerOpenButtonSkin.as b/scripts/anifire/creator/skins/ColorPickerOpenButtonSkin.as new file mode 100644 index 0000000..3a33e8f --- /dev/null +++ b/scripts/anifire/creator/skins/ColorPickerOpenButtonSkin.as @@ -0,0 +1,180 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.primitives.Ellipse; + import spark.primitives.Rect; + import spark.skins.SparkButtonSkin; + + public class ColorPickerOpenButtonSkin extends SparkButtonSkin implements IStateClient2 + { + + + private var _766836075frameDisplay:Rect; + + private var _903579360shadow:Rect; + + private var __moduleFactoryInitialized:Boolean = false; + + public function ColorPickerOpenButtonSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 20; + this.minHeight = 20; + this.mxmlContent = [this._ColorPickerOpenButtonSkin_Ellipse1_c(),this._ColorPickerOpenButtonSkin_Rect1_c(),this._ColorPickerOpenButtonSkin_Rect2_i(),this._ColorPickerOpenButtonSkin_Rect3_i()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "stateGroups":["overAndDownStates"], + "overrides":[] + }),new State({ + "name":"down", + "stateGroups":["overAndDownStates"], + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorPickerOpenButtonSkin_Ellipse1_c() : Ellipse + { + var _loc1_:Ellipse = new Ellipse(); + _loc1_.height = 25; + _loc1_.width = 25; + _loc1_.stroke = this._ColorPickerOpenButtonSkin_SolidColorStroke1_c(); + _loc1_.fill = this._ColorPickerOpenButtonSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 12303291; + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 12303291; + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.height = 25; + _loc1_.width = 22; + _loc1_.x = 13; + _loc1_.radiusX = 4; + _loc1_.radiusY = 4; + _loc1_.fill = this._ColorPickerOpenButtonSkin_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 12303291; + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_Rect2_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 4; + _loc1_.radiusY = 4; + _loc1_.initialized(this,"frameDisplay"); + this.frameDisplay = _loc1_; + BindingManager.executeBindings(this,"frameDisplay",this.frameDisplay); + return _loc1_; + } + + private function _ColorPickerOpenButtonSkin_Rect3_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.top = 1; + _loc1_.right = 1; + _loc1_.height = 1; + _loc1_.radiusX = 3; + _loc1_.initialized(this,"shadow"); + this.shadow = _loc1_; + BindingManager.executeBindings(this,"shadow",this.shadow); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get frameDisplay() : Rect + { + return this._766836075frameDisplay; + } + + public function set frameDisplay(param1:Rect) : void + { + var _loc2_:Object = this._766836075frameDisplay; + if(_loc2_ !== param1) + { + this._766836075frameDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"frameDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get shadow() : Rect + { + return this._903579360shadow; + } + + public function set shadow(param1:Rect) : void + { + var _loc2_:Object = this._903579360shadow; + if(_loc2_ !== param1) + { + this._903579360shadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"shadow",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/ConfirmPanelSkin.as b/scripts/anifire/creator/skins/ConfirmPanelSkin.as new file mode 100644 index 0000000..00fa395 --- /dev/null +++ b/scripts/anifire/creator/skins/ConfirmPanelSkin.as @@ -0,0 +1,585 @@ +package anifire.creator.skins +{ + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.components.Label; + import spark.components.Panel; + import spark.components.VGroup; + import spark.layouts.HorizontalLayout; + import spark.layouts.VerticalLayout; + import spark.primitives.Line; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class ConfirmPanelSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1332194002background:Rect; + + private var _1427077073backgroundFill:SolidColor; + + private var _631173356bottomGroup:Group; + + private var _809612678contentGroup:Group; + + private var _567321830contents:Group; + + private var _139410089controlBarGroup:Group; + + private var _906978543dropShadow:RectangularDropShadow; + + private var _1893287094titleDisplay:Label; + + private var _988229078topGroup:VGroup; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:Panel; + + public function ConfirmPanelSkin() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._ConfirmPanelSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_ConfirmPanelSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ConfirmPanelSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.blendMode = "normal"; + this.mouseEnabled = false; + this.minWidth = 300; + this.minHeight = 200; + this.mxmlContent = [this._ConfirmPanelSkin_RectangularDropShadow1_i(),this._ConfirmPanelSkin_Group1_c()]; + this.currentState = "normal"; + var _ConfirmPanelSkin_Group4_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._ConfirmPanelSkin_Group4_i); + states = [new State({ + "name":"normal", + "stateGroups":["normalStates"], + "overrides":[] + }),new State({ + "name":"disabled", + "stateGroups":["disabledStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"contents", + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"normalWithControlBar", + "stateGroups":["withControls"], + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_ConfirmPanelSkin_Group4_factory, + "destination":"contents", + "propertyName":"mxmlContent", + "position":"after", + "relativeTo":["contentGroup"] + })] + }),new State({ + "name":"disabledWithControlBar", + "stateGroups":["withControls","disabledStates"], + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_ConfirmPanelSkin_Group4_factory, + "destination":"contents", + "propertyName":"mxmlContent", + "position":"after", + "relativeTo":["contentGroup"] + }),new SetProperty().initializeFromObject({ + "target":"contents", + "name":"alpha", + "value":0.5 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ConfirmPanelSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ConfirmPanelSkin_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.32; + _loc1_.distance = 11; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _ConfirmPanelSkin_Group1_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._ConfirmPanelSkin_Rect1_i(),this._ConfirmPanelSkin_Group2_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ConfirmPanelSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.top = 1; + _loc1_.right = 1; + _loc1_.bottom = 1; + _loc1_.radiusX = 3; + _loc1_.fill = this._ConfirmPanelSkin_SolidColor1_i(); + _loc1_.initialized(this,"background"); + this.background = _loc1_; + BindingManager.executeBindings(this,"background",this.background); + return _loc1_; + } + + private function _ConfirmPanelSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this.backgroundFill = _loc1_; + BindingManager.executeBindings(this,"backgroundFill",this.backgroundFill); + return _loc1_; + } + + private function _ConfirmPanelSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 1; + _loc1_.right = 1; + _loc1_.top = 1; + _loc1_.bottom = 1; + _loc1_.layout = this._ConfirmPanelSkin_VerticalLayout1_c(); + _loc1_.mxmlContent = [this._ConfirmPanelSkin_VGroup1_i(),this._ConfirmPanelSkin_Group3_i()]; + _loc1_.id = "contents"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contents = _loc1_; + BindingManager.executeBindings(this,"contents",this.contents); + return _loc1_; + } + + private function _ConfirmPanelSkin_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.gap = 0; + _loc1_.horizontalAlign = "justify"; + return _loc1_; + } + + private function _ConfirmPanelSkin_VGroup1_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.percentWidth = 100; + _loc1_.minHeight = 30; + _loc1_.paddingLeft = 28; + _loc1_.paddingRight = 28; + _loc1_.paddingTop = 15; + _loc1_.paddingBottom = 15; + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._ConfirmPanelSkin_Label1_i()]; + _loc1_.id = "topGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.topGroup = _loc1_; + BindingManager.executeBindings(this,"topGroup",this.topGroup); + return _loc1_; + } + + private function _ConfirmPanelSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.percentWidth = 100; + _loc1_.setStyle("fontSize",21); + _loc1_.setStyle("color",5267058); + _loc1_.id = "titleDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.titleDisplay = _loc1_; + BindingManager.executeBindings(this,"titleDisplay",this.titleDisplay); + return _loc1_; + } + + private function _ConfirmPanelSkin_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.minWidth = 0; + _loc1_.minHeight = 0; + _loc1_.id = "contentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contentGroup = _loc1_; + BindingManager.executeBindings(this,"contentGroup",this.contentGroup); + return _loc1_; + } + + private function _ConfirmPanelSkin_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.minWidth = 0; + _loc1_.minHeight = 0; + _loc1_.mxmlContent = [this._ConfirmPanelSkin_Line1_c(),this._ConfirmPanelSkin_Group5_i()]; + _loc1_.id = "bottomGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.bottomGroup = _loc1_; + BindingManager.executeBindings(this,"bottomGroup",this.bottomGroup); + return _loc1_; + } + + private function _ConfirmPanelSkin_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.top = 0; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.stroke = this._ConfirmPanelSkin_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ConfirmPanelSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 14738923; + return _loc1_; + } + + private function _ConfirmPanelSkin_Group5_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 1; + _loc1_.bottom = 1; + _loc1_.minWidth = 0; + _loc1_.minHeight = 0; + _loc1_.layout = this._ConfirmPanelSkin_HorizontalLayout1_c(); + _loc1_.id = "controlBarGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.controlBarGroup = _loc1_; + BindingManager.executeBindings(this,"controlBarGroup",this.controlBarGroup); + return _loc1_; + } + + private function _ConfirmPanelSkin_HorizontalLayout1_c() : HorizontalLayout + { + var _loc1_:HorizontalLayout = new HorizontalLayout(); + _loc1_.horizontalAlign = "center"; + _loc1_.gap = 14; + _loc1_.paddingLeft = 14; + _loc1_.paddingRight = 14; + _loc1_.paddingTop = 14; + _loc1_.paddingBottom = 14; + return _loc1_; + } + + private function _ConfirmPanelSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Boolean + { + return hostComponent.title != null; + },null,"topGroup.visible"); + result[1] = new Binding(this,function():Boolean + { + return hostComponent.title != null; + },null,"topGroup.includeInLayout"); + return result; + } + + [Bindable(event="propertyChange")] + public function get background() : Rect + { + return this._1332194002background; + } + + public function set background(param1:Rect) : void + { + var _loc2_:Object = this._1332194002background; + if(_loc2_ !== param1) + { + this._1332194002background = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"background",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get backgroundFill() : SolidColor + { + return this._1427077073backgroundFill; + } + + public function set backgroundFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1427077073backgroundFill; + if(_loc2_ !== param1) + { + this._1427077073backgroundFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"backgroundFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get bottomGroup() : Group + { + return this._631173356bottomGroup; + } + + public function set bottomGroup(param1:Group) : void + { + var _loc2_:Object = this._631173356bottomGroup; + if(_loc2_ !== param1) + { + this._631173356bottomGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bottomGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contentGroup() : Group + { + return this._809612678contentGroup; + } + + public function set contentGroup(param1:Group) : void + { + var _loc2_:Object = this._809612678contentGroup; + if(_loc2_ !== param1) + { + this._809612678contentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contents() : Group + { + return this._567321830contents; + } + + public function set contents(param1:Group) : void + { + var _loc2_:Object = this._567321830contents; + if(_loc2_ !== param1) + { + this._567321830contents = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contents",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get controlBarGroup() : Group + { + return this._139410089controlBarGroup; + } + + public function set controlBarGroup(param1:Group) : void + { + var _loc2_:Object = this._139410089controlBarGroup; + if(_loc2_ !== param1) + { + this._139410089controlBarGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"controlBarGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get titleDisplay() : Label + { + return this._1893287094titleDisplay; + } + + public function set titleDisplay(param1:Label) : void + { + var _loc2_:Object = this._1893287094titleDisplay; + if(_loc2_ !== param1) + { + this._1893287094titleDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"titleDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get topGroup() : VGroup + { + return this._988229078topGroup; + } + + public function set topGroup(param1:VGroup) : void + { + var _loc2_:Object = this._988229078topGroup; + if(_loc2_ !== param1) + { + this._988229078topGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"topGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Panel + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Panel) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/ConfirmPopUpSkin.as b/scripts/anifire/creator/skins/ConfirmPopUpSkin.as new file mode 100644 index 0000000..f4f7877 --- /dev/null +++ b/scripts/anifire/creator/skins/ConfirmPopUpSkin.as @@ -0,0 +1,604 @@ +package anifire.creator.skins +{ + import anifire.creator.components.ConfirmPopUp; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import mx.states.Transition; + import spark.components.Button; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.Panel; + import spark.components.VGroup; + import spark.components.supportClasses.Skin; + import spark.effects.Fade; + import spark.layouts.VerticalLayout; + import spark.primitives.BitmapImage; + + use namespace mx_internal; + + public class ConfirmPopUpSkin extends Skin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _ConfirmPopUpSkin_Fade1:Fade; + + public var _ConfirmPopUpSkin_Fade2:Fade; + + public var _ConfirmPopUpSkin_Fade3:Fade; + + public var _ConfirmPopUpSkin_Fade4:Fade; + + private var _1990131276cancelButton:Button; + + private var _1361128838chrome:Group; + + private var _312699062closeButton:Button; + + private var _236983790confirmButton:Button; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1304200403messageLabel:Label; + + private var _106433028panel:Panel; + + private var _1893287094titleDisplay:Label; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:ConfirmPopUp; + + public function ConfirmPopUpSkin() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ConfirmPopUpSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_ConfirmPopUpSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ConfirmPopUpSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.transitions = [this._ConfirmPopUpSkin_Transition1_c(),this._ConfirmPopUpSkin_Transition2_c(),this._ConfirmPopUpSkin_Transition3_c(),this._ConfirmPopUpSkin_Transition4_c()]; + this.mxmlContent = [this._ConfirmPopUpSkin_Group1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"closed", + "stateGroups":["closedGroup"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"chrome", + "name":"visible", + "value":false + })] + }),new State({ + "name":"disabledAndClosed", + "stateGroups":["closedGroup"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"chrome", + "name":"visible", + "value":false + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ConfirmPopUpSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ConfirmPopUpSkin_Transition1_c() : Transition + { + var _loc1_:Transition = new Transition(); + _loc1_.fromState = "closed"; + _loc1_.toState = "normal"; + _loc1_.autoReverse = true; + _loc1_.effect = this._ConfirmPopUpSkin_Fade1_i(); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Fade1_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.duration = 150; + this._ConfirmPopUpSkin_Fade1 = _loc1_; + BindingManager.executeBindings(this,"_ConfirmPopUpSkin_Fade1",this._ConfirmPopUpSkin_Fade1); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Transition2_c() : Transition + { + var _loc1_:Transition = new Transition(); + _loc1_.fromState = "disabledAndClosed"; + _loc1_.toState = "disabled"; + _loc1_.autoReverse = true; + _loc1_.effect = this._ConfirmPopUpSkin_Fade2_i(); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Fade2_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.duration = 150; + this._ConfirmPopUpSkin_Fade2 = _loc1_; + BindingManager.executeBindings(this,"_ConfirmPopUpSkin_Fade2",this._ConfirmPopUpSkin_Fade2); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Transition3_c() : Transition + { + var _loc1_:Transition = new Transition(); + _loc1_.fromState = "normal"; + _loc1_.toState = "closed"; + _loc1_.autoReverse = true; + _loc1_.effect = this._ConfirmPopUpSkin_Fade3_i(); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Fade3_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.duration = 150; + this._ConfirmPopUpSkin_Fade3 = _loc1_; + BindingManager.executeBindings(this,"_ConfirmPopUpSkin_Fade3",this._ConfirmPopUpSkin_Fade3); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Transition4_c() : Transition + { + var _loc1_:Transition = new Transition(); + _loc1_.fromState = "disabled"; + _loc1_.toState = "disabledAndClosed"; + _loc1_.autoReverse = true; + _loc1_.effect = this._ConfirmPopUpSkin_Fade4_i(); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Fade4_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.duration = 150; + this._ConfirmPopUpSkin_Fade4 = _loc1_; + BindingManager.executeBindings(this,"_ConfirmPopUpSkin_Fade4",this._ConfirmPopUpSkin_Fade4); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._ConfirmPopUpSkin_Panel1_i(),this._ConfirmPopUpSkin_Button3_i()]; + _loc1_.id = "chrome"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.chrome = _loc1_; + BindingManager.executeBindings(this,"chrome",this.chrome); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Panel1_i() : Panel + { + var _loc1_:Panel = new Panel(); + _loc1_.minWidth = 200; + _loc1_.maxWidth = 400; + _loc1_.layout = this._ConfirmPopUpSkin_VerticalLayout1_c(); + _loc1_.controlBarContent = [this._ConfirmPopUpSkin_Button1_i(),this._ConfirmPopUpSkin_Button2_i()]; + _loc1_.mxmlContentFactory = new DeferredInstanceFromFunction(this._ConfirmPopUpSkin_Array8_c); + _loc1_.id = "panel"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.panel = _loc1_; + BindingManager.executeBindings(this,"panel",this.panel); + return _loc1_; + } + + private function _ConfirmPopUpSkin_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.gap = 20; + _loc1_.paddingTop = 30; + _loc1_.paddingLeft = 25; + _loc1_.paddingRight = 25; + _loc1_.paddingBottom = 32; + return _loc1_; + } + + private function _ConfirmPopUpSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.buttonMode = true; + _loc1_.id = "cancelButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.cancelButton = _loc1_; + BindingManager.executeBindings(this,"cancelButton",this.cancelButton); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Button2_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.buttonMode = true; + _loc1_.styleName = "primary"; + _loc1_.id = "confirmButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.confirmButton = _loc1_; + BindingManager.executeBindings(this,"confirmButton",this.confirmButton); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Array8_c() : Array + { + var _loc1_:Array = [this._ConfirmPopUpSkin_HGroup1_c()]; + return _loc1_; + } + + private function _ConfirmPopUpSkin_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.gap = 15; + _loc1_.verticalAlign = "baseline"; + _loc1_.mxmlContent = [this._ConfirmPopUpSkin_BitmapImage1_i(),this._ConfirmPopUpSkin_VGroup1_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ConfirmPopUpSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.baseline = -15; + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _ConfirmPopUpSkin_VGroup1_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.gap = 10; + _loc1_.mxmlContent = [this._ConfirmPopUpSkin_Label1_i(),this._ConfirmPopUpSkin_Label2_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ConfirmPopUpSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.setStyle("fontSize",21); + _loc1_.setStyle("color",5267059); + _loc1_.id = "titleDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.titleDisplay = _loc1_; + BindingManager.executeBindings(this,"titleDisplay",this.titleDisplay); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Label2_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.percentWidth = 100; + _loc1_.top = 20; + _loc1_.setStyle("color",3355443); + _loc1_.id = "messageLabel"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.messageLabel = _loc1_; + BindingManager.executeBindings(this,"messageLabel",this.messageLabel); + return _loc1_; + } + + private function _ConfirmPopUpSkin_Button3_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.styleName = "closePopUp"; + _loc1_.top = 15; + _loc1_.right = 15; + _loc1_.buttonMode = true; + _loc1_.id = "closeButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.closeButton = _loc1_; + BindingManager.executeBindings(this,"closeButton",this.closeButton); + return _loc1_; + } + + private function _ConfirmPopUpSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,null,null,"_ConfirmPopUpSkin_Fade1.target","chrome"); + result[1] = new Binding(this,null,null,"_ConfirmPopUpSkin_Fade2.target","chrome"); + result[2] = new Binding(this,null,null,"_ConfirmPopUpSkin_Fade3.target","chrome"); + result[3] = new Binding(this,null,null,"_ConfirmPopUpSkin_Fade4.target","chrome"); + result[4] = new Binding(this,function():String + { + var _loc1_:* = null; + return _loc1_ == undefined?null:String(_loc1_); + },null,"panel.title"); + result[5] = new Binding(this,function():Boolean + { + return hostComponent.iconType != 0; + },null,"iconDisplay.visible"); + result[6] = new Binding(this,function():Boolean + { + return hostComponent.iconType != 0; + },null,"iconDisplay.includeInLayout"); + result[7] = new Binding(this,function():Boolean + { + return hostComponent.title != null; + },null,"titleDisplay.visible"); + result[8] = new Binding(this,function():Boolean + { + return hostComponent.title != null; + },null,"titleDisplay.includeInLayout"); + result[9] = new Binding(this,function():String + { + var _loc1_:* = hostComponent.title; + return _loc1_ == undefined?null:String(_loc1_); + },null,"titleDisplay.text"); + return result; + } + + [Bindable(event="propertyChange")] + public function get cancelButton() : Button + { + return this._1990131276cancelButton; + } + + public function set cancelButton(param1:Button) : void + { + var _loc2_:Object = this._1990131276cancelButton; + if(_loc2_ !== param1) + { + this._1990131276cancelButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"cancelButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get chrome() : Group + { + return this._1361128838chrome; + } + + public function set chrome(param1:Group) : void + { + var _loc2_:Object = this._1361128838chrome; + if(_loc2_ !== param1) + { + this._1361128838chrome = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"chrome",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get closeButton() : Button + { + return this._312699062closeButton; + } + + public function set closeButton(param1:Button) : void + { + var _loc2_:Object = this._312699062closeButton; + if(_loc2_ !== param1) + { + this._312699062closeButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"closeButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get confirmButton() : Button + { + return this._236983790confirmButton; + } + + public function set confirmButton(param1:Button) : void + { + var _loc2_:Object = this._236983790confirmButton; + if(_loc2_ !== param1) + { + this._236983790confirmButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"confirmButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get messageLabel() : Label + { + return this._1304200403messageLabel; + } + + public function set messageLabel(param1:Label) : void + { + var _loc2_:Object = this._1304200403messageLabel; + if(_loc2_ !== param1) + { + this._1304200403messageLabel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"messageLabel",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get panel() : Panel + { + return this._106433028panel; + } + + public function set panel(param1:Panel) : void + { + var _loc2_:Object = this._106433028panel; + if(_loc2_ !== param1) + { + this._106433028panel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"panel",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get titleDisplay() : Label + { + return this._1893287094titleDisplay; + } + + public function set titleDisplay(param1:Label) : void + { + var _loc2_:Object = this._1893287094titleDisplay; + if(_loc2_ !== param1) + { + this._1893287094titleDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"titleDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ConfirmPopUp + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ConfirmPopUp) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/CustomButtonBarButtonSkin.as b/scripts/anifire/creator/skins/CustomButtonBarButtonSkin.as new file mode 100644 index 0000000..f9372d1 --- /dev/null +++ b/scripts/anifire/creator/skins/CustomButtonBarButtonSkin.as @@ -0,0 +1,358 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.ButtonBarButton; + import spark.primitives.BitmapImage; + import spark.primitives.Ellipse; + import spark.primitives.Graphic; + import spark.skins.SparkSkin; + + public class CustomButtonBarButtonSkin extends SparkSkin implements IStateClient2 + { + + private static const exclusions:Array = []; + + + private var _1205702194_CustomButtonBarButtonSkin_Ellipse1:Ellipse; + + private var _1157270842_CustomButtonBarButtonSkin_SolidColor1:SolidColor; + + private var _3307gr:Graphic; + + private var _104387img:BitmapImage; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:ButtonBarButton; + + public function CustomButtonBarButtonSkin() + { + super(); + mx_internal::_document = this; + this.width = 45; + this.height = 45; + this.mxmlContent = [this._CustomButtonBarButtonSkin_Ellipse1_i(),this._CustomButtonBarButtonSkin_Graphic1_i()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "stateGroups":["overStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"height", + "value":35 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"width", + "value":35 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_SolidColor1", + "name":"color", + "value":367237 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"width", + "value":35 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"height", + "value":35 + })] + }),new State({ + "name":"down", + "stateGroups":["downStates"], + "overrides":[] + }),new State({ + "name":"disabled", + "stateGroups":["disabledStates"], + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"upAndSelected", + "stateGroups":["selectedStates","selectedUpStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"height", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_SolidColor1", + "name":"color", + "value":15890741 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"height", + "value":45 + })] + }),new State({ + "name":"overAndSelected", + "stateGroups":["selectedStates","selectedUpStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"height", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_SolidColor1", + "name":"color", + "value":15890741 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"height", + "value":45 + })] + }),new State({ + "name":"downAndSelected", + "stateGroups":["selectedStates","selectedUpStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"height", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_SolidColor1", + "name":"color", + "value":15890741 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"height", + "value":45 + })] + }),new State({ + "name":"disabledAndSelected", + "stateGroups":["selectedStates","selectedUpStates"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"height", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_Ellipse1", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"_CustomButtonBarButtonSkin_SolidColor1", + "name":"color", + "value":15890741 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"width", + "value":45 + }),new SetProperty().initializeFromObject({ + "target":"gr", + "name":"height", + "value":45 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function gr_creationComplete(param1:FlexEvent) : void + { + var _loc2_:Object = this.hostComponent.data; + this.img.source = _loc2_.icon; + } + + override public function get colorizeExclusions() : Array + { + return exclusions; + } + + private function _CustomButtonBarButtonSkin_Ellipse1_i() : Ellipse + { + var _loc1_:Ellipse = new Ellipse(); + _loc1_.height = 30; + _loc1_.width = 30; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.fill = this._CustomButtonBarButtonSkin_SolidColor1_i(); + _loc1_.initialized(this,"_CustomButtonBarButtonSkin_Ellipse1"); + this._CustomButtonBarButtonSkin_Ellipse1 = _loc1_; + BindingManager.executeBindings(this,"_CustomButtonBarButtonSkin_Ellipse1",this._CustomButtonBarButtonSkin_Ellipse1); + return _loc1_; + } + + private function _CustomButtonBarButtonSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 2210726; + this._CustomButtonBarButtonSkin_SolidColor1 = _loc1_; + BindingManager.executeBindings(this,"_CustomButtonBarButtonSkin_SolidColor1",this._CustomButtonBarButtonSkin_SolidColor1); + return _loc1_; + } + + private function _CustomButtonBarButtonSkin_Graphic1_i() : Graphic + { + var _loc1_:Graphic = new Graphic(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.width = 30; + _loc1_.height = 30; + _loc1_.mxmlContent = [this._CustomButtonBarButtonSkin_BitmapImage1_i()]; + _loc1_.addEventListener("creationComplete",this.__gr_creationComplete); + _loc1_.id = "gr"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.gr = _loc1_; + BindingManager.executeBindings(this,"gr",this.gr); + return _loc1_; + } + + private function _CustomButtonBarButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.smooth = true; + _loc1_.initialized(this,"img"); + this.img = _loc1_; + BindingManager.executeBindings(this,"img",this.img); + return _loc1_; + } + + public function __gr_creationComplete(param1:FlexEvent) : void + { + this.gr_creationComplete(param1); + } + + [Bindable(event="propertyChange")] + public function get _CustomButtonBarButtonSkin_Ellipse1() : Ellipse + { + return this._1205702194_CustomButtonBarButtonSkin_Ellipse1; + } + + public function set _CustomButtonBarButtonSkin_Ellipse1(param1:Ellipse) : void + { + var _loc2_:Object = this._1205702194_CustomButtonBarButtonSkin_Ellipse1; + if(_loc2_ !== param1) + { + this._1205702194_CustomButtonBarButtonSkin_Ellipse1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_CustomButtonBarButtonSkin_Ellipse1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _CustomButtonBarButtonSkin_SolidColor1() : SolidColor + { + return this._1157270842_CustomButtonBarButtonSkin_SolidColor1; + } + + public function set _CustomButtonBarButtonSkin_SolidColor1(param1:SolidColor) : void + { + var _loc2_:Object = this._1157270842_CustomButtonBarButtonSkin_SolidColor1; + if(_loc2_ !== param1) + { + this._1157270842_CustomButtonBarButtonSkin_SolidColor1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_CustomButtonBarButtonSkin_SolidColor1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get gr() : Graphic + { + return this._3307gr; + } + + public function set gr(param1:Graphic) : void + { + var _loc2_:Object = this._3307gr; + if(_loc2_ !== param1) + { + this._3307gr = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"gr",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get img() : BitmapImage + { + return this._104387img; + } + + public function set img(param1:BitmapImage) : void + { + var _loc2_:Object = this._104387img; + if(_loc2_ !== param1) + { + this._104387img = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"img",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ButtonBarButton + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ButtonBarButton) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultButtonSkin.as b/scripts/anifire/creator/skins/DefaultButtonSkin.as new file mode 100644 index 0000000..5c9b2d6 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultButtonSkin.as @@ -0,0 +1,277 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.HGroup; + import spark.components.Label; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultButtonSkin extends SparkSkin implements IStateClient2 + { + + + private var _1027289429_DefaultButtonSkin_SolidColor1:SolidColor; + + private var _809612678contentGroup:HGroup; + + private var _3143043fill:Rect; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1184053038labelDisplay:Label; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultButtonSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 80; + this.minHeight = 32; + this.mxmlContent = [this._DefaultButtonSkin_Rect1_i(),this._DefaultButtonSkin_HGroup1_i()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_DefaultButtonSkin_SolidColor1", + "name":"color", + "value":170629 + })] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"_DefaultButtonSkin_SolidColor1", + "name":"color", + "value":13290444 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override protected function commitProperties() : void + { + super.commitProperties(); + this.iconDisplay.includeInLayout = this.iconDisplay.source != null; + } + + private function _DefaultButtonSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.radiusY = 3; + _loc1_.fill = this._DefaultButtonSkin_SolidColor1_i(); + _loc1_.initialized(this,"fill"); + this.fill = _loc1_; + BindingManager.executeBindings(this,"fill",this.fill); + return _loc1_; + } + + private function _DefaultButtonSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 4439205; + this._DefaultButtonSkin_SolidColor1 = _loc1_; + BindingManager.executeBindings(this,"_DefaultButtonSkin_SolidColor1",this._DefaultButtonSkin_SolidColor1); + return _loc1_; + } + + private function _DefaultButtonSkin_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.paddingLeft = 15; + _loc1_.paddingRight = 15; + _loc1_.horizontalAlign = "center"; + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._DefaultButtonSkin_BitmapImage1_i(),this._DefaultButtonSkin_Label1_i()]; + _loc1_.id = "contentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contentGroup = _loc1_; + BindingManager.executeBindings(this,"contentGroup",this.contentGroup); + return _loc1_; + } + + private function _DefaultButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _DefaultButtonSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.setStyle("color",16777215); + _loc1_.setStyle("fontStyle","italic"); + _loc1_.setStyle("typographicCase","lowercaseToSmallCaps"); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",this.labelDisplay); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _DefaultButtonSkin_SolidColor1() : SolidColor + { + return this._1027289429_DefaultButtonSkin_SolidColor1; + } + + public function set _DefaultButtonSkin_SolidColor1(param1:SolidColor) : void + { + var _loc2_:Object = this._1027289429_DefaultButtonSkin_SolidColor1; + if(_loc2_ !== param1) + { + this._1027289429_DefaultButtonSkin_SolidColor1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DefaultButtonSkin_SolidColor1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contentGroup() : HGroup + { + return this._809612678contentGroup; + } + + public function set contentGroup(param1:HGroup) : void + { + var _loc2_:Object = this._809612678contentGroup; + if(_loc2_ !== param1) + { + this._809612678contentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get fill() : Rect + { + return this._3143043fill; + } + + public function set fill(param1:Rect) : void + { + var _loc2_:Object = this._3143043fill; + if(_loc2_ !== param1) + { + this._3143043fill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get labelDisplay() : Label + { + return this._1184053038labelDisplay; + } + + public function set labelDisplay(param1:Label) : void + { + var _loc2_:Object = this._1184053038labelDisplay; + if(_loc2_ !== param1) + { + this._1184053038labelDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"labelDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultDropDownListButtonSkin.as b/scripts/anifire/creator/skins/DefaultDropDownListButtonSkin.as new file mode 100644 index 0000000..7aa3aaa --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultDropDownListButtonSkin.as @@ -0,0 +1,261 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.Group; + import spark.primitives.Line; + import spark.primitives.Path; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultDropDownListButtonSkin extends SparkSkin implements IStateClient2 + { + + + private var _766836075frameDisplay:Rect; + + private var _903579360shadow:Rect; + + private var _1497762312triangle:Path; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultDropDownListButtonSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 21; + this.minHeight = 21; + this.mxmlContent = [this._DefaultDropDownListButtonSkin_Rect1_i(),this._DefaultDropDownListButtonSkin_Rect2_i(),this._DefaultDropDownListButtonSkin_Group1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "stateGroups":["overAndDownStates"], + "overrides":[] + }),new State({ + "name":"down", + "stateGroups":["overAndDownStates"], + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "target":"triangle", + "name":"visible", + "value":false + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultDropDownListButtonSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 4; + _loc1_.radiusY = 4; + _loc1_.stroke = this._DefaultDropDownListButtonSkin_SolidColorStroke1_c(); + _loc1_.fill = this._DefaultDropDownListButtonSkin_SolidColor1_c(); + _loc1_.initialized(this,"frameDisplay"); + this.frameDisplay = _loc1_; + BindingManager.executeBindings(this,"frameDisplay",this.frameDisplay); + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13289940; + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_Rect2_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.top = 1; + _loc1_.right = 1; + _loc1_.height = 1; + _loc1_.radiusX = 3; + _loc1_.fill = this._DefaultDropDownListButtonSkin_SolidColor2_c(); + _loc1_.initialized(this,"shadow"); + this.shadow = _loc1_; + BindingManager.executeBindings(this,"shadow",this.shadow); + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 0; + _loc1_.alpha = 0.12; + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_Group1_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 24; + _loc1_.right = 1; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._DefaultDropDownListButtonSkin_Line1_c(),this._DefaultDropDownListButtonSkin_Path1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.left = 0; + _loc1_.top = 8; + _loc1_.bottom = 8; + _loc1_.stroke = this._DefaultDropDownListButtonSkin_SolidColorStroke2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13289940; + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_Path1_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.data = "M 0 0 l 4 4 l 4 -4"; + _loc1_.stroke = this._DefaultDropDownListButtonSkin_SolidColorStroke3_c(); + _loc1_.initialized(this,"triangle"); + this.triangle = _loc1_; + BindingManager.executeBindings(this,"triangle",this.triangle); + return _loc1_; + } + + private function _DefaultDropDownListButtonSkin_SolidColorStroke3_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 4439205; + _loc1_.weight = 2; + _loc1_.caps = "square"; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get frameDisplay() : Rect + { + return this._766836075frameDisplay; + } + + public function set frameDisplay(param1:Rect) : void + { + var _loc2_:Object = this._766836075frameDisplay; + if(_loc2_ !== param1) + { + this._766836075frameDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"frameDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get shadow() : Rect + { + return this._903579360shadow; + } + + public function set shadow(param1:Rect) : void + { + var _loc2_:Object = this._903579360shadow; + if(_loc2_ !== param1) + { + this._903579360shadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"shadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get triangle() : Path + { + return this._1497762312triangle; + } + + public function set triangle(param1:Path) : void + { + var _loc2_:Object = this._1497762312triangle; + if(_loc2_ !== param1) + { + this._1497762312triangle = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"triangle",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultDropDownListSkin.as b/scripts/anifire/creator/skins/DefaultDropDownListSkin.as new file mode 100644 index 0000000..18b4e4e --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultDropDownListSkin.as @@ -0,0 +1,650 @@ +package anifire.creator.skins +{ + import anifire.creator.components.DefaultDropDownListItemRenderer; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.ClassFactory; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.SetStyle; + import mx.states.State; + import spark.components.Button; + import spark.components.DataGroup; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.PopUpAnchor; + import spark.components.Scroller; + import spark.layouts.VerticalLayout; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class DefaultDropDownListSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1391998104bgFill:SolidColor; + + private var _1383304148border:Rect; + + private var _1395787140borderStroke:SolidColorStroke; + + private var _385593099dataGroup:DataGroup; + + private var _433014735dropDown:Group; + + private var _906978543dropShadow:RectangularDropShadow; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1184053038labelDisplay:Label; + + private var _137111012openButton:Button; + + private var _106851532popUp:PopUpAnchor; + + private var _402164678scroller:Scroller; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:DropDownList; + + public function DefaultDropDownListSkin() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._DefaultDropDownListSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_DefaultDropDownListSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return DefaultDropDownListSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 110; + this.minHeight = 32; + this.mxmlContent = [this._DefaultDropDownListSkin_Button1_i(),this._DefaultDropDownListSkin_HGroup1_c()]; + this.currentState = "normal"; + var _DefaultDropDownListSkin_PopUpAnchor1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._DefaultDropDownListSkin_PopUpAnchor1_i,this._DefaultDropDownListSkin_PopUpAnchor1_r); + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":false + })] + }),new State({ + "name":"open", + "overrides":[new AddItems().initializeFromObject({ + "destructionPolicy":"auto", + "itemsFactory":_DefaultDropDownListSkin_PopUpAnchor1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "target":"openButton", + "name":"enabled", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"iconDisplay", + "name":"alpha", + "value":0.5 + }),new SetStyle().initializeFromObject({ + "target":"labelDisplay", + "name":"color", + "value":11184810 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + DefaultDropDownListSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function getIconFromItem(param1:Object) : Class + { + if(param1) + { + return param1.icon; + } + return null; + } + + private function _DefaultDropDownListSkin_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.popUpPosition = "above"; + _loc1_.popUpWidthMatchesAnchorWidth = false; + _loc1_.popUp = this._DefaultDropDownListSkin_Group1_i(); + _loc1_.id = "popUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.popUp = _loc1_; + BindingManager.executeBindings(this,"popUp",this.popUp); + return _loc1_; + } + + private function _DefaultDropDownListSkin_PopUpAnchor1_r() : void + { + } + + private function _DefaultDropDownListSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._DefaultDropDownListSkin_RectangularDropShadow1_i(),this._DefaultDropDownListSkin_Rect1_i(),this._DefaultDropDownListSkin_Scroller1_i()]; + _loc1_.id = "dropDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropDown = _loc1_; + BindingManager.executeBindings(this,"dropDown",this.dropDown); + return _loc1_; + } + + private function _DefaultDropDownListSkin_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.45; + _loc1_.distance = 7; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _DefaultDropDownListSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.stroke = this._DefaultDropDownListSkin_SolidColorStroke1_i(); + _loc1_.fill = this._DefaultDropDownListSkin_SolidColor1_i(); + _loc1_.initialized(this,"border"); + this.border = _loc1_; + BindingManager.executeBindings(this,"border",this.border); + return _loc1_; + } + + private function _DefaultDropDownListSkin_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.weight = 1; + _loc1_.color = 10526623; + this.borderStroke = _loc1_; + BindingManager.executeBindings(this,"borderStroke",this.borderStroke); + return _loc1_; + } + + private function _DefaultDropDownListSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this.bgFill = _loc1_; + BindingManager.executeBindings(this,"bgFill",this.bgFill); + return _loc1_; + } + + private function _DefaultDropDownListSkin_Scroller1_i() : Scroller + { + var _loc1_:Scroller = new Scroller(); + _loc1_.left = 0; + _loc1_.top = 3; + _loc1_.right = 0; + _loc1_.bottom = 3; + _loc1_.hasFocusableChildren = false; + _loc1_.minViewportInset = 1; + _loc1_.buttonMode = true; + _loc1_.viewport = this._DefaultDropDownListSkin_DataGroup1_i(); + _loc1_.id = "scroller"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.scroller = _loc1_; + BindingManager.executeBindings(this,"scroller",this.scroller); + return _loc1_; + } + + private function _DefaultDropDownListSkin_DataGroup1_i() : DataGroup + { + var _loc1_:DataGroup = new DataGroup(); + _loc1_.itemRenderer = this._DefaultDropDownListSkin_ClassFactory1_c(); + _loc1_.layout = this._DefaultDropDownListSkin_VerticalLayout1_c(); + _loc1_.id = "dataGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dataGroup = _loc1_; + BindingManager.executeBindings(this,"dataGroup",this.dataGroup); + return _loc1_; + } + + private function _DefaultDropDownListSkin_ClassFactory1_c() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = DefaultDropDownListItemRenderer; + return _loc1_; + } + + private function _DefaultDropDownListSkin_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.gap = 0; + _loc1_.horizontalAlign = "contentJustify"; + _loc1_.requestedMinRowCount = 1; + _loc1_.requestedMaxRowCount = 6; + return _loc1_; + } + + private function _DefaultDropDownListSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.buttonMode = true; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultDropDownListButtonSkin); + _loc1_.id = "openButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.openButton = _loc1_; + BindingManager.executeBindings(this,"openButton",this.openButton); + return _loc1_; + } + + private function _DefaultDropDownListSkin_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.paddingLeft = 6; + _loc1_.paddingRight = 30; + _loc1_.minWidth = 75; + _loc1_.verticalAlign = "middle"; + _loc1_.mouseEnabled = false; + _loc1_.mouseChildren = false; + _loc1_.mxmlContent = [this._DefaultDropDownListSkin_BitmapImage1_i(),this._DefaultDropDownListSkin_Label1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _DefaultDropDownListSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _DefaultDropDownListSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.minWidth = 75; + _loc1_.percentWidth = 100; + _loc1_.setStyle("fontWeight","bold"); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",this.labelDisplay); + return _loc1_; + } + + private function _DefaultDropDownListSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Number + { + return popUp.width; + },null,"dropDown.minWidth"); + result[1] = new Binding(this,function():Object + { + return getIconFromItem(hostComponent.selectedItem); + },null,"iconDisplay.source"); + result[2] = new Binding(this,function():Boolean + { + return getIconFromItem(hostComponent.selectedItem) != null; + },null,"iconDisplay.includeInLayout"); + return result; + } + + [Bindable(event="propertyChange")] + public function get bgFill() : SolidColor + { + return this._1391998104bgFill; + } + + public function set bgFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1391998104bgFill; + if(_loc2_ !== param1) + { + this._1391998104bgFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get border() : Rect + { + return this._1383304148border; + } + + public function set border(param1:Rect) : void + { + var _loc2_:Object = this._1383304148border; + if(_loc2_ !== param1) + { + this._1383304148border = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"border",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderStroke() : SolidColorStroke + { + return this._1395787140borderStroke; + } + + public function set borderStroke(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1395787140borderStroke; + if(_loc2_ !== param1) + { + this._1395787140borderStroke = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderStroke",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dataGroup() : DataGroup + { + return this._385593099dataGroup; + } + + public function set dataGroup(param1:DataGroup) : void + { + var _loc2_:Object = this._385593099dataGroup; + if(_loc2_ !== param1) + { + this._385593099dataGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dataGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropDown() : Group + { + return this._433014735dropDown; + } + + public function set dropDown(param1:Group) : void + { + var _loc2_:Object = this._433014735dropDown; + if(_loc2_ !== param1) + { + this._433014735dropDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get labelDisplay() : Label + { + return this._1184053038labelDisplay; + } + + public function set labelDisplay(param1:Label) : void + { + var _loc2_:Object = this._1184053038labelDisplay; + if(_loc2_ !== param1) + { + this._1184053038labelDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"labelDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get openButton() : Button + { + return this._137111012openButton; + } + + public function set openButton(param1:Button) : void + { + var _loc2_:Object = this._137111012openButton; + if(_loc2_ !== param1) + { + this._137111012openButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"openButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get popUp() : PopUpAnchor + { + return this._106851532popUp; + } + + public function set popUp(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._106851532popUp; + if(_loc2_ !== param1) + { + this._106851532popUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"popUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get scroller() : Scroller + { + return this._402164678scroller; + } + + public function set scroller(param1:Scroller) : void + { + var _loc2_:Object = this._402164678scroller; + if(_loc2_ !== param1) + { + this._402164678scroller = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"scroller",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : DropDownList + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:DropDownList) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultHScrollBarSkin.as b/scripts/anifire/creator/skins/DefaultHScrollBarSkin.as new file mode 100644 index 0000000..24dac23 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultHScrollBarSkin.as @@ -0,0 +1,170 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.HScrollBar; + import spark.skins.SparkSkin; + + public class DefaultHScrollBarSkin extends SparkSkin implements IStateClient2 + { + + + private var _110342614thumb:Button; + + private var _110621003track:Button; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:HScrollBar; + + public function DefaultHScrollBarSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 35; + this.minHeight = 15; + this.mxmlContent = [this._DefaultHScrollBarSkin_Button1_i(),this._DefaultHScrollBarSkin_Button2_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"track", + "name":"buttonMode", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"thumb", + "name":"buttonMode", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"inactive", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"thumb", + "name":"visible", + "value":false + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultHScrollBarSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.left = 1; + _loc1_.right = 1; + _loc1_.width = 54; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultHScrollBarTrackSkin); + _loc1_.id = "track"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.track = _loc1_; + BindingManager.executeBindings(this,"track",this.track); + return _loc1_; + } + + private function _DefaultHScrollBarSkin_Button2_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultHScrollBarThumbSkin); + _loc1_.id = "thumb"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.thumb = _loc1_; + BindingManager.executeBindings(this,"thumb",this.thumb); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get thumb() : Button + { + return this._110342614thumb; + } + + public function set thumb(param1:Button) : void + { + var _loc2_:Object = this._110342614thumb; + if(_loc2_ !== param1) + { + this._110342614thumb = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumb",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get track() : Button + { + return this._110621003track; + } + + public function set track(param1:Button) : void + { + var _loc2_:Object = this._110621003track; + if(_loc2_ !== param1) + { + this._110621003track = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"track",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : HScrollBar + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:HScrollBar) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultHScrollBarThumbSkin.as b/scripts/anifire/creator/skins/DefaultHScrollBarThumbSkin.as new file mode 100644 index 0000000..d0c73b0 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultHScrollBarThumbSkin.as @@ -0,0 +1,98 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.State; + import spark.components.Button; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultHScrollBarThumbSkin extends SparkSkin implements IStateClient2 + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultHScrollBarThumbSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 20; + this.mxmlContent = [this._DefaultHScrollBarThumbSkin_Rect1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultHScrollBarThumbSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.right = 1; + _loc1_.top = 4; + _loc1_.bottom = 4; + _loc1_.height = 8; + _loc1_.radiusX = 3; + _loc1_.radiusY = 3; + _loc1_.fill = this._DefaultHScrollBarThumbSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultHScrollBarThumbSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 12698049; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultHScrollBarTrackSkin.as b/scripts/anifire/creator/skins/DefaultHScrollBarTrackSkin.as new file mode 100644 index 0000000..038ddc0 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultHScrollBarTrackSkin.as @@ -0,0 +1,141 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.GradientEntry; + import mx.graphics.LinearGradient; + import mx.graphics.SolidColorStroke; + import mx.states.State; + import spark.components.Button; + import spark.primitives.Line; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultHScrollBarTrackSkin extends SparkSkin implements IStateClient2 + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultHScrollBarTrackSkin() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._DefaultHScrollBarTrackSkin_Rect1_c(),this._DefaultHScrollBarTrackSkin_Line1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultHScrollBarTrackSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.minWidth = 14; + _loc1_.minHeight = 15; + _loc1_.fill = this._DefaultHScrollBarTrackSkin_LinearGradient1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_LinearGradient1_c() : LinearGradient + { + var _loc1_:LinearGradient = new LinearGradient(); + _loc1_.rotation = 90; + _loc1_.entries = [this._DefaultHScrollBarTrackSkin_GradientEntry1_c(),this._DefaultHScrollBarTrackSkin_GradientEntry2_c(),this._DefaultHScrollBarTrackSkin_GradientEntry3_c()]; + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_GradientEntry1_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 15921906; + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_GradientEntry2_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 16448250; + _loc1_.ratio = 0.75; + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_GradientEntry3_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 14671839; + _loc1_.ratio = 1; + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.stroke = this._DefaultHScrollBarTrackSkin_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultHScrollBarTrackSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 15000804; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultTextInputSkin.as b/scripts/anifire/creator/skins/DefaultTextInputSkin.as new file mode 100644 index 0000000..8ccd1b7 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultTextInputSkin.as @@ -0,0 +1,521 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.DeferredInstanceFromFunction; + import mx.core.FlexVersion; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.RichEditableText; + import spark.components.TextInput; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultTextInputSkin extends SparkSkin implements IStateClient2 + { + + private static const exclusions:Array = ["background","textDisplay","promptDisplay","border"]; + + private static const exclusions_4_0:Array = ["background","textDisplay","promptDisplay"]; + + private static const contentFill:Array = ["bgFill"]; + + private static const focusExclusions:Array = ["textDisplay"]; + + + public var _DefaultTextInputSkin_HGroup1:HGroup; + + private var _1332194002background:Rect; + + private var _1391998104bgFill:SolidColor; + + private var _1383304148border:Rect; + + private var _1395787140borderStroke:SolidColorStroke; + + private var _263438014promptDisplay:Label; + + private var _903579360shadow:Rect; + + private var _831827669textDisplay:RichEditableText; + + private var __moduleFactoryInitialized:Boolean = false; + + private var paddingChanged:Boolean; + + private var _213507019hostComponent:TextInput; + + public function DefaultTextInputSkin() + { + super(); + mx_internal::_document = this; + this.blendMode = "normal"; + this.minHeight = 32; + this.mxmlContent = [this._DefaultTextInputSkin_Rect1_i(),this._DefaultTextInputSkin_Rect2_i(),this._DefaultTextInputSkin_Rect3_i(),this._DefaultTextInputSkin_HGroup1_i()]; + this.currentState = "normal"; + var _loc1_:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._DefaultTextInputSkin_Label1_i); + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"disabled", + "stateGroups":["disabledStates"], + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"normalWithPrompt", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_loc1_, + "destination":null, + "propertyName":"mxmlContent", + "position":"after", + "relativeTo":["_DefaultTextInputSkin_HGroup1"] + })] + }),new State({ + "name":"disabledWithPrompt", + "stateGroups":["disabledStates"], + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_loc1_, + "destination":null, + "propertyName":"mxmlContent", + "position":"after", + "relativeTo":["_DefaultTextInputSkin_HGroup1"] + }),new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function get colorizeExclusions() : Array + { + if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5) + { + return exclusions_4_0; + } + return exclusions; + } + + override public function get contentItems() : Array + { + return contentFill; + } + + override protected function commitProperties() : void + { + super.commitProperties(); + if(this.paddingChanged) + { + this.updatePadding(); + this.paddingChanged = false; + } + } + + override protected function initializationComplete() : void + { + useChromeColor = true; + super.initializationComplete(); + } + + override protected function updateDisplayList(param1:Number, param2:Number) : void + { + if(getStyle("borderVisible") == true) + { + this.border.visible = true; + this.shadow.visible = true; + this.background.left = this.background.top = this.background.right = this.background.bottom = 1; + this.textDisplay.left = this.textDisplay.top = this.textDisplay.right = this.textDisplay.bottom = 1; + if(this.promptDisplay) + { + this.promptDisplay.setLayoutBoundsSize(param1 - 2,param2 - 2); + this.promptDisplay.setLayoutBoundsPosition(1,1); + } + } + else + { + this.border.visible = false; + this.shadow.visible = false; + this.background.left = this.background.top = this.background.right = this.background.bottom = 0; + this.textDisplay.left = this.textDisplay.top = this.textDisplay.right = this.textDisplay.bottom = 0; + if(this.promptDisplay) + { + this.promptDisplay.setLayoutBoundsSize(param1,param2); + this.promptDisplay.setLayoutBoundsPosition(0,0); + } + } + this.borderStroke.color = getStyle("borderColor"); + this.borderStroke.alpha = getStyle("borderAlpha"); + super.updateDisplayList(param1,param2); + } + + private function updatePadding() : void + { + var _loc1_:Number = NaN; + if(!this.textDisplay) + { + return; + } + _loc1_ = getStyle("paddingLeft"); + if(this.textDisplay.getStyle("paddingLeft") != _loc1_) + { + this.textDisplay.setStyle("paddingLeft",_loc1_); + } + _loc1_ = getStyle("paddingTop"); + if(this.textDisplay.getStyle("paddingTop") != _loc1_) + { + this.textDisplay.setStyle("paddingTop",_loc1_); + } + _loc1_ = getStyle("paddingRight"); + if(this.textDisplay.getStyle("paddingRight") != _loc1_) + { + this.textDisplay.setStyle("paddingRight",_loc1_); + } + _loc1_ = getStyle("paddingBottom"); + if(this.textDisplay.getStyle("paddingBottom") != _loc1_) + { + this.textDisplay.setStyle("paddingBottom",_loc1_); + } + if(!this.promptDisplay) + { + return; + } + _loc1_ = getStyle("paddingLeft"); + if(this.promptDisplay.getStyle("paddingLeft") != _loc1_) + { + this.promptDisplay.setStyle("paddingLeft",_loc1_); + } + _loc1_ = getStyle("paddingTop"); + if(this.promptDisplay.getStyle("paddingTop") != _loc1_) + { + this.promptDisplay.setStyle("paddingTop",_loc1_); + } + _loc1_ = getStyle("paddingRight"); + if(this.promptDisplay.getStyle("paddingRight") != _loc1_) + { + this.promptDisplay.setStyle("paddingRight",_loc1_); + } + _loc1_ = getStyle("paddingBottom"); + if(this.promptDisplay.getStyle("paddingBottom") != _loc1_) + { + this.promptDisplay.setStyle("paddingBottom",_loc1_); + } + } + + override public function styleChanged(param1:String) : void + { + var _loc2_:Boolean = !param1 || param1 == "styleName"; + super.styleChanged(param1); + if(_loc2_ || param1.indexOf("padding") == 0) + { + this.paddingChanged = true; + invalidateProperties(); + } + } + + override public function get focusSkinExclusions() : Array + { + return focusExclusions; + } + + private function _DefaultTextInputSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.stroke = this._DefaultTextInputSkin_SolidColorStroke1_i(); + _loc1_.initialized(this,"border"); + this.border = _loc1_; + BindingManager.executeBindings(this,"border",this.border); + return _loc1_; + } + + private function _DefaultTextInputSkin_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.weight = 1; + this.borderStroke = _loc1_; + BindingManager.executeBindings(this,"borderStroke",this.borderStroke); + return _loc1_; + } + + private function _DefaultTextInputSkin_Rect2_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.right = 1; + _loc1_.top = 1; + _loc1_.bottom = 1; + _loc1_.radiusX = 2; + _loc1_.fill = this._DefaultTextInputSkin_SolidColor1_i(); + _loc1_.initialized(this,"background"); + this.background = _loc1_; + BindingManager.executeBindings(this,"background",this.background); + return _loc1_; + } + + private function _DefaultTextInputSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this.bgFill = _loc1_; + BindingManager.executeBindings(this,"bgFill",this.bgFill); + return _loc1_; + } + + private function _DefaultTextInputSkin_Rect3_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 1; + _loc1_.top = 1; + _loc1_.right = 1; + _loc1_.height = 1; + _loc1_.radiusX = 2; + _loc1_.fill = this._DefaultTextInputSkin_SolidColor2_c(); + _loc1_.initialized(this,"shadow"); + this.shadow = _loc1_; + BindingManager.executeBindings(this,"shadow",this.shadow); + return _loc1_; + } + + private function _DefaultTextInputSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 0; + _loc1_.alpha = 0.12; + return _loc1_; + } + + private function _DefaultTextInputSkin_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.verticalAlign = "baseline"; + _loc1_.paddingLeft = 3; + _loc1_.paddingRight = 3; + _loc1_.paddingTop = 4; + _loc1_.paddingBottom = 2; + _loc1_.mxmlContent = [this._DefaultTextInputSkin_RichEditableText1_i()]; + _loc1_.id = "_DefaultTextInputSkin_HGroup1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._DefaultTextInputSkin_HGroup1 = _loc1_; + BindingManager.executeBindings(this,"_DefaultTextInputSkin_HGroup1",this._DefaultTextInputSkin_HGroup1); + return _loc1_; + } + + private function _DefaultTextInputSkin_RichEditableText1_i() : RichEditableText + { + var _loc1_:RichEditableText = new RichEditableText(); + _loc1_.percentWidth = 100; + _loc1_.widthInChars = 10; + _loc1_.id = "textDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.textDisplay = _loc1_; + BindingManager.executeBindings(this,"textDisplay",this.textDisplay); + return _loc1_; + } + + private function _DefaultTextInputSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.mouseEnabled = false; + _loc1_.mouseChildren = false; + _loc1_.includeInLayout = false; + _loc1_.setStyle("verticalAlign","middle"); + _loc1_.id = "promptDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.promptDisplay = _loc1_; + BindingManager.executeBindings(this,"promptDisplay",this.promptDisplay); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get background() : Rect + { + return this._1332194002background; + } + + public function set background(param1:Rect) : void + { + var _loc2_:Object = this._1332194002background; + if(_loc2_ !== param1) + { + this._1332194002background = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"background",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get bgFill() : SolidColor + { + return this._1391998104bgFill; + } + + public function set bgFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1391998104bgFill; + if(_loc2_ !== param1) + { + this._1391998104bgFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get border() : Rect + { + return this._1383304148border; + } + + public function set border(param1:Rect) : void + { + var _loc2_:Object = this._1383304148border; + if(_loc2_ !== param1) + { + this._1383304148border = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"border",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderStroke() : SolidColorStroke + { + return this._1395787140borderStroke; + } + + public function set borderStroke(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1395787140borderStroke; + if(_loc2_ !== param1) + { + this._1395787140borderStroke = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderStroke",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get promptDisplay() : Label + { + return this._263438014promptDisplay; + } + + public function set promptDisplay(param1:Label) : void + { + var _loc2_:Object = this._263438014promptDisplay; + if(_loc2_ !== param1) + { + this._263438014promptDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"promptDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get shadow() : Rect + { + return this._903579360shadow; + } + + public function set shadow(param1:Rect) : void + { + var _loc2_:Object = this._903579360shadow; + if(_loc2_ !== param1) + { + this._903579360shadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"shadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get textDisplay() : RichEditableText + { + return this._831827669textDisplay; + } + + public function set textDisplay(param1:RichEditableText) : void + { + var _loc2_:Object = this._831827669textDisplay; + if(_loc2_ !== param1) + { + this._831827669textDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"textDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : TextInput + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:TextInput) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultVScrollBarSkin.as b/scripts/anifire/creator/skins/DefaultVScrollBarSkin.as new file mode 100644 index 0000000..d1e0c9a --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultVScrollBarSkin.as @@ -0,0 +1,170 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.VScrollBar; + import spark.skins.SparkSkin; + + public class DefaultVScrollBarSkin extends SparkSkin implements IStateClient2 + { + + + private var _110342614thumb:Button; + + private var _110621003track:Button; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:VScrollBar; + + public function DefaultVScrollBarSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 15; + this.minHeight = 35; + this.mxmlContent = [this._DefaultVScrollBarSkin_Button1_i(),this._DefaultVScrollBarSkin_Button2_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"track", + "name":"buttonMode", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"thumb", + "name":"buttonMode", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"inactive", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"thumb", + "name":"visible", + "value":false + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultVScrollBarSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.top = 1; + _loc1_.bottom = 1; + _loc1_.height = 54; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultVScrollBarTrackSkin); + _loc1_.id = "track"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.track = _loc1_; + BindingManager.executeBindings(this,"track",this.track); + return _loc1_; + } + + private function _DefaultVScrollBarSkin_Button2_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",DefaultVScrollBarThumbSkin); + _loc1_.id = "thumb"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.thumb = _loc1_; + BindingManager.executeBindings(this,"thumb",this.thumb); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get thumb() : Button + { + return this._110342614thumb; + } + + public function set thumb(param1:Button) : void + { + var _loc2_:Object = this._110342614thumb; + if(_loc2_ !== param1) + { + this._110342614thumb = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumb",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get track() : Button + { + return this._110621003track; + } + + public function set track(param1:Button) : void + { + var _loc2_:Object = this._110621003track; + if(_loc2_ !== param1) + { + this._110621003track = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"track",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : VScrollBar + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:VScrollBar) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultVScrollBarThumbSkin.as b/scripts/anifire/creator/skins/DefaultVScrollBarThumbSkin.as new file mode 100644 index 0000000..d08255e --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultVScrollBarThumbSkin.as @@ -0,0 +1,98 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.State; + import spark.components.Button; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultVScrollBarThumbSkin extends SparkSkin implements IStateClient2 + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultVScrollBarThumbSkin() + { + super(); + mx_internal::_document = this; + this.minHeight = 20; + this.mxmlContent = [this._DefaultVScrollBarThumbSkin_Rect1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultVScrollBarThumbSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 4; + _loc1_.right = 4; + _loc1_.top = 1; + _loc1_.bottom = 1; + _loc1_.width = 8; + _loc1_.radiusX = 3; + _loc1_.radiusY = 3; + _loc1_.fill = this._DefaultVScrollBarThumbSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultVScrollBarThumbSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 12698049; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/DefaultVScrollBarTrackSkin.as b/scripts/anifire/creator/skins/DefaultVScrollBarTrackSkin.as new file mode 100644 index 0000000..4fd1181 --- /dev/null +++ b/scripts/anifire/creator/skins/DefaultVScrollBarTrackSkin.as @@ -0,0 +1,140 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.GradientEntry; + import mx.graphics.LinearGradient; + import mx.graphics.SolidColorStroke; + import mx.states.State; + import spark.components.Button; + import spark.primitives.Line; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class DefaultVScrollBarTrackSkin extends SparkSkin implements IStateClient2 + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function DefaultVScrollBarTrackSkin() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._DefaultVScrollBarTrackSkin_Rect1_c(),this._DefaultVScrollBarTrackSkin_Line1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _DefaultVScrollBarTrackSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.minWidth = 15; + _loc1_.minHeight = 14; + _loc1_.fill = this._DefaultVScrollBarTrackSkin_LinearGradient1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_LinearGradient1_c() : LinearGradient + { + var _loc1_:LinearGradient = new LinearGradient(); + _loc1_.entries = [this._DefaultVScrollBarTrackSkin_GradientEntry1_c(),this._DefaultVScrollBarTrackSkin_GradientEntry2_c(),this._DefaultVScrollBarTrackSkin_GradientEntry3_c()]; + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_GradientEntry1_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 15921906; + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_GradientEntry2_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 16448250; + _loc1_.ratio = 0.75; + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_GradientEntry3_c() : GradientEntry + { + var _loc1_:GradientEntry = new GradientEntry(); + _loc1_.color = 14671839; + _loc1_.ratio = 1; + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.stroke = this._DefaultVScrollBarTrackSkin_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _DefaultVScrollBarTrackSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 15000804; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/FlatColorPickerSkin.as b/scripts/anifire/creator/skins/FlatColorPickerSkin.as new file mode 100644 index 0000000..dd1ed0b --- /dev/null +++ b/scripts/anifire/creator/skins/FlatColorPickerSkin.as @@ -0,0 +1,706 @@ +package anifire.creator.skins +{ + import anifire.creator.components.ArrowTipContainer; + import anifire.creator.components.ColorDisplayGroup; + import anifire.creator.components.ColorPicker; + import anifire.creator.components.ColorPickerItemRenderer; + import anifire.creator.components.IconButton; + import anifire.util.UtilDict; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.ClassFactory; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.DataGroup; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.PopUpAnchor; + import spark.components.TextInput; + import spark.components.VGroup; + import spark.layouts.TileLayout; + import spark.primitives.Path; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class FlatColorPickerSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _FlatColorPickerSkin_Group2:Group; + + private var _358089761colorDisplay:ColorDisplayGroup; + + private var _1269194279colorInput:TextInput; + + private var _385593099dataGroup:DataGroup; + + private var _433014735dropDown:Group; + + private var _137111012openButton:Button; + + private var _106851532popUp:PopUpAnchor; + + private var _446482375previewColorDisplay:ColorDisplayGroup; + + private var _575718584swatchpanel:VGroup; + + private var _1583353795transparentColorButton:IconButton; + + private var _814008535triangle1:Path; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_panel_text_nocolor_png_1973715611:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:ColorPicker; + + public function FlatColorPickerSkin() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_panel_text_nocolor_png_1973715611 = FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._FlatColorPickerSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_FlatColorPickerSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return FlatColorPickerSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.minWidth = 32; + this.mxmlContent = [this._FlatColorPickerSkin_Button1_i(),this._FlatColorPickerSkin_Group4_c()]; + this.currentState = "normal"; + var _FlatColorPickerSkin_PopUpAnchor1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._FlatColorPickerSkin_PopUpAnchor1_i,this._FlatColorPickerSkin_PopUpAnchor1_r); + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":false + })] + }),new State({ + "name":"open", + "overrides":[new AddItems().initializeFromObject({ + "destructionPolicy":"auto", + "itemsFactory":_FlatColorPickerSkin_PopUpAnchor1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetProperty().initializeFromObject({ + "target":"popUp", + "name":"displayPopUp", + "value":true + })] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + FlatColorPickerSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _FlatColorPickerSkin_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.right = 40; + _loc1_.percentHeight = 100; + _loc1_.popUpPosition = "above"; + _loc1_.popUpWidthMatchesAnchorWidth = false; + _loc1_.popUp = this._FlatColorPickerSkin_Group1_i(); + _loc1_.id = "popUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.popUp = _loc1_; + BindingManager.executeBindings(this,"popUp",this.popUp); + return _loc1_; + } + + private function _FlatColorPickerSkin_PopUpAnchor1_r() : void + { + } + + private function _FlatColorPickerSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._FlatColorPickerSkin_ArrowTipContainer1_c()]; + _loc1_.id = "dropDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropDown = _loc1_; + BindingManager.executeBindings(this,"dropDown",this.dropDown); + return _loc1_; + } + + private function _FlatColorPickerSkin_ArrowTipContainer1_c() : ArrowTipContainer + { + var _loc1_:ArrowTipContainer = new ArrowTipContainer(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.tipPosition = "aboveRight"; + _loc1_.targetWidth = 20; + _loc1_.offset = 15; + _loc1_.content = [this._FlatColorPickerSkin_VGroup1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _FlatColorPickerSkin_VGroup1_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.paddingLeft = 10; + _loc1_.paddingRight = 10; + _loc1_.paddingTop = 10; + _loc1_.paddingBottom = 10; + _loc1_.mxmlContent = [this._FlatColorPickerSkin_HGroup1_c(),this._FlatColorPickerSkin_Group3_c()]; + _loc1_.id = "swatchpanel"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.swatchpanel = _loc1_; + BindingManager.executeBindings(this,"swatchpanel",this.swatchpanel); + return _loc1_; + } + + private function _FlatColorPickerSkin_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._FlatColorPickerSkin_ColorDisplayGroup1_i(),this._FlatColorPickerSkin_TextInput1_i(),this._FlatColorPickerSkin_Group2_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _FlatColorPickerSkin_ColorDisplayGroup1_i() : ColorDisplayGroup + { + var _loc1_:ColorDisplayGroup = new ColorDisplayGroup(); + _loc1_.width = 20; + _loc1_.height = 20; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "previewColorDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.previewColorDisplay = _loc1_; + BindingManager.executeBindings(this,"previewColorDisplay",this.previewColorDisplay); + return _loc1_; + } + + private function _FlatColorPickerSkin_TextInput1_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.width = 80; + _loc1_.id = "colorInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorInput = _loc1_; + BindingManager.executeBindings(this,"colorInput",this.colorInput); + return _loc1_; + } + + private function _FlatColorPickerSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._FlatColorPickerSkin_IconButton1_i()]; + _loc1_.id = "_FlatColorPickerSkin_Group2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._FlatColorPickerSkin_Group2 = _loc1_; + BindingManager.executeBindings(this,"_FlatColorPickerSkin_Group2",this._FlatColorPickerSkin_Group2); + return _loc1_; + } + + private function _FlatColorPickerSkin_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.bottom = 0; + _loc1_.right = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_panel_text_nocolor_png_1973715611); + _loc1_.id = "transparentColorButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.transparentColorButton = _loc1_; + BindingManager.executeBindings(this,"transparentColorButton",this.transparentColorButton); + return _loc1_; + } + + private function _FlatColorPickerSkin_Group3_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._FlatColorPickerSkin_Rect1_c(),this._FlatColorPickerSkin_DataGroup1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _FlatColorPickerSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.fill = this._FlatColorPickerSkin_SolidColor1_c(); + _loc1_.stroke = this._FlatColorPickerSkin_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _FlatColorPickerSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 0; + return _loc1_; + } + + private function _FlatColorPickerSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 0; + return _loc1_; + } + + private function _FlatColorPickerSkin_DataGroup1_i() : DataGroup + { + var _loc1_:DataGroup = new DataGroup(); + _loc1_.left = 1; + _loc1_.top = 1; + _loc1_.right = 0; + _loc1_.bottom = 0; + _loc1_.itemRenderer = this._FlatColorPickerSkin_ClassFactory1_c(); + _loc1_.layout = this._FlatColorPickerSkin_TileLayout1_c(); + _loc1_.id = "dataGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dataGroup = _loc1_; + BindingManager.executeBindings(this,"dataGroup",this.dataGroup); + return _loc1_; + } + + private function _FlatColorPickerSkin_ClassFactory1_c() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = ColorPickerItemRenderer; + return _loc1_; + } + + private function _FlatColorPickerSkin_TileLayout1_c() : TileLayout + { + var _loc1_:TileLayout = new TileLayout(); + _loc1_.verticalGap = 0; + _loc1_.horizontalGap = 0; + _loc1_.requestedColumnCount = 20; + _loc1_.requestedRowCount = 12; + return _loc1_; + } + + private function _FlatColorPickerSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.width = 35; + _loc1_.height = 25; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.buttonMode = true; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",ColorPickerOpenButtonSkin); + _loc1_.id = "openButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.openButton = _loc1_; + BindingManager.executeBindings(this,"openButton",this.openButton); + return _loc1_; + } + + private function _FlatColorPickerSkin_Group4_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 35; + _loc1_.height = 25; + _loc1_.verticalCenter = 0; + _loc1_.mouseChildren = false; + _loc1_.mouseEnabled = false; + _loc1_.mxmlContent = [this._FlatColorPickerSkin_ColorDisplayGroup2_i(),this._FlatColorPickerSkin_Path1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _FlatColorPickerSkin_ColorDisplayGroup2_i() : ColorDisplayGroup + { + var _loc1_:ColorDisplayGroup = new ColorDisplayGroup(); + _loc1_.width = 25; + _loc1_.height = 25; + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "colorDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorDisplay = _loc1_; + BindingManager.executeBindings(this,"colorDisplay",this.colorDisplay); + return _loc1_; + } + + private function _FlatColorPickerSkin_Path1_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.right = 2; + _loc1_.verticalCenter = 0; + _loc1_.data = "m 0 0 l 6 0 l -3 3 Z"; + _loc1_.fill = this._FlatColorPickerSkin_SolidColor2_c(); + _loc1_.initialized(this,"triangle1"); + this.triangle1 = _loc1_; + BindingManager.executeBindings(this,"triangle1",this.triangle1); + return _loc1_; + } + + private function _FlatColorPickerSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + return _loc1_; + } + + private function _FlatColorPickerSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():uint + { + return hostComponent.previewColor; + },null,"previewColorDisplay.color"); + result[1] = new Binding(this,function():Boolean + { + return hostComponent.allowTransparent; + },null,"_FlatColorPickerSkin_Group2.includeInLayout"); + result[2] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","No Color"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"transparentColorButton.toolTip"); + result[3] = new Binding(this,function():uint + { + return hostComponent.selectedItem; + },null,"colorDisplay.color"); + return result; + } + + [Bindable(event="propertyChange")] + public function get colorDisplay() : ColorDisplayGroup + { + return this._358089761colorDisplay; + } + + public function set colorDisplay(param1:ColorDisplayGroup) : void + { + var _loc2_:Object = this._358089761colorDisplay; + if(_loc2_ !== param1) + { + this._358089761colorDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorInput() : TextInput + { + return this._1269194279colorInput; + } + + public function set colorInput(param1:TextInput) : void + { + var _loc2_:Object = this._1269194279colorInput; + if(_loc2_ !== param1) + { + this._1269194279colorInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dataGroup() : DataGroup + { + return this._385593099dataGroup; + } + + public function set dataGroup(param1:DataGroup) : void + { + var _loc2_:Object = this._385593099dataGroup; + if(_loc2_ !== param1) + { + this._385593099dataGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dataGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropDown() : Group + { + return this._433014735dropDown; + } + + public function set dropDown(param1:Group) : void + { + var _loc2_:Object = this._433014735dropDown; + if(_loc2_ !== param1) + { + this._433014735dropDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get openButton() : Button + { + return this._137111012openButton; + } + + public function set openButton(param1:Button) : void + { + var _loc2_:Object = this._137111012openButton; + if(_loc2_ !== param1) + { + this._137111012openButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"openButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get popUp() : PopUpAnchor + { + return this._106851532popUp; + } + + public function set popUp(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._106851532popUp; + if(_loc2_ !== param1) + { + this._106851532popUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"popUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get previewColorDisplay() : ColorDisplayGroup + { + return this._446482375previewColorDisplay; + } + + public function set previewColorDisplay(param1:ColorDisplayGroup) : void + { + var _loc2_:Object = this._446482375previewColorDisplay; + if(_loc2_ !== param1) + { + this._446482375previewColorDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"previewColorDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get swatchpanel() : VGroup + { + return this._575718584swatchpanel; + } + + public function set swatchpanel(param1:VGroup) : void + { + var _loc2_:Object = this._575718584swatchpanel; + if(_loc2_ !== param1) + { + this._575718584swatchpanel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"swatchpanel",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get transparentColorButton() : IconButton + { + return this._1583353795transparentColorButton; + } + + public function set transparentColorButton(param1:IconButton) : void + { + var _loc2_:Object = this._1583353795transparentColorButton; + if(_loc2_ !== param1) + { + this._1583353795transparentColorButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"transparentColorButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get triangle1() : Path + { + return this._814008535triangle1; + } + + public function set triangle1(param1:Path) : void + { + var _loc2_:Object = this._814008535triangle1; + if(_loc2_ !== param1) + { + this._814008535triangle1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"triangle1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ColorPicker + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ColorPicker) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as b/scripts/anifire/creator/skins/FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as new file mode 100644 index 0000000..8d139ef --- /dev/null +++ b/scripts/anifire/creator/skins/FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as @@ -0,0 +1,14 @@ +package anifire.creator.skins +{ + import mx.core.BitmapAsset; + + public class FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611 extends BitmapAsset + { + + + public function FlatColorPickerSkin__embed_mxml__styles_images_panel_text_nocolor_png_1973715611() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/skins/HButtonBarSkin.as b/scripts/anifire/creator/skins/HButtonBarSkin.as new file mode 100644 index 0000000..6cbabba --- /dev/null +++ b/scripts/anifire/creator/skins/HButtonBarSkin.as @@ -0,0 +1,217 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.ClassFactory; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.ButtonBar; + import spark.components.DataGroup; + import spark.components.supportClasses.Skin; + import spark.layouts.HorizontalLayout; + + public class HButtonBarSkin extends Skin implements IStateClient2 + { + + + private var _385593099dataGroup:DataGroup; + + private var _1518788094firstButton:ClassFactory; + + private var _1454038376lastButton:ClassFactory; + + private var _654857945middleButton:ClassFactory; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:ButtonBar; + + public function HButtonBarSkin() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._HButtonBarSkin_DataGroup1_i()]; + this.currentState = "normal"; + this._HButtonBarSkin_ClassFactory1_i(); + this._HButtonBarSkin_ClassFactory2_i(); + this._HButtonBarSkin_ClassFactory3_i(); + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _HButtonBarSkin_ClassFactory1_i() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = HButtonBarSkinInnerClass0; + _loc1_.properties = {"outerDocument":this}; + this.firstButton = _loc1_; + BindingManager.executeBindings(this,"firstButton",this.firstButton); + return _loc1_; + } + + private function _HButtonBarSkin_ClassFactory2_i() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = HButtonBarSkinInnerClass1; + _loc1_.properties = {"outerDocument":this}; + this.lastButton = _loc1_; + BindingManager.executeBindings(this,"lastButton",this.lastButton); + return _loc1_; + } + + private function _HButtonBarSkin_ClassFactory3_i() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = HButtonBarSkinInnerClass2; + _loc1_.properties = {"outerDocument":this}; + this.middleButton = _loc1_; + BindingManager.executeBindings(this,"middleButton",this.middleButton); + return _loc1_; + } + + private function _HButtonBarSkin_DataGroup1_i() : DataGroup + { + var _loc1_:DataGroup = new DataGroup(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.layout = this._HButtonBarSkin_HorizontalLayout1_c(); + _loc1_.id = "dataGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dataGroup = _loc1_; + BindingManager.executeBindings(this,"dataGroup",this.dataGroup); + return _loc1_; + } + + private function _HButtonBarSkin_HorizontalLayout1_c() : HorizontalLayout + { + var _loc1_:HorizontalLayout = new HorizontalLayout(); + _loc1_.gap = -4; + _loc1_.columnWidth = 45; + _loc1_.variableColumnWidth = false; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get dataGroup() : DataGroup + { + return this._385593099dataGroup; + } + + public function set dataGroup(param1:DataGroup) : void + { + var _loc2_:Object = this._385593099dataGroup; + if(_loc2_ !== param1) + { + this._385593099dataGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dataGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get firstButton() : ClassFactory + { + return this._1518788094firstButton; + } + + public function set firstButton(param1:ClassFactory) : void + { + var _loc2_:Object = this._1518788094firstButton; + if(_loc2_ !== param1) + { + this._1518788094firstButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"firstButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get lastButton() : ClassFactory + { + return this._1454038376lastButton; + } + + public function set lastButton(param1:ClassFactory) : void + { + var _loc2_:Object = this._1454038376lastButton; + if(_loc2_ !== param1) + { + this._1454038376lastButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"lastButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get middleButton() : ClassFactory + { + return this._654857945middleButton; + } + + public function set middleButton(param1:ClassFactory) : void + { + var _loc2_:Object = this._654857945middleButton; + if(_loc2_ !== param1) + { + this._654857945middleButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"middleButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ButtonBar + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ButtonBar) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/HButtonBarSkinInnerClass0.as b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass0.as new file mode 100644 index 0000000..1a6a80e --- /dev/null +++ b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass0.as @@ -0,0 +1,64 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.ButtonBarButton; + + public class HButtonBarSkinInnerClass0 extends ButtonBarButton + { + + + private var _88844982outerDocument:HButtonBarSkin; + + private var __moduleFactoryInitialized:Boolean = false; + + public function HButtonBarSkinInnerClass0() + { + super(); + this.buttonMode = true; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.skinClass = CustomButtonBarButtonSkin; + }; + } + + override public function initialize() : void + { + super.initialize(); + } + + [Bindable(event="propertyChange")] + public function get outerDocument() : HButtonBarSkin + { + return this._88844982outerDocument; + } + + public function set outerDocument(param1:HButtonBarSkin) : void + { + var _loc2_:Object = this._88844982outerDocument; + if(_loc2_ !== param1) + { + this._88844982outerDocument = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"outerDocument",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/HButtonBarSkinInnerClass1.as b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass1.as new file mode 100644 index 0000000..e911cef --- /dev/null +++ b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass1.as @@ -0,0 +1,64 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.ButtonBarButton; + + public class HButtonBarSkinInnerClass1 extends ButtonBarButton + { + + + private var _88844982outerDocument:HButtonBarSkin; + + private var __moduleFactoryInitialized:Boolean = false; + + public function HButtonBarSkinInnerClass1() + { + super(); + this.buttonMode = true; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.skinClass = CustomButtonBarButtonSkin; + }; + } + + override public function initialize() : void + { + super.initialize(); + } + + [Bindable(event="propertyChange")] + public function get outerDocument() : HButtonBarSkin + { + return this._88844982outerDocument; + } + + public function set outerDocument(param1:HButtonBarSkin) : void + { + var _loc2_:Object = this._88844982outerDocument; + if(_loc2_ !== param1) + { + this._88844982outerDocument = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"outerDocument",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/HButtonBarSkinInnerClass2.as b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass2.as new file mode 100644 index 0000000..2b2d9c3 --- /dev/null +++ b/scripts/anifire/creator/skins/HButtonBarSkinInnerClass2.as @@ -0,0 +1,64 @@ +package anifire.creator.skins +{ + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.ButtonBarButton; + + public class HButtonBarSkinInnerClass2 extends ButtonBarButton + { + + + private var _88844982outerDocument:HButtonBarSkin; + + private var __moduleFactoryInitialized:Boolean = false; + + public function HButtonBarSkinInnerClass2() + { + super(); + this.buttonMode = true; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.skinClass = CustomButtonBarButtonSkin; + }; + } + + override public function initialize() : void + { + super.initialize(); + } + + [Bindable(event="propertyChange")] + public function get outerDocument() : HButtonBarSkin + { + return this._88844982outerDocument; + } + + public function set outerDocument(param1:HButtonBarSkin) : void + { + var _loc2_:Object = this._88844982outerDocument; + if(_loc2_ !== param1) + { + this._88844982outerDocument = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"outerDocument",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/IconButtonSkin.as b/scripts/anifire/creator/skins/IconButtonSkin.as new file mode 100644 index 0000000..926b740 --- /dev/null +++ b/scripts/anifire/creator/skins/IconButtonSkin.as @@ -0,0 +1,127 @@ +package anifire.creator.skins +{ + import anifire.creator.components.IconButton; + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.State; + import spark.components.supportClasses.Skin; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + + public class IconButtonSkin extends Skin implements IStateClient2 + { + + + private var _1031744009iconDisplay:BitmapImage; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:IconButton; + + public function IconButtonSkin() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._IconButtonSkin_Rect1_c(),this._IconButtonSkin_BitmapImage1_i()]; + this.currentState = "disabled"; + states = [new State({ + "name":"disabled", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"up", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _IconButtonSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._IconButtonSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _IconButtonSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.alpha = 0; + return _loc1_; + } + + private function _IconButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.smooth = true; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : IconButton + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:IconButton) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/MenuItemListSkin.as b/scripts/anifire/creator/skins/MenuItemListSkin.as new file mode 100644 index 0000000..f34a97d --- /dev/null +++ b/scripts/anifire/creator/skins/MenuItemListSkin.as @@ -0,0 +1,133 @@ +package anifire.creator.skins +{ + import anifire.creator.components.MenuItemList; + import anifire.creator.components.MenuItemRenderer; + import mx.binding.BindingManager; + import mx.core.ClassFactory; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.DataGroup; + import spark.layouts.VerticalLayout; + import spark.skins.SparkSkin; + + public class MenuItemListSkin extends SparkSkin implements IStateClient2 + { + + + private var _385593099dataGroup:DataGroup; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:MenuItemList; + + public function MenuItemListSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 112; + this.minHeight = 0; + this.blendMode = "normal"; + this.mxmlContent = [this._MenuItemListSkin_DataGroup1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _MenuItemListSkin_DataGroup1_i() : DataGroup + { + var _loc1_:DataGroup = new DataGroup(); + _loc1_.itemRenderer = this._MenuItemListSkin_ClassFactory1_c(); + _loc1_.layout = this._MenuItemListSkin_VerticalLayout1_c(); + _loc1_.id = "dataGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dataGroup = _loc1_; + BindingManager.executeBindings(this,"dataGroup",this.dataGroup); + return _loc1_; + } + + private function _MenuItemListSkin_ClassFactory1_c() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = MenuItemRenderer; + return _loc1_; + } + + private function _MenuItemListSkin_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.gap = 0; + _loc1_.horizontalAlign = "contentJustify"; + _loc1_.variableRowHeight = true; + _loc1_.requestedMinRowCount = 1; + _loc1_.requestedRowCount = -1; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get dataGroup() : DataGroup + { + return this._385593099dataGroup; + } + + public function set dataGroup(param1:DataGroup) : void + { + var _loc2_:Object = this._385593099dataGroup; + if(_loc2_ !== param1) + { + this._385593099dataGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dataGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : MenuItemList + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:MenuItemList) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/PrimaryButtonSkin.as b/scripts/anifire/creator/skins/PrimaryButtonSkin.as new file mode 100644 index 0000000..171f318 --- /dev/null +++ b/scripts/anifire/creator/skins/PrimaryButtonSkin.as @@ -0,0 +1,278 @@ +package anifire.creator.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.HGroup; + import spark.components.Label; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + public class PrimaryButtonSkin extends SparkSkin implements IStateClient2 + { + + + private var _1233170516_PrimaryButtonSkin_SolidColor1:SolidColor; + + private var _809612678contentGroup:HGroup; + + private var _3143043fill:Rect; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1184053038labelDisplay:Label; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:Button; + + public function PrimaryButtonSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 80; + this.minHeight = 32; + this.mxmlContent = [this._PrimaryButtonSkin_Rect1_i(),this._PrimaryButtonSkin_HGroup1_i()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_PrimaryButtonSkin_SolidColor1", + "name":"color", + "value":14509346 + })] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"_PrimaryButtonSkin_SolidColor1", + "name":"color", + "value":13290444 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override protected function commitProperties() : void + { + super.commitProperties(); + this.iconDisplay.includeInLayout = this.iconDisplay.source != null; + } + + private function _PrimaryButtonSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 3; + _loc1_.radiusY = 3; + _loc1_.fill = this._PrimaryButtonSkin_SolidColor1_i(); + _loc1_.initialized(this,"fill"); + this.fill = _loc1_; + BindingManager.executeBindings(this,"fill",this.fill); + return _loc1_; + } + + private function _PrimaryButtonSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15301947; + this._PrimaryButtonSkin_SolidColor1 = _loc1_; + BindingManager.executeBindings(this,"_PrimaryButtonSkin_SolidColor1",this._PrimaryButtonSkin_SolidColor1); + return _loc1_; + } + + private function _PrimaryButtonSkin_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.gap = 5; + _loc1_.paddingLeft = 15; + _loc1_.paddingRight = 15; + _loc1_.horizontalAlign = "center"; + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._PrimaryButtonSkin_BitmapImage1_i(),this._PrimaryButtonSkin_Label1_i()]; + _loc1_.id = "contentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contentGroup = _loc1_; + BindingManager.executeBindings(this,"contentGroup",this.contentGroup); + return _loc1_; + } + + private function _PrimaryButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _PrimaryButtonSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.setStyle("color",16777215); + _loc1_.setStyle("fontStyle","italic"); + _loc1_.setStyle("typographicCase","lowercaseToSmallCaps"); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",this.labelDisplay); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _PrimaryButtonSkin_SolidColor1() : SolidColor + { + return this._1233170516_PrimaryButtonSkin_SolidColor1; + } + + public function set _PrimaryButtonSkin_SolidColor1(param1:SolidColor) : void + { + var _loc2_:Object = this._1233170516_PrimaryButtonSkin_SolidColor1; + if(_loc2_ !== param1) + { + this._1233170516_PrimaryButtonSkin_SolidColor1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_PrimaryButtonSkin_SolidColor1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contentGroup() : HGroup + { + return this._809612678contentGroup; + } + + public function set contentGroup(param1:HGroup) : void + { + var _loc2_:Object = this._809612678contentGroup; + if(_loc2_ !== param1) + { + this._809612678contentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get fill() : Rect + { + return this._3143043fill; + } + + public function set fill(param1:Rect) : void + { + var _loc2_:Object = this._3143043fill; + if(_loc2_ !== param1) + { + this._3143043fill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get labelDisplay() : Label + { + return this._1184053038labelDisplay; + } + + public function set labelDisplay(param1:Label) : void + { + var _loc2_:Object = this._1184053038labelDisplay; + if(_loc2_ !== param1) + { + this._1184053038labelDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"labelDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/SubscribeTipContainerSkin.as b/scripts/anifire/creator/skins/SubscribeTipContainerSkin.as new file mode 100644 index 0000000..8112f29 --- /dev/null +++ b/scripts/anifire/creator/skins/SubscribeTipContainerSkin.as @@ -0,0 +1,651 @@ +package anifire.creator.skins +{ + import anifire.creator.components.ArrowTipContainer; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.primitives.Path; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class SubscribeTipContainerSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _772442213_SubscribeTipContainerSkin_Path1:Path; + + private var _772442212_SubscribeTipContainerSkin_Path2:Path; + + private var _717085931_SubscribeTipContainerSkin_SetProperty1:SetProperty; + + private var _717085932_SubscribeTipContainerSkin_SetProperty2:SetProperty; + + private var _1751797770arrowGroup:Group; + + private var _1391998104bgFill:SolidColor; + + private var _1383304148border:Rect; + + private var _726617523borderGroup:Group; + + private var _1395787140borderStroke:SolidColorStroke; + + private var _434221093chromeGroup:Group; + + private var _809612678contentGroup:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:ArrowTipContainer; + + public function SubscribeTipContainerSkin() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._SubscribeTipContainerSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_skins_SubscribeTipContainerSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return SubscribeTipContainerSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.minWidth = 30; + this.minHeight = 30; + this.mxmlContent = [this._SubscribeTipContainerSkin_Group1_i(),this._SubscribeTipContainerSkin_Group2_i(),this._SubscribeTipContainerSkin_Group4_i()]; + this.currentState = "above"; + states = [new State({ + "name":"above", + "stateGroups":["aboves"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"bottom", + "value":0 + }),this._SubscribeTipContainerSkin_SetProperty1 = SetProperty(new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"left", + "value":undefined + })),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path1", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path2", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":3 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":11 + })] + }),new State({ + "name":"aboveRight", + "stateGroups":["aboves"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"right", + "value":65 + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path1", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path2", + "name":"data", + "value":"M 0 0 l 6 8 l 6 -8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":3 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":11 + })] + }),new State({ + "name":"below", + "stateGroups":["belows"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"top", + "value":0 + }),this._SubscribeTipContainerSkin_SetProperty2 = SetProperty(new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"left", + "value":undefined + })),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path1", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path2", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":11 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":3 + })] + }),new State({ + "name":"belowRight", + "stateGroups":["belows"], + "overrides":[new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"top", + "value":8 + }),new SetProperty().initializeFromObject({ + "target":"borderGroup", + "name":"bottom", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"top", + "value":0 + }),new SetProperty().initializeFromObject({ + "target":"chromeGroup", + "name":"right", + "value":5 + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path1", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8 Z" + }),new SetProperty().initializeFromObject({ + "target":"_SubscribeTipContainerSkin_Path2", + "name":"data", + "value":"M 0 8 l 6 -8 l 6 8" + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"top", + "value":11 + }),new SetProperty().initializeFromObject({ + "target":"contentGroup", + "name":"bottom", + "value":3 + })] + })]; + BindingManager.executeBindings(this,"_SubscribeTipContainerSkin_SetProperty1",this._SubscribeTipContainerSkin_SetProperty1); + BindingManager.executeBindings(this,"_SubscribeTipContainerSkin_SetProperty2",this._SubscribeTipContainerSkin_SetProperty2); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + SubscribeTipContainerSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _SubscribeTipContainerSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.mxmlContent = [this._SubscribeTipContainerSkin_Rect1_i()]; + _loc1_.id = "borderGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.borderGroup = _loc1_; + BindingManager.executeBindings(this,"borderGroup",this.borderGroup); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 0; + _loc1_.stroke = this._SubscribeTipContainerSkin_SolidColorStroke1_i(); + _loc1_.fill = this._SubscribeTipContainerSkin_SolidColor1_i(); + _loc1_.initialized(this,"border"); + this.border = _loc1_; + BindingManager.executeBindings(this,"border",this.border); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 10526623; + this.borderStroke = _loc1_; + BindingManager.executeBindings(this,"borderStroke",this.borderStroke); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 3355443; + this.bgFill = _loc1_; + BindingManager.executeBindings(this,"bgFill",this.bgFill); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._SubscribeTipContainerSkin_Group3_i()]; + _loc1_.id = "chromeGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.chromeGroup = _loc1_; + BindingManager.executeBindings(this,"chromeGroup",this.chromeGroup); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.horizontalCenter = 0; + _loc1_.mxmlContent = [this._SubscribeTipContainerSkin_Path1_i(),this._SubscribeTipContainerSkin_Path2_i()]; + _loc1_.id = "arrowGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.arrowGroup = _loc1_; + BindingManager.executeBindings(this,"arrowGroup",this.arrowGroup); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Path1_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.percentHeight = 100; + _loc1_.fill = this._SubscribeTipContainerSkin_SolidColor2_c(); + _loc1_.initialized(this,"_SubscribeTipContainerSkin_Path1"); + this._SubscribeTipContainerSkin_Path1 = _loc1_; + BindingManager.executeBindings(this,"_SubscribeTipContainerSkin_Path1",this._SubscribeTipContainerSkin_Path1); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 3355443; + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Path2_i() : Path + { + var _loc1_:Path = new Path(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.percentHeight = 100; + _loc1_.stroke = this._SubscribeTipContainerSkin_SolidColorStroke2_c(); + _loc1_.initialized(this,"_SubscribeTipContainerSkin_Path2"); + this._SubscribeTipContainerSkin_Path2 = _loc1_; + BindingManager.executeBindings(this,"_SubscribeTipContainerSkin_Path2",this._SubscribeTipContainerSkin_Path2); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 10526623; + return _loc1_; + } + + private function _SubscribeTipContainerSkin_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.id = "contentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.contentGroup = _loc1_; + BindingManager.executeBindings(this,"contentGroup",this.contentGroup); + return _loc1_; + } + + private function _SubscribeTipContainerSkin_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Number + { + return hostComponent.targetWidth; + },null,"chromeGroup.width"); + result[1] = new Binding(this,function():* + { + return hostComponent.offset; + },null,"_SubscribeTipContainerSkin_SetProperty1.value"); + result[2] = new Binding(this,function():* + { + return hostComponent.offset; + },null,"_SubscribeTipContainerSkin_SetProperty2.value"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _SubscribeTipContainerSkin_Path1() : Path + { + return this._772442213_SubscribeTipContainerSkin_Path1; + } + + public function set _SubscribeTipContainerSkin_Path1(param1:Path) : void + { + var _loc2_:Object = this._772442213_SubscribeTipContainerSkin_Path1; + if(_loc2_ !== param1) + { + this._772442213_SubscribeTipContainerSkin_Path1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_SubscribeTipContainerSkin_Path1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _SubscribeTipContainerSkin_Path2() : Path + { + return this._772442212_SubscribeTipContainerSkin_Path2; + } + + public function set _SubscribeTipContainerSkin_Path2(param1:Path) : void + { + var _loc2_:Object = this._772442212_SubscribeTipContainerSkin_Path2; + if(_loc2_ !== param1) + { + this._772442212_SubscribeTipContainerSkin_Path2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_SubscribeTipContainerSkin_Path2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _SubscribeTipContainerSkin_SetProperty1() : SetProperty + { + return this._717085931_SubscribeTipContainerSkin_SetProperty1; + } + + public function set _SubscribeTipContainerSkin_SetProperty1(param1:SetProperty) : void + { + var _loc2_:Object = this._717085931_SubscribeTipContainerSkin_SetProperty1; + if(_loc2_ !== param1) + { + this._717085931_SubscribeTipContainerSkin_SetProperty1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_SubscribeTipContainerSkin_SetProperty1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _SubscribeTipContainerSkin_SetProperty2() : SetProperty + { + return this._717085932_SubscribeTipContainerSkin_SetProperty2; + } + + public function set _SubscribeTipContainerSkin_SetProperty2(param1:SetProperty) : void + { + var _loc2_:Object = this._717085932_SubscribeTipContainerSkin_SetProperty2; + if(_loc2_ !== param1) + { + this._717085932_SubscribeTipContainerSkin_SetProperty2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_SubscribeTipContainerSkin_SetProperty2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get arrowGroup() : Group + { + return this._1751797770arrowGroup; + } + + public function set arrowGroup(param1:Group) : void + { + var _loc2_:Object = this._1751797770arrowGroup; + if(_loc2_ !== param1) + { + this._1751797770arrowGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"arrowGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get bgFill() : SolidColor + { + return this._1391998104bgFill; + } + + public function set bgFill(param1:SolidColor) : void + { + var _loc2_:Object = this._1391998104bgFill; + if(_loc2_ !== param1) + { + this._1391998104bgFill = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgFill",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get border() : Rect + { + return this._1383304148border; + } + + public function set border(param1:Rect) : void + { + var _loc2_:Object = this._1383304148border; + if(_loc2_ !== param1) + { + this._1383304148border = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"border",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderGroup() : Group + { + return this._726617523borderGroup; + } + + public function set borderGroup(param1:Group) : void + { + var _loc2_:Object = this._726617523borderGroup; + if(_loc2_ !== param1) + { + this._726617523borderGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get borderStroke() : SolidColorStroke + { + return this._1395787140borderStroke; + } + + public function set borderStroke(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1395787140borderStroke; + if(_loc2_ !== param1) + { + this._1395787140borderStroke = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"borderStroke",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get chromeGroup() : Group + { + return this._434221093chromeGroup; + } + + public function set chromeGroup(param1:Group) : void + { + var _loc2_:Object = this._434221093chromeGroup; + if(_loc2_ !== param1) + { + this._434221093chromeGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"chromeGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get contentGroup() : Group + { + return this._809612678contentGroup; + } + + public function set contentGroup(param1:Group) : void + { + var _loc2_:Object = this._809612678contentGroup; + if(_loc2_ !== param1) + { + this._809612678contentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"contentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ArrowTipContainer + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ArrowTipContainer) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/skins/TopToolBarButtonSkin.as b/scripts/anifire/creator/skins/TopToolBarButtonSkin.as new file mode 100644 index 0000000..6b27429 --- /dev/null +++ b/scripts/anifire/creator/skins/TopToolBarButtonSkin.as @@ -0,0 +1,331 @@ +package anifire.creator.skins +{ + import anifire.creator.components.IconButton; + import mx.binding.BindingManager; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.State; + import spark.components.Group; + import spark.components.Label; + import spark.components.PopUpAnchor; + import spark.components.supportClasses.Skin; + import spark.primitives.BitmapImage; + import spark.primitives.Line; + import spark.primitives.Path; + import spark.primitives.Rect; + + public class TopToolBarButtonSkin extends Skin implements IStateClient2 + { + + + public var _TopToolBarButtonSkin_PopUpAnchor1:PopUpAnchor; + + private var _1031744009iconDisplay:BitmapImage; + + private var _1184053038labelDisplay:Label; + + private var _268453613popUpGroup:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:IconButton; + + public function TopToolBarButtonSkin() + { + super(); + mx_internal::_document = this; + this.width = 50; + this.height = 50; + this.mxmlContent = [this._TopToolBarButtonSkin_Rect1_c(),this._TopToolBarButtonSkin_Line1_c(),this._TopToolBarButtonSkin_Line2_c(),this._TopToolBarButtonSkin_BitmapImage1_i()]; + this.currentState = "disabled"; + var _loc1_:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._TopToolBarButtonSkin_PopUpAnchor1_i); + states = [new State({ + "name":"disabled", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_loc1_, + "destination":null, + "propertyName":"mxmlContent", + "position":"after", + "relativeTo":["iconDisplay"] + })] + }),new State({ + "name":"up", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _TopToolBarButtonSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._TopToolBarButtonSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopToolBarButtonSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.alpha = 0; + return _loc1_; + } + + private function _TopToolBarButtonSkin_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.left = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.stroke = this._TopToolBarButtonSkin_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopToolBarButtonSkin_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 14540253; + return _loc1_; + } + + private function _TopToolBarButtonSkin_Line2_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.stroke = this._TopToolBarButtonSkin_SolidColorStroke2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopToolBarButtonSkin_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 14540253; + return _loc1_; + } + + private function _TopToolBarButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.smooth = true; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _TopToolBarButtonSkin_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.bottom = 5; + _loc1_.popUpPosition = "below"; + _loc1_.displayPopUp = true; + _loc1_.popUp = this._TopToolBarButtonSkin_Group1_i(); + _loc1_.id = "_TopToolBarButtonSkin_PopUpAnchor1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._TopToolBarButtonSkin_PopUpAnchor1 = _loc1_; + BindingManager.executeBindings(this,"_TopToolBarButtonSkin_PopUpAnchor1",this._TopToolBarButtonSkin_PopUpAnchor1); + return _loc1_; + } + + private function _TopToolBarButtonSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 50; + _loc1_.mouseEnabled = false; + _loc1_.mouseChildren = false; + _loc1_.blendMode = "layer"; + _loc1_.alpha = 0.9; + _loc1_.mxmlContent = [this._TopToolBarButtonSkin_Path1_c(),this._TopToolBarButtonSkin_Group2_c()]; + _loc1_.id = "popUpGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.popUpGroup = _loc1_; + BindingManager.executeBindings(this,"popUpGroup",this.popUpGroup); + return _loc1_; + } + + private function _TopToolBarButtonSkin_Path1_c() : Path + { + var _loc1_:Path = new Path(); + _loc1_.horizontalCenter = 0; + _loc1_.data = "M 0 5 l 5 -5 l 5 5 Z"; + _loc1_.fill = this._TopToolBarButtonSkin_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopToolBarButtonSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 2829099; + return _loc1_; + } + + private function _TopToolBarButtonSkin_Group2_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.minWidth = 50; + _loc1_.horizontalCenter = 0; + _loc1_.top = 5; + _loc1_.mxmlContent = [this._TopToolBarButtonSkin_Rect2_c(),this._TopToolBarButtonSkin_Label1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopToolBarButtonSkin_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._TopToolBarButtonSkin_SolidColor3_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopToolBarButtonSkin_SolidColor3_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 2829099; + return _loc1_; + } + + private function _TopToolBarButtonSkin_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.setStyle("color",16777215); + _loc1_.setStyle("textAlign","center"); + _loc1_.setStyle("paddingLeft",10); + _loc1_.setStyle("paddingRight",10); + _loc1_.setStyle("paddingTop",5); + _loc1_.setStyle("paddingBottom",5); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",this.labelDisplay); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get labelDisplay() : Label + { + return this._1184053038labelDisplay; + } + + public function set labelDisplay(param1:Label) : void + { + var _loc2_:Object = this._1184053038labelDisplay; + if(_loc2_ !== param1) + { + this._1184053038labelDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"labelDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get popUpGroup() : Group + { + return this._268453613popUpGroup; + } + + public function set popUpGroup(param1:Group) : void + { + var _loc2_:Object = this._268453613popUpGroup; + if(_loc2_ !== param1) + { + this._268453613popUpGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"popUpGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : IconButton + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:IconButton) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/utils/ComponentThumbFilter.as b/scripts/anifire/creator/utils/ComponentThumbFilter.as new file mode 100644 index 0000000..f6fcb50 --- /dev/null +++ b/scripts/anifire/creator/utils/ComponentThumbFilter.as @@ -0,0 +1,35 @@ +package anifire.creator.utils +{ + import anifire.creator.models.CcComponentThumb; + + public class ComponentThumbFilter + { + + private static function _null_func(param1:CcComponentThumb):Boolean + { + return true; + } + + private var _func:Function; + + public function ComponentThumbFilter() + { + this._func = _null_func; + super(); + } + + public function get filter() : Function + { + return this._func; + } + + public function set filter(param1:Function) : void + { + if(param1 == null) + { + param1 = _null_func; + } + this._func = param1; + } + } +} diff --git a/scripts/anifire/event/ByteLoaderEvent.as b/scripts/anifire/event/ByteLoaderEvent.as new file mode 100644 index 0000000..1e13b56 --- /dev/null +++ b/scripts/anifire/event/ByteLoaderEvent.as @@ -0,0 +1,21 @@ +package anifire.event +{ + import flash.events.Event; + + public class ByteLoaderEvent extends Event + { + + public static const LOAD_BYTES_COMPLETE:String = "load_bytes_complete"; + + + public function ByteLoaderEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + + override public function clone() : Event + { + return new ByteLoaderEvent(this.type,this.bubbles,this.cancelable); + } + } +} diff --git a/scripts/anifire/event/ColorPaletteEvent.as b/scripts/anifire/event/ColorPaletteEvent.as new file mode 100644 index 0000000..8b16d6d --- /dev/null +++ b/scripts/anifire/event/ColorPaletteEvent.as @@ -0,0 +1,35 @@ +package anifire.event +{ + import flash.events.Event; + import flash.geom.Point; + + public class ColorPaletteEvent extends Event + { + + public static const COLOR_PICKER_DROP:String = "colorPickerDrop"; + + public static const SWATCH_PICK:String = "swatchPick"; + + public static const ADD_COLOR_BUTTON_CLICK:String = "addColorButtonClick"; + + public static const ALPHA_CHANGE:String = "alphaChange"; + + public static const ALPHA_PREVIEW:String = "alphaPreview"; + + public static const COLOR_CHANGE:String = "colorChange"; + + public static const COLOR_PREVIEW:String = "colorPreview"; + + + public var alpha:Number; + + public var colorCode:Object; + + public var releasePoint:Point; + + public function ColorPaletteEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + } +} diff --git a/scripts/anifire/event/ExtraDataEvent.as b/scripts/anifire/event/ExtraDataEvent.as new file mode 100644 index 0000000..2839dca --- /dev/null +++ b/scripts/anifire/event/ExtraDataEvent.as @@ -0,0 +1,51 @@ +package anifire.event +{ + import flash.events.Event; + + public class ExtraDataEvent extends Event + { + + public static const UPDATE:String = "update"; + + public static const PITCH_UPDATE:String = "pitch_update"; + + public static const PROCESSING:String = "processing"; + + + private var _data:Object; + + private var _eventCreater:Object; + + public function ExtraDataEvent(param1:String, param2:Object, param3:Object = null, param4:Boolean = false, param5:Boolean = false) + { + super(param1,param4,param5); + this.setData(param3); + this.setEventCreater(param2); + } + + public function getEventCreater() : Object + { + return this._eventCreater; + } + + private function setEventCreater(param1:Object) : void + { + this._eventCreater = param1; + } + + public function getData() : Object + { + return this._data; + } + + private function setData(param1:Object) : void + { + this._data = param1; + } + + override public function clone() : Event + { + return new ExtraDataEvent(this.type,this.getEventCreater(),this.getData(),this.bubbles,this.cancelable); + } + } +} diff --git a/scripts/anifire/event/EyeDropperEvent.as b/scripts/anifire/event/EyeDropperEvent.as new file mode 100644 index 0000000..68a62d6 --- /dev/null +++ b/scripts/anifire/event/EyeDropperEvent.as @@ -0,0 +1,29 @@ +package anifire.event +{ + import flash.events.Event; + + public class EyeDropperEvent extends Event + { + + public static const EYE_DROPPER_ACTIVATE:String = "eyeDropperActivate"; + + public static const EYE_DROPPER_COMPLETE:String = "eyeDropperComplete"; + + public static const EYE_DROPPER_CANCEL:String = "eyeDropperCancel"; + + + public var color:uint; + + public function EyeDropperEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + + override public function clone() : Event + { + var _loc1_:EyeDropperEvent = new EyeDropperEvent(type,bubbles,cancelable); + _loc1_.color = this.color; + return _loc1_; + } + } +} diff --git a/scripts/anifire/event/LoadEmbedMovieEvent.as b/scripts/anifire/event/LoadEmbedMovieEvent.as new file mode 100644 index 0000000..4798984 --- /dev/null +++ b/scripts/anifire/event/LoadEmbedMovieEvent.as @@ -0,0 +1,20 @@ +package anifire.event +{ + import flash.events.Event; + + public class LoadEmbedMovieEvent extends Event + { + + public static const COMPLETE_EVENT:String = "Complete"; + + public static const MOVIE_FINISH_EVENT:String = "Finish"; + + public static const RELOAD_MOVIE_EVENT:String = "Reload"; + + + public function LoadEmbedMovieEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + } +} diff --git a/scripts/anifire/event/LoadMgrEvent.as b/scripts/anifire/event/LoadMgrEvent.as new file mode 100644 index 0000000..ffbecbe --- /dev/null +++ b/scripts/anifire/event/LoadMgrEvent.as @@ -0,0 +1,22 @@ +package anifire.event +{ + import flash.events.Event; + + public class LoadMgrEvent extends Event + { + + public static const ALL_COMPLETE:String = "all_complete"; + + + public function LoadMgrEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + + override public function clone() : Event + { + var _loc1_:LoadMgrEvent = new LoadMgrEvent(this.type,this.bubbles,this.cancelable); + return _loc1_; + } + } +} diff --git a/scripts/anifire/event/SpeechPitchEvent.as b/scripts/anifire/event/SpeechPitchEvent.as new file mode 100644 index 0000000..1639ac3 --- /dev/null +++ b/scripts/anifire/event/SpeechPitchEvent.as @@ -0,0 +1,28 @@ +package anifire.event +{ + import flash.events.Event; + + public class SpeechPitchEvent extends Event + { + + public static var PITCH:String = "pitch"; + + public static var DEMO_START:String = "demo_start"; + + public static var DEMO_END:String = "demo_end"; + + + public var sceneId:String; + + public var charIdArray:Array; + + public var soundId:String; + + public var value:Number; + + public function SpeechPitchEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + } +} diff --git a/scripts/anifire/event/StudioEvent.as b/scripts/anifire/event/StudioEvent.as new file mode 100644 index 0000000..1737e87 --- /dev/null +++ b/scripts/anifire/event/StudioEvent.as @@ -0,0 +1,40 @@ +package anifire.event +{ + import flash.events.Event; + + public class StudioEvent extends Event + { + + public static const BODY_MODEL_COMPLETE:String = "bodyModelComplete"; + + public static const LOAD_THEME_ERROR:String = "loadThemeError"; + + public static const UPGRADE_PENDING:String = "upgradePending"; + + public static const UPGRADE_COMPLETE:String = "upgradeComplete"; + + public static const UPGRADE_ERROR:String = "upgradeError"; + + public static const POPUP_CONFIRM:String = "popupConfirm"; + + public static const SELECT_SCENE_FROM_NOTE:String = "selectSceneFromNote"; + + public static const HEARTBEAT_TAKEOVER:String = "heartbeatTakeover"; + + public static const HEARTBEAT_LOST:String = "heartbeatLost"; + + public static const WORK_NOTE_VISIBILITY_CHANGE:String = "workNoteVisibilityChange"; + + public static const OPEN_YOUR_LIBRARY:String = "openYourLibrary"; + + public static const CLOSE_SUGGESTION_POP_UP:String = "closeSuggestionPopUp"; + + + public var data; + + public function StudioEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + } +} diff --git a/scripts/anifire/interfaces/ICharacter.as b/scripts/anifire/interfaces/ICharacter.as new file mode 100644 index 0000000..c5bec35 --- /dev/null +++ b/scripts/anifire/interfaces/ICharacter.as @@ -0,0 +1,31 @@ +package anifire.interfaces +{ + import anifire.core.CCManager; + import anifire.util.UtilHashSelectedColor; + import flash.events.EventDispatcher; + + public interface ICharacter + { + + + function get CCM() : CCManager; + + function get ver() : Number; + + function getColorByName(param1:String) : uint; + + function get eventDispatcher() : EventDispatcher; + + function insertColor(param1:UtilHashSelectedColor) : void; + + function addLibrary(param1:String, param2:String, param3:String) : void; + + function removeLibrary(param1:String) : void; + + function reloadSkin() : void; + + function speak(param1:Number) : void; + + function destroy(param1:Boolean = true) : void; + } +} diff --git a/scripts/anifire/interfaces/IRegulatedProcess.as b/scripts/anifire/interfaces/IRegulatedProcess.as new file mode 100644 index 0000000..1cc972a --- /dev/null +++ b/scripts/anifire/interfaces/IRegulatedProcess.as @@ -0,0 +1,11 @@ +package anifire.interfaces +{ + import flash.events.IEventDispatcher; + + public interface IRegulatedProcess extends IEventDispatcher + { + + + function startProcess(param1:Boolean = false, param2:Number = 0) : void; + } +} diff --git a/scripts/anifire/interfaces/ISpeak.as b/scripts/anifire/interfaces/ISpeak.as new file mode 100644 index 0000000..f2ffabd --- /dev/null +++ b/scripts/anifire/interfaces/ISpeak.as @@ -0,0 +1,9 @@ +package anifire.interfaces +{ + public interface ISpeak + { + + + function speak(param1:Number) : void; + } +} diff --git a/scripts/anifire/managers/AmplitudeAnalyticsManager.as b/scripts/anifire/managers/AmplitudeAnalyticsManager.as new file mode 100644 index 0000000..f76a068 --- /dev/null +++ b/scripts/anifire/managers/AmplitudeAnalyticsManager.as @@ -0,0 +1,121 @@ +package anifire.managers +{ + import flash.external.ExternalInterface; + + public class AmplitudeAnalyticsManager + { + + public static const EVENT_PROPERTIES_FAVORITE:String = "favorite"; + + public static const EVENT_PROPERTIES_UNFAVORITE:String = "un-favorite"; + + public static const EVENT_PROPERTIES_PARTIAL_PREVIEW:String = "partial"; + + public static const EVENT_PROPERTIES_NUM_SCENES:String = "scenes"; + + public static const EVENT_PROPERTIES_NUM_MODIFIED_SCENES:String = "scenes_modified"; + + public static const EVENT_PROPERTIES_NUM_FRAMES:String = "frames"; + + public static const EVENT_PROPERTIES_NUM_MODIFIED_FRAMES:String = "frames_modified"; + + public static const EVENT_PROPERTIES_MOVIE_ID:String = "movie"; + + public static const EVENT_PROPERTIES_EMBED_VIDEO_ID:String = "embedded_video"; + + public static const EVENT_PROPERTIES_OWNER_ID:String = "owner"; + + public static const EVENT_PROPERTIES_TOOLTIP_ADD_SCENE:String = "adding_scenes"; + + public static const EVENT_PROPERTIES_TOOLTIP_USE_TEMPLATE:String = "using_templates"; + + public static const EVENT_PROPERTIES_TOOLTIP_CUSTOMIZATION:String = "customization"; + + public static const EVENT_PROPERTIES_TRIGGER_MANUAL:String = "manual"; + + public static const EVENT_PROPERTIES_TRIGGER_AUTO:String = "auto"; + + public static const EVENT_PROPERTIES_TUTORIAL:String = "tutorial"; + + public static const EVENT_NAME_CREATED_CHARACTER:String = "Created character"; + + public static const EVENT_NAME_SAVED_STARTER:String = "Saved starter"; + + public static const EVENT_NAME_SAVED_VIDEO:String = "Saved video"; + + public static const EVENT_NAME_CHOSE_TEMPLATE_CATEGORY:String = "Chose template category"; + + public static const EVENT_NAME_FAVORITED_TEMPLATE_CATEGORY:String = "Favorited template category"; + + public static const EVENT_NAME_SWAPPED_ASSET:String = "Swapped asset"; + + public static const EVENT_NAME_BEGIN_TUTORIAL:String = "Begin Tutorial"; + + public static const EVENT_NAME_SKIP_TUTORIAL:String = "Skip Tutorial"; + + public static const EVENT_NAME_COMPLETED_TUTORIAL:String = "Completed Tutorial"; + + public static const EVENT_NAME_PREVIEW_VIDEO:String = "Preview video"; + + public static const EVENT_NAME_ADD_SCENE:String = "Add scene"; + + public static const EVENT_NAME_SWITCH_CHAR_ACTION:String = "Switch character action"; + + public static const EVENT_NAME_ADD_VOICE_TO_SCENE:String = "Add voice to scene"; + + public static const EVENT_NAME_ADD_ASSET_TO_STAGE:String = "Add asset to stage"; + + public static const EVENT_NAME_TOGGLE_ATTACH_VOICE_TO_STAGE:String = "Toggle attach voice to scene"; + + public static const EVENT_NAME_ADD_SCENE_TEMPLATE:String = "Add a scene template"; + + public static const EVENT_NAME_SEARCH_ASSETS_TEMPLATES:String = "Search assets or templates"; + + public static const EVENT_NAME_PLAY_VIDEO:String = "Plays video"; + + public static const EVENT_NAME_TOGGLE_FULLSCREEN:String = "Toggle fullscreen"; + + public static const EVENT_NAME_WATCH_EMBED_VIDEO:String = "Watched embedded video"; + + public static const EVENT_NAME_CLOSE_TUTORIAL_TOOLTIP:String = "Close tutorial tooltip"; + + public static const EVENT_NAME_DELETE_SCENE:String = "Delete a scene"; + + public static const EVENT_NAME_FONT_MIX:String = "Font mix"; + + public static const EVENT_NAME_FONT_CHECK:String = "Font check"; + + private static var __instance:AmplitudeAnalyticsManager; + + + public function AmplitudeAnalyticsManager() + { + super(); + } + + public static function get instance() : AmplitudeAnalyticsManager + { + if(!__instance) + { + __instance = new AmplitudeAnalyticsManager(); + } + return __instance; + } + + public function incrementUserProperty(param1:String, param2:int) : void + { + if(ExternalInterface.available) + { + ExternalInterface.call("amplitudeIncrementUserProperty",param1,param2); + } + } + + public function log(param1:String, param2:Object = null, param3:Object = null) : void + { + if(ExternalInterface.available) + { + ExternalInterface.call("logAmplitudeEvent",param1,param2,param3); + } + } + } +} diff --git a/scripts/anifire/managers/AppConfigManager.as b/scripts/anifire/managers/AppConfigManager.as new file mode 100644 index 0000000..c9b4008 --- /dev/null +++ b/scripts/anifire/managers/AppConfigManager.as @@ -0,0 +1,80 @@ +package anifire.managers +{ + import flash.net.URLVariables; + import mx.core.FlexGlobals; + + public class AppConfigManager + { + + private static var __instance:AppConfigManager; + + + protected var _properties:Object; + + public function AppConfigManager() + { + super(); + this.init(); + } + + public static function get instance() : AppConfigManager + { + if(!__instance) + { + __instance = new AppConfigManager(); + } + return __instance; + } + + protected function init() : void + { + this._properties = {}; + this.processAppParams(); + } + + public function processAppParams() : void + { + var _loc1_:Object = FlexGlobals.topLevelApplication; + this.setParamters(_loc1_.parameters); + } + + public function setParamters(param1:Object) : void + { + var _loc2_:* = null; + for(_loc2_ in param1) + { + this._properties[_loc2_] = param1[_loc2_]; + } + } + + public function getValue(param1:String) : String + { + return this._properties[param1]; + } + + public function setValue(param1:String, param2:String) : void + { + this._properties[param1] = param2; + } + + public function createURLVariables() : URLVariables + { + var _loc2_:* = null; + var _loc1_:URLVariables = new URLVariables(); + for(_loc2_ in this._properties) + { + _loc1_[_loc2_] = this._properties[_loc2_]; + } + return _loc1_; + } + + public function appendURLVariables(param1:URLVariables) : void + { + var _loc2_:* = null; + for(_loc2_ in this._properties) + { + param1[_loc2_] = this._properties[_loc2_]; + } + } + } +} diff --git a/scripts/anifire/managers/ColorUtils.as b/scripts/anifire/managers/ColorUtils.as new file mode 100644 index 0000000..c58b6b5 --- /dev/null +++ b/scripts/anifire/managers/ColorUtils.as @@ -0,0 +1,38 @@ +package anifire.managers +{ + import anifire.component.EyeDropperScreenOverlay; + + public class ColorUtils + { + + public static var eyeDropperScreenOverlay:EyeDropperScreenOverlay; + + + public function ColorUtils() + { + super(); + } + + public static function colorToHex(param1:uint, param2:String = "") : String + { + var _loc3_:uint = 251658240 | param1 & 16777215; + var _loc4_:String = _loc3_.toString(16); + var _loc5_:String = param2 + _loc4_.substring(1).toUpperCase(); + return _loc5_; + } + + public static function rgbToColor(param1:int, param2:int, param3:int) : uint + { + return param1 << 16 | param2 << 8 | param3; + } + + public static function colorToRgb(param1:uint) : Array + { + var _loc2_:Array = []; + _loc2_.push(param1 >> 16 & 255); + _loc2_.push(param1 >> 8 & 255); + _loc2_.push(param1 & 255); + return _loc2_; + } + } +} diff --git a/scripts/anifire/managers/ExternalLinkManager.as b/scripts/anifire/managers/ExternalLinkManager.as new file mode 100644 index 0000000..a0b4ffa --- /dev/null +++ b/scripts/anifire/managers/ExternalLinkManager.as @@ -0,0 +1,101 @@ +package anifire.managers +{ + import flash.external.ExternalInterface; + import flash.net.URLRequest; + import flash.net.URLRequestMethod; + import flash.net.URLVariables; + import flash.net.navigateToURL; + + public class ExternalLinkManager + { + + public static const DEFAULT_WINDOW_ID:String = "_self"; + + public static const BLANK_WINDOW_ID:String = "_blank"; + + public static const EXIT_STUDIO_FUNCTION:String = "exitStudio"; + + public static const SESSION_FIELD_KEY:String = "ifut"; + + private static var __instance:ExternalLinkManager; + + private static const UNDERSCORE_PATTERN:RegExp = /%5f/gi; + + + private var _sessionVariables:URLVariables; + + public function ExternalLinkManager() + { + super(); + this.init(); + } + + public static function get instance() : ExternalLinkManager + { + if(!__instance) + { + __instance = new ExternalLinkManager(); + } + return __instance; + } + + private function init() : void + { + this._sessionVariables = new URLVariables(); + var _loc1_:String = AppConfigManager.instance.getValue(SESSION_FIELD_KEY); + if(_loc1_) + { + this._sessionVariables.decode(unescape(_loc1_)); + } + } + + public function exitStudio() : void + { + ExternalInterface.call(EXIT_STUDIO_FUNCTION); + } + + public function navigate(param1:String, param2:String = "_self") : void + { + var _loc3_:URLRequest = new URLRequest(param1); + navigateToURL(_loc3_,param2); + } + + public function navigateWithSession(param1:String, param2:String = "_self") : void + { + var _loc3_:URLRequest = new URLRequest(param1); + var _loc4_:URLVariables = new URLVariables(); + this.addSessionInfo(_loc4_); + navigateToURL(new URLRequest(param1 + this.createRequestQueryString(_loc4_)),param2); + } + + public function navigateWithVariables(param1:String, param2:URLVariables, param3:Boolean = true, param4:String = "_self") : void + { + var _loc5_:URLRequest = new URLRequest(param1); + this.addSessionInfo(param2); + if(param3) + { + _loc5_.method = URLRequestMethod.POST; + _loc5_.data = param2; + navigateToURL(_loc5_,param4); + } + else + { + navigateToURL(new URLRequest(param1 + this.createRequestQueryString(param2)),param4); + } + } + + private function addSessionInfo(param1:URLVariables) : void + { + var _loc2_:* = null; + for(_loc2_ in this._sessionVariables) + { + param1[_loc2_] = this._sessionVariables[_loc2_]; + } + } + + private function createRequestQueryString(param1:URLVariables) : String + { + return "?" + unescape(param1.toString()); + } + } +} diff --git a/scripts/anifire/managers/NativeCursorManager.as b/scripts/anifire/managers/NativeCursorManager.as new file mode 100644 index 0000000..fc4adf4 --- /dev/null +++ b/scripts/anifire/managers/NativeCursorManager.as @@ -0,0 +1,56 @@ +package anifire.managers +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.ui.Mouse; + import flash.ui.MouseCursor; + import flash.ui.MouseCursorData; + + public class NativeCursorManager + { + + private static var _instance:NativeCursorManager; + + private static const imgCursor1:Class = NativeCursorManager_imgCursor1; + + private static const imgCursor2:Class = NativeCursorManager_imgCursor2; + + private static const imgCursor3:Class = NativeCursorManager_imgCursor3; + + private static const imgCursor4:Class = NativeCursorManager_imgCursor4; + + + public function NativeCursorManager() + { + super(); + var _loc1_:MouseCursorData = new MouseCursorData(); + _loc1_.frameRate = 8; + var _loc2_:Vector. = new Vector.(); + _loc2_.push((new imgCursor1() as Bitmap).bitmapData); + _loc2_.push((new imgCursor2() as Bitmap).bitmapData); + _loc2_.push((new imgCursor3() as Bitmap).bitmapData); + _loc2_.push((new imgCursor4() as Bitmap).bitmapData); + _loc1_.data = _loc2_; + Mouse.registerCursor("busyCursor",_loc1_); + } + + public static function get instance() : NativeCursorManager + { + if(!_instance) + { + _instance = new NativeCursorManager(); + } + return _instance; + } + + public function setBusyCursor() : void + { + Mouse.cursor = "busyCursor"; + } + + public function removeBusyCursor() : void + { + Mouse.cursor = MouseCursor.AUTO; + } + } +} diff --git a/scripts/anifire/managers/NativeCursorManager_imgCursor1.as b/scripts/anifire/managers/NativeCursorManager_imgCursor1.as new file mode 100644 index 0000000..4c11694 --- /dev/null +++ b/scripts/anifire/managers/NativeCursorManager_imgCursor1.as @@ -0,0 +1,14 @@ +package anifire.managers +{ + import mx.core.BitmapAsset; + + public class NativeCursorManager_imgCursor1 extends BitmapAsset + { + + + public function NativeCursorManager_imgCursor1() + { + super(); + } + } +} diff --git a/scripts/anifire/managers/NativeCursorManager_imgCursor2.as b/scripts/anifire/managers/NativeCursorManager_imgCursor2.as new file mode 100644 index 0000000..f0d28b9 --- /dev/null +++ b/scripts/anifire/managers/NativeCursorManager_imgCursor2.as @@ -0,0 +1,14 @@ +package anifire.managers +{ + import mx.core.BitmapAsset; + + public class NativeCursorManager_imgCursor2 extends BitmapAsset + { + + + public function NativeCursorManager_imgCursor2() + { + super(); + } + } +} diff --git a/scripts/anifire/managers/NativeCursorManager_imgCursor3.as b/scripts/anifire/managers/NativeCursorManager_imgCursor3.as new file mode 100644 index 0000000..d5ce856 --- /dev/null +++ b/scripts/anifire/managers/NativeCursorManager_imgCursor3.as @@ -0,0 +1,14 @@ +package anifire.managers +{ + import mx.core.BitmapAsset; + + public class NativeCursorManager_imgCursor3 extends BitmapAsset + { + + + public function NativeCursorManager_imgCursor3() + { + super(); + } + } +} diff --git a/scripts/anifire/managers/NativeCursorManager_imgCursor4.as b/scripts/anifire/managers/NativeCursorManager_imgCursor4.as new file mode 100644 index 0000000..6a700c3 --- /dev/null +++ b/scripts/anifire/managers/NativeCursorManager_imgCursor4.as @@ -0,0 +1,14 @@ +package anifire.managers +{ + import mx.core.BitmapAsset; + + public class NativeCursorManager_imgCursor4 extends BitmapAsset + { + + + public function NativeCursorManager_imgCursor4() + { + super(); + } + } +} diff --git a/scripts/anifire/managers/ServerConnector.as b/scripts/anifire/managers/ServerConnector.as new file mode 100644 index 0000000..28e7a5b --- /dev/null +++ b/scripts/anifire/managers/ServerConnector.as @@ -0,0 +1,368 @@ +package anifire.managers +{ + import anifire.constant.ServerConstants; + import anifire.event.StudioEvent; + import anifire.models.ApiEventModel; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilUser; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.SecurityErrorEvent; + import flash.events.TimerEvent; + import flash.external.ExternalInterface; + import flash.net.URLLoader; + import flash.net.URLRequest; + import flash.net.URLRequestMethod; + import flash.net.URLVariables; + import flash.utils.Timer; + + public class ServerConnector extends EventDispatcher + { + + private static var _instance:ServerConnector; + + public static const TYPE_FONT:String = "font"; + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + public static const HEARTBEAT_URI:String = "goapi/heartbeat/v1/"; + + public static const HEARTBEAT_INTERVAL:int = 2 * 60 * 1000; + + + private var _logger:UtilErrorLogger; + + private var _decodeFunc:Function; + + private var _events:Vector.; + + private var _heartbeatStarted:Boolean; + + private var _heartbeatTimer:Timer; + + private var _heartbeatLoader:URLLoader; + + private var _heartbeatRequest:URLRequest; + + public function ServerConnector() + { + super(); + this.init(); + } + + public static function get instance() : ServerConnector + { + if(!_instance) + { + _instance = new ServerConnector(); + } + return _instance; + } + + protected function init() : void + { + var _loc1_:String = null; + this._events = new Vector.(); + this._logger = UtilErrorLogger.getInstance(); + this._decodeFunc = com.adobe.serialization.json.JSON.decode; + if(ExternalInterface.available) + { + ExternalInterface.addCallback("onUpsellUpgrade",this.onUpsellUpgradePending); + ExternalInterface.addCallback("selectSceneByGuid",this.selectSceneByGuid); + ExternalInterface.addCallback("setWorkNoteMenuItemSelected",this.setWorkNoteMenuItemSelected); + ExternalInterface.addCallback("bind",this.bind); + ExternalInterface.addCallback("unbind",this.unbind); + ExternalInterface.addCallback("openYourLibrary",this.openYourLibrary); + _loc1_ = _configManager.getValue("initcb"); + if(_loc1_) + { + ExternalInterface.call(_loc1_); + } + } + } + + public function bind(param1:String, param2:String) : void + { + this._events.push(new ApiEventModel(param1,param2)); + } + + public function unbind(param1:String, param2:String) : void + { + var _loc5_:ApiEventModel = null; + var _loc3_:int = this._events.length; + var _loc4_:int = _loc3_; + while(_loc4_ >= 0) + { + _loc5_ = this._events[_loc4_]; + if(_loc5_.eventName == param1 && _loc5_.callback == param2) + { + this._events.splice(_loc4_,1); + } + _loc4_--; + } + } + + public function notifyEvent(param1:String, param2:Object = null) : void + { + var _loc5_:ApiEventModel = null; + if(!ExternalInterface.available) + { + return; + } + if(!param2) + { + param2 = {}; + } + var _loc3_:int = this._events.length; + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = this._events[_loc4_]; + if(_loc5_.eventName == param1) + { + ExternalInterface.call(_loc5_.callback,param1,param2); + } + _loc4_++; + } + } + + public function notifyAssetReady(param1:String, param2:String) : void + { + var _loc3_:Object = {}; + _loc3_["type"] = param1; + _loc3_["file"] = param2; + this.notifyEvent("userAssetReady",_loc3_); + } + + public function notifyAssetDelete(param1:String, param2:String) : void + { + var _loc3_:Object = {}; + _loc3_["type"] = param1; + _loc3_["file"] = param2; + this.notifyEvent("userAssetDelete",_loc3_); + } + + public function startHeartbeat(param1:String = null) : void + { + if(this._heartbeatStarted) + { + return; + } + this._heartbeatStarted = true; + this._heartbeatTimer = new Timer(HEARTBEAT_INTERVAL); + this._heartbeatTimer.addEventListener(TimerEvent.TIMER,this.onHeartbeatTimer); + var _loc2_:URLVariables = new URLVariables(); + _configManager.appendURLVariables(_loc2_); + if(!_loc2_["movieId"] && param1) + { + _loc2_["movieId"] = param1; + } + _loc2_["actions"] = "lock"; + this._heartbeatRequest = new URLRequest(ServerConstants.HOST_PATH + HEARTBEAT_URI); + this._heartbeatRequest.data = _loc2_; + this._heartbeatRequest.method = URLRequestMethod.POST; + this._logger.info("[HB] Started with movie ID: " + _loc2_["movieId"]); + this.sendHeartbeat(); + } + + private function sendHeartbeat() : void + { + this._heartbeatLoader = new URLLoader(); + this._heartbeatLoader.addEventListener(Event.COMPLETE,this.onHeartbeatComplete); + this._heartbeatLoader.addEventListener(IOErrorEvent.IO_ERROR,this.onHeartbeatError); + this._heartbeatLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onHeartbeatError); + this._heartbeatLoader.load(this._heartbeatRequest); + } + + private function onHeartbeatTimer(param1:TimerEvent) : void + { + this.sendHeartbeat(); + } + + private function onHeartbeatComplete(param1:Event) : void + { + var studioEvent:StudioEvent = null; + var result:Object = null; + var event:Event = param1; + try + { + result = this._decodeFunc(this._heartbeatLoader.data); + if(result["health"] == "1") + { + this._logger.info("[HB OK] " + result["ts"]); + if(result["locked"] == "1") + { + studioEvent = new StudioEvent(StudioEvent.HEARTBEAT_TAKEOVER); + studioEvent.data = result["locker"]; + this._logger.info("[LOCK] Taken over by:" + result["locker"]); + dispatchEvent(studioEvent); + } + } + else + { + this._logger.info("[HB NG] " + result["errmsg"] + " " + result["ts"]); + } + } + catch(e:Error) + { + _logger.info("[HB ERR]\n" + _heartbeatLoader.data + "\n---\n"); + return; + } + this.clearHeartbeatLoader(); + this._heartbeatTimer.reset(); + this._heartbeatTimer.start(); + } + + private function onHeartbeatError(param1:Event) : void + { + this._logger.info("[HB FAIL] " + param1); + this.clearHeartbeatLoader(); + this._heartbeatTimer.reset(); + this._heartbeatTimer.start(); + } + + private function clearHeartbeatLoader() : void + { + if(this._heartbeatLoader) + { + this._heartbeatLoader.addEventListener(Event.COMPLETE,this.onHeartbeatComplete); + this._heartbeatLoader.addEventListener(IOErrorEvent.IO_ERROR,this.onHeartbeatError); + this._heartbeatLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onHeartbeatError); + this._heartbeatLoader = null; + } + } + + public function notifySceneChange(param1:String) : void + { + var _loc2_:Object = null; + if(param1) + { + _loc2_ = {}; + _loc2_["guid"] = param1; + this.notifyEvent("scene",_loc2_); + } + } + + public function setWorkNoteSideBarVisible(param1:Boolean) : void + { + var _loc2_:Object = {}; + _loc2_["visible"] = param1; + this.notifyEvent("showSideBar",_loc2_); + } + + public function setWorkNoteMenuItemSelected(param1:Boolean) : void + { + var _loc2_:StudioEvent = new StudioEvent(StudioEvent.WORK_NOTE_VISIBILITY_CHANGE); + _loc2_.data = param1; + dispatchEvent(_loc2_); + } + + public function openYourLibrary() : void + { + var _loc1_:StudioEvent = new StudioEvent(StudioEvent.OPEN_YOUR_LIBRARY); + dispatchEvent(_loc1_); + } + + public function selectSceneByGuid(param1:String) : void + { + var _loc2_:StudioEvent = null; + if(param1) + { + _loc2_ = new StudioEvent(StudioEvent.SELECT_SCENE_FROM_NOTE); + _loc2_.data = param1; + dispatchEvent(_loc2_); + } + } + + public function get neverDisplayTutorial() : Boolean + { + if(ExternalInterface.available) + { + return ExternalInterface.call("interactiveTutorial.neverDisplay"); + } + return false; + } + + public function set neverDisplayTutorial(param1:Boolean) : void + { + if(ExternalInterface.available) + { + ExternalInterface.call("interactiveTutorial.neverDisplay",param1); + } + } + + public function displayUpsellHook(param1:String) : void + { + if(ExternalInterface.available) + { + ExternalInterface.call("triggerUpsell",param1); + } + } + + public function onUpsellUpgradePending() : void + { + dispatchEvent(new StudioEvent(StudioEvent.UPGRADE_PENDING)); + } + + public function refreshUserType() : void + { + var _loc1_:URLVariables = AppConfigManager.instance.createURLVariables(); + var _loc2_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_INIT_PARAMS); + _loc2_.data = _loc1_; + _loc2_.method = URLRequestMethod.POST; + var _loc3_:URLLoader = new URLLoader(); + _loc3_.addEventListener(Event.COMPLETE,this.onRefreshUserTypeComplete); + _loc3_.addEventListener(IOErrorEvent.IO_ERROR,this.onRefreshUserTypeError); + _loc3_.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onRefreshUserTypeError); + _loc3_.load(_loc2_); + } + + private function onRefreshUserTypeComplete(param1:Event) : void + { + var result:Object = null; + var newUserType:Number = NaN; + var event:Event = param1; + var urlLoader:URLLoader = event.target as URLLoader; + urlLoader.removeEventListener(Event.COMPLETE,this.onRefreshUserTypeComplete); + urlLoader.removeEventListener(IOErrorEvent.IO_ERROR,this.onRefreshUserTypeError); + urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onRefreshUserTypeError); + try + { + result = this._decodeFunc(urlLoader.data); + if(result["result"] == true) + { + newUserType = result["ut"]; + UtilUser.updateUserType(newUserType); + this._logger.info("User type upgraded to: " + newUserType); + } + else + { + this.dispatchRefreshUserTypeError(result["message"]); + return; + } + } + catch(e:Error) + { + dispatchRefreshUserTypeError(e.message,e); + return; + } + dispatchEvent(new StudioEvent(StudioEvent.UPGRADE_COMPLETE)); + } + + private function onRefreshUserTypeError(param1:Event) : void + { + var _loc2_:URLLoader = param1.target as URLLoader; + _loc2_.removeEventListener(Event.COMPLETE,this.onRefreshUserTypeComplete); + _loc2_.removeEventListener(IOErrorEvent.IO_ERROR,this.onRefreshUserTypeError); + _loc2_.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onRefreshUserTypeError); + this.dispatchRefreshUserTypeError(param1.toString()); + } + + private function dispatchRefreshUserTypeError(param1:String = "", param2:Error = null) : void + { + this._logger.appendCustomError("Upgrade error: " + param1,param2); + dispatchEvent(new StudioEvent(StudioEvent.UPGRADE_ERROR)); + } + } +} diff --git a/scripts/anifire/models/ApiEventModel.as b/scripts/anifire/models/ApiEventModel.as new file mode 100644 index 0000000..96b1402 --- /dev/null +++ b/scripts/anifire/models/ApiEventModel.as @@ -0,0 +1,18 @@ +package anifire.models +{ + public class ApiEventModel + { + + + public var eventName:String; + + public var callback:String; + + public function ApiEventModel(param1:String, param2:String) + { + super(); + this.eventName = param1; + this.callback = param2; + } + } +} diff --git a/scripts/anifire/models/creator/CCActionModel.as b/scripts/anifire/models/creator/CCActionModel.as new file mode 100644 index 0000000..bb132ba --- /dev/null +++ b/scripts/anifire/models/creator/CCActionModel.as @@ -0,0 +1,161 @@ +package anifire.models.creator +{ + public class CCActionModel + { + + + public var id:String; + + protected var _name:String; + + protected var _isMotion:Boolean; + + public var componentStates:Object; + + protected var _category:String; + + protected var _defaultFacialId:String; + + public var isLoop:Boolean; + + public var totalframe:Number; + + public var propXML:XMLList; + + public var nextActionId:String; + + protected var _enabled:Boolean; + + public var localChanged:Boolean; + + public var bodyShapeId:String; + + public function CCActionModel() + { + super(); + this.componentStates = {}; + this._enabled = true; + } + + public function get name() : String + { + return this._name; + } + + public function set name(param1:String) : void + { + if(this._name != param1) + { + this._name = param1; + this.localChanged = true; + } + } + + public function get isMotion() : Boolean + { + return this._isMotion; + } + + public function set isMotion(param1:Boolean) : void + { + if(this._isMotion != param1) + { + this._isMotion = param1; + this.localChanged = true; + } + } + + public function get category() : String + { + return this._category; + } + + public function set category(param1:String) : void + { + if(this._category != param1) + { + this._category = param1; + this.localChanged = true; + } + } + + public function get defaultFacialId() : String + { + return this._defaultFacialId; + } + + public function set defaultFacialId(param1:String) : void + { + if(this._defaultFacialId != param1) + { + this._defaultFacialId = param1; + this.localChanged = true; + } + } + + public function get enabled() : Boolean + { + return this._enabled; + } + + public function set enabled(param1:Boolean) : void + { + if(this._enabled != param1) + { + this._enabled = param1; + this.localChanged = true; + } + } + + public function addComponent(param1:String, param2:String) : void + { + this.componentStates[param1] = param2; + } + + public function createPlaceHolder(param1:String) : void + { + this.id = param1; + this._name = param1; + this.totalframe = 60; + this._enabled = false; + this._isMotion = false; + this.isLoop = true; + this._category = "Unassigned"; + } + + public function get shortId() : String + { + if(this.id) + { + return this.id.replace(/\.xml$/,""); + } + return ""; + } + + public function toXML() : XML + { + var _loc1_:XML = ; + _loc1_.@id = this.shortId; + _loc1_.@name = this.name; + _loc1_.@loop = !!this.isLoop?"Y":"N"; + _loc1_.@totalframe = this.totalframe; + _loc1_.@enable = !!this.enabled?"Y":"N"; + _loc1_.@is_motion = !!this.isMotion?"Y":"N"; + _loc1_.@category = this.category; + var _loc2_:XML = ; + _loc2_.@facial_id = this.defaultFacialId.replace(/\.xml$/,""); + _loc1_.appendChild(_loc2_); + return _loc1_; + } + + public function restore(param1:CCActionModel) : void + { + this._name = param1.name; + this._enabled = param1.enabled; + this._isMotion = param1.isMotion; + this._category = param1.category; + this._defaultFacialId = param1.defaultFacialId; + this.localChanged = true; + } + } +} diff --git a/scripts/anifire/models/creator/CCBodyComponentModel.as b/scripts/anifire/models/creator/CCBodyComponentModel.as new file mode 100644 index 0000000..7ffac87 --- /dev/null +++ b/scripts/anifire/models/creator/CCBodyComponentModel.as @@ -0,0 +1,96 @@ +package anifire.models.creator +{ + public class CCBodyComponentModel + { + + + public var type:String; + + public var component_id:String; + + public var theme_id:String; + + public var x:Number; + + public var y:Number; + + public var xscale:Number; + + public var yscale:Number; + + public var offset:Number; + + public var rotation:Number; + + public var split:Boolean = true; + + public var folder:String; + + public var id:String; + + public function CCBodyComponentModel() + { + super(); + } + + public function parse(param1:XML) : void + { + this.type = param1.@type; + this.component_id = this.folder = param1.@component_id; + this.theme_id = param1.@theme_id; + this.x = param1.@x; + this.y = param1.@y; + this.xscale = param1.@xscale; + this.yscale = param1.@yscale; + this.offset = param1.@offset; + this.rotation = param1.@rotation; + if(param1.hasOwnProperty("@split") && String(param1.@split) == "N") + { + this.split = false; + } + if(param1.hasOwnProperty("@id")) + { + this.id = param1.@id; + } + } + + public function initDefaultValues() : void + { + this.x = 0; + this.y = 0; + this.xscale = 1; + this.yscale = 1; + this.offset = 0; + this.rotation = 0; + this.split = false; + } + + public function serialize() : XML + { + var _loc1_:XML = ; + _loc1_.@type = this.type; + _loc1_.@component_id = this.component_id; + _loc1_.@theme_id = this.theme_id; + _loc1_.@x = this.x; + _loc1_.@y = this.y; + _loc1_.@xscale = this.xscale; + _loc1_.@yscale = this.yscale; + _loc1_.@offset = this.offset; + _loc1_.@rotation = this.rotation; + if(!this.split) + { + _loc1_.@split = "N"; + } + if(this.id) + { + _loc1_.@id = this.id; + } + return _loc1_; + } + + public function deserialize(param1:XML) : void + { + this.parse(param1); + } + } +} diff --git a/scripts/anifire/models/creator/CCCharActionComponentModel.as b/scripts/anifire/models/creator/CCCharActionComponentModel.as new file mode 100644 index 0000000..5dfca0b --- /dev/null +++ b/scripts/anifire/models/creator/CCCharActionComponentModel.as @@ -0,0 +1,31 @@ +package anifire.models.creator +{ + public class CCCharActionComponentModel extends CCBodyComponentModel + { + + + public var path:String; + + public var file:String; + + public function CCCharActionComponentModel() + { + super(); + } + + override public function serialize() : XML + { + var _loc1_:XML = super.serialize(); + _loc1_.@path = this.path; + _loc1_.@file = this.file; + return _loc1_; + } + + override public function deserialize(param1:XML) : void + { + this.path = param1.@path; + this.file = param1.@file; + super.deserialize(param1); + } + } +} diff --git a/scripts/anifire/models/creator/CCCharacterActionModel.as b/scripts/anifire/models/creator/CCCharacterActionModel.as new file mode 100644 index 0000000..bb0d683 --- /dev/null +++ b/scripts/anifire/models/creator/CCCharacterActionModel.as @@ -0,0 +1,240 @@ +package anifire.models.creator +{ + import anifire.constant.CcLibConstant; + + public class CCCharacterActionModel + { + + + public var components:Object; + + public var libraryPaths:Object; + + public var colorCodes:Object; + + public var bodyScale:Object; + + public var headScale:Object; + + public var headPos:Object; + + public var version:Number; + + public var themeId:String; + + public var actionModel:CCActionModel; + + public var propXML:XMLList; + + public var defaultActionId:String; + + public var enabled:Boolean; + + public var freeactionFolderName:String; + + public function CCCharacterActionModel() + { + super(); + this.components = {}; + this.libraryPaths = {}; + this.colorCodes = {}; + this.bodyScale = {}; + this.headScale = {}; + this.headPos = {}; + this.version = 1; + this.themeId = ""; + this.enabled = true; + } + + public function addComponent(param1:CCBodyComponentModel, param2:String, param3:String) : void + { + var _loc4_:CCCharActionComponentModel = null; + var _loc5_:Vector. = null; + _loc4_ = new CCCharActionComponentModel(); + _loc4_.type = param1.type; + _loc4_.path = param3; + _loc4_.file = param2; + _loc4_.x = param1.x; + _loc4_.y = param1.y; + _loc4_.xscale = param1.xscale; + _loc4_.yscale = param1.yscale; + _loc4_.offset = param1.offset; + _loc4_.rotation = param1.rotation; + _loc4_.split = param1.split; + _loc4_.theme_id = param1.theme_id; + _loc4_.component_id = param1.component_id; + _loc4_.folder = param1.folder; + if(param1.id) + { + _loc4_.id = param1.id; + } + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc4_.type) > -1) + { + if(!this.components[_loc4_.type]) + { + _loc5_ = this.components[_loc4_.type] = new Vector.(); + } + else + { + _loc5_ = this.components[_loc4_.type]; + } + _loc5_.push(_loc4_); + } + else + { + this.components[_loc4_.type] = _loc4_; + } + } + + public function getComponentByType(param1:String) : Object + { + return this.components[param1]; + } + + public function addLibrary(param1:String, param2:String) : void + { + this.libraryPaths[param1] = param2; + } + + public function getLibraryFilename(param1:String) : String + { + return this.libraryPaths[param1]; + } + + public function addColor(param1:String, param2:CCColor) : void + { + this.colorCodes[param1] = param2; + } + + public function getColor(param1:String) : CCColor + { + return this.colorCodes[param1]; + } + + public function serialize() : XML + { + var _loc2_:XML = null; + var _loc3_:* = null; + var _loc4_:Vector. = null; + var _loc5_:* = null; + var _loc6_:CCCharActionComponentModel = null; + var _loc1_:XML = ; + for(_loc3_ in this.colorCodes) + { + _loc1_.appendChild(CCColor(this.getColor(_loc3_)).serialize()); + } + for(_loc3_ in this.components) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc3_) > -1) + { + _loc4_ = this.getComponentByType(_loc3_) as Vector.; + for(_loc5_ in _loc4_) + { + _loc6_ = _loc4_[_loc5_] as CCCharActionComponentModel; + _loc1_.appendChild(_loc6_.serialize()); + } + } + else + { + _loc1_.appendChild(CCCharActionComponentModel(this.getComponentByType(_loc3_)).serialize()); + } + } + for(_loc3_ in this.libraryPaths) + { + _loc2_ = {this.getLibraryFilename(_loc3_)}; + _loc2_.@type = _loc3_; + _loc1_.appendChild(_loc2_); + } + for(_loc3_ in this.bodyScale) + { + _loc2_ = {this.bodyScale[_loc3_]}; + _loc2_.@type = _loc3_; + _loc1_.appendChild(_loc2_); + } + for(_loc3_ in this.headScale) + { + _loc2_ = {this.headScale[_loc3_]}; + _loc2_.@type = _loc3_; + _loc1_.appendChild(_loc2_); + } + for(_loc3_ in this.headPos) + { + _loc2_ = {this.headPos[_loc3_]}; + _loc2_.@type = _loc3_; + _loc1_.appendChild(_loc2_); + } + _loc1_.@version = this.version; + _loc1_.@themeId = this.themeId; + return _loc1_; + } + + public function deserialize(param1:XML) : void + { + var _loc3_:XML = null; + var _loc4_:CCCharActionComponentModel = null; + var _loc5_:CCColor = null; + var _loc6_:Vector. = null; + var _loc2_:int = 0; + while(_loc2_ < param1.children().length()) + { + _loc3_ = param1.children()[_loc2_]; + switch(_loc3_.localName()) + { + case "component": + _loc4_ = new CCCharActionComponentModel(); + _loc4_.deserialize(_loc3_); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc4_.type) > -1) + { + if(!this.components[_loc4_.type]) + { + _loc6_ = this.components[_loc4_.type] = new Vector.(); + } + else + { + _loc6_ = this.components[_loc4_.type]; + } + _loc6_.push(_loc4_); + } + else + { + this.components[_loc4_.type] = _loc4_; + } + break; + case "library": + this.addLibrary(_loc3_.@type,_loc3_.text()); + break; + case "bodyscale": + this.bodyScale[_loc3_.@type] = _loc3_.text(); + break; + case "headscale": + this.headScale[_loc3_.@type] = _loc3_.text(); + break; + case "headpos": + this.headPos[_loc3_.@type] = _loc3_.text(); + break; + case "color": + _loc5_ = new CCColor(); + _loc5_.deserialize(_loc3_); + if(_loc5_.targetComponent) + { + this.colorCodes[_loc5_.type + _loc5_.targetComponent] = _loc5_; + } + else + { + this.colorCodes[_loc5_.type] = _loc5_; + } + } + _loc2_++; + } + this.version = param1.@version; + this.themeId = param1.@themeId; + } + + public function clone() : CCCharacterActionModel + { + var _loc1_:CCCharacterActionModel = new CCCharacterActionModel(); + _loc1_.deserialize(this.serialize()); + return _loc1_; + } + } +} diff --git a/scripts/anifire/models/creator/CCColor.as b/scripts/anifire/models/creator/CCColor.as new file mode 100644 index 0000000..ef5770e --- /dev/null +++ b/scripts/anifire/models/creator/CCColor.as @@ -0,0 +1,51 @@ +package anifire.models.creator +{ + public class CCColor + { + + + public var type:String; + + public var dest:uint; + + public var oc:uint = 4.294967295E9; + + public var targetComponent:String = ""; + + public function CCColor() + { + super(); + } + + public function parse(param1:XML) : void + { + this.type = param1.@r; + this.dest = uint(param1); + this.oc = param1.attribute("oc").length() == 0?uint(uint.MAX_VALUE):uint(param1.@oc); + if(param1.attribute("targetComponent").length() != 0) + { + this.targetComponent = param1.@targetComponent; + } + } + + public function serialize() : XML + { + var _loc1_:XML = {this.dest.toString()}; + _loc1_.@r = this.type; + if(this.oc != uint.MAX_VALUE) + { + _loc1_.@oc = this.oc.toString(); + } + if(this.targetComponent) + { + _loc1_.@targetComponent = this.targetComponent; + } + return _loc1_; + } + + public function deserialize(param1:XML) : void + { + this.parse(param1); + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelHueSliderSkin.as b/scripts/anifire/skins/ColorInputPanelHueSliderSkin.as new file mode 100644 index 0000000..18a9e9d --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelHueSliderSkin.as @@ -0,0 +1,162 @@ +package anifire.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.VSlider; + import spark.skins.SparkSkin; + + public class ColorInputPanelHueSliderSkin extends SparkSkin implements IStateClient2 + { + + + private var _110342614thumb:Button; + + private var _110621003track:Button; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _213507019hostComponent:VSlider; + + public function ColorInputPanelHueSliderSkin() + { + super(); + mx_internal::_document = this; + this.minWidth = 11; + this.mxmlContent = [this._ColorInputPanelHueSliderSkin_Button1_i(),this._ColorInputPanelHueSliderSkin_Button2_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override protected function measure() : void + { + var _loc1_:Number = this.thumb.getLayoutBoundsY(); + this.thumb.setLayoutBoundsPosition(this.thumb.getLayoutBoundsX(),0); + super.measure(); + this.thumb.setLayoutBoundsPosition(this.thumb.getLayoutBoundsX(),_loc1_); + } + + private function _ColorInputPanelHueSliderSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.minHeight = 33; + _loc1_.height = 100; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",ColorInputPanelHueSliderTrackSkin); + _loc1_.id = "track"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.track = _loc1_; + BindingManager.executeBindings(this,"track",this.track); + return _loc1_; + } + + private function _ColorInputPanelHueSliderSkin_Button2_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.width = 25; + _loc1_.height = 25; + _loc1_.tabEnabled = false; + _loc1_.setStyle("skinClass",ColorInputPanelHueSliderThumbSkin); + _loc1_.id = "thumb"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.thumb = _loc1_; + BindingManager.executeBindings(this,"thumb",this.thumb); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get thumb() : Button + { + return this._110342614thumb; + } + + public function set thumb(param1:Button) : void + { + var _loc2_:Object = this._110342614thumb; + if(_loc2_ !== param1) + { + this._110342614thumb = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumb",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get track() : Button + { + return this._110621003track; + } + + public function set track(param1:Button) : void + { + var _loc2_:Object = this._110621003track; + if(_loc2_ !== param1) + { + this._110621003track = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"track",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : VSlider + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:VSlider) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin.as b/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin.as new file mode 100644 index 0000000..7ad8722 --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin.as @@ -0,0 +1,85 @@ +package anifire.skins +{ + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.State; + import spark.components.Button; + import spark.primitives.BitmapImage; + import spark.skins.SparkSkin; + + public class ColorInputPanelHueSliderThumbSkin extends SparkSkin implements IStateClient2 + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_colorpalette_slider_control_png_381158866:Class; + + private var _213507019hostComponent:Button; + + public function ColorInputPanelHueSliderThumbSkin() + { + this._embed_mxml__styles_images_colorpalette_slider_control_png_381158866 = ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866; + super(); + mx_internal::_document = this; + this.mxmlContent = [this._ColorInputPanelHueSliderThumbSkin_BitmapImage1_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorInputPanelHueSliderThumbSkin_BitmapImage1_c() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.source = this._embed_mxml__styles_images_colorpalette_slider_control_png_381158866; + _loc1_.initialized(this,null); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as b/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as new file mode 100644 index 0000000..72b47db --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866 extends BitmapAsset + { + + + public function ColorInputPanelHueSliderThumbSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866() + { + super(); + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin.as b/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin.as new file mode 100644 index 0000000..859f6bf --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin.as @@ -0,0 +1,270 @@ +package anifire.skins +{ + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.State; + import spark.components.Button; + import spark.components.Group; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.skins.SparkSkin; + + use namespace mx_internal; + + public class ColorInputPanelHueSliderTrackSkin extends SparkSkin implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _74026253maskGroup:Group; + + private var _2136852217sliderContentGroup:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:Button; + + public function ColorInputPanelHueSliderTrackSkin() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210 = ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ColorInputPanelHueSliderTrackSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_skins_ColorInputPanelHueSliderTrackSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ColorInputPanelHueSliderTrackSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.mxmlContent = [this._ColorInputPanelHueSliderTrackSkin_Group1_i(),this._ColorInputPanelHueSliderTrackSkin_Group2_i(),this._ColorInputPanelHueSliderTrackSkin_Rect2_c()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ColorInputPanelHueSliderTrackSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorInputPanelHueSliderTrackSkin_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._ColorInputPanelHueSliderTrackSkin_BitmapImage1_c()]; + _loc1_.id = "sliderContentGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sliderContentGroup = _loc1_; + BindingManager.executeBindings(this,"sliderContentGroup",this.sliderContentGroup); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_BitmapImage1_c() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.fillMode = "scale"; + _loc1_.scaleMode = "stretch"; + _loc1_.source = this._embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210; + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 5; + _loc1_.right = 5; + _loc1_.top = 4; + _loc1_.bottom = 4; + _loc1_.mxmlContent = [this._ColorInputPanelHueSliderTrackSkin_Rect1_c()]; + _loc1_.id = "maskGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.maskGroup = _loc1_; + BindingManager.executeBindings(this,"maskGroup",this.maskGroup); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 7; + _loc1_.radiusY = 7; + _loc1_.fill = this._ColorInputPanelHueSliderTrackSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.fill = this._ColorInputPanelHueSliderTrackSkin_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.alpha = 0; + return _loc1_; + } + + private function _ColorInputPanelHueSliderTrackSkin_bindingsSetup() : Array + { + var _loc1_:Array = []; + _loc1_[0] = new Binding(this,null,null,"sliderContentGroup.mask","maskGroup"); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get maskGroup() : Group + { + return this._74026253maskGroup; + } + + public function set maskGroup(param1:Group) : void + { + var _loc2_:Object = this._74026253maskGroup; + if(_loc2_ !== param1) + { + this._74026253maskGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"maskGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sliderContentGroup() : Group + { + return this._2136852217sliderContentGroup; + } + + public function set sliderContentGroup(param1:Group) : void + { + var _loc2_:Object = this._2136852217sliderContentGroup; + if(_loc2_ !== param1) + { + this._2136852217sliderContentGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sliderContentGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : Button + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:Button) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210.as b/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210.as new file mode 100644 index 0000000..7b9b9fe --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210 extends BitmapAsset + { + + + public function ColorInputPanelHueSliderTrackSkin__embed_mxml__styles_images_colorpalette_hue_slider_bg_png_2086678210() + { + super(); + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelSkin.as b/scripts/anifire/skins/ColorInputPanelSkin.as new file mode 100644 index 0000000..28e4ff9 --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelSkin.as @@ -0,0 +1,1021 @@ +package anifire.skins +{ + import anifire.component.ColorInputPanel; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import spark.components.Button; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Image; + import spark.components.TextInput; + import spark.components.VGroup; + import spark.components.VSlider; + import spark.components.supportClasses.Skin; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + + use namespace mx_internal; + + public class ColorInputPanelSkin extends Skin implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _ColorInputPanelSkin_Group3:Group; + + private var _1929142160blueInput:TextInput; + + private var _1380599289brightnessInput:TextInput; + + private var _2079810181colorFieldBaseColor:SolidColor; + + private var _1332115059colorFieldCursor:Group; + + private var _2084102194colorFieldCursorImage:BitmapImage; + + private var _1979032216colorFieldGroup:Group; + + private var _504070506colorSelectionGroup:HGroup; + + private var _2051263268colorSpaceGroup:Group; + + private var _2145825204colorSpaceTypeDropDownList:DropDownList; + + private var _1433704977eyeDropperButton:Button; + + private var _358645113greenInput:TextInput; + + private var _481456785hexInput:TextInput; + + private var _1039827612hexInputArea:HGroup; + + private var _1680642176hsbInputArea:HGroup; + + private var _289746354hueInput:TextInput; + + private var _676421625hueSlider:VSlider; + + private var _74026253maskGroup:Group; + + private var _805805639redInput:TextInput; + + private var _1234918102rgbInputArea:HGroup; + + private var _504103144saturationInput:TextInput; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624:Class; + + private var _embed_mxml__styles_images_colorpalette_slider_control_png_381158866:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + private var _213507019hostComponent:ColorInputPanel; + + public function ColorInputPanelSkin() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624 = ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624; + this._embed_mxml__styles_images_colorpalette_slider_control_png_381158866 = ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ColorInputPanelSkin_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_skins_ColorInputPanelSkinWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ColorInputPanelSkin[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.mxmlContent = [this._ColorInputPanelSkin_Group1_c()]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ColorInputPanelSkin._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorInputPanelSkin_Group1_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._ColorInputPanelSkin_RectangularDropShadow1_c(),this._ColorInputPanelSkin_Rect1_c(),this._ColorInputPanelSkin_VGroup1_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorInputPanelSkin_RectangularDropShadow1_c() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.mouseEnabled = false; + _loc1_.mouseChildren = false; + _loc1_.angle = 90; + _loc1_.distance = 0; + _loc1_.color = 6710886; + _loc1_.tlRadius = 10; + _loc1_.trRadius = 10; + _loc1_.blRadius = 10; + _loc1_.brRadius = 10; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorInputPanelSkin_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.radiusX = 5; + _loc1_.radiusY = 5; + _loc1_.fill = this._ColorInputPanelSkin_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelSkin_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + _loc1_.alpha = 0.8; + return _loc1_; + } + + private function _ColorInputPanelSkin_VGroup1_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.paddingTop = 4; + _loc1_.paddingBottom = 8; + _loc1_.paddingLeft = 8; + _loc1_.paddingRight = 4; + _loc1_.gap = 4; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_HGroup1_i(),this._ColorInputPanelSkin_Group6_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorInputPanelSkin_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.height = 208; + _loc1_.verticalAlign = "middle"; + _loc1_.gap = 3; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_Group2_i(),this._ColorInputPanelSkin_VSlider1_i()]; + _loc1_.id = "colorSelectionGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorSelectionGroup = _loc1_; + BindingManager.executeBindings(this,"colorSelectionGroup",this.colorSelectionGroup); + return _loc1_; + } + + private function _ColorInputPanelSkin_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 200; + _loc1_.height = 200; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_Rect2_c(),this._ColorInputPanelSkin_Group3_i(),this._ColorInputPanelSkin_Group4_i(),this._ColorInputPanelSkin_Group5_i()]; + _loc1_.id = "colorFieldGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorFieldGroup = _loc1_; + BindingManager.executeBindings(this,"colorFieldGroup",this.colorFieldGroup); + return _loc1_; + } + + private function _ColorInputPanelSkin_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 7; + _loc1_.radiusY = 7; + _loc1_.fill = this._ColorInputPanelSkin_SolidColor2_i(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelSkin_SolidColor2_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + this.colorFieldBaseColor = _loc1_; + BindingManager.executeBindings(this,"colorFieldBaseColor",this.colorFieldBaseColor); + return _loc1_; + } + + private function _ColorInputPanelSkin_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_Image1_c()]; + _loc1_.id = "_ColorInputPanelSkin_Group3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ColorInputPanelSkin_Group3 = _loc1_; + BindingManager.executeBindings(this,"_ColorInputPanelSkin_Group3",this._ColorInputPanelSkin_Group3); + return _loc1_; + } + + private function _ColorInputPanelSkin_Image1_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624; + _loc1_.fillMode = "scale"; + _loc1_.scaleMode = "stretch"; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorInputPanelSkin_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_Rect3_c()]; + _loc1_.id = "maskGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.maskGroup = _loc1_; + BindingManager.executeBindings(this,"maskGroup",this.maskGroup); + return _loc1_; + } + + private function _ColorInputPanelSkin_Rect3_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.radiusX = 7; + _loc1_.radiusY = 7; + _loc1_.fill = this._ColorInputPanelSkin_SolidColor3_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ColorInputPanelSkin_SolidColor3_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + return _loc1_; + } + + private function _ColorInputPanelSkin_Group5_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 0; + _loc1_.height = 0; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_BitmapImage1_i()]; + _loc1_.id = "colorFieldCursor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorFieldCursor = _loc1_; + BindingManager.executeBindings(this,"colorFieldCursor",this.colorFieldCursor); + return _loc1_; + } + + private function _ColorInputPanelSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.source = this._embed_mxml__styles_images_colorpalette_slider_control_png_381158866; + _loc1_.verticalCenter = -2; + _loc1_.horizontalCenter = 0; + _loc1_.initialized(this,"colorFieldCursorImage"); + this.colorFieldCursorImage = _loc1_; + BindingManager.executeBindings(this,"colorFieldCursorImage",this.colorFieldCursorImage); + return _loc1_; + } + + private function _ColorInputPanelSkin_VSlider1_i() : VSlider + { + var _loc1_:VSlider = new VSlider(); + _loc1_.percentHeight = 100; + _loc1_.minimum = 0; + _loc1_.maximum = 359; + _loc1_.stepSize = 1; + _loc1_.setStyle("liveDragging",true); + _loc1_.setStyle("slideDuration",0); + _loc1_.setStyle("skinClass",ColorInputPanelHueSliderSkin); + _loc1_.id = "hueSlider"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.hueSlider = _loc1_; + BindingManager.executeBindings(this,"hueSlider",this.hueSlider); + return _loc1_; + } + + private function _ColorInputPanelSkin_Group6_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_HGroup2_c(),this._ColorInputPanelSkin_Button1_i()]; + _loc1_.id = "colorSpaceGroup"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorSpaceGroup = _loc1_; + BindingManager.executeBindings(this,"colorSpaceGroup",this.colorSpaceGroup); + return _loc1_; + } + + private function _ColorInputPanelSkin_HGroup2_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.width = 200; + _loc1_.gap = 4; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_DropDownList1_i(),this._ColorInputPanelSkin_HGroup3_i(),this._ColorInputPanelSkin_HGroup4_i(),this._ColorInputPanelSkin_HGroup5_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ColorInputPanelSkin_DropDownList1_i() : DropDownList + { + var _loc1_:DropDownList = new DropDownList(); + _loc1_.width = 65; + _loc1_.id = "colorSpaceTypeDropDownList"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorSpaceTypeDropDownList = _loc1_; + BindingManager.executeBindings(this,"colorSpaceTypeDropDownList",this.colorSpaceTypeDropDownList); + return _loc1_; + } + + private function _ColorInputPanelSkin_HGroup3_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_TextInput1_i()]; + _loc1_.id = "hexInputArea"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.hexInputArea = _loc1_; + BindingManager.executeBindings(this,"hexInputArea",this.hexInputArea); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput1_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.maxChars = 6; + _loc1_.restrict = "A-F a-f 0-9"; + _loc1_.id = "hexInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.hexInput = _loc1_; + BindingManager.executeBindings(this,"hexInput",this.hexInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_HGroup4_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.visible = false; + _loc1_.includeInLayout = false; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_TextInput2_i(),this._ColorInputPanelSkin_TextInput3_i(),this._ColorInputPanelSkin_TextInput4_i()]; + _loc1_.id = "rgbInputArea"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.rgbInputArea = _loc1_; + BindingManager.executeBindings(this,"rgbInputArea",this.rgbInputArea); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput2_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "redInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.redInput = _loc1_; + BindingManager.executeBindings(this,"redInput",this.redInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput3_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "greenInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.greenInput = _loc1_; + BindingManager.executeBindings(this,"greenInput",this.greenInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput4_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "blueInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.blueInput = _loc1_; + BindingManager.executeBindings(this,"blueInput",this.blueInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_HGroup5_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.visible = false; + _loc1_.includeInLayout = false; + _loc1_.mxmlContent = [this._ColorInputPanelSkin_TextInput5_i(),this._ColorInputPanelSkin_TextInput6_i(),this._ColorInputPanelSkin_TextInput7_i()]; + _loc1_.id = "hsbInputArea"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.hsbInputArea = _loc1_; + BindingManager.executeBindings(this,"hsbInputArea",this.hsbInputArea); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput5_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "hueInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.hueInput = _loc1_; + BindingManager.executeBindings(this,"hueInput",this.hueInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput6_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "saturationInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.saturationInput = _loc1_; + BindingManager.executeBindings(this,"saturationInput",this.saturationInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_TextInput7_i() : TextInput + { + var _loc1_:TextInput = new TextInput(); + _loc1_.percentWidth = 100; + _loc1_.restrict = "0-9"; + _loc1_.text = "0"; + _loc1_.id = "brightnessInput"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.brightnessInput = _loc1_; + BindingManager.executeBindings(this,"brightnessInput",this.brightnessInput); + return _loc1_; + } + + private function _ColorInputPanelSkin_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.right = 4; + _loc1_.width = 21; + _loc1_.percentHeight = 100; + _loc1_.buttonMode = true; + _loc1_.setStyle("skinClass",EyeDropperButtonSkin); + _loc1_.id = "eyeDropperButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.eyeDropperButton = _loc1_; + BindingManager.executeBindings(this,"eyeDropperButton",this.eyeDropperButton); + return _loc1_; + } + + private function _ColorInputPanelSkin_bindingsSetup() : Array + { + var _loc1_:Array = []; + _loc1_[0] = new Binding(this,null,null,"_ColorInputPanelSkin_Group3.mask","maskGroup"); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get blueInput() : TextInput + { + return this._1929142160blueInput; + } + + public function set blueInput(param1:TextInput) : void + { + var _loc2_:Object = this._1929142160blueInput; + if(_loc2_ !== param1) + { + this._1929142160blueInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"blueInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get brightnessInput() : TextInput + { + return this._1380599289brightnessInput; + } + + public function set brightnessInput(param1:TextInput) : void + { + var _loc2_:Object = this._1380599289brightnessInput; + if(_loc2_ !== param1) + { + this._1380599289brightnessInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"brightnessInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorFieldBaseColor() : SolidColor + { + return this._2079810181colorFieldBaseColor; + } + + public function set colorFieldBaseColor(param1:SolidColor) : void + { + var _loc2_:Object = this._2079810181colorFieldBaseColor; + if(_loc2_ !== param1) + { + this._2079810181colorFieldBaseColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorFieldBaseColor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorFieldCursor() : Group + { + return this._1332115059colorFieldCursor; + } + + public function set colorFieldCursor(param1:Group) : void + { + var _loc2_:Object = this._1332115059colorFieldCursor; + if(_loc2_ !== param1) + { + this._1332115059colorFieldCursor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorFieldCursor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorFieldCursorImage() : BitmapImage + { + return this._2084102194colorFieldCursorImage; + } + + public function set colorFieldCursorImage(param1:BitmapImage) : void + { + var _loc2_:Object = this._2084102194colorFieldCursorImage; + if(_loc2_ !== param1) + { + this._2084102194colorFieldCursorImage = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorFieldCursorImage",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorFieldGroup() : Group + { + return this._1979032216colorFieldGroup; + } + + public function set colorFieldGroup(param1:Group) : void + { + var _loc2_:Object = this._1979032216colorFieldGroup; + if(_loc2_ !== param1) + { + this._1979032216colorFieldGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorFieldGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorSelectionGroup() : HGroup + { + return this._504070506colorSelectionGroup; + } + + public function set colorSelectionGroup(param1:HGroup) : void + { + var _loc2_:Object = this._504070506colorSelectionGroup; + if(_loc2_ !== param1) + { + this._504070506colorSelectionGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorSelectionGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorSpaceGroup() : Group + { + return this._2051263268colorSpaceGroup; + } + + public function set colorSpaceGroup(param1:Group) : void + { + var _loc2_:Object = this._2051263268colorSpaceGroup; + if(_loc2_ !== param1) + { + this._2051263268colorSpaceGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorSpaceGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get colorSpaceTypeDropDownList() : DropDownList + { + return this._2145825204colorSpaceTypeDropDownList; + } + + public function set colorSpaceTypeDropDownList(param1:DropDownList) : void + { + var _loc2_:Object = this._2145825204colorSpaceTypeDropDownList; + if(_loc2_ !== param1) + { + this._2145825204colorSpaceTypeDropDownList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorSpaceTypeDropDownList",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get eyeDropperButton() : Button + { + return this._1433704977eyeDropperButton; + } + + public function set eyeDropperButton(param1:Button) : void + { + var _loc2_:Object = this._1433704977eyeDropperButton; + if(_loc2_ !== param1) + { + this._1433704977eyeDropperButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"eyeDropperButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get greenInput() : TextInput + { + return this._358645113greenInput; + } + + public function set greenInput(param1:TextInput) : void + { + var _loc2_:Object = this._358645113greenInput; + if(_loc2_ !== param1) + { + this._358645113greenInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"greenInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hexInput() : TextInput + { + return this._481456785hexInput; + } + + public function set hexInput(param1:TextInput) : void + { + var _loc2_:Object = this._481456785hexInput; + if(_loc2_ !== param1) + { + this._481456785hexInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hexInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hexInputArea() : HGroup + { + return this._1039827612hexInputArea; + } + + public function set hexInputArea(param1:HGroup) : void + { + var _loc2_:Object = this._1039827612hexInputArea; + if(_loc2_ !== param1) + { + this._1039827612hexInputArea = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hexInputArea",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hsbInputArea() : HGroup + { + return this._1680642176hsbInputArea; + } + + public function set hsbInputArea(param1:HGroup) : void + { + var _loc2_:Object = this._1680642176hsbInputArea; + if(_loc2_ !== param1) + { + this._1680642176hsbInputArea = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hsbInputArea",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hueInput() : TextInput + { + return this._289746354hueInput; + } + + public function set hueInput(param1:TextInput) : void + { + var _loc2_:Object = this._289746354hueInput; + if(_loc2_ !== param1) + { + this._289746354hueInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hueInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hueSlider() : VSlider + { + return this._676421625hueSlider; + } + + public function set hueSlider(param1:VSlider) : void + { + var _loc2_:Object = this._676421625hueSlider; + if(_loc2_ !== param1) + { + this._676421625hueSlider = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hueSlider",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get maskGroup() : Group + { + return this._74026253maskGroup; + } + + public function set maskGroup(param1:Group) : void + { + var _loc2_:Object = this._74026253maskGroup; + if(_loc2_ !== param1) + { + this._74026253maskGroup = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"maskGroup",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get redInput() : TextInput + { + return this._805805639redInput; + } + + public function set redInput(param1:TextInput) : void + { + var _loc2_:Object = this._805805639redInput; + if(_loc2_ !== param1) + { + this._805805639redInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"redInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get rgbInputArea() : HGroup + { + return this._1234918102rgbInputArea; + } + + public function set rgbInputArea(param1:HGroup) : void + { + var _loc2_:Object = this._1234918102rgbInputArea; + if(_loc2_ !== param1) + { + this._1234918102rgbInputArea = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"rgbInputArea",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get saturationInput() : TextInput + { + return this._504103144saturationInput; + } + + public function set saturationInput(param1:TextInput) : void + { + var _loc2_:Object = this._504103144saturationInput; + if(_loc2_ !== param1) + { + this._504103144saturationInput = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"saturationInput",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get hostComponent() : ColorInputPanel + { + return this._213507019hostComponent; + } + + public function set hostComponent(param1:ColorInputPanel) : void + { + var _loc2_:Object = this._213507019hostComponent; + if(_loc2_ !== param1) + { + this._213507019hostComponent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"hostComponent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.as b/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.as new file mode 100644 index 0000000..cea4520 --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624 extends BitmapAsset + { + + + public function ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624() + { + super(); + } + } +} diff --git a/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as b/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as new file mode 100644 index 0000000..bdb8f99 --- /dev/null +++ b/scripts/anifire/skins/ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866 extends BitmapAsset + { + + + public function ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_slider_control_png_381158866() + { + super(); + } + } +} diff --git a/scripts/anifire/skins/EyeDropperButtonSkin.as b/scripts/anifire/skins/EyeDropperButtonSkin.as new file mode 100644 index 0000000..fbc4978 --- /dev/null +++ b/scripts/anifire/skins/EyeDropperButtonSkin.as @@ -0,0 +1,100 @@ +package anifire.skins +{ + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + import spark.primitives.BitmapImage; + import spark.skins.SparkButtonSkin; + + public class EyeDropperButtonSkin extends SparkButtonSkin implements IStateClient2 + { + + + private var _550816025_EyeDropperButtonSkin_BitmapImage1:BitmapImage; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180:Class; + + private var _embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724:Class; + + public function EyeDropperButtonSkin() + { + this._embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180 = EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180; + this._embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724 = EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724; + super(); + mx_internal::_document = this; + this.mxmlContent = [this._EyeDropperButtonSkin_BitmapImage1_i()]; + this.currentState = "up"; + states = [new State({ + "name":"up", + "overrides":[] + }),new State({ + "name":"over", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_EyeDropperButtonSkin_BitmapImage1", + "name":"source", + "value":this._embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180 + })] + }),new State({ + "name":"down", + "overrides":[] + }),new State({ + "name":"disabled", + "overrides":[new SetProperty().initializeFromObject({ + "name":"alpha", + "value":0.5 + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _EyeDropperButtonSkin_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.source = this._embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724; + _loc1_.initialized(this,"_EyeDropperButtonSkin_BitmapImage1"); + this._EyeDropperButtonSkin_BitmapImage1 = _loc1_; + BindingManager.executeBindings(this,"_EyeDropperButtonSkin_BitmapImage1",this._EyeDropperButtonSkin_BitmapImage1); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _EyeDropperButtonSkin_BitmapImage1() : BitmapImage + { + return this._550816025_EyeDropperButtonSkin_BitmapImage1; + } + + public function set _EyeDropperButtonSkin_BitmapImage1(param1:BitmapImage) : void + { + var _loc2_:Object = this._550816025_EyeDropperButtonSkin_BitmapImage1; + if(_loc2_ !== param1) + { + this._550816025_EyeDropperButtonSkin_BitmapImage1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_EyeDropperButtonSkin_BitmapImage1",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.as b/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.as new file mode 100644 index 0000000..48e6fc3 --- /dev/null +++ b/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180 extends BitmapAsset + { + + + public function EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180() + { + super(); + } + } +} diff --git a/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724.as b/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724.as new file mode 100644 index 0000000..da23cc5 --- /dev/null +++ b/scripts/anifire/skins/EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724.as @@ -0,0 +1,14 @@ +package anifire.skins +{ + import mx.core.BitmapAsset; + + public class EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724 extends BitmapAsset + { + + + public function EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_png_2048739724() + { + super(); + } + } +} diff --git a/scripts/anifire/util/Crypto/FastRC4.as b/scripts/anifire/util/Crypto/FastRC4.as new file mode 100644 index 0000000..51de57c --- /dev/null +++ b/scripts/anifire/util/Crypto/FastRC4.as @@ -0,0 +1,96 @@ +package anifire.util.Crypto +{ + import flash.utils.ByteArray; + + public class FastRC4 + { + + + private var i:int = 0; + + private var j:int = 0; + + private var S:ByteArray; + + private const psize:uint = 256; + + public function FastRC4(param1:ByteArray = null) + { + super(); + this.S = new ByteArray(); + if(param1) + { + this.init(param1); + } + } + + public function getPoolSize() : int + { + return this.psize; + } + + public function init(param1:ByteArray) : void + { + var _loc2_:int = 0; + var _loc3_:* = 0; + var _loc4_:int = 0; + _loc2_ = 0; + while(_loc2_ < 256) + { + this.S[_loc2_] = _loc2_; + _loc2_++; + } + _loc3_ = 0; + var _loc5_:int = 0; + var _loc6_:int = param1.length; + _loc2_ = 0; + while(_loc2_ < 256) + { + if(_loc5_ >= _loc6_) + { + _loc5_ = 0; + } + _loc3_ = _loc3_ + this.S[_loc2_] + param1[_loc5_] & 255; + _loc4_ = this.S[_loc2_]; + this.S[_loc2_] = this.S[_loc3_]; + this.S[_loc3_] = _loc4_; + _loc2_++; + _loc5_++; + } + this.i = 0; + this.j = 0; + } + + public function getBlockSize() : int + { + return 1; + } + + public function encrypt(param1:ByteArray) : void + { + var _loc3_:int = 0; + var _loc2_:int = 0; + var _loc4_:int = param1.length; + while(_loc2_ < _loc4_) + { + this.i = this.i + 1 & 255; + this.j = this.j + this.S[this.i] & 255; + _loc3_ = this.S[this.i]; + this.S[this.i] = this.S[this.j]; + this.S[this.j] = _loc3_; + param1[_loc2_++] = param1[_loc2_++] ^ this.S[_loc3_ + this.S[this.i] & 255]; + } + } + + public function decrypt(param1:ByteArray) : void + { + this.encrypt(param1); + param1.position = 0; + } + + public function toString() : String + { + return "rc4"; + } + } +} diff --git a/scripts/anifire/util/Crypto/TEA.as b/scripts/anifire/util/Crypto/TEA.as new file mode 100644 index 0000000..f2adb1f --- /dev/null +++ b/scripts/anifire/util/Crypto/TEA.as @@ -0,0 +1,168 @@ +package anifire.util.Crypto +{ + public class TEA + { + + + public function TEA() + { + super(); + } + + public static function encrypt(param1:String, param2:String) : String + { + var _loc6_:Number = NaN; + var _loc10_:Number = NaN; + var _loc11_:Number = NaN; + var _loc3_:Array = charsToLongs(strToChars(param1)); + var _loc4_:Array = charsToLongs(strToChars(param2)); + var _loc5_:Number = _loc3_.length; + if(_loc5_ == 0) + { + return ""; + } + if(_loc5_ == 1) + { + _loc3_[_loc5_++] = 0; + } + var _loc7_:Number = _loc3_[_loc5_ - 1]; + var _loc8_:Number = _loc3_[0]; + var _loc9_:Number = 2654435769; + var _loc12_:Number = Math.floor(6 + 52 / _loc5_); + var _loc13_:Number = 0; + while(_loc12_-- > 0) + { + _loc13_ = _loc13_ + _loc9_; + _loc11_ = _loc13_ >>> 2 & 3; + _loc6_ = 0; + while(_loc6_ < _loc5_ - 1) + { + _loc8_ = _loc3_[_loc6_ + 1]; + _loc10_ = (_loc7_ >>> 5 ^ _loc8_ << 2) + (_loc8_ >>> 3 ^ _loc7_ << 4) ^ (_loc13_ ^ _loc8_) + (_loc4_[_loc6_ & 3 ^ _loc11_] ^ _loc7_); + _loc7_ = _loc3_[_loc6_] = _loc3_[_loc6_] + _loc10_; + _loc6_++; + } + _loc8_ = _loc3_[0]; + _loc10_ = (_loc7_ >>> 5 ^ _loc8_ << 2) + (_loc8_ >>> 3 ^ _loc7_ << 4) ^ (_loc13_ ^ _loc8_) + (_loc4_[_loc6_ & 3 ^ _loc11_] ^ _loc7_); + _loc7_ = _loc3_[_loc5_ - 1] = _loc3_[_loc5_ - 1] + _loc10_; + } + return charsToHex(longsToChars(_loc3_)); + } + + public static function decrypt(param1:String, param2:String) : String + { + var _loc6_:Number = NaN; + var _loc10_:Number = NaN; + var _loc11_:Number = NaN; + var _loc3_:Array = charsToLongs(hexToChars(param1)); + var _loc4_:Array = charsToLongs(strToChars(param2)); + var _loc5_:Number = _loc3_.length; + if(_loc5_ == 0) + { + return ""; + } + var _loc7_:Number = _loc3_[_loc5_ - 1]; + var _loc8_:Number = _loc3_[0]; + var _loc9_:Number = 2654435769; + var _loc12_:Number = Math.floor(6 + 52 / _loc5_); + var _loc13_:Number = _loc12_ * _loc9_; + while(_loc13_ != 0) + { + _loc11_ = _loc13_ >>> 2 & 3; + _loc6_ = _loc5_ - 1; + while(_loc6_ > 0) + { + _loc7_ = _loc3_[_loc6_ - 1]; + _loc10_ = (_loc7_ >>> 5 ^ _loc8_ << 2) + (_loc8_ >>> 3 ^ _loc7_ << 4) ^ (_loc13_ ^ _loc8_) + (_loc4_[_loc6_ & 3 ^ _loc11_] ^ _loc7_); + _loc8_ = _loc3_[_loc6_] = _loc3_[_loc6_] - _loc10_; + _loc6_--; + } + _loc7_ = _loc3_[_loc5_ - 1]; + _loc10_ = (_loc7_ >>> 5 ^ _loc8_ << 2) + (_loc8_ >>> 3 ^ _loc7_ << 4) ^ (_loc13_ ^ _loc8_) + (_loc4_[_loc6_ & 3 ^ _loc11_] ^ _loc7_); + _loc8_ = _loc3_[0] = _loc3_[0] - _loc10_; + _loc13_ = _loc13_ - _loc9_; + } + return charsToStr(longsToChars(_loc3_)); + } + + private static function charsToLongs(param1:Array) : Array + { + var _loc2_:Array = new Array(Math.ceil(param1.length / 4)); + var _loc3_:Number = 0; + while(_loc3_ < _loc2_.length) + { + _loc2_[_loc3_] = param1[_loc3_ * 4] + (param1[_loc3_ * 4 + 1] << 8) + (param1[_loc3_ * 4 + 2] << 16) + (param1[_loc3_ * 4 + 3] << 24); + _loc3_++; + } + return _loc2_; + } + + private static function longsToChars(param1:Array) : Array + { + var _loc2_:Array = new Array(); + var _loc3_:Number = 0; + while(_loc3_ < param1.length) + { + _loc2_.push(param1[_loc3_] & 255,param1[_loc3_] >>> 8 & 255,param1[_loc3_] >>> 16 & 255,param1[_loc3_] >>> 24 & 255); + _loc3_++; + } + return _loc2_; + } + + private static function longToChars(param1:Number) : Array + { + var _loc2_:Array = new Array(); + _loc2_.push(param1 & 255,param1 >>> 8 & 255,param1 >>> 16 & 255,param1 >>> 24 & 255); + return _loc2_; + } + + private static function charsToHex(param1:Array) : String + { + var _loc2_:String = new String(""); + var _loc3_:Array = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); + var _loc4_:Number = 0; + while(_loc4_ < param1.length) + { + _loc2_ = _loc2_ + (_loc3_[param1[_loc4_] >> 4] + _loc3_[param1[_loc4_] & 15]); + _loc4_++; + } + return _loc2_; + } + + private static function hexToChars(param1:String) : Array + { + var _loc2_:Array = new Array(); + var _loc3_:Number = param1.substr(0,2) == "0x"?Number(2):Number(0); + while(_loc3_ < param1.length) + { + _loc2_.push(parseInt(param1.substr(_loc3_,2),16)); + _loc3_ = _loc3_ + 2; + } + return _loc2_; + } + + private static function charsToStr(param1:Array) : String + { + var _loc2_:String = new String(""); + var _loc3_:Number = 0; + while(_loc3_ < param1.length) + { + _loc2_ = _loc2_ + String.fromCharCode(param1[_loc3_]); + _loc3_++; + } + return _loc2_; + } + + private static function strToChars(param1:String) : Array + { + var _loc2_:Array = new Array(); + var _loc3_:Number = 0; + while(_loc3_ < param1.length) + { + _loc2_.push(param1.charCodeAt(_loc3_)); + _loc3_++; + } + return _loc2_; + } + } +} diff --git a/scripts/anifire/util/ExtraDataLoader.as b/scripts/anifire/util/ExtraDataLoader.as new file mode 100644 index 0000000..27a3d72 --- /dev/null +++ b/scripts/anifire/util/ExtraDataLoader.as @@ -0,0 +1,55 @@ +package anifire.util +{ + import anifire.event.ExtraDataEvent; + import anifire.interfaces.IRegulatedProcess; + import flash.display.Loader; + import flash.events.Event; + import flash.utils.ByteArray; + import flash.utils.IDataInput; + import flash.utils.IDataOutput; + + public class ExtraDataLoader extends Loader implements IRegulatedProcess + { + + + public var extraData; + + private var _bytes:ByteArray; + + public function ExtraDataLoader() + { + super(); + } + + private function set bytes(param1:ByteArray) : void + { + this._bytes = param1; + } + + override public function dispatchEvent(param1:Event) : Boolean + { + var _loc2_:ExtraDataEvent = new ExtraDataEvent(param1.type,new Object(),this.extraData,param1.bubbles,param1.cancelable); + return super.dispatchEvent(_loc2_); + } + + public function writeExternal(param1:IDataOutput) : void + { + param1.writeObject(this.extraData); + } + + public function readExternal(param1:IDataInput) : void + { + this.extraData = param1.readObject(); + } + + override public function addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + super.addEventListener(param1,param2,param3,param4,true); + } + + public function startProcess(param1:Boolean = false, param2:Number = 0) : void + { + this.loadBytes(this._bytes); + } + } +} diff --git a/scripts/anifire/util/ExtraDataTimer.as b/scripts/anifire/util/ExtraDataTimer.as new file mode 100644 index 0000000..ad8fff5 --- /dev/null +++ b/scripts/anifire/util/ExtraDataTimer.as @@ -0,0 +1,27 @@ +package anifire.util +{ + import flash.utils.Timer; + + public class ExtraDataTimer extends Timer + { + + + private var _data:Object; + + public function ExtraDataTimer(param1:Number, param2:int = 0.0, param3:Object = null) + { + super(param1,param2); + this.setData(param3); + } + + public function getData() : Object + { + return this._data; + } + + private function setData(param1:Object) : void + { + this._data = param1; + } + } +} diff --git a/scripts/anifire/util/GetText.as b/scripts/anifire/util/GetText.as new file mode 100644 index 0000000..be1b3a0 --- /dev/null +++ b/scripts/anifire/util/GetText.as @@ -0,0 +1,39 @@ +package anifire.util +{ + import anifire.constant.ServerConstants; + import anifire.managers.AppConfigManager; + import flash.net.URLRequest; + + public class GetText extends com.adobe.webapis.gettext.GetText + { + + + public function GetText() + { + super(); + } + + override protected function composeURLRequest() : URLRequest + { + var _loc8_:URLRequest = null; + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue("v"); + var _loc3_:String = _loc1_.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_CODE); + if(_loc3_ == null) + { + _loc3_ = "go"; + } + var _loc4_:String = _loc1_.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH) as String; + if(_loc4_ == "" || _loc4_ == null) + { + _loc8_ = new URLRequest(this.getUrl() + this.getLocale() + "/" + this.getName() + ".mo?v=" + _loc2_); + return _loc8_; + } + var _loc5_:RegExp = new RegExp(ServerConstants.FLASHVAR_CLIENT_THEME_PLACEHOLDER,"g"); + var _loc6_:* = "client_theme/locale/" + _loc3_ + "/" + this.getLocale() + "/" + this.getName() + ".mo"; + _loc4_ = _loc4_.replace(_loc5_,_loc6_); + var _loc7_:URLRequest = new URLRequest(_loc4_); + return _loc7_; + } + } +} diff --git a/scripts/anifire/util/IUtilMap.as b/scripts/anifire/util/IUtilMap.as new file mode 100644 index 0000000..5d37991 --- /dev/null +++ b/scripts/anifire/util/IUtilMap.as @@ -0,0 +1,25 @@ +package anifire.util +{ + public interface IUtilMap + { + + + function put(param1:String, param2:*) : void; + + function remove(param1:String) : void; + + function containsKey(param1:String) : Boolean; + + function containsValue(param1:*) : Boolean; + + function getKey(param1:*) : String; + + function getValue(param1:String) : *; + + function size() : int; + + function isEmpty() : Boolean; + + function clear() : void; + } +} diff --git a/scripts/anifire/util/Util.as b/scripts/anifire/util/Util.as new file mode 100644 index 0000000..7e202c1 --- /dev/null +++ b/scripts/anifire/util/Util.as @@ -0,0 +1,257 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + import anifire.constant.LanguageConstants; + import anifire.constant.ServerConstants; + import anifire.event.LoadMgrEvent; + import anifire.managers.AppConfigManager; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.MovieClip; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.system.Capabilities; + import flash.utils.Dictionary; + import mx.core.FlexGlobals; + import mx.events.ResourceEvent; + import mx.events.StyleEvent; + import mx.resources.ResourceManager; + + public class Util + { + + public static var isDebugMode:Boolean = false; + + public static var HTTP_ADDRESS_REGEXP:RegExp = /^https?\:\/\//i; + + private static var flashVar_index_by_application:Dictionary = new Dictionary(); + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + private static var _currentThemeCode:String; + + + public function Util() + { + super(); + } + + public static function roundNum(param1:Number, param2:int = 7) : Number + { + return Math.round(param1 * Math.pow(10,param2)) / Math.pow(10,param2); + } + + public static function cielNum(param1:Number, param2:int = 1) : Number + { + return Math.ceil(param1 * Math.pow(10,param2)) / Math.pow(10,param2); + } + + public static function initLog() : void + { + } + + public static function getCharacter(param1:DisplayObjectContainer) : MovieClip + { + if(!param1) + { + return null; + } + return UtilPlain.getCharacter(param1); + } + + public static function traceDisplayList(param1:DisplayObjectContainer, param2:String = "") : void + { + UtilPlain.traceDisplayList(param1,param2); + } + + public static function capturePicture(param1:DisplayObject, param2:Rectangle = null, param3:int = 0, param4:int = 0) : BitmapData + { + var _loc5_:BitmapData = null; + var _loc6_:int = 0; + var _loc7_:int = 0; + var _loc8_:BitmapData = null; + var _loc9_:Matrix = null; + var _loc10_:BitmapData = null; + try + { + _loc6_ = param3 == 0?int(param1.width):int(param3); + _loc7_ = param4 == 0?int(param1.height):int(param4); + _loc8_ = param1.width == 0?new BitmapData(100,100):new BitmapData(_loc6_,_loc7_); + _loc9_ = new Matrix(); + _loc8_.draw(param1,_loc9_); + if(param2 == null || _loc8_ == null) + { + _loc5_ = _loc8_; + } + else + { + _loc10_ = new BitmapData(param2.width,param2.height); + _loc10_.copyPixels(_loc8_,param2,new Point()); + _loc5_ = _loc10_; + } + } + catch(e:Error) + { + } + return _loc5_; + } + + public static function preferLanguageShortCode() : String + { + var _loc1_:String = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_LANG_CODE); + var _loc2_:String = LanguageConstants.MEDIUM_TO_SHORT_LANG_CODES_MAPPING.getValueByKey(_loc1_); + if(_loc2_ == null) + { + _loc2_ = AnimeConstants.LANGUAGE_CODE_ENGLISH; + } + return _loc2_; + } + + public static function getMovieThumbnailUrl() : String + { + var _loc1_:String = null; + _loc1_ = _configManager.getValue(ServerConstants.FLASHVAR_THUMBNAIL) as String; + if(_loc1_ == null) + { + _loc1_ = ""; + } + else if(!_loc1_.match(HTTP_ADDRESS_REGEXP)) + { + _loc1_ = (_configManager.getValue(ServerConstants.FLASHVAR_APISERVER) as String) + _loc1_; + } + return _loc1_; + } + + public static function get currentThemeCode() : String + { + return _currentThemeCode; + } + + public static function loadClientTheming(param1:Array, param2:Array, param3:Array, param4:Function = null) : void + { + var _loc5_:String = null; + var _loc6_:String = null; + var _loc7_:String = null; + var _loc10_:IEventDispatcher = null; + var _loc8_:UtilLoadMgr = new UtilLoadMgr(); + if(param4 != null) + { + _loc8_.addEventListener(LoadMgrEvent.ALL_COMPLETE,param4); + } + var _loc9_:int = 0; + while(_loc9_ < param1.length) + { + _loc5_ = param1[_loc9_] as String; + _loc6_ = param2[_loc9_] as String; + _loc7_ = param3[_loc9_] as String; + _loc10_ = FlexGlobals.topLevelApplication.styleManager.loadStyleDeclarations(UtilNetwork.getClientThemeUrl(_loc7_,_loc6_,_loc5_),true); + _loc8_.addEventDispatcher(_loc10_ as EventDispatcher,StyleEvent.COMPLETE); + _loc10_.addEventListener(StyleEvent.ERROR,onLoadClientThemingError); + _loc9_++; + } + _loc8_.commit(); + } + + private static function onLoadClientThemingError(param1:StyleEvent) : void + { + } + + private static function unloadClientTheming(param1:Array, param2:Array, param3:Array) : void + { + var _loc4_:String = null; + var _loc5_:String = null; + var _loc6_:String = null; + var _loc7_:int = 0; + while(_loc7_ < param1.length) + { + _loc4_ = param1[_loc7_] as String; + _loc5_ = param2[_loc7_] as String; + _loc6_ = param3[_loc7_] as String; + FlexGlobals.topLevelApplication.styleManager.unloadStyleDeclarations(UtilNetwork.getClientThemeUrl(_loc6_,_loc5_,_loc4_),true); + _loc7_++; + } + } + + public static function isVideoRecording() : Boolean + { + return _configManager.getValue(ServerConstants.FLASHVAR_IS_VIDEO_RECORD_MODE) == "1"; + } + + public static function is1080Recording() : Boolean + { + return _configManager.getValue(ServerConstants.FLASHVAR_IS_VIDEO_RECORD_MODE) == "1" && _configManager.getValue(ServerConstants.FLASHVAR_CUSTOM_PLAYER_HEIGHT) == "1080"; + } + + public static function loadClientLocale(param1:String, param2:Function) : void + { + var langCode:String = null; + var themeCode:String = null; + var eventDispatcher:IEventDispatcher = null; + var app:String = param1; + var callback:Function = param2; + langCode = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_LANG_CODE); + themeCode = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_CODE); + if(themeCode == null || themeCode == "silver") + { + themeCode = "go"; + } + if(!langCode) + { + langCode = "en_US"; + } + var resourceModuleURL:String = UtilNetwork.getClientLocaleUrl(themeCode,langCode,"framework"); + eventDispatcher = ResourceManager.getInstance().loadResourceModule(resourceModuleURL); + function():void + { + var counter:* = 2; + var _callback:* = function(param1:Event):void + { + if(--counter == 0) + { + callback(null); + } + }; + UtilGettext.initAggregate(app,themeCode,langCode,_callback); + eventDispatcher.addEventListener(ResourceEvent.COMPLETE,_callback); + }(); + ResourceManager.getInstance().localeChain = [langCode]; + } + + public static function playerIsUpdated(param1:Number, param2:Number) : Boolean + { + var _loc3_:String = Capabilities.version; + var _loc4_:Array = _loc3_.split(" "); + var _loc5_:String = _loc4_[0]; + var _loc6_:Array = _loc4_[1].split(","); + var _loc7_:Number = parseInt(_loc6_[0]); + var _loc8_:Number = parseInt(_loc6_[1]); + var _loc9_:Number = parseInt(_loc6_[2]); + var _loc10_:Number = parseInt(_loc6_[3]); + if(_loc7_ > param1) + { + return true; + } + if(_loc7_ == param1 && _loc8_ >= param2) + { + return true; + } + return false; + } + + public static function numPropertiesOfObject(param1:Object) : int + { + var _loc3_:Object = null; + var _loc2_:int = 0; + for each(_loc3_ in param1) + { + _loc2_++; + } + return _loc2_; + } + } +} diff --git a/scripts/anifire/util/UtilColor.as b/scripts/anifire/util/UtilColor.as new file mode 100644 index 0000000..e4b93cc --- /dev/null +++ b/scripts/anifire/util/UtilColor.as @@ -0,0 +1,278 @@ +package anifire.util +{ + import flash.display.DisplayObject; + import flash.display.Sprite; + import flash.geom.ColorTransform; + + public class UtilColor + { + + + public function UtilColor() + { + super(); + } + + public static function setRGB(param1:Sprite, param2:uint = 4.294967295E9) : void + { + var _loc3_:ColorTransform = new ColorTransform(); + if(param2 != uint.MAX_VALUE) + { + _loc3_.color = param2; + } + param1.transform.colorTransform = _loc3_; + } + + public static function getRGB(param1:Sprite) : uint + { + return param1.transform.colorTransform.color; + } + + public static function getRGBstr(param1:Sprite) : String + { + var _loc2_:String = param1.transform.colorTransform.color.toString(16); + var _loc3_:int = 6 - _loc2_.length; + while(_loc3_--) + { + _loc2_ = "0" + _loc2_; + } + _loc2_ = "0x" + _loc2_; + return _loc2_; + } + + public static function setRGB2(param1:Sprite, param2:uint, param3:uint, param4:uint) : void + { + var _loc5_:uint = param2 << 16 | param3 << 8 | param4; + setRGB(param1,_loc5_); + } + + public static function getRGB2(param1:Sprite) : Object + { + var _loc2_:ColorTransform = param1.transform.colorTransform; + return { + "r":_loc2_.redOffset, + "g":_loc2_.greenOffset, + "b":_loc2_.blueOffset + }; + } + + public static function reset(param1:Sprite) : void + { + param1.transform.colorTransform = new ColorTransform(); + } + + public static function setBrightness(param1:Sprite, param2:uint) : void + { + var mc:Sprite = param1; + var bright:uint = param2; + var trans:ColorTransform = mc.transform.colorTransform; + with(_loc4_) + { + + redMultiplier = greenMultiplier = blueMultiplier = (100 - Math.abs(bright)) / 100; + redOffset = greenOffset = blueOffset = bright > 0?bright * (256 / 100):0; + } + mc.transform.colorTransform = trans; + } + + public static function setBrightOffset(param1:Sprite, param2:uint) : void + { + var mc:Sprite = param1; + var offset:uint = param2; + var trans:ColorTransform = mc.transform.colorTransform; + with(trans) + { + + redOffset = greenOffset = blueOffset = offset; + } + mc.transform.colorTransform = trans; + } + + public static function setTint(param1:Sprite, param2:uint, param3:uint, param4:uint, param5:uint) : void + { + var mc:Sprite = param1; + var r:uint = param2; + var g:uint = param3; + var b:uint = param4; + var percent:uint = param5; + var per:Number = percent / 100; + var trans:ColorTransform = mc.transform.colorTransform; + with(trans) + { + + redOffset = per * redOffset; + greenOffset = per * greenOffset; + blueOffset = per * blueOffset; + redMultiplier = greenMultiplier = blueMultiplier = (100 - percent) / 100; + } + mc.transform.colorTransform = trans; + } + + public static function getTint(param1:Sprite) : Object + { + var _loc2_:ColorTransform = param1.transform.colorTransform; + var _loc3_:Object = new Object(); + _loc3_.percent = (1 - _loc2_.redMultiplier) * 100; + var _loc4_:Number = 100 / _loc3_.percent; + _loc3_.r = Math.round(_loc4_ * _loc2_.redOffset); + _loc3_.g = Math.round(_loc4_ * _loc2_.greenOffset); + _loc3_.b = Math.round(_loc4_ * _loc2_.blueOffset); + return _loc3_; + } + + public static function setTintOffset(param1:Sprite, param2:uint, param3:uint, param4:uint) : void + { + var mc:Sprite = param1; + var r:uint = param2; + var g:uint = param3; + var b:uint = param4; + var trans:ColorTransform = mc.transform.colorTransform; + with(trans) + { + + redOffset = r; + greenOffset = g; + blueOffset = b; + } + mc.transform.colorTransform = trans; + } + + public static function getTintOffset(param1:Sprite) : Object + { + var _loc2_:ColorTransform = param1.transform.colorTransform; + var _loc3_:Object = new Object(); + _loc3_.rb = _loc2_.redOffset; + _loc3_.gb = _loc2_.greenOffset; + _loc3_.bb = _loc2_.blueOffset; + return _loc3_; + } + + public static function invert(param1:Sprite) : void + { + var mc:Sprite = param1; + var trans:ColorTransform = mc.transform.colorTransform; + with(trans) + { + + redMultiplier = -redMultiplier; + greenMultiplier = -greenMultiplier; + blueMultiplier = -blueMultiplier; + redOffset = 255 - redOffset; + greenOffset = 255 - greenOffset; + blueOffset = 255 - blueOffset; + } + mc.transform.colorTransform = trans; + } + + public static function setNegative(param1:Sprite, param2:Number) : void + { + var mc:Sprite = param1; + var percent:Number = param2; + var trans:ColorTransform = mc.transform.colorTransform; + with(trans) + { + + redMultiplier = greenMultiplier = blueMultiplier = (100 - 2 * percent) / 100; + redOffset = greenOffset = blueOffset = percent * (255 / 100); + } + mc.transform.colorTransform = trans; + } + + public static function getNegative(param1:Sprite) : Number + { + var _loc2_:ColorTransform = param1.transform.colorTransform; + return _loc2_.redOffset * (100 / 255); + } + + public static function setRed(param1:Sprite, param2:uint) : void + { + var _loc3_:ColorTransform = param1.transform.colorTransform; + var _loc4_:uint = param2 << 16 | _loc3_.greenOffset << 8 | _loc3_.blueOffset; + setRGB(param1,_loc4_); + } + + public static function setGreen(param1:Sprite, param2:uint) : void + { + var _loc3_:ColorTransform = param1.transform.colorTransform; + var _loc4_:uint = _loc3_.redOffset << 16 | param2 << 8 | _loc3_.blueOffset; + setRGB(param1,_loc4_); + } + + public static function setBlue(param1:Sprite, param2:uint) : void + { + var _loc3_:ColorTransform = param1.transform.colorTransform; + var _loc4_:uint = _loc3_.redOffset << 16 | _loc3_.greenOffset << 8 | param2; + setRGB(param1,_loc4_); + } + + public static function getRed(param1:Sprite) : uint + { + return param1.transform.colorTransform.redOffset; + } + + public static function getGreen(param1:Sprite) : uint + { + return param1.transform.colorTransform.greenOffset; + } + + public static function getBlue(param1:Sprite) : uint + { + return param1.transform.colorTransform.blueOffset; + } + + public static function setAssetPartColor(param1:DisplayObject, param2:String, param3:uint = 4.294967295E9) : uint + { + var _loc5_:int = 0; + var _loc6_:Sprite = null; + var _loc7_:ColorTransform = null; + var _loc4_:Array = new Array(); + _loc4_ = UtilPlain.getColorItem(param1,param2); + if(_loc4_.length > 0) + { + _loc5_ = 0; + while(_loc5_ < _loc4_.length) + { + _loc6_ = Sprite(_loc4_[_loc5_]); + if(param3 == uint.MAX_VALUE) + { + _loc7_ = new ColorTransform(); + _loc6_.transform.colorTransform = _loc7_; + } + else + { + setRGB(_loc6_,param3); + } + _loc5_++; + } + } + return _loc4_.length; + } + + public static function resetAssetPartsColor(param1:DisplayObject) : void + { + var _loc5_:int = 0; + var _loc6_:Sprite = null; + var _loc7_:ColorTransform = null; + var _loc2_:Array = new Array(); + _loc2_ = UtilPlain.getColorItem(param1); + if(_loc2_.length > 0) + { + _loc5_ = 0; + while(_loc5_ < _loc2_.length) + { + _loc6_ = Sprite(_loc2_[_loc5_]); + _loc7_ = new ColorTransform(); + _loc6_.transform.colorTransform = _loc7_; + _loc5_++; + } + } + var _loc3_:Array = UtilPlain.getAllShaderObj(param1); + var _loc4_:int = 0; + while(_loc4_ < _loc3_.length) + { + DisplayObject(_loc3_[_loc4_]).visible = false; + _loc4_++; + } + } + } +} diff --git a/scripts/anifire/util/UtilCrypto.as b/scripts/anifire/util/UtilCrypto.as new file mode 100644 index 0000000..1505cd8 --- /dev/null +++ b/scripts/anifire/util/UtilCrypto.as @@ -0,0 +1,97 @@ +package anifire.util +{ + import anifire.util.Crypto.FastRC4; + import anifire.util.Crypto.TEA; + import flash.utils.ByteArray; + + public class UtilCrypto + { + + public static const MODE_DECRYPT_SWF:int = 0; + + public static const MODE_DECRYPT_RTMPE_TOKEN:int = 1; + + private static const KEY_MODE_DECRYPT_RTMPE_TOKEN:String = "gaGh0hiaEb8wa4wi"; + + + private var _mode:int; + + private var _legacyCryptKey:ByteArray; + + public function UtilCrypto(param1:int = 0) + { + var _loc2_:String = null; + var _loc3_:int = 0; + super(); + this._mode = param1; + if(this._mode == MODE_DECRYPT_SWF) + { + _loc2_ = "g0o1a2n3i4m5a6t7e"; + this._legacyCryptKey = new ByteArray(); + _loc3_ = 0; + while(_loc3_ < _loc2_.length) + { + this._legacyCryptKey[_loc3_] = _loc2_.charCodeAt(_loc3_) as uint; + _loc3_++; + } + } + else if(this._mode == MODE_DECRYPT_RTMPE_TOKEN) + { + } + } + + public function decrypt(param1:ByteArray) : void + { + var _loc2_:ByteArray = null; + if(this._mode == MODE_DECRYPT_SWF) + { + _loc2_ = new ByteArray(); + param1.position = 0; + param1.readBytes(_loc2_,0,10); + this.decryptBytes(_loc2_); + if(this.isFlashPrefix(_loc2_)) + { + this.decryptBytes(param1); + } + else + { + param1.position = 0; + param1.readBytes(_loc2_,0,10); + this.decryptBytesWithLegacyAlgorithm(_loc2_); + if(this.isFlashPrefix(_loc2_)) + { + this.decryptBytesWithLegacyAlgorithm(param1); + } + } + } + } + + public function decryptString(param1:String) : String + { + var _loc2_:String = null; + if(this._mode == MODE_DECRYPT_RTMPE_TOKEN) + { + _loc2_ = TEA.decrypt(param1,KEY_MODE_DECRYPT_RTMPE_TOKEN); + } + return _loc2_; + } + + private function isFlashPrefix(param1:ByteArray) : Boolean + { + var _loc2_:String = param1.toString().substr(0,3); + return _loc2_ == "CWS" || _loc2_ == "FWS"; + } + + private function decryptBytes(param1:ByteArray) : void + { + var _loc2_:FastRC4 = new FastRC4(UtilMath.instance.randomizeKebo()); + _loc2_.decrypt(param1); + } + + private function decryptBytesWithLegacyAlgorithm(param1:ByteArray) : void + { + var _loc2_:FastRC4 = new FastRC4(this._legacyCryptKey); + _loc2_.decrypt(param1); + } + } +} diff --git a/scripts/anifire/util/UtilDict.as b/scripts/anifire/util/UtilDict.as new file mode 100644 index 0000000..314ceb2 --- /dev/null +++ b/scripts/anifire/util/UtilDict.as @@ -0,0 +1,34 @@ +package anifire.util +{ + public class UtilDict + { + + public static const BUNDLE_NAME_STUDIO:String = "go"; + + public static const BUNDLE_NAME_GO:String = "go"; + + public static const BUNDLE_NAME_TUTORIAL:String = "tutorial"; + + + public function UtilDict() + { + super(); + } + + public static function toDisplay(param1:String, param2:String) : String + { + var _loc3_:String = param2.replace(/\W/g,"_"); + var _loc4_:String = UtilGettext.translateAggregate(param1,param2); + if(_loc4_ == null) + { + return param2; + } + return _loc4_; + } + + public static function translate(param1:String) : String + { + return toDisplay(BUNDLE_NAME_STUDIO,param1); + } + } +} diff --git a/scripts/anifire/util/UtilDictOffline.as b/scripts/anifire/util/UtilDictOffline.as new file mode 100644 index 0000000..dd6497d --- /dev/null +++ b/scripts/anifire/util/UtilDictOffline.as @@ -0,0 +1,313 @@ +package anifire.util +{ + public class UtilDictOffline + { + + public static var error:Array; + + public static var array:UtilHashArray = buildArray(); + + + public function UtilDictOffline() + { + super(); + } + + public static function buildArray() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.push("player_menu","Create your own animated videos like this at GoAnimate.com!"); + _loc1_.push("player_frontpromo1","created this video on"); + _loc1_.push("player_frontpromo2","This video is created on"); + _loc1_.push("player_errnotfound","The movie is not found"); + _loc1_.push("player_errdeleted","This movie has been deleted"); + _loc1_.push("player_errprivate","This movie is private. Please ask the creator to turn sharing on so that everyone can see it."); + _loc1_.push("player_errprocess","This movie is being processed. It will be ready shortly."); + _loc1_.push("player_buffering","buffering..."); + _loc1_.push("player_privated","Your animation is currently private"); + _loc1_.push("player_shareit","Share it with others to earn GoPoints!"); + _loc1_.push("player_shareitnogp","Share it with others"); + _loc1_.push("player_privatesharing","*Only people you give the URL to can view your video"); + _loc1_.push("sharing_create","Create your own"); + _loc1_.push("sharing_slideshow","Slideshow"); + _loc1_.push("sharing_emessage","eMessage"); + _loc1_.push("sharing_animation","Animation"); + _loc1_.push("sharing_embed","Embed this video on your website"); + _loc1_.push("sharing_copy","Copy"); + _loc1_.push("sharing_link","Create a link to this video"); + _loc1_.push("sharing_createanimation","Create your own video"); + _loc1_.push("sharing_ongoanimate","on GoAnimate to create your own animated videos."); + _loc1_.push("sharing_freefun","It\'s free and fun!"); + _loc1_.push("sharing_or","Or"); + _loc1_.push("sharing_registered","if you already have an account."); + _loc1_.push("sharing_signup","Sign up"); + _loc1_.push("sharing_login","login"); + _loc1_.push("sharing_commaseparate","Separate multiple addresses with commas"); + _loc1_.push("sharing_emailout","Email this video"); + _loc1_.push("sharing_yourname","Your name"); + _loc1_.push("sharing_youremail","Your Email Address"); + _loc1_.push("sharing_friendemail","Your friends\' emails"); + _loc1_.push("sharing_select","Select Recipients"); + _loc1_.push("sharing_addall","Add all "); + _loc1_.push("sharing_nocontacts","No contacts yet. Input them above and we automatically add them."); + _loc1_.push("sharing_toaccess","to access your contact list"); + _loc1_.push("sharing_register","register"); + _loc1_.push("sharing_thankyou","Thank you for sharing this video. Let\'s hope your friends like it!"); + _loc1_.push("sharing_close","Close"); + _loc1_.push("sharing_autoadd","We automatically updated your contact list with the email addresses you manually entered, so that next time it can all be done in one click!"); + _loc1_.push("sharing_easylist","This list is just to make your life easier. We will under no circumstance send unsolicited email to your contacts."); + _loc1_.push("sharing_ongoanimate","on GoAnimate and make it easier to share animations with your friends!"); + _loc1_.push("sharing_createaccount","Create an account"); + _loc1_.push("sharing_withaccount","With an account, you can create a contact list and send emails to many recipients with just a few clicks..."); + _loc1_.push("sharing_checkout","Check out"); + _loc1_.push("sharing_towatch","to watch more videos or create your own.\n\nCopy and paste the below URL in your browser"); + _loc1_.push("sharing_contactlist","Contact List"); + _loc1_.push("sharing_modifymessage","Modify our default message"); + _loc1_.push("sharing_cancel","Cancel"); + _loc1_.push("sharing_send","Send"); + _loc1_.push("sharing_defaultmessage","Hey,\n\nHa ha, check out this video I created. It\'s a little outrageous and crazy, but really funny!\n\n\""); + _loc1_.push("sharing_errname","Please input your name"); + _loc1_.push("sharing_errmessage","Please input your message"); + _loc1_.push("sharing_erremail","Please input your friends\' email"); + _loc1_.push("sharing_errmore","Please input no more than 10 emails"); + _loc1_.push("ok","OK"); + _loc1_.push("loading","PREPARING..."); + _loc1_.push("guide_bubble_text","Add scenes to create a richer story.\n(Click to hide)"); + _loc1_.push("mainstage_displaying","Displaying:"); + _loc1_.push("mainstage_preparing","Preparing:"); + _loc1_.push("mainstage_scene","Scene"); + _loc1_.push("mainstage_import","Import:"); + _loc1_.push("mainstage_images","Images"); + _loc1_.push("mainstage_sound","Sound"); + _loc1_.push("mainstage_addscene","Add scene"); + _loc1_.push("mainstage_delscene","Delete scene"); + _loc1_.push("mainstage_autosavedone","Auto Save Complete"); + _loc1_.push("mainstage_remind_to_save","Remember to save your video!"); + _loc1_.push("topbtnbar_copy","Copy"); + _loc1_.push("topbtnbar_paste","Paste"); + _loc1_.push("topbtnbar_undo","Undo"); + _loc1_.push("topbtnbar_redo","Redo"); + _loc1_.push("topbtnbar_new","New Animation"); + _loc1_.push("topbtnbar_savenshare","Save and Share"); + _loc1_.push("topbtnbar_preview","Preview"); + _loc1_.push("topbtnbar_lastsaved","Last Saved"); + _loc1_.push("topbtnbar_mychar","My Character"); + _loc1_.push("ctrlbtnbar_flip","Flip"); + _loc1_.push("ctrlbtnbar_forward","Bring Forward"); + _loc1_.push("ctrlbtnbar_backward","Send Backward"); + _loc1_.push("ctrlbtnbar_delete","Delete"); + _loc1_.push("ctrlbtnbar_lookinto","Look into"); + _loc1_.push("ctrlbtnbar_lookout","Look out"); + _loc1_.push("ctrlbtnbar_edit","Edit"); + _loc1_.push("ctrlbtnbar_color","Customize color"); + _loc1_.push("timeline_duration","Duration"); + _loc1_.push("timeline_1sec","1 sec"); + _loc1_.push("timeline_2sec","2 secs"); + _loc1_.push("timeline_3sec","3 secs"); + _loc1_.push("timeline_4sec","4 secs"); + _loc1_.push("timeline_copy","Copy"); + _loc1_.push("timeline_delete","Delete"); + _loc1_.push("timeline_insertbefore","Insert Before"); + _loc1_.push("timeline_insertafter","Insert After"); + _loc1_.push("timeline_starttime","Start time"); + _loc1_.push("timeline_volume","Volume"); + _loc1_.push("timeline_playsound","Play sound"); + _loc1_.push("timeline_stopsound","Stop sound"); + _loc1_.push("timeline_removesound","Remove sound"); + _loc1_.push("timeline_1sc","1 scene"); + _loc1_.push("timeline_2sc","2 scenes"); + _loc1_.push("timeline_5sc","5 scenes"); + _loc1_.push("timeline_10sc","10 scenes"); + _loc1_.push("timeline_20sc","20 scenes"); + _loc1_.push("timeline_30sc","30 scenes"); + _loc1_.push("timeline_allsc","all scenes"); + _loc1_.push("timeline_soundexceed","Only 4 sounds can be played at the same time. Make sure you first select the scene where you want to add your sound."); + _loc1_.push("timeline_durationalert","Your animation cannot be longer than 2 minutes. Remove or shorten scenes before you can make it public."); + _loc1_.push("actionmenu_action","Actions"); + _loc1_.push("actionmenu_states","States"); + _loc1_.push("actionmenu_movement","Movement"); + _loc1_.push("actionmenu_slide","Slide"); + _loc1_.push("actionmenu_facial","Facial Expression"); + _loc1_.push("actionmenu_default","default"); + _loc1_.push("actionmenu_handheld","Hand-held"); + _loc1_.push("actionmenu_head","Head"); + _loc1_.push("actionmenu_headgear","Headgear"); + _loc1_.push("actionmenu_restoreprop","Remove Prop"); + _loc1_.push("actionmenu_restorehead","Restore Head"); + _loc1_.push("actionmenu_restoremask","Remove Mask"); + _loc1_.push("actionmenu_removeMove","Remove Movement"); + _loc1_.push("motionmenu_addpoint","Add Control Point"); + _loc1_.push("motionmenu_removepoint","Remove Control Point"); + _loc1_.push("effecttray_edit","Edit"); + _loc1_.push("effecttray_show","Show"); + _loc1_.push("effecttray_hide","Hide"); + _loc1_.push("effecttray_delete","Delete"); + _loc1_.push("assetinfo_editzoomtitle","Edit Zoom Effect"); + _loc1_.push("assetinfo_editzoomsubtitle","Modify the timing and speed of your zoom effect"); + _loc1_.push("assetinfo_editassettitle","Edit Asset"); + _loc1_.push("assetinfo_editassetsubtitle","Modify the timing of your bubble and effect"); + _loc1_.push("assetinfo_done","Done"); + _loc1_.push("assetinfo_name","Name:"); + _loc1_.push("assetinfo_tags","Tags:"); + _loc1_.push("assetinfo_public","Public"); + _loc1_.push("assetinfo_private"," Private"); + _loc1_.push("assetinfo_default"," Set as default"); + _loc1_.push("assetinfo_delete"," Delete"); + _loc1_.push("assetinfo_update"," Update"); + _loc1_.push("assetinfo_cancel"," Cancel"); + _loc1_.push("assetinfo_warning"," Please enter a valid Title"); + _loc1_.push("goalert_delprop","Delete prop"); + _loc1_.push("goalert_delbackground","Delete background"); + _loc1_.push("goalert_delsound","Delete sound"); + _loc1_.push("goalert_delcharacter","Delete character "); + _loc1_.push("goalert_deleffect","Delete effect"); + _loc1_.push("goalert_delete","Delete"); + _loc1_.push("goalert_cancel","Cancel"); + _loc1_.push("goalert_delproptext","You will not be able to use this prop any more!"); + _loc1_.push("goalert_delbackgroundtext","You will not be able to use this background any more!"); + _loc1_.push("goalert_delsoundtext","You will not be able to use this sound any more!"); + _loc1_.push("goalert_delcharactertext","You will not be able to use this character any more!"); + _loc1_.push("goalert_deleffecttext","You will not be able to use this effect any more!"); + _loc1_.push("goalert_confirmaddhead","Add Head to My Stuff"); + _loc1_.push("goalert_add","Add"); + _loc1_.push("goalert_addwholeimage","Add whole image"); + _loc1_.push("goalert_addcropimage","Add cropped image"); + _loc1_.push("goalert_foundsamechar","We found that same character exists on other scenes, do you want to add the prop on all of them?"); + _loc1_.push("goalert_addtoall","Yes, add to all"); + _loc1_.push("goalert_thisoneonly","No, this one only"); + _loc1_.push("goalert_removesound","Please remove the sound(s) in this scene before deleting it."); + _loc1_.push("goalert_newanimation","Are you sure to create a new animation?"); + _loc1_.push("goalert_yes ","YES"); + _loc1_.push("goalert_no","NO"); + _loc1_.push("previewwindow_save","Save Now >"); + _loc1_.push("previewwindow_back","< Back to edit"); + _loc1_.push("previewwindow_preview","Preview animation:"); + _loc1_.push("pubwin_savenshare","Save & Share"); + _loc1_.push("pubwin_savenclose","Save & Close"); + _loc1_.push("pubwin_save_signup","Sign Up & Save"); + _loc1_.push("pubwin_savensharetips","Save your animation and email it to your friends. This will close the studio."); + _loc1_.push("pubwin_savenclosetips","Save your animation and close the studio."); + _loc1_.push("pubwin_saveonlytips","Save and continue to edit your animation."); + _loc1_.push("pubwin_soundfile","Sound File(*.mp3;*.wav;*.m4a)"); + _loc1_.push("pubwin_tagsub","Separate tags with commas\ne.g. comedy, romance, Angelina Jolie"); + _loc1_.push("pubwin_addnsave","Add song and save >"); + _loc1_.push("pubwin_savenosound","Save without music >"); + _loc1_.push("pubwin_psharingtips","On: Send the URL of your animation to share it. It cannot be searched on GoAnimate.\n\nOff: Only you can access your animation."); + _loc1_.push("pubwin_soundtutotialtips","Adding sound effects, background music and even voices... \n\nit is all explained in our sound tutorial."); + _loc1_.push("pubwin_title","Save your animation"); + _loc1_.push("pubwin_subtitle","Tell us more about your animation so that people can find it more easily"); + _loc1_.push("pubwin_movietitle","Title"); + _loc1_.push("pubwin_required","Required"); + _loc1_.push("pubwin_tags","Tags"); + _loc1_.push("pubwin_description","Description"); + _loc1_.push("pubwin_movielang","Choose your movie language"); + _loc1_.push("pubwin_movielangsub","Please help us organize your animation based on its language for better browsing experience"); + _loc1_.push("pubwin_pickthumb","Choose your thumbnail"); + _loc1_.push("pubwin_saveas","Save as"); + _loc1_.push("pubwin_public","Public"); + _loc1_.push("pubwin_private","Private"); + _loc1_.push("pubwin_psharing","Private Sharing"); + _loc1_.push("pubwin_on","On"); + _loc1_.push("pubwin_off","Off"); + _loc1_.push("pubwin_saveonly","Save Only"); + _loc1_.push("pubwin_warningtitle","Please input the title"); + _loc1_.push("pubwin_astitle","No background music? Are you sure?!"); + _loc1_.push("pubwin_assubtitle","You can add music, sound effects, and even voices to your GoAnimate animations."); + _loc1_.push("pubwin_aslib","Add a sound from our library"); + _loc1_.push("pubwin_uploadtitle","Upload your own song"); + _loc1_.push("pubwin_import","Import Sound"); + _loc1_.push("pubwin_max","(maximum file size 8MB)"); + _loc1_.push("pubwin_browse","Browse"); + _loc1_.push("pubwin_upload","Upload"); + _loc1_.push("pubwin_importdone","Import Successful"); + _loc1_.push("pubwin_learnmore","Want to learn more"); + _loc1_.push("pubwin_watch","Watch video tutorial"); + _loc1_.push("pubwin_parent","Ask your parents to confirm your account to be able to make your animation public"); + _loc1_.push("pubwin_durationalert","Your animation is more than 2 min. Shorten it and make it public."); + _loc1_.push("pubwin_nonactivate","Confirm your account to be able to make your animation public"); + _loc1_.push("constant_warningtitle","Please input the title"); + _loc1_.push("constant_warningtag","Please input the tag"); + _loc1_.push("constant_warningbad","Please avoid using bad language"); + _loc1_.push("constant_combo","Please select one"); + _loc1_.push("constant_error","Err, Sorry please try again later"); + _loc1_.push("constant_connecterr","Oops, a connection problem occurred. The task could not be completed. Please try again."); + _loc1_.push("constant_disabled","This feature is disabled when you create animations with "); + _loc1_.push("constant_othertheme","This will be enabled when you create animation using other themes."); + _loc1_.push("thumbtray_importhead","Import Head"); + _loc1_.push("thumbtray_import","import"); + _loc1_.push("thumbtray_char","char"); + _loc1_.push("thumbtray_prop","prop"); + _loc1_.push("thumbtray_background","background"); + _loc1_.push("thumbtray_sound","sound"); + _loc1_.push("thumbtray_effect","effect"); + _loc1_.push("thumbtray_found","found"); + _loc1_.push("thumbtray_result","Results"); + _loc1_.push("thumbtray_loading","Loading..."); + _loc1_.push("thumbtray_nokey","Please input some keywords to search"); + _loc1_.push("thumbtray_nokeytitle","NO keywords"); + _loc1_.push("thumbtray_colortitle","Color changing bunnies!"); + _loc1_.push("thumbtray_colorsubtitle","You can change my colors."); + _loc1_.push("thumbtray_coloricon","Look for this icon"); + _loc1_.push("thumbtray_colorclose","- Close tip -"); + _loc1_.push("thumbtray_headswapwarn","This feature is exclusively available when you create an animation with a GoAnimate only cast."); + _loc1_.push("thumbtray_handheld","Hand-held"); + _loc1_.push("thumbtray_headgear","Headgear"); + _loc1_.push("thumbtray_head","Head"); + _loc1_.push("thumbtray_error","constant_error"); + _loc1_.push("thumbtray_others","Others"); + _loc1_.push("thumbtray_music","Music"); + _loc1_.push("thumbtray_meffect","Effects"); + _loc1_.push("thumbtray_mvo","Voice-overs"); + _loc1_.push("thumbtray_theme","Theme"); + _loc1_.push("thumbtray_dragtip","Drag these to the stage"); + _loc1_.push("thumbtray_search","Search"); + _loc1_.push("fontchooser_left","left"); + _loc1_.push("fontchooser_right","right"); + _loc1_.push("fontchooser_center","center"); + _loc1_.push("fontchooser_title","Font properties:"); + _loc1_.push("fontchooser_bgtitle","Background color:"); + _loc1_.push("fontchooser_align","Align:"); + _loc1_.push("fontchooser_bold","B"); + _loc1_.push("fontchooser_convert","Convert to Speech"); + _loc1_.push("cropper_changepos","Change position"); + _loc1_.push("cropper_fixpos","Fix position"); + _loc1_.push("cropper_undocrop","Undo Crop"); + _loc1_.push("cropper_crop","Crop"); + _loc1_.push("cropper_objshape","Object Shape"); + _loc1_.push("cropper_faceshape","Face Shape"); + _loc1_.push("cropper_tip1","Adjust position and size to match the semi-transparent reference."); + _loc1_.push("cropper_tip2","Move the anchor points to match the shape of your image.\n\nClick on the lines to add anchor points.\n\nDouble click on anchor points to delete them."); + _loc1_.push("cropper_tip3","Preview the image to upload and import it.\n\nIf you want to make modifications, click on \'Modify Crop\' to go back to the last step."); + _loc1_.push("cropper_size","Size"); + _loc1_.push("cropper_rotate","Rotate"); + _loc1_.push("cropper_flip","Flip"); + _loc1_.push("cropper_adjustcrop","Adjust Crop Area"); + _loc1_.push("cropper_curve","Curved lines"); + _loc1_.push("cropper_straight","Straight lines"); + _loc1_.push("cropper_modcrop","Modify Crop"); + _loc1_.push("cropper_addmystuff","Add to My Stuff"); + _loc1_.push("cropper_readyimport","You\'re now ready to import your image to your library."); + _loc1_.push("cropper_skip","Skip this step, upload whole image"); + _loc1_.push("cropper_cancel","Cancel"); + _loc1_.push("cropper_posimage","Position Image"); + _loc1_.push("propwin_customize ","Customize Color"); + _loc1_.push("propwin_restore","Restore default"); + _loc1_.push("assettool_width","Width"); + _loc1_.push("assettool_height","Height"); + _loc1_.push("nsawin_warning","Warning!"); + _loc1_.push("nsawin_title1","You are not logged in."); + _loc1_.push("nsawin_title2","You can try our animation studio, but will not be able to save your work."); + _loc1_.push("nsawin_tryout","Try our studio"); + _loc1_.push("nsawin_login","Login"); + _loc1_.push("nsawin_or","or"); + _loc1_.push("nsawin_signup","Sign up"); + _loc1_.push("nsawin_enable","first to enable saving your animation"); + _loc1_.push("saveprogress_upload","Uploading the animation"); + _loc1_.push("saveprogress_analysis","Analyzing the animation"); + _loc1_.push("saveprogress_saving","Saving the animation"); + _loc1_.push("saveprogress_render","Rendering the animation"); + error = ["nsawin_warning","sharing_errmessage","nsawin_error","pubwin_error","assetinfo_error","thumbtray_error","fontchooser_error","assettool_error","nsawin_error"]; + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilErrorLogger.as b/scripts/anifire/util/UtilErrorLogger.as new file mode 100644 index 0000000..5ecec89 --- /dev/null +++ b/scripts/anifire/util/UtilErrorLogger.as @@ -0,0 +1,126 @@ +package anifire.util +{ + import flash.events.Event; + import flash.events.EventDispatcher; + + public class UtilErrorLogger extends EventDispatcher + { + + public static const FATAL_EVENT_LOGGED:String = "FATAL_EVENT_LOGGED"; + + public static const ERROR_EVENT_LOGGED:String = "ERROR_EVENT_LOGGED"; + + public static const LOG_SENT_COMPLETE:String = "LOG_SENT_COMPLETE"; + + public static const LOG_SENT_FAIL:String = "LOG_SENT_FAIL"; + + public static const SOURCE_FVM:String = "SOURCE_FVM"; + + public static const SOURCE_PLAYER:String = "SOURCE_PLAYER"; + + private static var _instance:UtilErrorLogger = null; + + + public function UtilErrorLogger() + { + super(); + } + + public static function getInstance() : UtilErrorLogger + { + if(!_instance) + { + _instance = new UtilErrorLogger(); + } + return _instance; + } + + public function set movieId(param1:String) : void + { + } + + public function get movieId() : String + { + return ""; + } + + public function appendDebug(param1:String) : void + { + } + + public function appendError(param1:Error) : void + { + } + + public function appendCustomError(param1:String, param2:Error = null, param3:Object = null) : void + { + } + + public function fatal(param1:String) : void + { + } + + public function error(param1:String) : void + { + } + + public function info(param1:String) : void + { + } + + private function getFlashVars() : String + { + return ""; + } + + private function prepareModel() : Object + { + return new Object(); + } + + public function getEncryptedDebugInfo(param1:Boolean = false, param2:Boolean = false, param3:String = "") : String + { + return ""; + } + + private function get debugInfo() : String + { + return ""; + } + + public function get systemInfo() : String + { + return ""; + } + + public function get flashPlayerInfo() : String + { + return ""; + } + + public function get browserInfo() : String + { + return ""; + } + + private function sendLog(param1:Boolean = false) : void + { + } + + private function onSendLogComplete(param1:Event) : void + { + } + + private function onSendLogError(param1:Event) : void + { + } + + public function copyLog() : void + { + } + + public function set source(param1:String) : void + { + } + } +} diff --git a/scripts/anifire/util/UtilGettext.as b/scripts/anifire/util/UtilGettext.as new file mode 100644 index 0000000..d8caca2 --- /dev/null +++ b/scripts/anifire/util/UtilGettext.as @@ -0,0 +1,131 @@ +package anifire.util +{ + import anifire.constant.ServerConstants; + import anifire.managers.AppConfigManager; + import flash.events.Event; + import flash.events.IOErrorEvent; + + public class UtilGettext + { + + private static var resources:Object = {}; + + private static var slocale:String; + + private static var ref:Object = {}; + + + public function UtilGettext() + { + super(); + } + + public static function initAggregate(param1:String, param2:String, param3:String, param4:Function) : void + { + var _loc5_:String = null; + init([param1],param2,param3,param4); + for each(_loc5_ in ServerConstants.getPOList(param1)) + { + ref[_loc5_] = param1; + } + } + + public static function init(param1:Array, param2:String, param3:String, param4:Function) : void + { + var apiserver:String = null; + var domain:String = null; + var domains:Array = param1; + var themeCode:String = param2; + var locale:String = param3; + var callback:Function = param4; + slocale = locale; + var needsLoad:Boolean = false; + var _configManager:AppConfigManager = AppConfigManager.instance; + apiserver = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH) as String; + for each(domain in domains) + { + function():void + { + var _domain:* = undefined; + var gt:* = undefined; + var gt2:* = undefined; + _domain = domain; + if(resources[[domain,locale].join("|")] == null) + { + needsLoad = true; + gt = new GetText(); + gt.addEventListener(Event.COMPLETE,function(param1:Event):void + { + var e:Event = param1; + resources[[_domain,locale].join("|")] = gt; + if(domains.every(function(param1:*, param2:int, param3:Array):Boolean + { + return resources[[String(param1),locale].join("|")] != null; + })) + { + callback(null); + } + }); + gt.addEventListener(IOErrorEvent.IO_ERROR,function(param1:Event):void + { + callback(null); + }); + gt.translation(domain,apiserver + "/static/client_theme/locale/" + themeCode + "/",locale); + gt.install(); + if(locale != "en_US") + { + gt2 = new GetText(); + gt2.addEventListener(Event.COMPLETE,function(param1:Event):void + { + resources[[_domain,"en_US"].join("|")] = gt2; + }); + gt2.translation(domain,apiserver + "/static/client_theme/locale/" + themeCode + "/","en_US"); + gt2.install(); + } + } + }(); + } + if(!needsLoad) + { + callback(null); + } + } + + public static function translateAggregate(param1:String, param2:String) : String + { + return translate(ref[param1],[param1,param2].join("|")); + } + + public static function translate(param1:String, param2:String) : String + { + var _loc6_:GetText = null; + var _loc3_:GetText = resources[[param1,slocale].join("|")]; + var _loc4_:GetText = null; + var _loc5_:String = null; + if(param2 == null || param2 == "") + { + return ""; + } + if(slocale != "en_US") + { + _loc4_ = resources[[param1,"en_US"].join("|")]; + } + for each(_loc6_ in [_loc3_,_loc4_]) + { + try + { + if(_loc6_ != null) + { + _loc5_ = _loc6_.translate(param2,true); + break; + } + } + catch(ex:TypeError) + { + continue; + } + } + return _loc5_; + } + } +} diff --git a/scripts/anifire/util/UtilHashActionLoader.as b/scripts/anifire/util/UtilHashActionLoader.as new file mode 100644 index 0000000..2cb6957 --- /dev/null +++ b/scripts/anifire/util/UtilHashActionLoader.as @@ -0,0 +1,196 @@ +package anifire.util +{ + import anifire.component.CcActionLoader; + import flash.events.EventDispatcher; + + public class UtilHashActionLoader + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Vector.; + + private var data:Vector.; + + public function UtilHashActionLoader() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Vector.(); + this.data = new Vector.(); + } + + public function push(param1:String, param2:EventDispatcher, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashActionLoader, param3:Boolean = true) : void + { + var _loc4_:int = 0; + _loc4_ = param2.length - 1; + while(_loc4_ >= 0) + { + this.push(param2.getKey(_loc4_),param2.getValueByIndex(_loc4_),param3); + _loc4_--; + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:CcActionLoader) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Vector. + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : EventDispatcher + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return null; + } + + public function getValueByIndex(param1:int) : EventDispatcher + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:CcActionLoader) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:CcActionLoader) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Vector.(); + this.data.splice(0,this.data.length); + this.data = new Vector.(); + } + + public function getVector() : Vector. + { + return this.data; + } + + public function clone() : UtilHashActionLoader + { + var _loc1_:UtilHashActionLoader = new UtilHashActionLoader(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilHashArray.as b/scripts/anifire/util/UtilHashArray.as new file mode 100644 index 0000000..0d9d985 --- /dev/null +++ b/scripts/anifire/util/UtilHashArray.as @@ -0,0 +1,261 @@ +package anifire.util +{ + public class UtilHashArray + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Array; + + private var data:Array; + + public function UtilHashArray() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Array(); + this.data = new Array(); + } + + public function push(param1:String, param2:*, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashArray, param3:Boolean = true) : void + { + var _loc4_:int = 0; + var _loc6_:Function = null; + var _loc7_:Array = null; + var _loc8_:String = null; + var _loc5_:UtilHashArray = param2.clone(); + if(param3) + { + _loc4_ = _loc5_.length - 1; + while(_loc4_ >= 0) + { + _loc8_ = _loc5_.getKey(_loc4_); + if(this.containsKey(_loc8_)) + { + this.replaceValueByKey(_loc8_,_loc5_.getValueByIndex(_loc4_)); + _loc5_.remove(_loc4_,1); + } + _loc4_--; + } + } + else + { + _loc4_ = 0; + while(_loc4_ < _loc5_.length) + { + if(this.containsKey(_loc5_.getKey(_loc4_))) + { + throw new Error("The key already exist in the HashArray"); + } + _loc4_++; + } + } + _loc6_ = this.indexToKeyMap.splice; + _loc7_ = _loc5_.indexToKeyMap.concat(); + _loc7_.unshift(0); + _loc7_.unshift(param1); + _loc6_.apply(this.indexToKeyMap,_loc7_); + _loc6_ = this.data.splice; + _loc7_ = _loc5_.data.concat(); + _loc7_.unshift(0); + _loc7_.unshift(param1); + _loc6_.apply(this.data,_loc7_); + _loc5_.removeAll(); + _loc5_ = null; + _loc4_ = param1; + while(_loc4_ < this.length) + { + this.keyToIndexMap.put(this.indexToKeyMap[_loc4_],_loc4_); + _loc4_++; + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:*) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Array + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : * + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return null; + } + + public function getValueByIndex(param1:int) : * + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:*) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:*) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Array(); + this.data.splice(0,this.data.length); + this.data = new Array(); + } + + public function getArray() : Array + { + return this.data; + } + + public function unShift(param1:String, param2:Object) : uint + { + if(this.keyToIndexMap.containsKey(param1)) + { + this.remove(this.getIndex(param1),1); + } + this.data.unshift(param2); + this.indexToKeyMap.unshift(param1); + var _loc3_:int = 0; + while(_loc3_ < this.indexToKeyMap.length) + { + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + return this.length; + } + + public function clone() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + + public function isIdentical(param1:UtilHashArray) : Boolean + { + if(this.data.toString() == param1.data.toString() && this.indexToKeyMap.toString() == param1.indexToKeyMap.toString()) + { + return true; + } + return false; + } + } +} diff --git a/scripts/anifire/util/UtilHashBytes.as b/scripts/anifire/util/UtilHashBytes.as new file mode 100644 index 0000000..e681457 --- /dev/null +++ b/scripts/anifire/util/UtilHashBytes.as @@ -0,0 +1,195 @@ +package anifire.util +{ + import flash.utils.ByteArray; + + public class UtilHashBytes + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Vector.; + + private var data:Vector.; + + public function UtilHashBytes() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Vector.(); + this.data = new Vector.(); + } + + public function push(param1:String, param2:ByteArray, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashBytes, param3:Boolean = true) : void + { + var _loc4_:int = 0; + _loc4_ = param2.length - 1; + while(_loc4_ >= 0) + { + this.push(param2.getKey(_loc4_),param2.getValueByIndex(_loc4_),param3); + _loc4_--; + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:ByteArray) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Vector. + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : ByteArray + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return null; + } + + public function getValueByIndex(param1:int) : ByteArray + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:ByteArray) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:ByteArray) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Vector.(); + this.data.splice(0,this.data.length); + this.data = new Vector.(); + } + + public function getVector() : Vector. + { + return this.data; + } + + public function clone() : UtilHashBytes + { + var _loc1_:UtilHashBytes = new UtilHashBytes(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilHashMap.as b/scripts/anifire/util/UtilHashMap.as new file mode 100644 index 0000000..a9aebd1 --- /dev/null +++ b/scripts/anifire/util/UtilHashMap.as @@ -0,0 +1,87 @@ +package anifire.util +{ + import flash.utils.Dictionary; + + public dynamic class UtilHashMap extends Dictionary implements IUtilMap + { + + + public function UtilHashMap(param1:Boolean = false) + { + super(param1); + } + + public function put(param1:String, param2:*) : void + { + this[param1] = param2; + } + + public function remove(param1:String) : void + { + this[param1] = null; + delete this[param1]; + } + + public function containsKey(param1:String) : Boolean + { + return this[param1] != null; + } + + public function containsValue(param1:*) : Boolean + { + var _loc2_:* = null; + for(_loc2_ in this) + { + if(this[_loc2_] == param1) + { + return true; + } + } + return false; + } + + public function getKey(param1:*) : String + { + var _loc2_:* = null; + for(_loc2_ in this) + { + if(this[_loc2_] == param1) + { + return _loc2_; + } + } + return null; + } + + public function getValue(param1:String) : * + { + return this[param1]; + } + + public function size() : int + { + var _loc2_:* = null; + var _loc1_:int = 0; + for(_loc2_ in this) + { + _loc1_++; + } + return _loc1_; + } + + public function isEmpty() : Boolean + { + return this.size() <= 0; + } + + public function clear() : void + { + var _loc1_:* = null; + for(_loc1_ in this) + { + this[_loc1_] = null; + delete this[_loc1_]; + } + } + } +} diff --git a/scripts/anifire/util/UtilHashNumber.as b/scripts/anifire/util/UtilHashNumber.as new file mode 100644 index 0000000..655c4bf --- /dev/null +++ b/scripts/anifire/util/UtilHashNumber.as @@ -0,0 +1,193 @@ +package anifire.util +{ + public class UtilHashNumber + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Vector.; + + private var data:Vector.; + + public function UtilHashNumber() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Vector.(); + this.data = new Vector.(); + } + + public function push(param1:String, param2:Number, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashNumber, param3:Boolean = true) : void + { + var _loc4_:int = 0; + _loc4_ = param2.length - 1; + while(_loc4_ >= 0) + { + this.push(param2.getKey(_loc4_),param2.getValueByIndex(_loc4_),param3); + _loc4_--; + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:Number) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Vector. + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : Number + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return -1; + } + + public function getValueByIndex(param1:int) : Number + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:Number) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:Number) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Vector.(); + this.data.splice(0,this.data.length); + this.data = new Vector.(); + } + + public function getVector() : Vector. + { + return this.data; + } + + public function clone() : UtilHashNumber + { + var _loc1_:UtilHashNumber = new UtilHashNumber(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilHashSelectedColor.as b/scripts/anifire/util/UtilHashSelectedColor.as new file mode 100644 index 0000000..9da8706 --- /dev/null +++ b/scripts/anifire/util/UtilHashSelectedColor.as @@ -0,0 +1,207 @@ +package anifire.util +{ + import anifire.color.SelectedColor; + + public class UtilHashSelectedColor + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Vector.; + + private var data:Vector.; + + public function UtilHashSelectedColor() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Vector.(); + this.data = new Vector.(); + } + + public function push(param1:String, param2:SelectedColor, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashSelectedColor, param3:Boolean = true) : void + { + var _loc4_:int = 0; + if(param2) + { + _loc4_ = param2.length - 1; + while(_loc4_ >= 0) + { + this.push(param2.getKey(_loc4_),param2.getValueByIndex(_loc4_),param3); + _loc4_--; + } + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:SelectedColor) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Vector. + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : SelectedColor + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return null; + } + + public function getValueByIndex(param1:int) : SelectedColor + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:SelectedColor) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:SelectedColor) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Vector.(); + this.data.splice(0,this.data.length); + this.data = new Vector.(); + } + + public function getVector() : Vector. + { + return this.data; + } + + public function clone() : UtilHashSelectedColor + { + var _loc1_:UtilHashSelectedColor = new UtilHashSelectedColor(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + + public function isIdentical(param1:UtilHashSelectedColor) : Boolean + { + if(this.data.toString() == param1.data.toString() && this.indexToKeyMap.toString() == param1.indexToKeyMap.toString()) + { + return true; + } + return false; + } + } +} diff --git a/scripts/anifire/util/UtilHashUint.as b/scripts/anifire/util/UtilHashUint.as new file mode 100644 index 0000000..ae7f111 --- /dev/null +++ b/scripts/anifire/util/UtilHashUint.as @@ -0,0 +1,193 @@ +package anifire.util +{ + public class UtilHashUint + { + + + private var keyToIndexMap:UtilHashMap; + + private var indexToKeyMap:Vector.; + + private var data:Vector.; + + public function UtilHashUint() + { + super(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap = new Vector.(); + this.data = new Vector.(); + } + + public function push(param1:String, param2:uint, param3:Boolean = true) : int + { + var _loc4_:int = 0; + if(this.keyToIndexMap.containsKey(param1)) + { + if(param3) + { + _loc4_ = this.keyToIndexMap.getValue(param1) as int; + this.data[_loc4_] = param2; + } + } + else + { + _loc4_ = this.data.length; + this.data.push(param2); + this.indexToKeyMap.push(param1); + this.keyToIndexMap.put(param1,_loc4_); + } + return _loc4_; + } + + public function remove(param1:int, param2:int) : void + { + var _loc3_:int = 0; + if(param1 >= this.length || param1 + param2 - 1 >= this.length) + { + throw new Error("UtilHashArray index out of bound error. Index --> " + param1); + } + _loc3_ = 0; + while(_loc3_ < param2) + { + this.keyToIndexMap.remove(this.indexToKeyMap[param1 + _loc3_]); + _loc3_++; + } + this.data.splice(param1,param2); + this.indexToKeyMap.splice(param1,param2); + _loc3_ = param1; + while(_loc3_ < this.length) + { + this.keyToIndexMap.remove(this.indexToKeyMap[_loc3_]); + this.keyToIndexMap.put(this.indexToKeyMap[_loc3_],_loc3_); + _loc3_++; + } + } + + public function removeByKey(param1:String) : void + { + var _loc2_:int = this.getIndex(param1); + if(_loc2_ != -1) + { + this.remove(_loc2_,1); + } + } + + public function insert(param1:int, param2:UtilHashUint, param3:Boolean = true) : void + { + var _loc4_:int = 0; + _loc4_ = param2.length - 1; + while(_loc4_ >= 0) + { + this.push(param2.getKey(_loc4_),param2.getValueByIndex(_loc4_),param3); + _loc4_--; + } + } + + public function containsKey(param1:String) : Boolean + { + return this.keyToIndexMap.containsKey(param1); + } + + public function containsValue(param1:uint) : Boolean + { + var _loc2_:int = 0; + while(_loc2_ < this.data.length) + { + if(this.data[_loc2_] == param1) + { + return true; + } + _loc2_++; + } + return false; + } + + public function getKey(param1:int) : String + { + return this.indexToKeyMap[param1]; + } + + public function getKeys() : Vector. + { + return this.indexToKeyMap; + } + + public function getIndex(param1:String) : int + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return int(_loc2_); + } + return -1; + } + + public function getValueByKey(param1:String) : uint + { + var _loc2_:* = this.keyToIndexMap.getValue(param1); + if(_loc2_ != null) + { + return this.data[int(_loc2_)]; + } + return null; + } + + public function getValueByIndex(param1:int) : uint + { + return this.data[param1]; + } + + public function replaceValueByIndex(param1:int, param2:uint) : void + { + if(param1 >= this.length || param1 < 0) + { + throw new Error("index out of bound"); + } + this.data[param1] = param2; + } + + public function replaceValueByKey(param1:String, param2:uint) : void + { + var _loc3_:* = this.keyToIndexMap.getValue(param1); + if(_loc3_ == null) + { + throw new Error("key not exist!"); + } + this.data[_loc3_ as int] = param2; + } + + public function get length() : int + { + return this.data.length; + } + + public function removeAll() : void + { + this.keyToIndexMap.clear(); + this.keyToIndexMap = new UtilHashMap(); + this.indexToKeyMap.splice(0,this.indexToKeyMap.length); + this.indexToKeyMap = new Vector.(); + this.data.splice(0,this.data.length); + this.data = new Vector.(); + } + + public function getVector() : Vector. + { + return this.data; + } + + public function clone() : UtilHashUint + { + var _loc1_:UtilHashUint = new UtilHashUint(); + _loc1_.data = this.data.concat(); + _loc1_.indexToKeyMap = this.indexToKeyMap.concat(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.indexToKeyMap.length) + { + _loc1_.keyToIndexMap.put(_loc1_.indexToKeyMap[_loc2_],_loc2_); + _loc2_++; + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilLicense.as b/scripts/anifire/util/UtilLicense.as new file mode 100644 index 0000000..1a6e5c4 --- /dev/null +++ b/scripts/anifire/util/UtilLicense.as @@ -0,0 +1,240 @@ +package anifire.util +{ + import anifire.constant.LicenseConstants; + import anifire.constant.ServerConstants; + import anifire.constant.ThemeConstants; + import anifire.managers.AppConfigManager; + + public class UtilLicense + { + + + public function UtilLicense() + { + super(); + } + + public static function get isSoundUploadable() : Boolean + { + var _loc1_:Array = LicenseConstants.BAN_SOUND_UPLOAD_LICENSE_IDS; + var _loc2_:String = AppConfigManager.instance.getValue("siteId"); + var _loc3_:int = 0; + while(_loc3_ < _loc1_.length) + { + if(_loc1_[_loc3_] as String == _loc2_) + { + return false; + } + _loc3_++; + } + return true; + } + + public static function isEffectChangeTipsShouldBeShown(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.SHOULD_SHOW_EFFECT_CHANGED_TIP; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return true; + } + _loc3_++; + } + return false; + } + + public static function isCommonSoundShouldBeShown(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.DONT_SHOW_COMMON_SOUND_THEME_IDS; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return false; + } + _loc3_++; + } + return true; + } + + public static function isUploadedAssetsEnabled() : Boolean + { + return AppConfigManager.instance.getValue("upl") == "1"; + } + + public static function isCommonPropShouldBeShown(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.DONT_SHOW_COMMON_PROP_THEME_IDS; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return false; + } + _loc3_++; + } + return true; + } + + public static function isCommonBackgroundShouldBeShown(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.DONT_SHOW_COMMON_BG_THEME_IDS; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return false; + } + _loc3_++; + } + return true; + } + + public static function isHeadSectionShouldBeShownInThumbtray(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.DONT_SHOW_HEAD_SECTION_IN_THUMBTRAY; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return false; + } + _loc3_++; + } + return true; + } + + public static function isHandGearSectionShouldBeShownInThumbtray(param1:String) : Boolean + { + var _loc2_:int = 0; + var _loc3_:Array = LicenseConstants.DONT_SHOW_HANDGEAR_SECTION_IN_THUMBTRAY_LICENSE_ID; + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + if(_loc3_[_loc2_] as String == param1) + { + return false; + } + _loc2_++; + } + var _loc4_:String = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_THEME_ID); + _loc3_ = LicenseConstants.DONT_SHOW_HEADGEAR_SECTION_IN_THUMBTRAY_THEME_ID; + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + if(_loc3_[_loc2_] as String == _loc4_) + { + return false; + } + _loc2_++; + } + return true; + } + + public static function isHeadGearSectionShouldBeShownInThumbtray(param1:String) : Boolean + { + var _loc2_:int = 0; + var _loc3_:Array = LicenseConstants.DONT_SHOW_HEADGEAR_SECTION_IN_THUMBTRAY_LICENSE_ID; + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + if(_loc3_[_loc2_] as String == param1) + { + return false; + } + _loc2_++; + } + var _loc4_:String = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_THEME_ID); + _loc3_ = LicenseConstants.DONT_SHOW_HEADGEAR_SECTION_IN_THUMBTRAY_THEME_ID; + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + if(_loc3_[_loc2_] as String == _loc4_) + { + return false; + } + _loc2_++; + } + return true; + } + + public static function isExternalPreviewPlayerShouldBeUsed(param1:String) : Boolean + { + var _loc2_:Array = LicenseConstants.SHOULD_USE_EXTERNAL_PREVIEW_PLAYER; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + if(_loc2_[_loc3_] as String == param1) + { + return true; + } + _loc3_++; + } + return false; + } + + public static function getCurrentLicenseId() : String + { + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_CODE); + if(_loc2_) + { + if(_loc2_ == "domo") + { + return "7"; + } + if(_loc2_ == "cn") + { + return "8"; + } + } + var _loc3_:String = _loc1_.getValue(ServerConstants.FLASHVAR_MOVIE_LICENSE_ID); + if(_loc3_ && _loc3_ != "") + { + return _loc3_; + } + var _loc4_:String = _loc1_.getValue(ServerConstants.FLASHVAR_SITE_ID); + if(_loc4_ && _loc4_ != "") + { + return _loc4_; + } + return "0"; + } + + public static function isSchoolEnvironment() : Boolean + { + return AppConfigManager.instance.getValue(ServerConstants.PARAM_U_INFO_SCHOOL) != null; + } + + public static function isBubbleI18NPermitted() : Boolean + { + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_CODE); + var _loc3_:String = _loc1_.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_LANG_CODE); + return _loc2_ == "go" || _loc2_ == "school" || _loc3_ != "en_US"; + } + + public static function isInitBizTheme() : Boolean + { + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue(ServerConstants.FLASHVAR_DEFAULT_TRAYTHEME); + switch(_loc2_) + { + case ThemeConstants.BUSINESS_THEME_ID: + case ThemeConstants.BIZ_MODEL_THEME_ID: + case ThemeConstants.STICKLY_BIZ_THEME_ID: + case ThemeConstants.WHITEBOARD_THEME_ID: + case ThemeConstants.INFOGRAPHICS_THEME_ID: + return true; + default: + return false; + } + } + } +} diff --git a/scripts/anifire/util/UtilLoadMgr.as b/scripts/anifire/util/UtilLoadMgr.as new file mode 100644 index 0000000..941f840 --- /dev/null +++ b/scripts/anifire/util/UtilLoadMgr.as @@ -0,0 +1,167 @@ +package anifire.util +{ + import anifire.event.LoadMgrEvent; + import flash.display.Loader; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.TimerEvent; + import flash.utils.ByteArray; + import flash.utils.Dictionary; + import flash.utils.Timer; + + public class UtilLoadMgr extends EventDispatcher + { + + private static const STATUS_INITIALIZE:String = "initialize"; + + private static const STATUS_ON_PROGRESS:String = "onProgress"; + + private static const STATUS_END:String = "end"; + + private static const MAX_DELAY:Number = 1000; + + private static const MIN_DELAY:Number = 1; + + private static const MAX_JOBS:Number = 2; + + + private var _progresses:Dictionary; + + private var _timer:Timer; + + private var _status:String = "initialize"; + + private var _loaderQueue:Array; + + private var _byteArrayQueue:Array; + + private var _count:Number = 0; + + private var _tasks:Array; + + private var _extraData:Object; + + public function UtilLoadMgr() + { + this._progresses = new Dictionary(); + this._timer = new Timer(MIN_DELAY); + this._tasks = new Array(); + super(); + this._loaderQueue = new Array(); + this._byteArrayQueue = new Array(); + } + + public function addEventDispatcher(param1:EventDispatcher, param2:String) : void + { + if(this._status != STATUS_INITIALIZE) + { + throw new Error("Error in using load manager. Loader object cannot be added after load manager has already started."); + } + var _loc3_:UtilLoadMgr = new UtilLoadMgr(); + _loc3_._progresses[param1] = 0; + param1.addEventListener(param2,_loc3_.onEachComplete); + _loc3_.commit(); + this.addLoadMgr(_loc3_); + } + + public function setExtraData(param1:Object) : void + { + this._extraData = param1; + } + + public function getExtraData() : Object + { + return this._extraData; + } + + private function addLoadMgr(param1:UtilLoadMgr) : void + { + this._progresses[param1] = 0; + param1.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onEachComplete); + } + + private function onEachComplete(param1:Event) : void + { + var _loc2_:EventDispatcher = param1.target as EventDispatcher; + _loc2_.removeEventListener(param1.type,this.onEachComplete); + this._progresses[_loc2_] = 1; + this._timer.delay = MIN_DELAY; + } + + public function commit() : void + { + if(this._loaderQueue.length > 0) + { + this._count = 0; + this.startNextTask(); + } + this._status = STATUS_ON_PROGRESS; + this._timer.addEventListener(TimerEvent.TIMER,this.onTimer); + this._timer.start(); + } + + private function forceCompleteAll() : void + { + this._timer.removeEventListener(TimerEvent.TIMER,this.onTimer); + this._timer.stop(); + this.dispatchEvent(new LoadMgrEvent(LoadMgrEvent.ALL_COMPLETE)); + this._status = STATUS_END; + } + + private function onTimer(param1:Event) : void + { + if(this.isAllComplete()) + { + this.forceCompleteAll(); + } + else + { + this._timer.delay = MAX_DELAY; + } + } + + private function isAllComplete() : Boolean + { + var _loc1_:* = null; + for(_loc1_ in this._progresses) + { + if(this._progresses[_loc1_] < 1) + { + return false; + } + } + return true; + } + + public function addTask(param1:Loader, param2:ByteArray) : void + { + this._loaderQueue.push(param1); + this._byteArrayQueue.push(param2); + } + + private function startNextTask() : void + { + var _loc1_:Loader = this._loaderQueue[this._count] as Loader; + var _loc2_:ByteArray = this._byteArrayQueue[this._count] as ByteArray; + _loc1_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onTaskDone); + _loc1_.loadBytes(_loc2_); + } + + private function onTaskDone(param1:Event) : void + { + this._count++; + if(this._count < this._loaderQueue.length) + { + this.startNextTask(); + } + else + { + this.onComplete(); + } + } + + private function onComplete() : void + { + } + } +} diff --git a/scripts/anifire/util/UtilMath.as b/scripts/anifire/util/UtilMath.as new file mode 100644 index 0000000..e1c44d9 --- /dev/null +++ b/scripts/anifire/util/UtilMath.as @@ -0,0 +1,191 @@ +package anifire.util +{ + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.utils.ByteArray; + + public class UtilMath + { + + private static var _instance:UtilMath; + + + private var _kebo:ByteArray; + + public function UtilMath() + { + super(); + } + + public static function get instance() : UtilMath + { + if(!_instance) + { + _instance = new UtilMath(); + } + return _instance; + } + + public static function boundaryCheck(param1:Number, param2:Number = -9999999, param3:Number = 9999999) : Number + { + if(param1 < param2) + { + return param2; + } + if(param1 > param3) + { + return param3; + } + return param1; + } + + public static function checkOverlap(param1:Number, param2:Number, param3:Number, param4:Number) : Boolean + { + if(param1 <= param3) + { + return param3 <= param2; + } + return param1 <= param4; + } + + public static function rotatePoint(param1:Point, param2:Number, param3:Point = null) : Point + { + var _loc4_:Matrix = new Matrix(); + if(param3) + { + _loc4_.translate(-param3.x,-param3.y); + } + _loc4_.rotate(param2 * Math.PI / 180); + if(param3) + { + _loc4_.translate(param3.x,param3.y); + } + return _loc4_.transformPoint(param1); + } + + public static function scalePoint(param1:Point, param2:Number, param3:Number, param4:Point = null) : Point + { + var _loc5_:Matrix = new Matrix(); + if(param4) + { + _loc5_.translate(-param4.x,-param4.y); + } + _loc5_.scale(param2,param3); + if(param4) + { + _loc5_.translate(param4.x,param4.y); + } + return _loc5_.transformPoint(param1); + } + + public static function scaleRect(param1:Rectangle, param2:Number, param3:Number, param4:Point = null) : Rectangle + { + var _loc5_:Matrix = new Matrix(); + if(param4) + { + _loc5_.translate(-param4.x,-param4.y); + } + _loc5_.scale(param2,param3); + if(param4) + { + _loc5_.translate(param4.x,param4.y); + } + var _loc6_:Point = new Point(param1.x,param1.y); + _loc6_ = _loc5_.transformPoint(_loc6_); + param1.x = _loc6_.x; + param1.y = _loc6_.y; + param1.width = param1.width * param2; + param1.height = param1.height * param3; + return param1; + } + + public static function getCenter(param1:Rectangle) : Point + { + return new Point(param1.x + param1.width / 2,param1.y + param1.height / 2); + } + + public static function dotProduct(param1:Point, param2:Point) : Number + { + return param1.x * param2.x + param1.y * param2.y; + } + + public static function crossProduct(param1:Point, param2:Point) : Number + { + return param1.x * param2.y - param1.y * param2.x; + } + + public static function angleBetweenVectors(param1:Point, param2:Point) : Number + { + if(param1.length > 0 && param2.length > 0) + { + return Math.acos(dotProduct(param1,param2) / (param1.length * param2.length)) * 180 / Math.PI; + } + return 0; + } + + public static function signedAngleBetweenVectors(param1:Point, param2:Point) : Number + { + var _loc3_:Number = angleBetweenVectors(param1,param2); + if(crossProduct(param1,param2) < 0) + { + _loc3_ = _loc3_ * -1; + } + return _loc3_; + } + + public static function linearInterpolation(param1:Number, param2:Number, param3:Number) : Number + { + return param1 + param3 * (param2 - param1); + } + + public static function permutate(param1:Array) : Array + { + var _loc4_:int = 0; + var _loc5_:int = 0; + var _loc6_:Array = null; + var _loc7_:Array = null; + if(param1.length == 1) + { + return [param1[0]]; + } + var _loc2_:Array = []; + var _loc3_:int = param1.length; + _loc4_ = _loc3_; + while(_loc4_--) + { + _loc6_ = param1.slice(0,_loc4_).concat(param1.slice(_loc4_ + 1,_loc3_)); + _loc7_ = permutate(_loc6_); + _loc5_ = _loc7_.length; + while(_loc5_--) + { + _loc6_ = [param1[_loc4_]].concat(_loc7_[_loc5_]); + _loc2_.push(_loc6_); + } + } + return _loc2_; + } + + public function randomizeKebo() : ByteArray + { + if(this._kebo) + { + return this._kebo; + } + var _loc1_:ByteArray = new ByteArray(); + var _loc2_:Number = Math.floor(Math.random() * 100); + _loc2_ = (_loc2_ + (_loc2_ + 1) + 9) / 2 - (_loc2_ + 5) + 5; + var _loc3_:RegExp = /[\s\r\n]+/gim; + var _loc4_:String = String(UtilDictOffline.array.getValueByKey(String(UtilDictOffline.array.getValueByKey(UtilDictOffline.error[_loc2_])))).substr(_loc2_).replace(_loc3_,"").toLowerCase(); + var _loc5_:int = _loc4_.length; + var _loc6_:int = 0; + while(_loc6_ < _loc5_) + { + _loc1_[_loc6_] = _loc4_.charCodeAt(_loc6_) as uint; + _loc6_++; + } + this._kebo = _loc1_; + return _loc1_; + } + } +} diff --git a/scripts/anifire/util/UtilNetwork.as b/scripts/anifire/util/UtilNetwork.as new file mode 100644 index 0000000..782c9d2 --- /dev/null +++ b/scripts/anifire/util/UtilNetwork.as @@ -0,0 +1,616 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.managers.AppConfigManager; + import flash.net.URLRequest; + import flash.net.URLRequestMethod; + import flash.net.URLVariables; + import flash.system.Security; + import flash.utils.ByteArray; + import mx.core.FlexGlobals; + import mx.utils.Base64Encoder; + import mx.utils.URLUtil; + + public class UtilNetwork + { + + public static var COMMA:String = ","; + + private static var storePathPattern:RegExp; + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + private static var clientThemePathPattern:RegExp; + + + public function UtilNetwork() + { + super(); + } + + private static function getStorePathPattern() : RegExp + { + if(!storePathPattern) + { + storePathPattern = new RegExp(ServerConstants.FLASHVAR_STORE_PLACEHOLDER,"g"); + } + return storePathPattern; + } + + public static function getClientThemePathPattern() : RegExp + { + if(!clientThemePathPattern) + { + clientThemePathPattern = new RegExp(ServerConstants.FLASHVAR_CLIENT_THEME_PLACEHOLDER,"g"); + } + return clientThemePathPattern; + } + + public static function getFont(param1:String) : String + { + var _loc2_:String = URLUtil.getProtocol(FlexGlobals.topLevelApplication.url); + if(_loc2_ == "file") + { + return "styles/font/" + param1; + } + var _loc3_:String = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH); + var _loc4_:String = "go/font/" + param1; + if(!_loc3_) + { + return getHostUrl() + _loc4_; + } + var _loc5_:RegExp = getClientThemePathPattern(); + _loc3_ = _loc3_.replace(_loc5_,_loc4_); + return _loc3_; + } + + public static function getCffFont(param1:String) : String + { + var _loc2_:String = URLUtil.getProtocol(FlexGlobals.topLevelApplication.url); + if(_loc2_ == "file") + { + return "styles/cff/" + param1; + } + var _loc3_:String = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH); + var _loc4_:String = "go/font2/" + param1; + if(!_loc3_) + { + return getHostUrl() + _loc4_; + } + var _loc5_:RegExp = getClientThemePathPattern(); + _loc3_ = _loc3_.replace(_loc5_,_loc4_); + return _loc3_; + } + + private static function getHostUrl() : String + { + var _loc1_:String = _configManager.getValue(ServerConstants.FLASHVAR_APISERVER); + return _loc1_ + "static/"; + } + + public static function isDemoHost() : Boolean + { + return getHostUrl().indexOf("demo.") > -1; + } + + public static function loadS3crossDomainXml() : void + { + var _loc2_:Array = null; + var _loc3_:int = 0; + var _loc4_:String = null; + var _loc1_:String = _configManager.getValue(ServerConstants.FLASHVAR_S3_URL); + if(_loc1_ && _loc1_.length > 0) + { + _loc2_ = _loc1_.split(COMMA); + _loc3_ = 0; + while(_loc3_ < _loc2_.length) + { + _loc4_ = _loc2_[_loc3_]; + Security.allowDomain(_loc4_); + Security.allowInsecureDomain(_loc4_); + Security.loadPolicyFile(_loc4_ + "crossdomain.xml"); + _loc3_++; + } + } + } + + public static function getGetThemeListRequest() : URLRequest + { + var _loc1_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_THEMELIST); + _loc1_.method = URLRequestMethod.POST; + _loc1_.data = _configManager.createURLVariables(); + return _loc1_; + } + + public static function getGetThemeRequest(param1:String, param2:Boolean) : URLRequest + { + var _loc3_:URLRequest = null; + var _loc5_:String = null; + var _loc6_:RegExp = null; + var _loc7_:* = null; + var _loc8_:URLVariables = null; + var _loc4_:AppConfigManager = _configManager; + if(param2) + { + _loc6_ = getStorePathPattern(); + _loc7_ = param1 + "/" + param1 + ".zip"; + _loc5_ = _loc4_.getValue(ServerConstants.FLASHVAR_STORE_PATH); + _loc5_ = _loc5_.replace(_loc6_,_loc7_); + _loc3_ = new URLRequest(_loc5_); + } + else + { + _loc5_ = ServerConstants.ACTION_GET_THEME; + _loc8_ = _loc4_.createURLVariables(); + _loc8_[ServerConstants.PARAM_THEME_ID] = param1; + _loc3_ = new URLRequest(_loc5_); + _loc3_.method = URLRequestMethod.POST; + _loc3_.data = _loc8_; + } + return _loc3_; + } + + public static function getGetCcThemeRequest(param1:String) : URLRequest + { + var _loc2_:RegExp = getStorePathPattern(); + var _loc3_:* = "cc_store/" + escape(param1) + "/cc_theme.xml"; + var _loc4_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH); + _loc4_ = _loc4_.replace(_loc2_,_loc3_); + var _loc5_:URLRequest = new URLRequest(_loc4_); + return _loc5_; + } + + public static function getGetCcThemePreMadeCharRequest(param1:String) : URLRequest + { + var _loc2_:String = ServerConstants.ACTION_GET_CC_PRE_MADE_CHARACTERS; + var _loc3_:URLRequest = new URLRequest(_loc2_); + var _loc4_:URLVariables = _configManager.createURLVariables(); + _loc4_["theme_code"] = param1; + _loc3_.method = URLRequestMethod.POST; + _loc3_.data = _loc4_; + return _loc3_; + } + + public static function getGetCcComponentStateFileRequest(param1:String, param2:String, param3:String, param4:String) : URLRequest + { + var _loc5_:URLRequest = null; + var _loc8_:RegExp = null; + var _loc9_:String = null; + var _loc6_:String = _configManager.getValue("v"); + var _loc7_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH) as String; + if(_loc7_ == "" || _loc7_ == null) + { + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(param2) > -1) + { + _loc7_ = getHostUrl() + "cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param4) + "?v=" + _loc6_; + } + else + { + _loc7_ = getHostUrl() + "cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param3) + "/" + escape(param4) + "?v=" + _loc6_; + } + } + else + { + _loc8_ = new RegExp(ServerConstants.FLASHVAR_STORE_PLACEHOLDER,"g"); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(param2) > -1) + { + _loc9_ = "cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param4); + } + else + { + _loc9_ = "cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param3) + "/" + escape(param4); + } + _loc7_ = _loc7_.replace(_loc8_,_loc9_); + } + return new URLRequest(_loc7_); + } + + public static function getGetCcLibraryFileRequest(param1:String, param2:String, param3:String) : URLRequest + { + var _loc4_:URLRequest = null; + var _loc7_:RegExp = null; + var _loc8_:* = null; + var _loc5_:String = _configManager.getValue("v"); + var _loc6_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH) as String; + if(_loc6_ == "" || _loc6_ == null) + { + _loc6_ = getHostUrl() + "store/cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param3) + ".swf" + "?v=" + _loc5_; + } + else + { + _loc7_ = new RegExp(ServerConstants.FLASHVAR_STORE_PLACEHOLDER,"g"); + _loc8_ = "cc_store/" + escape(param1) + "/" + escape(param2) + "/" + escape(param3) + ".swf"; + _loc6_ = _loc6_.replace(_loc7_,_loc8_); + } + return new URLRequest(_loc6_); + } + + public static function getGetThemeAssetRequest(param1:String, param2:String, param3:String, param4:String = "", param5:int = -1, param6:String = "") : URLRequest + { + var _loc7_:URLRequest = null; + var _loc8_:* = null; + var _loc9_:String = null; + var _loc11_:Array = null; + var _loc12_:RegExp = null; + var _loc13_:String = null; + var _loc14_:URLVariables = null; + param5 = param5 < 0?int(ServerConstants.STORE_VERSION):int(param5); + _loc8_ = param1 + "/"; + _loc9_ = param2; + if(param3 == ServerConstants.PARAM_SOUND) + { + _loc8_ = _loc8_ + ("sound/" + param2); + } + else if(param3 == ServerConstants.PARAM_CHAR) + { + if(param6) + { + _loc9_ = param6; + } + _loc8_ = _loc8_ + (_loc9_ + ".zip"); + } + else if(param3 == ServerConstants.PARAM_CHAR_ACTION) + { + if(param6) + { + _loc9_ = param6; + } + _loc8_ = _loc8_ + ("char/" + _loc9_ + "/" + param4); + } + else if(param3 == ServerConstants.PARAM_CHAR_FACIAL) + { + _loc9_ = param2; + if(param6) + { + _loc9_ = param6; + } + _loc11_ = _loc9_.split("."); + if(_loc11_.length > 0) + { + _loc9_ = _loc11_[0]; + } + _loc8_ = _loc8_ + ("char/" + _loc9_ + "/head/" + param4); + } + else if(param3 == ServerConstants.PARAM_PROP_EX) + { + _loc8_ = _loc8_ + ("prop/" + param2 + ".zip"); + } + else if(param3 == ServerConstants.PARAM_PROP_STATE) + { + _loc8_ = _loc8_ + ("prop/" + param2 + "/" + param4); + } + else if(param3 == ServerConstants.PARAM_PROP) + { + if(param2 != null) + { + _loc8_ = _loc8_ + ("prop/" + param2); + } + else + { + _loc8_ = _loc8_ + "prop.zip"; + } + } + else if(param3 == "widget") + { + if(param2 != null) + { + _loc8_ = _loc8_ + ("widget/" + param2); + } + } + else if(param3 == ServerConstants.PARAM_BG) + { + if(param2 != null) + { + _loc8_ = _loc8_ + ("bg/" + param2); + } + else + { + _loc8_ = _loc8_ + "bg.zip"; + } + } + else if(param3 == ServerConstants.PARAM_EFFECT) + { + _loc8_ = _loc8_ + ("effect/" + param2); + } + else if(param3 == ServerConstants.PARAM_BUBBLE) + { + _loc8_ = _loc8_ + ("bubble/" + param2); + } + var _loc10_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH) as String; + if(_loc10_ == "" || _loc10_ == null) + { + _loc10_ = getHostUrl() + "store/" + _loc8_ + "?v=" + param5; + } + else + { + _loc12_ = new RegExp(ServerConstants.FLASHVAR_STORE_PLACEHOLDER,"g"); + _loc13_ = _loc8_; + _loc10_ = _loc10_.replace(_loc12_,_loc13_); + } + if(param1 == "ugc") + { + if(param3 == ServerConstants.PARAM_CHAR) + { + _loc14_ = new URLVariables(); + _configManager.appendURLVariables(_loc14_); + _loc7_ = new URLRequest(ServerConstants.ACTION_GET_CHAR); + _loc7_.method = URLRequestMethod.POST; + _loc14_[ServerConstants.PARAM_ASSET_ID] = param2; + _loc7_.data = _loc14_; + } + else if(param3 == ServerConstants.PARAM_CHAR_ACTION) + { + _loc7_ = getGetCcActionRequest(param2,param4); + } + else if(param3 == ServerConstants.PARAM_CHAR_FACIAL) + { + _loc7_ = getGetCcActionRequest(param2,"",param4); + } + } + else + { + _loc7_ = new URLRequest(_loc10_); + } + return _loc7_; + } + + public static function getGetCcActionRequest(param1:String, param2:String, param3:String = "", param4:Boolean = false) : URLRequest + { + var _loc5_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_UGC_CHAR_ACTION); + var _loc6_:URLVariables = new URLVariables(); + _loc6_["charId"] = param1; + _loc6_["actionId"] = param2; + _loc6_["facialId"] = param3; + _loc6_["default"] = param4; + _loc5_.data = _loc6_; + _loc5_.method = URLRequestMethod.POST; + return _loc5_; + } + + public static function getGetUserUploadVideoUrl(param1:String) : String + { + var _loc2_:Array = param1.split("."); + return ServerConstants.ACTION_GET_ASSET + _loc2_[_loc2_.length - 2] + "." + _loc2_[_loc2_.length - 1]; + } + + public static function getRebuildTTSRequest(param1:String) : URLRequest + { + var _loc2_:URLRequest = null; + var _loc3_:URLVariables = new URLVariables(); + _configManager.appendURLVariables(_loc3_); + _loc2_ = new URLRequest(ServerConstants.ACTION_REBUILD_TTS); + _loc2_.method = URLRequestMethod.POST; + _loc3_[ServerConstants.PARAM_ASSET_ID] = param1; + _loc2_.data = _loc3_; + return _loc2_; + } + + public static function getGetSoundAssetRequest(param1:String, param2:String, param3:String) : URLRequest + { + var _loc4_:URLRequest = null; + var _loc5_:String = null; + var _loc6_:URLVariables = null; + if(param3 == AnimeConstants.DOWNLOAD_TYPE_PROGRESSIVE || param3 == AnimeConstants.DOWNLOAD_TYPE_STREAM) + { + _loc5_ = "mp3"; + } + else + { + _loc5_ = "swf"; + } + param2 = changeExtension(param2,_loc5_); + if(param1 != "ugc") + { + if(param3 == AnimeConstants.DOWNLOAD_TYPE_STREAM) + { + _loc4_ = new URLRequest(ServerConstants.ACTION_GET_STREAM_SOUND); + } + else + { + _loc4_ = getGetThemeAssetRequest(param1,param2,ServerConstants.PARAM_SOUND); + } + } + else + { + _loc6_ = new URLVariables(); + _configManager.appendURLVariables(_loc6_); + _loc4_ = new URLRequest(ServerConstants.ACTION_GET_ASSET); + _loc4_.method = URLRequestMethod.POST; + _loc6_[ServerConstants.PARAM_ASSET_ID] = param2; + _loc4_.data = _loc6_; + } + return _loc4_; + } + + private static function changeExtension(param1:String, param2:String) : String + { + var _loc3_:String = "."; + var _loc4_:Array = param1.split(_loc3_); + _loc4_.pop(); + _loc4_.push(param2); + return _loc4_.join(_loc3_); + } + + public static function getClientThemeUrl(param1:String, param2:String, param3:String) : String + { + var _loc7_:String = null; + var _loc8_:* = null; + var _loc9_:RegExp = null; + var _loc4_:AppConfigManager = _configManager; + var _loc5_:String = URLUtil.getProtocol(FlexGlobals.topLevelApplication.url); + var _loc6_:String = _loc4_.getValue("v"); + if(!param1) + { + param1 = "go"; + } + if(!param2) + { + param2 = "en_US"; + } + if(_loc5_ == "file") + { + return "locale/" + param1 + "/" + param2 + "/" + param3 + ".swf"; + } + _loc7_ = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH); + if(_loc7_) + { + _loc8_ = "client_theme/" + param1 + "/" + param2 + "/" + param3 + ".swf"; + _loc9_ = getClientThemePathPattern(); + _loc7_ = _loc7_.replace(_loc9_,_loc8_); + return _loc7_; + } + return ServerConstants.CLIENT_THEME_PATH + "/" + param1 + "/" + param2 + "/" + param3 + ".swf" + "?v=" + _loc6_; + } + + public static function getClientLocaleUrl(param1:String, param2:String, param3:String) : String + { + var _loc6_:String = null; + var _loc7_:String = null; + var _loc8_:RegExp = null; + var _loc9_:* = null; + var _loc4_:String = URLUtil.getProtocol(FlexGlobals.topLevelApplication.url); + var _loc5_:String = _configManager.getValue("v"); + if(_loc4_ == "file") + { + _loc6_ = "locale"; + return _loc6_ + "/" + param1 + "/" + param2 + "/" + param3 + "Resources_" + param2 + ".swf" + "?v=" + _loc5_; + } + _loc7_ = _configManager.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_PATH) as String; + if(_loc7_ == "" || _loc7_ == null) + { + return ServerConstants.CLIENT_THEME_PATH + "/" + param1 + "/" + param2 + "/" + param3 + "Resources_" + param2 + ".swf" + "?v=" + _loc5_; + } + _loc8_ = new RegExp(ServerConstants.FLASHVAR_CLIENT_THEME_PLACEHOLDER,"g"); + _loc9_ = "client_theme/" + param1 + "/" + param2 + "/" + param3 + "Resources_" + param2 + ".swf"; + _loc7_ = _loc7_.replace(_loc8_,_loc9_); + return _loc7_; + } + + public static function getRssRequest() : URLRequest + { + var _loc3_:URLRequest = null; + var _loc1_:URLVariables = new URLVariables(); + var _loc2_:String = _configManager.getValue(ServerConstants.PARAM_RSS_MOVIENUM); + if(_loc2_ == null) + { + _loc2_ = "10"; + } + else if(Number(_loc2_) > 20) + { + _loc2_ = "20"; + } + _loc1_.channel = _configManager.getValue(ServerConstants.PARAM_RSS_CHANNEL); + _loc1_.movie_limit = _loc2_; + _loc1_.playlist = 1; + _loc3_ = new URLRequest(ServerConstants.ACTION_RSS_PATH + _configManager.getValue(ServerConstants.PARAM_RSS_PATH) + "?v=" + Math.random()); + _loc3_.method = "POST"; + _loc3_.data = _loc1_; + return _loc3_; + } + + public static function getGetMovieRequest(param1:UtilHashArray, param2:String) : URLRequest + { + var _loc3_:URLRequest = null; + var _loc6_:String = null; + var _loc4_:URLVariables = new URLVariables(); + var _loc5_:URLVariables = new URLVariables(); + _loc5_[ServerConstants.PARAM_MOVIE_ID] = param2; + _loc5_[ServerConstants.PARAM_USER_ID] = _configManager.getValue(ServerConstants.PARAM_USER_ID) as String; + _loc5_[ServerConstants.PARAM_USER_TOKEN] = _configManager.getValue(ServerConstants.PARAM_USER_TOKEN) as String; + _configManager.appendURLVariables(_loc4_); + _loc4_[ServerConstants.PARAM_MOVIE_ID] = param2; + _loc6_ = ServerConstants.ACTION_GET_MOVIE + "?" + _loc5_.toString(); + _loc3_ = new URLRequest(_loc6_); + _loc3_.method = URLRequestMethod.POST; + _loc3_.data = _loc4_; + return _loc3_; + } + + public static function getMovieRequest(param1:String) : URLRequest + { + var _loc2_:AppConfigManager = _configManager; + var _loc3_:URLVariables = new URLVariables(); + _loc3_[ServerConstants.PARAM_MOVIE_ID] = param1; + _loc3_[ServerConstants.PARAM_USER_ID] = _loc2_.getValue(ServerConstants.PARAM_USER_ID); + _loc3_[ServerConstants.PARAM_USER_TOKEN] = _loc2_.getValue(ServerConstants.PARAM_USER_TOKEN); + var _loc4_:URLVariables = _loc2_.createURLVariables(); + _loc4_[ServerConstants.PARAM_MOVIE_ID] = param1; + var _loc5_:String = ServerConstants.ACTION_GET_MOVIE + "?" + _loc3_.toString(); + var _loc6_:URLRequest = new URLRequest(_loc5_); + _loc6_.method = URLRequestMethod.POST; + _loc6_.data = _loc4_; + return _loc6_; + } + + public static function getGetMovieInfoRequest(param1:String) : URLRequest + { + var _loc2_:URLVariables = _configManager.createURLVariables(); + _loc2_[ServerConstants.PARAM_MOVIE_ID] = param1; + var _loc3_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_MOVIE_INFO); + _loc3_.method = URLRequestMethod.POST; + _loc3_.data = _loc2_; + return _loc3_; + } + + public static function getSendBugReportRequest() : URLRequest + { + var _loc1_:URLRequest = new URLRequest(ServerConstants.ACTION_SEND_BUG_REPORT); + _loc1_.method = URLRequestMethod.POST; + _loc1_.data = _configManager.createURLVariables(); + return _loc1_; + } + + public static function getSaveJpegReuqest(param1:String, param2:ByteArray) : URLRequest + { + var _loc3_:URLVariables = new URLVariables(); + var _loc4_:Base64Encoder = new Base64Encoder(); + _loc4_.encodeBytes(param2); + _loc3_["imagedata"] = _loc4_.flush(); + _loc3_["filename"] = param1; + var _loc5_:URLRequest = new URLRequest(ServerConstants.ACTION_SAVE_JPEG); + _loc5_.method = URLRequestMethod.POST; + _loc5_.data = _loc3_; + return _loc5_; + } + + public static function getUserFontListRequest() : URLRequest + { + var _loc1_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_USER_FONTLIST); + _loc1_.method = URLRequestMethod.POST; + _loc1_.data = _configManager.createURLVariables(); + return _loc1_; + } + + public static function getFlowFrameRequest(param1:String, param2:String) : URLRequest + { + var _loc3_:RegExp = getStorePathPattern(); + var _loc4_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH); + _loc4_ = _loc4_.replace(_loc3_,param1 + "/flow/" + param2); + var _loc5_:URLRequest = new URLRequest(_loc4_); + _loc5_.method = URLRequestMethod.POST; + return _loc5_; + } + + public static function getFlowFrameThumbnailRequest(param1:String, param2:String) : URLRequest + { + var _loc3_:RegExp = getStorePathPattern(); + var _loc4_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH); + _loc4_ = _loc4_.replace(_loc3_,param1 + "/flow/" + param2); + var _loc5_:URLRequest = new URLRequest(_loc4_); + _loc5_.method = URLRequestMethod.POST; + return _loc5_; + } + + public static function getInnerImageRequest(param1:String, param2:String) : URLRequest + { + var _loc3_:URLVariables = AppConfigManager.instance.createURLVariables(); + _loc3_[ServerConstants.PARAM_ASSET_ID] = param2; + var _loc4_:URLRequest = new URLRequest(ServerConstants.ACTION_GET_ASSET); + _loc4_.method = URLRequestMethod.POST; + _loc4_.data = _loc3_; + return _loc4_; + } + } +} diff --git a/scripts/anifire/util/UtilPager.as b/scripts/anifire/util/UtilPager.as new file mode 100644 index 0000000..e3e3c58 --- /dev/null +++ b/scripts/anifire/util/UtilPager.as @@ -0,0 +1,148 @@ +package anifire.util +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import mx.events.PropertyChangeEvent; + + public class UtilPager implements IEventDispatcher + { + + + private var _model:Array = null; + + private var _pageNo:int = 1; + + private var _windowSize:int = 10; + + private var _bindingEventDispatcher:EventDispatcher; + + public function UtilPager() + { + this._bindingEventDispatcher = new EventDispatcher(IEventDispatcher(this)); + super(); + } + + [Bindable(event="propertyChange")] + public function get pageNumber() : int + { + return this._pageNo; + } + + private function set _1144767160pageNumber(param1:int) : void + { + this._pageNo = param1; + } + + public function get totalPages() : int + { + var _loc1_:int = Math.ceil(this._model.length / this._windowSize); + return _loc1_; + } + + public function scrollToItem(param1:Object) : void + { + var _loc2_:int = 0; + while(_loc2_ < this._model.length) + { + if(this._model[_loc2_] == param1) + { + this.pageNumber = Math.ceil((_loc2_ + 1) / this._windowSize); + } + _loc2_++; + } + } + + public function isItemOnCurrentPage(param1:Object) : Boolean + { + var _loc2_:Object = null; + for each(_loc2_ in this.getView()) + { + if(_loc2_ == param1) + { + return true; + } + } + return false; + } + + public function set data(param1:Array) : void + { + this._model = param1; + } + + public function set windowSize(param1:int) : void + { + if(param1 > 0) + { + this._windowSize = param1; + return; + } + throw new RangeError("UtilPager: Invalid page size - " + param1); + } + + public function previous() : void + { + if(this.pageNumber > 1) + { + this.pageNumber--; + } + } + + public function next() : void + { + if(this.pageNumber < this.totalPages) + { + this.pageNumber++; + } + } + + public function getView() : Array + { + if(this._model == null) + { + return null; + } + var _loc1_:int = this._windowSize * (this.pageNumber - 1); + return this._model.slice(_loc1_,_loc1_ + this._windowSize); + } + + public function set pageNumber(param1:int) : void + { + var _loc2_:Object = this.pageNumber; + if(_loc2_ !== param1) + { + this._1144767160pageNumber = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"pageNumber",_loc2_,param1)); + } + } + } + + public function addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + this._bindingEventDispatcher.addEventListener(param1,param2,param3,param4,param5); + } + + public function dispatchEvent(param1:Event) : Boolean + { + return this._bindingEventDispatcher.dispatchEvent(param1); + } + + public function hasEventListener(param1:String) : Boolean + { + return this._bindingEventDispatcher.hasEventListener(param1); + } + + public function removeEventListener(param1:String, param2:Function, param3:Boolean = false) : void + { + this._bindingEventDispatcher.removeEventListener(param1,param2,param3); + } + + public function willTrigger(param1:String) : Boolean + { + return this._bindingEventDispatcher.willTrigger(param1); + } + } +} diff --git a/scripts/anifire/util/UtilPlain.as b/scripts/anifire/util/UtilPlain.as new file mode 100644 index 0000000..0500c6a --- /dev/null +++ b/scripts/anifire/util/UtilPlain.as @@ -0,0 +1,951 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.display.MovieClip; + import flash.display.Shape; + import flash.events.Event; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.utils.ByteArray; + import nochump.util.zip.ZipEntry; + import nochump.util.zip.ZipFile; + + public class UtilPlain + { + + public static const THE_CHAR:String = "theChar"; + + public static const THE_CHAR_FLIP:String = "theCharFlip"; + + public static const THE_COLOR:String = "theColor"; + + public static const COLORABLE_PREFIX:String = "Color"; + + public static const THE_PROP:String = AnimeConstants.MOVIECLIP_THE_PROP; + + public static const THE_HEAD:String = AnimeConstants.MOVIECLIP_THE_HEAD; + + public static const THE_WEAR:String = AnimeConstants.MOVIECLIP_THE_WEAR; + + public static const THE_TAIL:String = AnimeConstants.MOVIECLIP_THE_TAIL; + + public static const THE_MOUTH:String = AnimeConstants.MOVIECLIP_THE_MOUTH; + + public static const PROPERTY_SCALEX:String = "scalex"; + + public static const PROPERTY_SCALEY:String = "scaley"; + + private static const SPEECH_MOUTH:String = "speechMouth"; + + + public function UtilPlain() + { + super(); + } + + public static function get PARTS_NOT_CONTROL_BY_PLAYER() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(SPEECH_MOUTH); + return _loc1_; + } + + public static function playFamily(param1:DisplayObject) : void + { + var iObj:DisplayObject = param1; + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:MovieClip = null; + if(param1 is MovieClip) + { + _loc2_ = MovieClip(param1); + _loc2_.play(); + } + }; + UtilPlain.transverseFamily(iObj,treatment,PARTS_NOT_CONTROL_BY_PLAYER); + } + + public static function stopFamily(param1:DisplayObject) : void + { + var iObj:DisplayObject = param1; + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:MovieClip = null; + if(param1 is MovieClip) + { + _loc2_ = MovieClip(param1); + _loc2_.stop(); + } + }; + UtilPlain.transverseFamily(iObj,treatment); + } + + public static function advanceFamilyToNextFrame(param1:DisplayObject) : Boolean + { + var result:Boolean = false; + var iObj:DisplayObject = param1; + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:MovieClip = null; + if(param1 is MovieClip) + { + _loc2_ = MovieClip(param1); + _loc2_.nextFrame(); + if(_loc2_.name == THE_CHAR) + { + if(_loc2_.currentFrame < _loc2_.totalFrames) + { + result = true; + } + } + } + }; + UtilPlain.transverseFamily(iObj,treatment); + return result; + } + + public static function traceDisplayList(param1:DisplayObjectContainer, param2:String = "") : void + { + var _loc3_:DisplayObject = null; + var _loc4_:int = 0; + while(_loc4_ < param1.numChildren) + { + _loc3_ = param1.getChildAt(_loc4_); + if(_loc3_ != null) + { + } + if(param1.getChildAt(_loc4_) is DisplayObjectContainer) + { + traceDisplayList(DisplayObjectContainer(_loc3_),param2 + " "); + } + _loc4_++; + } + } + + public static function removeAllSon(param1:DisplayObjectContainer) : void + { + var _loc3_:Object = null; + var _loc2_:int = param1.numChildren; + var _loc4_:int = _loc2_ - 1; + while(_loc4_ >= 0) + { + _loc3_ = param1.getChildAt(_loc4_); + param1.removeChildAt(_loc4_); + _loc3_ = null; + _loc4_--; + } + } + + public static function getCharacter(param1:DisplayObjectContainer) : MovieClip + { + return getInstance(param1,THE_CHAR) as MovieClip; + } + + public static function getCharacterFlip(param1:DisplayObjectContainer) : MovieClip + { + return getInstance(param1,THE_CHAR_FLIP) as MovieClip; + } + + public static function getAllShaderObj(param1:DisplayObject) : Array + { + var objArray:Array = null; + var theObj:DisplayObject = param1; + objArray = new Array(); + var treatment:Function = function(param1:DisplayObject):void + { + if(param1 != null) + { + if(DisplayObject(param1).name == "shaderObj") + { + objArray.push(param1); + } + } + }; + UtilPlain.transverseFamily(theObj,treatment); + return objArray; + } + + public static function getLoaderItem(param1:DisplayObject) : Array + { + var objArray:Array = null; + var theObj:DisplayObject = param1; + objArray = new Array(); + var treatment:Function = function(param1:DisplayObject):void + { + if(param1 != null) + { + if(param1 is Loader) + { + objArray.push(param1); + } + } + }; + UtilPlain.transverseFamily(theObj,treatment); + return objArray; + } + + public static function getLoaderItemExcludeTheHeadTheHand(param1:DisplayObject) : Array + { + var objArray:Array = null; + var theObj:DisplayObject = param1; + objArray = new Array(); + var treatment:Function = function(param1:DisplayObject):void + { + if(param1 != null) + { + if(param1 is Loader) + { + objArray.push(param1); + } + } + }; + UtilPlain.transverseFamily(theObj,treatment,[UtilPlain.THE_HEAD,UtilPlain.THE_PROP]); + return objArray; + } + + public static function getColorItem(param1:DisplayObject, param2:String = "") : Array + { + var objArray:Array = null; + var theObj:DisplayObject = param1; + var spec:String = param2; + objArray = new Array(); + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:String = null; + if(param1 != null) + { + _loc2_ = getColorItemName(DisplayObject(param1).name); + if(_loc2_ != "" && (spec == "" || spec != "" && _loc2_ == spec)) + { + objArray.push(param1); + } + } + }; + UtilPlain.transverseFamily(theObj,treatment); + return objArray; + } + + public static function getColorItemName(param1:String) : String + { + var _loc3_:Array = null; + var _loc4_:String = null; + var _loc2_:String = ""; + if(param1.indexOf(THE_COLOR) == 0) + { + _loc3_ = param1.split("_"); + if(_loc3_.length > 1) + { + _loc2_ = _loc3_[1]; + } + } + else if(param1.indexOf(COLORABLE_PREFIX) == 0) + { + _loc4_ = param1.substring(COLORABLE_PREFIX.length); + _loc2_ = _loc4_; + } + return _loc2_; + } + + public static function extractCharFlip(param1:Loader) : DisplayObject + { + var charFlip:Class = null; + var swfLoader:Loader = param1; + try + { + charFlip = swfLoader.content.loaderInfo.applicationDomain.getDefinition(THE_CHAR_FLIP) as Class; + } + catch(e:Error) + { + return null; + } + var char:DisplayObject = new charFlip(); + char.name = THE_CHAR_FLIP; + return char; + } + + public static function extractEffectThumbnail(param1:Loader) : DisplayObject + { + var thumbnailClass:Class = null; + var effectSwfLoader:Loader = param1; + try + { + thumbnailClass = effectSwfLoader.content.loaderInfo.applicationDomain.getDefinition("EFFECT_THUMBNAIL") as Class; + } + catch(e:Error) + { + return null; + } + var thumbnail:DisplayObject = new thumbnailClass(); + return thumbnail; + } + + public static function extractSymbolFromLoader(param1:Loader, param2:String) : DisplayObject + { + var symbolClass:Class = null; + var loader:Loader = param1; + var symbolName:String = param2; + try + { + symbolClass = loader.content.loaderInfo.applicationDomain.getDefinition(symbolName) as Class; + } + catch(e:Error) + { + return null; + } + var obj:DisplayObject = new symbolClass(); + return obj; + } + + public static function getMultipleInstance(param1:DisplayObject, param2:*) : Array + { + var _loc3_:Array = new Array(); + getMultipleInstanceRecursive(param1,param2,_loc3_); + return _loc3_; + } + + private static function getMultipleInstanceRecursive(param1:DisplayObject, param2:*, param3:Array) : void + { + var _loc4_:DisplayObjectContainer = null; + var _loc5_:DisplayObject = null; + var _loc6_:int = 0; + if(param1.name.match(param2) != null) + { + param3.push(param1); + } + if(param1 is DisplayObjectContainer) + { + _loc4_ = param1 as DisplayObjectContainer; + _loc6_ = 0; + while(_loc6_ < _loc4_.numChildren) + { + _loc5_ = _loc4_.getChildAt(_loc6_); + if(_loc5_) + { + getMultipleInstanceRecursive(_loc5_,param2,param3); + } + _loc6_++; + } + } + } + + public static function centerAlignObj(param1:DisplayObject, param2:Rectangle, param3:Boolean) : void + { + var _loc4_:Rectangle = param1.getRect(param1); + var _loc5_:Number = 1; + if(param3) + { + if(param2.width / param2.height > _loc4_.width / _loc4_.height) + { + _loc5_ = param2.height / _loc4_.height; + } + else + { + _loc5_ = param2.width / _loc4_.width; + } + param1.scaleX = param1.scaleX * _loc5_; + param1.scaleY = param1.scaleY * _loc5_; + } + var _loc6_:Point = new Point(); + _loc6_.x = (_loc4_.left + _loc4_.right) / 2 * _loc5_; + _loc6_.y = (_loc4_.top + _loc4_.bottom) / 2 * _loc5_; + var _loc7_:Point = new Point(); + _loc7_.x = (param2.left + param2.right) / 2; + _loc7_.y = (param2.top + param2.bottom) / 2; + var _loc8_:Point = _loc7_.subtract(_loc6_); + param1.x = param1.x + _loc8_.x; + param1.y = param1.y + _loc8_.y; + } + + public static function getInstance(param1:DisplayObjectContainer, param2:String) : DisplayObjectContainer + { + var _loc3_:DisplayObjectContainer = null; + var _loc4_:DisplayObjectContainer = null; + var _loc5_:int = 0; + if(param1 == null) + { + return null; + } + if(param1.name == param2) + { + return param1; + } + _loc5_ = 0; + while(_loc5_ < param1.numChildren) + { + if(param1.getChildAt(_loc5_) is DisplayObjectContainer) + { + _loc4_ = DisplayObjectContainer(param1.getChildAt(_loc5_)); + _loc3_ = UtilPlain.getInstance(_loc4_,param2); + if(_loc3_ != null) + { + return _loc3_; + } + } + _loc5_++; + } + return null; + } + + public static function getMouth(param1:DisplayObjectContainer) : DisplayObjectContainer + { + var _loc2_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = null; + var _loc4_:int = 0; + if(param1 == null) + { + return null; + } + if(param1.name == UtilPlain.THE_MOUTH && param1.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_MOUTH) != null) + { + return param1; + } + _loc4_ = 0; + while(_loc4_ < param1.numChildren) + { + if(param1.getChildAt(_loc4_) is DisplayObjectContainer) + { + _loc3_ = DisplayObjectContainer(param1.getChildAt(_loc4_)); + _loc2_ = UtilPlain.getMouth(_loc3_); + if(_loc2_ != null) + { + return _loc2_; + } + } + _loc4_++; + } + return null; + } + + public static function getHead(param1:DisplayObjectContainer) : DisplayObjectContainer + { + var _loc2_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = null; + var _loc4_:int = 0; + if(param1 == null) + { + return null; + } + if(param1.name == UtilPlain.THE_HEAD && param1.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_HEAD) != null) + { + return param1; + } + _loc4_ = 0; + while(_loc4_ < param1.numChildren) + { + if(param1.getChildAt(_loc4_) is DisplayObjectContainer) + { + _loc3_ = DisplayObjectContainer(param1.getChildAt(_loc4_)); + _loc2_ = UtilPlain.getHead(_loc3_); + if(_loc2_ != null) + { + return _loc2_; + } + } + _loc4_++; + } + return null; + } + + public static function getTail(param1:DisplayObjectContainer) : DisplayObjectContainer + { + var _loc2_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = null; + var _loc4_:int = 0; + if(param1 == null) + { + return null; + } + if(param1.name == UtilPlain.THE_TAIL && param1.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_TAIL) != null) + { + return param1; + } + _loc4_ = 0; + while(_loc4_ < param1.numChildren) + { + if(param1.getChildAt(_loc4_) is DisplayObjectContainer) + { + _loc3_ = DisplayObjectContainer(param1.getChildAt(_loc4_)); + _loc2_ = UtilPlain.getTail(_loc3_); + if(_loc2_ != null) + { + return _loc2_; + } + } + _loc4_++; + } + return null; + } + + public static function getProp(param1:DisplayObjectContainer) : DisplayObjectContainer + { + var _loc2_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = null; + var _loc4_:int = 0; + if(param1 == null) + { + return null; + } + if(param1.name == UtilPlain.THE_PROP) + { + return param1; + } + _loc4_ = 0; + while(_loc4_ < param1.numChildren) + { + if(param1.getChildAt(_loc4_) is DisplayObjectContainer) + { + _loc3_ = DisplayObjectContainer(param1.getChildAt(_loc4_)); + _loc2_ = UtilPlain.getProp(_loc3_); + if(_loc2_ != null) + { + return _loc2_; + } + } + _loc4_++; + } + return null; + } + + public static function flipObj(param1:DisplayObject, param2:Boolean = false, param3:Boolean = false) : Number + { + if(param2) + { + param1.scaleX = Math.abs(param1.scaleX); + } + else if(param3) + { + param1.scaleX = -1 * Math.abs(param1.scaleX); + } + else + { + param1.scaleX = param1.scaleX * -1; + } + var _loc4_:DisplayObject = null; + var _loc5_:DisplayObject = null; + var _loc6_:DisplayObjectContainer = param1 as DisplayObjectContainer; + if(_loc6_ != null) + { + _loc4_ = UtilPlain.getInstance(_loc6_,THE_CHAR); + _loc5_ = UtilPlain.getInstance(_loc6_,THE_CHAR_FLIP); + } + if(_loc5_ != null) + { + if(_loc6_.scaleX < 0) + { + _loc4_.visible = false; + _loc5_.visible = true; + } + else + { + _loc4_.visible = true; + _loc5_.visible = false; + } + } + return param1.scaleX; + } + + public static function isObjectFlipped(param1:DisplayObjectContainer) : Boolean + { + if(param1.scaleX >= 0) + { + return false; + } + return true; + } + + public static function transverseFamily(param1:DisplayObject, param2:Function, param3:Array = null) : void + { + var _loc4_:int = 0; + var _loc5_:DisplayObject = null; + var _loc6_:DisplayObjectContainer = null; + param2(param1); + if(param1 is DisplayObjectContainer) + { + _loc6_ = DisplayObjectContainer(param1); + _loc4_ = 0; + while(_loc4_ < _loc6_.numChildren) + { + _loc5_ = _loc6_.getChildAt(_loc4_); + if(!(param3 && _loc5_ && param3.indexOf(_loc5_.name) > -1)) + { + UtilPlain.transverseFamily(_loc5_,param2,param3); + } + _loc4_++; + } + } + } + + private static function transverseFamilyWithCheck(param1:DisplayObject, param2:Function) : void + { + var _loc3_:DisplayObjectContainer = null; + var _loc4_:int = 0; + var _loc5_:Object = null; + var _loc6_:EventListenerWithData = null; + param2(param1); + if(param1 is DisplayObjectContainer) + { + _loc3_ = param1 as DisplayObjectContainer; + _loc4_ = 0; + while(_loc4_ < _loc3_.numChildren) + { + _loc5_ = new Object(); + _loc5_["rootNode"] = param1; + _loc5_["treatment"] = param2; + _loc5_["targetIndex"] = _loc4_; + _loc5_["targetParent"] = param1; + _loc6_ = new EventListenerWithData(null,_loc5_); + UtilPlain.transverseFamilyListener(_loc6_); + _loc4_++; + } + } + } + + private static function transverseFamilyListener(param1:EventListenerWithData) : void + { + var data:Object = null; + var agent:EventListenerWithData = null; + var container:DisplayObjectContainer = null; + var i:int = 0; + var listenerObj:EventListenerWithData = param1; + var rootNode:DisplayObjectContainer = listenerObj.data["rootNode"] as DisplayObjectContainer; + var treatment:Function = listenerObj.data["treatment"]; + var targetIndex:int = listenerObj.data["targetIndex"]; + var targetParent:DisplayObjectContainer = listenerObj.data["targetParent"] as DisplayObjectContainer; + var targetNode:DisplayObject = null; + try + { + targetNode = targetParent.getChildAt(targetIndex); + } + catch(e:Error) + { + return; + } + targetParent.removeEventListener(Event.ADDED,listenerObj.listener); + if(targetNode != null) + { + treatment(targetNode); + if(targetNode is DisplayObjectContainer) + { + container = targetNode as DisplayObjectContainer; + i = 0; + while(i < container.numChildren) + { + data = new Object(); + data["rootNode"] = rootNode; + data["treatment"] = treatment; + data["targetIndex"] = i; + data["targetParent"] = container; + agent = new EventListenerWithData(UtilPlain.transverseFamilyListener,data); + transverseFamilyListener(agent); + i++; + } + } + } + else + { + data = new Object(); + data["rootNode"] = rootNode; + data["treatment"] = treatment; + data["targetIndex"] = targetIndex; + data["targetParent"] = targetParent; + agent = new EventListenerWithData(UtilPlain.transverseFamilyListener,data); + targetParent.addEventListener(Event.ADDED,agent.listener); + } + } + + private static function isWholeFamilyReady(param1:DisplayObject) : Boolean + { + var _loc2_:DisplayObjectContainer = null; + var _loc3_:int = 0; + if(param1 == null) + { + return false; + } + if(param1 is DisplayObjectContainer) + { + _loc2_ = param1 as DisplayObjectContainer; + _loc3_ = 0; + while(_loc3_ < _loc2_.numChildren) + { + if(!UtilPlain.isWholeFamilyReady(_loc2_.getChildAt(_loc3_))) + { + return false; + } + _loc3_++; + } + } + return true; + } + + public static function gotoAndStopFamilyAt1(param1:DisplayObject) : void + { + var iObj:DisplayObject = param1; + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:MovieClip = null; + if(param1 is MovieClip) + { + _loc2_ = param1 as MovieClip; + _loc2_.gotoAndStop(1); + } + }; + UtilPlain.transverseFamilyWithCheck(iObj,treatment); + } + + public static function nextFrameAtFamily(param1:DisplayObject) : void + { + var iObj:DisplayObject = param1; + var treatment:Function = function(param1:DisplayObject):void + { + var _loc2_:MovieClip = null; + if(param1 is MovieClip) + { + _loc2_ = param1 as MovieClip; + if(_loc2_.currentFrame >= _loc2_.totalFrames) + { + _loc2_.gotoAndStop(1); + } + else + { + _loc2_.nextFrame(); + } + } + }; + UtilPlain.transverseFamilyWithCheck(iObj,treatment); + } + + public static function switchParent(param1:DisplayObjectContainer, param2:DisplayObjectContainer) : void + { + var _loc3_:int = param2.numChildren; + var _loc4_:int = param1.numChildren - 1; + while(_loc4_ >= 0) + { + param2.addChildAt(param1.getChildAt(_loc4_),_loc3_); + _loc4_--; + } + } + + public static function isTimeRangesOverlap(param1:Number, param2:Number, param3:Number, param4:Number) : Boolean + { + if(param1 >= param3 && param1 <= param4) + { + return true; + } + if(param2 >= param3 && param2 <= param4) + { + return true; + } + if(param3 >= param1 && param3 <= param2) + { + return true; + } + if(param4 >= param1 && param4 <= param2) + { + return true; + } + return false; + } + + public static function getRelativeProperty(param1:DisplayObject, param2:DisplayObjectContainer, param3:String) : Number + { + if(param1 == null) + { + throw new Error("The target Obj is null."); + } + if(param2 == null) + { + throw new Error("The reference container is null."); + } + var _loc4_:DisplayObject = param1; + var _loc5_:Number = 1; + while(true) + { + switch(param3) + { + case PROPERTY_SCALEX: + _loc5_ = _loc5_ * _loc4_.scaleX; + break; + case PROPERTY_SCALEY: + _loc5_ = _loc5_ * _loc4_.scaleY; + } + _loc4_ = _loc4_.parent; + if(_loc4_ == null) + { + break; + } + if(!(_loc4_ != param2 && _loc4_ != param1.stage)) + { + if(param1.stage != param2 && _loc4_ == param1.stage) + { + throw new Error("referenceContainer does not contain targetObj"); + } + return _loc5_; + } + } + throw new Error("Reference Container is not found during reverse-parent finding"); + } + + public static function get_isMoviePublished_by_flashVar(param1:String, param2:String) : Boolean + { + if(param1 != null && param1 == "0") + { + return false; + } + if(param1 != null && param1 == "1") + { + return true; + } + if(param1 == null && param2 == null) + { + return true; + } + return false; + } + + public static function get_isMoviePrivateShare_by_flashVar(param1:String) : Boolean + { + if(param1 != null && param1 == "1") + { + return true; + } + return false; + } + + public static function randomizeArray(param1:Array) : void + { + var _loc3_:Object = null; + var _loc4_:int = 0; + var _loc2_:int = param1.length; + var _loc5_:int = 0; + while(_loc5_ < _loc2_) + { + _loc4_ = Math.floor(Math.random() * _loc2_); + _loc3_ = param1[_loc5_]; + param1[_loc5_] = param1[_loc4_]; + param1[_loc4_] = _loc3_; + _loc5_++; + } + } + + public static function randomNumberRange(param1:Number, param2:Number) : Number + { + param2++; + return Math.floor(param1 + Math.random() * (param2 - param1)); + } + + public static function rasterizeImage(param1:Boolean, param2:DisplayObjectContainer, param3:Rectangle) : void + { + var _loc5_:int = 0; + var _loc6_:Shape = null; + var _loc7_:DisplayObject = null; + var _loc8_:BitmapData = null; + var _loc4_:String = "rasterized_img"; + if(param1) + { + _loc8_ = new BitmapData(param3.width,param3.height); + _loc8_.draw(param2,null,null,null,param3,false); + _loc6_ = new Shape(); + _loc6_.graphics.beginBitmapFill(_loc8_); + _loc6_.graphics.drawRect(param3.left,param3.top,param3.width,param3.height); + _loc6_.graphics.endFill(); + _loc6_.name = _loc4_; + _loc5_ = 0; + while(_loc5_ < param2.numChildren) + { + _loc7_ = param2.getChildAt(_loc5_); + if(_loc7_ != null) + { + _loc7_.visible = false; + } + _loc5_++; + } + param2.addChild(_loc6_); + } + else + { + _loc6_ = param2.getChildByName(_loc4_) as Shape; + if(_loc6_ != null) + { + _loc5_ = 0; + while(_loc5_ < param2.numChildren) + { + _loc7_ = param2.getChildAt(_loc5_); + if(_loc7_ != null) + { + _loc7_.visible = true; + } + _loc5_++; + } + param2.removeChild(_loc6_); + } + } + } + + public static function convertZipAsImagedataObject(param1:ZipFile) : Object + { + var _loc2_:UtilHashArray = null; + var _loc3_:Object = null; + var _loc4_:int = 0; + var _loc5_:ZipEntry = null; + var _loc6_:ByteArray = null; + var _loc7_:UtilCrypto = null; + var _loc8_:String = null; + _loc2_ = new UtilHashArray(); + _loc3_ = new Object(); + _loc4_ = 0; + while(_loc4_ < param1.size) + { + _loc5_ = param1.entries[_loc4_]; + if(_loc5_.name == "desc.xml") + { + _loc3_["xml"] = new XML(param1.getInput(_loc5_).toString()); + } + else if(_loc5_.name.substr(_loc5_.name.length - 3,3).toLowerCase() == "swf") + { + _loc8_ = _loc5_.name.split(".")[1]; + _loc6_ = param1.getInput(_loc5_); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(_loc8_) == -1) + { + _loc7_ = new UtilCrypto(); + _loc7_.decrypt(_loc6_); + } + _loc2_.push(_loc5_.name,_loc6_); + } + _loc4_++; + } + _loc3_["imageData"] = _loc2_; + return _loc3_; + } + } +} + +import flash.events.Event; + +class EventListenerWithData +{ + + + public var data:Object; + + public var event:Event; + + private var callBack:Function; + + function EventListenerWithData(param1:Function, param2:Object = null) + { + super(); + this.callBack = param1; + this.data = param2; + } + + public function listener(param1:Event) : void + { + this.event = param1; + this.callBack(this); + } +} diff --git a/scripts/anifire/util/UtilSite.as b/scripts/anifire/util/UtilSite.as new file mode 100644 index 0000000..126e5ba --- /dev/null +++ b/scripts/anifire/util/UtilSite.as @@ -0,0 +1,155 @@ +package anifire.util +{ + import anifire.constant.ServerConstants; + import anifire.managers.AppConfigManager; + + public class UtilSite + { + + public static const GOANIMATE:Number = 0; + + public static const CN:Number = 1; + + public static const DOMO:Number = 2; + + public static const SCHOOL:Number = 3; + + public static const YOUTUBE:Number = 4; + + public static const SKOLETUBE:Number = 12; + + public static const ED:Number = 14; + + public static const SCHOOLOGY:Number = 16; + + public static const WIX:Number = 17; + + public static const SITE_ID_GOANIMATE:String = "0"; + + public static const SITE_ID_WIX:String = "17"; + + private static var _id:Number = -1; + + private static var _apiServer:String; + + private static var _tlang:String; + + private static var __licenseId:String; + + + public function UtilSite() + { + super(); + } + + public static function get siteId() : int + { + var _loc1_:String = null; + var _loc2_:String = null; + if(_id == -1) + { + _loc1_ = apiServer; + if(_loc1_.search("youtube") > 0) + { + _id = YOUTUBE; + } + else if(_loc1_.search("skoletube") > 0) + { + _id = SKOLETUBE; + } + else + { + _loc2_ = AppConfigManager.instance.getValue("siteId"); + switch(_loc2_) + { + case "8": + _id = CN; + break; + case "7": + _id = DOMO; + break; + case "11": + case "school": + _id = SCHOOL; + break; + case "14": + _id = ED; + break; + case "16": + _id = SCHOOLOGY; + break; + case SITE_ID_WIX: + _id = WIX; + break; + default: + _id = GOANIMATE; + } + } + } + return _id; + } + + public static function get apiServer() : String + { + if(!_apiServer) + { + _apiServer = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_APISERVER); + } + return _apiServer; + } + + public static function get domainName() : String + { + return apiServer; + } + + public static function get isDevelopmentSite() : Boolean + { + var _loc1_:String = domainName; + if(_loc1_) + { + return _loc1_.search("goanimate.org") > 0 || _loc1_.search("staging") > 0 || _loc1_.search("demo") > 0 || _loc1_.search("alvin") > 0; + } + return false; + } + + public static function get isSchoolSite() : Boolean + { + return siteId == SCHOOL || siteId == SKOLETUBE || siteId == ED || siteId == SCHOOLOGY; + } + + public static function get isG4S() : Boolean + { + return siteId == SCHOOL; + } + + public static function get isWix() : Boolean + { + return ServerConstants.IS_WIX; + } + + public static function get tlang() : String + { + if(!_tlang) + { + _tlang = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_CLIENT_THEME_LANG_CODE); + } + return _tlang; + } + + public static function get isGoLite() : Boolean + { + var _loc1_:String = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_IS_GOLITE_PREVIEW); + return _loc1_ == "1"; + } + + public static function get isGoAnimate() : Boolean + { + if(__licenseId == null) + { + __licenseId = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_LICENSE_ID); + } + return __licenseId == SITE_ID_GOANIMATE; + } + } +} diff --git a/scripts/anifire/util/UtilURLStream.as b/scripts/anifire/util/UtilURLStream.as new file mode 100644 index 0000000..ea121e3 --- /dev/null +++ b/scripts/anifire/util/UtilURLStream.as @@ -0,0 +1,107 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + import flash.events.ErrorEvent; + import flash.events.Event; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.events.TimerEvent; + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.utils.Timer; + + public class UtilURLStream extends URLStream + { + + public static var TIME_OUT:String = "timeOut"; + + + private var myTimer:Timer = null; + + private var useTimer:Boolean = true; + + public var name:String; + + public function UtilURLStream(param1:Boolean = true) + { + super(); + this.useTimer = param1; + } + + override public function load(param1:URLRequest) : void + { + this.addEventListener(IOErrorEvent.IO_ERROR,this.onErrorHandler); + this.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onErrorHandler); + this.addEventListener(ProgressEvent.PROGRESS,this.onProgressHandler); + this.addEventListener(Event.COMPLETE,this.onCompleteHandler); + if(this.useTimer && this.myTimer == null) + { + this.myTimer = new Timer(AnimeConstants.TIME_OUT,1); + this.myTimer.addEventListener(TimerEvent.TIMER,this.timerEventHandler); + this.myTimer.addEventListener(TimerEvent.TIMER_COMPLETE,this.timerCompleteEventHandler); + this.myTimer.start(); + } + super.load(param1); + } + + private function onProgressHandler(param1:ProgressEvent) : void + { + if(param1.bytesLoaded < param1.bytesTotal) + { + this.myTimer.removeEventListener(TimerEvent.TIMER,this.timerEventHandler); + this.myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,this.timerCompleteEventHandler); + this.myTimer.stop(); + this.myTimer = new Timer(AnimeConstants.TIME_OUT,1); + this.myTimer.addEventListener(TimerEvent.TIMER,this.timerEventHandler); + this.myTimer.addEventListener(TimerEvent.TIMER_COMPLETE,this.timerCompleteEventHandler); + this.myTimer.start(); + } + } + + private function timerEventHandler(param1:TimerEvent) : void + { + this.close(); + this.dispatchEvent(new Event(TIME_OUT)); + } + + private function timerCompleteEventHandler(param1:Event) : void + { + if(this.myTimer != null) + { + if(this.myTimer.hasEventListener(TimerEvent.TIMER)) + { + this.myTimer.removeEventListener(TimerEvent.TIMER,this.timerEventHandler); + } + if(this.myTimer.hasEventListener(TimerEvent.TIMER_COMPLETE)) + { + this.myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,this.timerCompleteEventHandler); + } + this.myTimer = null; + } + } + + private function onCompleteHandler(param1:Event) : void + { + this.timerCompleteEventHandler(null); + this.removeAllEventListener(); + } + + private function onErrorHandler(param1:*) : void + { + if(param1 is ErrorEvent) + { + this.timerCompleteEventHandler(null); + this.removeAllEventListener(); + this.dispatchEvent(param1); + } + } + + private function removeAllEventListener() : void + { + this.removeEventListener(IOErrorEvent.IO_ERROR,this.onErrorHandler); + this.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.onErrorHandler); + this.removeEventListener(Event.COMPLETE,this.onCompleteHandler); + } + } +} diff --git a/scripts/anifire/util/UtilUnitConvert.as b/scripts/anifire/util/UtilUnitConvert.as new file mode 100644 index 0000000..847b11b --- /dev/null +++ b/scripts/anifire/util/UtilUnitConvert.as @@ -0,0 +1,203 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + + public class UtilUnitConvert + { + + + public function UtilUnitConvert() + { + super(); + } + + public static function secToFrame(param1:Number, param2:Boolean = false, param3:Boolean = false) : Number + { + var _loc4_:Number = param1 * AnimeConstants.FRAME_PER_SEC; + if(!param2) + { + _loc4_ = Math.round(_loc4_); + } + return _loc4_ > 0?Number(_loc4_):!!param3?Number(0):Number(1); + } + + public static function frameToSec(param1:Number, param2:Boolean = true) : Number + { + if(param2 && param1 != 0) + { + return Util.roundNum(param1 - 1) / AnimeConstants.FRAME_PER_SEC; + } + if(param1 >= 0) + { + return Util.roundNum(param1 / AnimeConstants.FRAME_PER_SEC); + } + return 0; + } + + public static function pixelToFrame(param1:Number, param2:Boolean = false) : Number + { + var _loc3_:Number = param1 * AnimeConstants.FRAME_PER_PIXEL; + if(!param2) + { + _loc3_ = Math.round(_loc3_); + } + return _loc3_ > 0?Number(_loc3_):Number(1); + } + + public static function widthToFrame(param1:Number) : int + { + return Math.round(param1 * AnimeConstants.FRAME_PER_PIXEL); + } + + public static function xToFrame(param1:Number) : Number + { + if(param1 >= 0) + { + return Math.floor(param1 * AnimeConstants.FRAME_PER_PIXEL) + 1; + } + return 1; + } + + public static function frameToPixel(param1:uint) : Number + { + return Math.round(param1 * AnimeConstants.PIXEL_PER_FRAME); + } + + public static function frameToTime(param1:uint, param2:Boolean = true) : Number + { + if(param1 > 0) + { + if(param2) + { + return (param1 - 1) / AnimeConstants.FRAME_PER_SEC; + } + return param1 / AnimeConstants.FRAME_PER_SEC; + } + return 0; + } + + public static function timeToFrame(param1:Number) : int + { + if(param1 >= 0) + { + return Math.floor(param1 * AnimeConstants.FRAME_PER_SEC) + 1; + } + return 1; + } + + public static function frameToDuration(param1:uint) : Number + { + return param1 / AnimeConstants.FRAME_PER_SEC; + } + + public static function durationToFrame(param1:Number) : int + { + return int(Math.round(param1 * AnimeConstants.FRAME_PER_SEC)); + } + + public static function frameToX(param1:uint, param2:Boolean = true) : Number + { + if(param1 > 0) + { + if(param2) + { + return frameToPixel(param1 - 1); + } + return frameToPixel(param1); + } + return 0; + } + + public static function pixelToSec(param1:Number) : Number + { + return param1 / AnimeConstants.PIXEL_PER_SEC; + } + + public static function secToPixel(param1:Number) : Number + { + return param1 * AnimeConstants.PIXEL_PER_SEC; + } + + public static function millisecToPixel(param1:Number) : Number + { + return param1 * AnimeConstants.PIXEL_PER_MILLISEC; + } + + public static function getTargetPoint(param1:Number, param2:Number, param3:Number, param4:Number) : int + { + var _loc5_:Number = NaN; + var _loc6_:int = 0; + if(param4 == 2) + { + return 1; + } + _loc5_ = (param2 - param1) / (param4 - 1); + _loc6_ = 0; + _loc6_ = 0; + while(_loc6_ < param4 - 1) + { + if(param3 >= param1 + _loc5_ * _loc6_ && param3 <= param1 + _loc5_ * (_loc6_ + 1)) + { + return _loc6_ + 1; + } + _loc6_++; + } + return 0; + } + + public static function getClockTime(param1:uint, param2:uint) : String + { + var _loc3_:String = "PM"; + var _loc4_:String = doubleDigitFormat(param2); + if(param1 > 12) + { + param1 = param1 - 12; + } + else if(param1 == 0) + { + _loc3_ = "AM"; + param1 = 12; + } + else if(param1 < 12) + { + _loc3_ = "AM"; + } + return doubleDigitFormat(param1) + ":" + _loc4_ + " " + _loc3_; + } + + public static function doubleDigitFormat(param1:uint) : String + { + if(param1 < 10) + { + return "0" + param1; + } + return String(param1); + } + + public static function uintToColorHexString(param1:uint) : String + { + var _loc2_:String = ""; + _loc2_ = _loc2_ + param1.toString(16).toUpperCase(); + while(_loc2_.length < 6) + { + _loc2_ = "0" + _loc2_; + } + return "0x" + _loc2_; + } + + public static function addUnit(param1:Number, param2:String) : String + { + return param1 + param2; + } + + public static function removeUnit(param1:String, param2:String) : Number + { + var _loc3_:int = param1.indexOf(param2); + if(_loc3_ > -1) + { + param1 = param1.substring(0,_loc3_); + } + return Number(param1); + } + } +} diff --git a/scripts/anifire/util/UtilUser.as b/scripts/anifire/util/UtilUser.as new file mode 100644 index 0000000..1723517 --- /dev/null +++ b/scripts/anifire/util/UtilUser.as @@ -0,0 +1,158 @@ +package anifire.util +{ + import anifire.constant.ServerConstants; + import anifire.managers.AppConfigManager; + + public class UtilUser + { + + public static const BASIC_USER:Number = 10; + + public static const PLUS_USER:Number = 20; + + public static const PUBLISH_USER:Number = 23; + + public static const PRO_USER:Number = 25; + + public static const COMM_USER:Number = 30; + + public static const BETA_USER:Number = 40; + + public static const BETA2_USER:Number = 50; + + public static const ADMIN_USER:Number = 60; + + private static var _type:Number = -1; + + private static var _loggedIn:Number = -1; + + private static var _isTrialAccount:Number = -1; + + + public function UtilUser() + { + super(); + } + + public static function hasPlusFeatures() : Boolean + { + return userType >= PLUS_USER; + } + + public static function hasCommFeatures() : Boolean + { + return userType >= COMM_USER; + } + + public static function hasBetaFeatures() : Boolean + { + return userType >= BETA_USER; + } + + public static function get hasAdminFeatures() : Boolean + { + return userType >= ADMIN_USER; + } + + public static function get hasProFeatures() : Boolean + { + return userType >= PRO_USER; + } + + public static function get hasBizFeatures() : Boolean + { + return userType > PRO_USER; + } + + public static function get hasBusinessFeatures() : Boolean + { + return userType >= PUBLISH_USER; + } + + public static function get userType() : Number + { + var _loc1_:String = null; + if(_type == -1) + { + _loc1_ = AppConfigManager.instance.getValue("ut"); + switch(_loc1_) + { + case "10": + _type = BASIC_USER; + break; + case "20": + _type = PLUS_USER; + break; + case "23": + _type = PUBLISH_USER; + break; + case "25": + _type = PRO_USER; + break; + case "30": + _type = COMM_USER; + break; + case "40": + _type = BETA_USER; + break; + case "50": + _type = BETA2_USER; + break; + case "60": + _type = ADMIN_USER; + break; + default: + _type = BASIC_USER; + } + } + return _type; + } + + public static function updateUserType(param1:Number) : void + { + _type = param1; + AppConfigManager.instance.setValue("ut",String(param1)); + } + + public static function get loggedIn() : Boolean + { + var _loc1_:String = null; + if(_loggedIn == -1) + { + _loc1_ = AppConfigManager.instance.getValue("userId"); + if(_loc1_ == null || _loc1_ == "") + { + _loggedIn = 0; + } + else + { + _loggedIn = 1; + } + } + return _loggedIn == 1; + } + + public static function get isTrialAccount() : Boolean + { + var _loc1_:String = null; + if(_isTrialAccount == -1) + { + _loc1_ = AppConfigManager.instance.getValue("trial"); + if(_loc1_ == "1") + { + _isTrialAccount = 1; + } + else + { + _isTrialAccount = 0; + } + } + return _isTrialAccount == 1; + } + + public static function get isFreeTrial() : Boolean + { + return AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_IS_FREE_TRIAL) == "1"; + } + } +} diff --git a/scripts/anifire/util/UtilXmlInfo.as b/scripts/anifire/util/UtilXmlInfo.as new file mode 100644 index 0000000..fbbfa79 --- /dev/null +++ b/scripts/anifire/util/UtilXmlInfo.as @@ -0,0 +1,283 @@ +package anifire.util +{ + import anifire.constant.AnimeConstants; + + public class UtilXmlInfo + { + + + public function UtilXmlInfo() + { + super(); + } + + public static function getThemeIdFromFileName(param1:String) : String + { + return param1.split(".")[0]; + } + + public static function getThumbIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + if(param1.indexOf(".head.") != -1) + { + return String(_loc3_[_loc3_.length - 4]) + _loc2_ + String(_loc3_[_loc3_.length - 3]) + _loc2_ + String(_loc3_[_loc3_.length - 2]) + _loc2_ + String(_loc3_[_loc3_.length - 1]); + } + return (_loc3_[_loc3_.length - 2] as String) + _loc2_ + (_loc3_[_loc3_.length - 1] as String); + } + + public static function getFacialThumbIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + return (_loc3_[0] as String) + _loc2_ + (_loc3_[1] as String); + } + + public static function getFacialIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + var _loc4_:String = _loc3_[_loc3_.length - 1] as String; + if(_loc4_ == "zip") + { + _loc4_ = "xml"; + } + return (_loc3_[_loc3_.length - 2] as String) + _loc2_ + _loc4_; + } + + public static function getFileNameExtension(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + return _loc3_[_loc3_.length - 1]; + } + + public static function getCharIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + return _loc3_[_loc3_.length - 3] as String; + } + + public static function getCharIdFromFacialFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + return _loc3_[_loc3_.length - 4] as String; + } + + public static function getPropIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + if(_loc3_.length > 3) + { + return _loc3_[_loc3_.length - 3] as String; + } + return _loc3_[_loc3_.length - 2] + "." + _loc3_[_loc3_.length - 1]; + } + + public static function getPropStateIdFromFileName(param1:String) : String + { + var _loc2_:String = "."; + var _loc3_:Array = param1.split(_loc2_); + if(_loc3_.length > 3) + { + return _loc3_[_loc3_.length - 2] + "." + _loc3_[_loc3_.length - 1]; + } + return null; + } + + public static function getThemeIdFromThemeXML(param1:XML) : String + { + return param1.attribute("id"); + } + + public static function getAndSortXMLattribute(param1:XML, param2:String, param3:String = null) : Array + { + var _loc7_:XML = null; + var _loc4_:Array = new Array(); + var _loc5_:XMLList = param1.elements(); + if(_loc5_ == null) + { + return _loc4_; + } + var _loc6_:int = 0; + while(_loc6_ < _loc5_.length()) + { + _loc7_ = _loc5_[_loc6_]; + if(_loc7_.name() == param3 || param3 == null) + { + if(_loc7_.attribute(param2).length() > 0) + { + _loc4_.push(Number(_loc7_.attribute(param2).toString())); + } + } + _loc6_++; + } + _loc4_.sort(Array.NUMERIC); + return _loc4_; + } + + public static function getZipFileNameOfBg(param1:String) : String + { + return param1.replace(".",".bg."); + } + + public static function getZipFileNameOfProp(param1:String) : String + { + return param1.replace(".",".prop."); + } + + public static function getZipFileNameOfSound(param1:String) : String + { + return param1.replace(".",".sound."); + } + + public static function getZipFileNameOfBehaviour(param1:String, param2:Boolean) : String + { + var _loc3_:String = !!param2?"char":"prop"; + return param1.replace(".","." + _loc3_ + "."); + } + + public static function getCompFileNameOfBehaviour(param1:String) : String + { + var _loc2_:Array = param1.split("."); + return _loc2_[0] + "." + AnimeConstants.ASSET_TYPE_CHAR + "." + _loc2_[2] + "." + _loc2_[_loc2_.length - 1]; + } + + public static function getZipFileNameOfEffect(param1:String) : String + { + return param1.replace(".",".effect."); + } + + public static function getZipFileNameOfSegment(param1:String) : String + { + return param1.replace(".",".segment."); + } + + public static function generateBehaviourFileName(param1:String, param2:String, param3:String) : String + { + return param1 + "." + param2 + "." + param3; + } + + public static function xmlEscape(param1:String) : String + { + if(param1 != null) + { + param1 = param1.replace(/&/g,"&"); + param1 = param1.replace(/"/g,"""); + param1 = param1.replace(/'/g,"'"); + param1 = param1.replace(//g,">"); + } + return param1; + } + + public static function getPropXMLfromThemeXML(param1:String, param2:UtilHashArray) : XML + { + var propFileName:String = param1; + var themeXmls:UtilHashArray = param2; + var splitedPropFilename:Array = propFileName.split("."); + var themeId:String = splitedPropFilename[0] as String; + var themeXML:XML = themeXmls.getValueByKey(themeId) as XML; + var propId:String = (splitedPropFilename[splitedPropFilename.length - 2] as String) + "." + (splitedPropFilename[splitedPropFilename.length - 1] as String); + return XMLList(themeXML.prop.(@id == propId))[0]; + } + + public static function convertUploadedAssetXmlToThumbXml(param1:XML) : XML + { + var _loc2_:* = ""; + if(param1.child("type") == "prop") + { + _loc2_ = ""; + } + return new XML(_loc2_); + } + + public static function createThemeXml(param1:String, param2:String) : XML + { + return new XML(""); + } + + public static function merge2ThemeXml(param1:XML, param2:XML, param3:String, param4:String, param5:Boolean = false) : XML + { + var i:int = 0; + var curNode:XML = null; + var mergedThemeXML:XML = null; + var newXmlChildLength:Number = NaN; + var existingCurNode:XML = null; + var curTypeXML:XMLList = null; + var curNodeName:String = null; + var oldXML:XML = param1; + var newXML:XML = param2; + var themeId:String = param3; + var themeName:String = param4; + var shouldReplaceOldXml:Boolean = param5; + if(oldXML == null) + { + oldXML = createThemeXml(themeId,themeName); + } + if(newXML == null) + { + newXML = createThemeXml(themeId,themeName); + } + if(shouldReplaceOldXml) + { + mergedThemeXML = oldXML; + } + else + { + mergedThemeXML = oldXML.copy(); + } + var listNodeName:String = ""; + newXmlChildLength = newXML.children().length(); + i = 0; + while(i < newXmlChildLength) + { + curNode = newXML.children()[i] as XML; + existingCurNode = null; + curNodeName = curNode.name(); + if(curNodeName != listNodeName) + { + curTypeXML = mergedThemeXML.child(curNodeName) as XMLList; + listNodeName = curNodeName; + } + existingCurNode = curTypeXML.(@id == curNode.@id)[0] as XML; + if(existingCurNode != null) + { + if(curNode.children().length() >= existingCurNode.children().length()) + { + existingCurNode.setName("DELETED_NODE"); + mergedThemeXML.appendChild(curNode.copy()); + } + } + else + { + mergedThemeXML.appendChild(curNode.copy()); + } + i++; + } + return mergedThemeXML; + } + + public static function cdata(param1:String) : String + { + var _loc2_:* = ""; + return _loc2_; + } + + public static function cdataXML(param1:String) : XML + { + var _loc2_:XML = new XML(""); + return _loc2_; + } + + public static function getSuffixFromStateIdByThumbId(param1:String, param2:String) : String + { + var _loc3_:Number = param1.length + 1; + return param2.substring(_loc3_); + } + } +} diff --git a/scripts/anifire/utils/SecurityUtils.as b/scripts/anifire/utils/SecurityUtils.as new file mode 100644 index 0000000..d42a7a2 --- /dev/null +++ b/scripts/anifire/utils/SecurityUtils.as @@ -0,0 +1,19 @@ +package anifire.utils +{ + import flash.system.Security; + + public class SecurityUtils + { + + + public function SecurityUtils() + { + super(); + } + + public static function init() : void + { + Security.allowDomain("staging-cdn.org","godevstorage.s3.amazonaws.com","*.amazonaws.com","*.s3.amazonaws.com","*.goanimate.org","*.goanimate.com","goanimate.com","demo.cdn.goanimate.com","demo.goanimate.com","es.goanimate.com","fr.goanimate.com","de.goanimate.com","br.goanimate.com","tooncreator.cartoonnetworkhq.com","prelaunch.tooncreator.cartoonnetworkhq.com","staging.goanimate.org","staging.goanimate.com","cn.goanimate.com","goanimate.cartoonnetworkhq.org","lightspeed.goanimate.com","staging.school.goanimate.org","*.goanimate4schools.com","goanimate4schools.com","lightspeed.goanimate4schools.com","staging-school-cdn.com","lightspeed.youtube.goanimate.com","youtube.goanimate.org","youtube.goanimate.com","demo.youtube.goanimate.com","demo.cdn.youtube.goanimate.com","skoletube.goanimate.org","skoletube.goanimate.com","demo.skoletube.goanimate.com","lightspeed.edplatform.goanimate.com","edplatform.goanimate.com","edplatform.goanimate.org","sandbox.edplatform.goanimate.com","sandbox.edplatform.goanimate.org","sandbox.schoology.goanimate.com","schoology.goanimate4schools.com","*.wix.com","d3v4eglovri8yt.cloudfront.net","*.wix.goanimate.com","wix.goanimate.com","wix.goanimate.org","wix-cdn.goanimate.org"); + } + } +} diff --git a/scripts/com/adobe/crypto/MD5.as b/scripts/com/adobe/crypto/MD5.as new file mode 100644 index 0000000..bebcbb3 --- /dev/null +++ b/scripts/com/adobe/crypto/MD5.as @@ -0,0 +1,180 @@ +package com.adobe.crypto +{ + import com.adobe.utils.IntUtil; + + public class MD5 + { + + + public function MD5() + { + super(); + } + + private static function ff(param1:int, param2:int, param3:int, param4:int, param5:int, param6:int, param7:int) : int + { + return transform(f,param1,param2,param3,param4,param5,param6,param7); + } + + private static function createBlocks(param1:String) : Array + { + var _loc2_:Array = null; + var _loc3_:int = 0; + var _loc4_:int = 0; + var _loc5_:int = 0; + _loc2_ = new Array(); + _loc3_ = param1.length * 8; + _loc4_ = 255; + _loc5_ = 0; + while(_loc5_ < _loc3_) + { + _loc2_[_loc5_ >> 5] = _loc2_[_loc5_ >> 5] | (param1.charCodeAt(_loc5_ / 8) & _loc4_) << _loc5_ % 32; + _loc5_ = _loc5_ + 8; + } + _loc2_[_loc3_ >> 5] = _loc2_[_loc3_ >> 5] | 128 << _loc3_ % 32; + _loc2_[(_loc3_ + 64 >>> 9 << 4) + 14] = _loc3_; + return _loc2_; + } + + private static function ii(param1:int, param2:int, param3:int, param4:int, param5:int, param6:int, param7:int) : int + { + return transform(i,param1,param2,param3,param4,param5,param6,param7); + } + + private static function f(param1:int, param2:int, param3:int) : int + { + return param1 & param2 | ~param1 & param3; + } + + private static function g(param1:int, param2:int, param3:int) : int + { + return param1 & param3 | param2 & ~param3; + } + + private static function h(param1:int, param2:int, param3:int) : int + { + return param1 ^ param2 ^ param3; + } + + private static function i(param1:int, param2:int, param3:int) : int + { + return param2 ^ (param1 | ~param3); + } + + private static function transform(param1:Function, param2:int, param3:int, param4:int, param5:int, param6:int, param7:int, param8:int) : int + { + var _loc9_:int = 0; + _loc9_ = param2 + int(param1(param3,param4,param5)) + param6 + param8; + return IntUtil.rol(_loc9_,param7) + param3; + } + + private static function hh(param1:int, param2:int, param3:int, param4:int, param5:int, param6:int, param7:int) : int + { + return transform(h,param1,param2,param3,param4,param5,param6,param7); + } + + public static function hash(param1:String) : String + { + var _loc2_:int = 0; + var _loc3_:int = 0; + var _loc4_:int = 0; + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc7_:int = 0; + var _loc8_:int = 0; + var _loc9_:int = 0; + var _loc10_:Array = null; + var _loc11_:int = 0; + var _loc12_:int = 0; + _loc2_ = 1732584193; + _loc3_ = -271733879; + _loc4_ = -1732584194; + _loc5_ = 271733878; + _loc10_ = createBlocks(param1); + _loc11_ = _loc10_.length; + _loc12_ = 0; + while(_loc12_ < _loc11_) + { + _loc6_ = _loc2_; + _loc7_ = _loc3_; + _loc8_ = _loc4_; + _loc9_ = _loc5_; + _loc2_ = ff(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 0],7,-680876936); + _loc5_ = ff(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 1],12,-389564586); + _loc4_ = ff(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 2],17,606105819); + _loc3_ = ff(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 3],22,-1044525330); + _loc2_ = ff(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 4],7,-176418897); + _loc5_ = ff(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 5],12,1200080426); + _loc4_ = ff(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 6],17,-1473231341); + _loc3_ = ff(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 7],22,-45705983); + _loc2_ = ff(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 8],7,1770035416); + _loc5_ = ff(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 9],12,-1958414417); + _loc4_ = ff(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 10],17,-42063); + _loc3_ = ff(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 11],22,-1990404162); + _loc2_ = ff(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 12],7,1804603682); + _loc5_ = ff(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 13],12,-40341101); + _loc4_ = ff(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 14],17,-1502002290); + _loc3_ = ff(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 15],22,1236535329); + _loc2_ = gg(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 1],5,-165796510); + _loc5_ = gg(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 6],9,-1069501632); + _loc4_ = gg(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 11],14,643717713); + _loc3_ = gg(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 0],20,-373897302); + _loc2_ = gg(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 5],5,-701558691); + _loc5_ = gg(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 10],9,38016083); + _loc4_ = gg(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 15],14,-660478335); + _loc3_ = gg(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 4],20,-405537848); + _loc2_ = gg(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 9],5,568446438); + _loc5_ = gg(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 14],9,-1019803690); + _loc4_ = gg(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 3],14,-187363961); + _loc3_ = gg(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 8],20,1163531501); + _loc2_ = gg(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 13],5,-1444681467); + _loc5_ = gg(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 2],9,-51403784); + _loc4_ = gg(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 7],14,1735328473); + _loc3_ = gg(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 12],20,-1926607734); + _loc2_ = hh(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 5],4,-378558); + _loc5_ = hh(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 8],11,-2022574463); + _loc4_ = hh(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 11],16,1839030562); + _loc3_ = hh(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 14],23,-35309556); + _loc2_ = hh(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 1],4,-1530992060); + _loc5_ = hh(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 4],11,1272893353); + _loc4_ = hh(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 7],16,-155497632); + _loc3_ = hh(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 10],23,-1094730640); + _loc2_ = hh(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 13],4,681279174); + _loc5_ = hh(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 0],11,-358537222); + _loc4_ = hh(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 3],16,-722521979); + _loc3_ = hh(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 6],23,76029189); + _loc2_ = hh(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 9],4,-640364487); + _loc5_ = hh(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 12],11,-421815835); + _loc4_ = hh(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 15],16,530742520); + _loc3_ = hh(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 2],23,-995338651); + _loc2_ = ii(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 0],6,-198630844); + _loc5_ = ii(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 7],10,1126891415); + _loc4_ = ii(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 14],15,-1416354905); + _loc3_ = ii(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 5],21,-57434055); + _loc2_ = ii(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 12],6,1700485571); + _loc5_ = ii(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 3],10,-1894986606); + _loc4_ = ii(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 10],15,-1051523); + _loc3_ = ii(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 1],21,-2054922799); + _loc2_ = ii(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 8],6,1873313359); + _loc5_ = ii(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 15],10,-30611744); + _loc4_ = ii(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 6],15,-1560198380); + _loc3_ = ii(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 13],21,1309151649); + _loc2_ = ii(_loc2_,_loc3_,_loc4_,_loc5_,_loc10_[_loc12_ + 4],6,-145523070); + _loc5_ = ii(_loc5_,_loc2_,_loc3_,_loc4_,_loc10_[_loc12_ + 11],10,-1120210379); + _loc4_ = ii(_loc4_,_loc5_,_loc2_,_loc3_,_loc10_[_loc12_ + 2],15,718787259); + _loc3_ = ii(_loc3_,_loc4_,_loc5_,_loc2_,_loc10_[_loc12_ + 9],21,-343485551); + _loc2_ = _loc2_ + _loc6_; + _loc3_ = _loc3_ + _loc7_; + _loc4_ = _loc4_ + _loc8_; + _loc5_ = _loc5_ + _loc9_; + _loc12_ = _loc12_ + 16; + } + return IntUtil.toHex(_loc2_) + IntUtil.toHex(_loc3_) + IntUtil.toHex(_loc4_) + IntUtil.toHex(_loc5_); + } + + private static function gg(param1:int, param2:int, param3:int, param4:int, param5:int, param6:int, param7:int) : int + { + return transform(g,param1,param2,param3,param4,param5,param6,param7); + } + } +} diff --git a/scripts/com/adobe/serialization/json/JS0N.as b/scripts/com/adobe/serialization/json/JS0N.as new file mode 100644 index 0000000..0e149ae --- /dev/null +++ b/scripts/com/adobe/serialization/json/JS0N.as @@ -0,0 +1,24 @@ +package com.adobe.serialization.json +{ + public class JS0N + { + + + public function JS0N() + { + super(); + } + + public static function encode(param1:Object) : String + { + var _loc2_:JSONEncoder = new JSONEncoder(param1); + return _loc2_.getString(); + } + + public static function decode(param1:String) : * + { + var _loc2_:JSONDecoder = new JSONDecoder(param1); + return _loc2_.getValue(); + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSON.as b/scripts/com/adobe/serialization/json/JSON.as new file mode 100644 index 0000000..2e25cd1 --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSON.as @@ -0,0 +1,26 @@ +package com.adobe.serialization.json +{ + public class JSON + { + + + public function JSON() + { + super(); + } + + public static function decode(param1:String) : * + { + var _loc2_:JSONDecoder = null; + _loc2_ = new JSONDecoder(param1); + return _loc2_.getValue(); + } + + public static function encode(param1:Object) : String + { + var _loc2_:JSONEncoder = null; + _loc2_ = new JSONEncoder(param1); + return _loc2_.getString(); + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONDecoder.as b/scripts/com/adobe/serialization/json/JSONDecoder.as new file mode 100644 index 0000000..d34d3b7 --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONDecoder.as @@ -0,0 +1,129 @@ +package com.adobe.serialization.json +{ + public class JSONDecoder + { + + + private var value; + + private var tokenizer:JSONTokenizer; + + private var token:JSONToken; + + public function JSONDecoder(param1:String) + { + super(); + this.tokenizer = new JSONTokenizer(param1); + this.nextToken(); + this.value = this.parseValue(); + } + + public function getValue() : * + { + return this.value; + } + + private function nextToken() : JSONToken + { + return this.token = this.tokenizer.getNextToken(); + } + + private function parseArray() : Array + { + var _loc1_:Array = new Array(); + this.nextToken(); + if(this.token.type == JSONTokenType.RIGHT_BRACKET) + { + return _loc1_; + } + while(true) + { + _loc1_.push(this.parseValue()); + this.nextToken(); + if(this.token.type == JSONTokenType.RIGHT_BRACKET) + { + break; + } + if(this.token.type == JSONTokenType.COMMA) + { + this.nextToken(); + } + else + { + this.tokenizer.parseError("Expecting ] or , but found " + this.token.value); + } + } + return _loc1_; + } + + private function parseObject() : Object + { + var _loc2_:String = null; + var _loc1_:Object = new Object(); + this.nextToken(); + if(this.token.type == JSONTokenType.RIGHT_BRACE) + { + return _loc1_; + } + while(true) + { + if(this.token.type == JSONTokenType.STRING) + { + _loc2_ = String(this.token.value); + this.nextToken(); + if(this.token.type == JSONTokenType.COLON) + { + this.nextToken(); + _loc1_[_loc2_] = this.parseValue(); + this.nextToken(); + if(this.token.type == JSONTokenType.RIGHT_BRACE) + { + break; + } + if(this.token.type == JSONTokenType.COMMA) + { + this.nextToken(); + } + else + { + this.tokenizer.parseError("Expecting } or , but found " + this.token.value); + } + } + else + { + this.tokenizer.parseError("Expecting : but found " + this.token.value); + } + } + else + { + this.tokenizer.parseError("Expecting string but found " + this.token.value); + } + } + return _loc1_; + } + + private function parseValue() : Object + { + if(this.token == null) + { + this.tokenizer.parseError("Unexpected end of input"); + } + switch(this.token.type) + { + case JSONTokenType.LEFT_BRACE: + return this.parseObject(); + case JSONTokenType.LEFT_BRACKET: + return this.parseArray(); + case JSONTokenType.STRING: + case JSONTokenType.NUMBER: + case JSONTokenType.TRUE: + case JSONTokenType.FALSE: + case JSONTokenType.NULL: + return this.token.value; + default: + this.tokenizer.parseError("Unexpected " + this.token.value); + return null; + } + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONEncoder.as b/scripts/com/adobe/serialization/json/JSONEncoder.as new file mode 100644 index 0000000..4e006a2 --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONEncoder.as @@ -0,0 +1,151 @@ +package com.adobe.serialization.json +{ + import flash.utils.describeType; + + public class JSONEncoder + { + + + private var jsonString:String; + + public function JSONEncoder(param1:*) + { + super(); + this.jsonString = this.convertToString(param1); + } + + public function getString() : String + { + return this.jsonString; + } + + private function convertToString(param1:*) : String + { + if(param1 is String) + { + return this.escapeString(param1 as String); + } + if(param1 is Number) + { + return !!isFinite(param1 as Number)?param1.toString():"null"; + } + if(param1 is Boolean) + { + return !!param1?"true":"false"; + } + if(param1 is Array) + { + return this.arrayToString(param1 as Array); + } + if(param1 is Object && param1 != null) + { + return this.objectToString(param1); + } + return "null"; + } + + private function escapeString(param1:String) : String + { + var _loc3_:String = null; + var _loc6_:String = null; + var _loc7_:String = null; + var _loc2_:* = ""; + var _loc4_:Number = param1.length; + var _loc5_:int = 0; + while(_loc5_ < _loc4_) + { + _loc3_ = param1.charAt(_loc5_); + switch(_loc3_) + { + case "\"": + _loc2_ = _loc2_ + "\\\""; + break; + case "\\": + _loc2_ = _loc2_ + "\\\\"; + break; + case "\b": + _loc2_ = _loc2_ + "\\b"; + break; + case "\f": + _loc2_ = _loc2_ + "\\f"; + break; + case "\n": + _loc2_ = _loc2_ + "\\n"; + break; + case "\r": + _loc2_ = _loc2_ + "\\r"; + break; + case "\t": + _loc2_ = _loc2_ + "\\t"; + break; + default: + if(_loc3_ < " ") + { + _loc6_ = _loc3_.charCodeAt(0).toString(16); + _loc7_ = _loc6_.length == 2?"00":"000"; + _loc2_ = _loc2_ + ("\\u" + _loc7_ + _loc6_); + } + else + { + _loc2_ = _loc2_ + _loc3_; + } + } + _loc5_++; + } + return "\"" + _loc2_ + "\""; + } + + private function arrayToString(param1:Array) : String + { + var _loc2_:* = ""; + var _loc3_:int = 0; + while(_loc3_ < param1.length) + { + if(_loc2_.length > 0) + { + _loc2_ = _loc2_ + ","; + } + _loc2_ = _loc2_ + this.convertToString(param1[_loc3_]); + _loc3_++; + } + return "[" + _loc2_ + "]"; + } + + private function objectToString(param1:Object) : String + { + var value:Object = null; + var key:String = null; + var v:XML = null; + var o:Object = param1; + var s:String = ""; + var classInfo:XML = describeType(o); + if(classInfo.@name.toString() == "Object") + { + for(key in o) + { + value = o[key]; + if(!(value is Function)) + { + if(s.length > 0) + { + s = s + ","; + } + s = s + (this.escapeString(key) + ":" + this.convertToString(value)); + } + } + } + else + { + for each(v in classInfo..*.(name() == "variable" || name() == "accessor")) + { + if(s.length > 0) + { + s = s + ","; + } + s = s + (this.escapeString(v.@name.toString()) + ":" + this.convertToString(o[v.@name])); + } + } + return "{" + s + "}"; + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONParseError.as b/scripts/com/adobe/serialization/json/JSONParseError.as new file mode 100644 index 0000000..e60234e --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONParseError.as @@ -0,0 +1,28 @@ +package com.adobe.serialization.json +{ + public class JSONParseError extends Error + { + + + private var _location:int; + + private var _text:String; + + public function JSONParseError(param1:String = "", param2:int = 0, param3:String = "") + { + super(param1); + this._location = param2; + this._text = param3; + } + + public function get location() : int + { + return this._location; + } + + public function get text() : String + { + return this._text; + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONToken.as b/scripts/com/adobe/serialization/json/JSONToken.as new file mode 100644 index 0000000..6e1da0a --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONToken.as @@ -0,0 +1,38 @@ +package com.adobe.serialization.json +{ + public class JSONToken + { + + + private var _type:int; + + private var _value:Object; + + public function JSONToken(param1:int = -1, param2:Object = null) + { + super(); + this._type = param1; + this._value = param2; + } + + public function get type() : int + { + return this._type; + } + + public function set type(param1:int) : void + { + this._type = param1; + } + + public function get value() : Object + { + return this._value; + } + + public function set value(param1:Object) : void + { + this._value = param1; + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONTokenType.as b/scripts/com/adobe/serialization/json/JSONTokenType.as new file mode 100644 index 0000000..73e0885 --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONTokenType.as @@ -0,0 +1,36 @@ +package com.adobe.serialization.json +{ + public class JSONTokenType + { + + public static const UNKNOWN:int = -1; + + public static const COMMA:int = 0; + + public static const LEFT_BRACE:int = 1; + + public static const RIGHT_BRACE:int = 2; + + public static const LEFT_BRACKET:int = 3; + + public static const RIGHT_BRACKET:int = 4; + + public static const COLON:int = 6; + + public static const TRUE:int = 7; + + public static const FALSE:int = 8; + + public static const NULL:int = 9; + + public static const STRING:int = 10; + + public static const NUMBER:int = 11; + + + public function JSONTokenType() + { + super(); + } + } +} diff --git a/scripts/com/adobe/serialization/json/JSONTokenizer.as b/scripts/com/adobe/serialization/json/JSONTokenizer.as new file mode 100644 index 0000000..137a5f3 --- /dev/null +++ b/scripts/com/adobe/serialization/json/JSONTokenizer.as @@ -0,0 +1,353 @@ +package com.adobe.serialization.json +{ + public class JSONTokenizer + { + + + private var obj:Object; + + private var jsonString:String; + + private var loc:int; + + private var ch:String; + + public function JSONTokenizer(param1:String) + { + super(); + this.jsonString = param1; + this.loc = 0; + this.nextChar(); + } + + public function getNextToken() : JSONToken + { + var _loc2_:String = null; + var _loc3_:String = null; + var _loc4_:String = null; + var _loc1_:JSONToken = new JSONToken(); + this.skipIgnored(); + switch(this.ch) + { + case "{": + _loc1_.type = JSONTokenType.LEFT_BRACE; + _loc1_.value = "{"; + this.nextChar(); + break; + case "}": + _loc1_.type = JSONTokenType.RIGHT_BRACE; + _loc1_.value = "}"; + this.nextChar(); + break; + case "[": + _loc1_.type = JSONTokenType.LEFT_BRACKET; + _loc1_.value = "["; + this.nextChar(); + break; + case "]": + _loc1_.type = JSONTokenType.RIGHT_BRACKET; + _loc1_.value = "]"; + this.nextChar(); + break; + case ",": + _loc1_.type = JSONTokenType.COMMA; + _loc1_.value = ","; + this.nextChar(); + break; + case ":": + _loc1_.type = JSONTokenType.COLON; + _loc1_.value = ":"; + this.nextChar(); + break; + case "t": + _loc2_ = "t" + this.nextChar() + this.nextChar() + this.nextChar(); + if(_loc2_ == "true") + { + _loc1_.type = JSONTokenType.TRUE; + _loc1_.value = true; + this.nextChar(); + } + else + { + this.parseError("Expecting \'true\' but found " + _loc2_); + } + break; + case "f": + _loc3_ = "f" + this.nextChar() + this.nextChar() + this.nextChar() + this.nextChar(); + if(_loc3_ == "false") + { + _loc1_.type = JSONTokenType.FALSE; + _loc1_.value = false; + this.nextChar(); + } + else + { + this.parseError("Expecting \'false\' but found " + _loc3_); + } + break; + case "n": + _loc4_ = "n" + this.nextChar() + this.nextChar() + this.nextChar(); + if(_loc4_ == "null") + { + _loc1_.type = JSONTokenType.NULL; + _loc1_.value = null; + this.nextChar(); + } + else + { + this.parseError("Expecting \'null\' but found " + _loc4_); + } + break; + case "\"": + _loc1_ = this.readString(); + break; + default: + if(this.isDigit(this.ch) || this.ch == "-") + { + _loc1_ = this.readNumber(); + } + else + { + if(this.ch == "") + { + return null; + } + this.parseError("Unexpected " + this.ch + " encountered"); + } + } + return _loc1_; + } + + private function readString() : JSONToken + { + var _loc3_:String = null; + var _loc4_:int = 0; + var _loc1_:JSONToken = new JSONToken(); + _loc1_.type = JSONTokenType.STRING; + var _loc2_:* = ""; + this.nextChar(); + while(this.ch != "\"" && this.ch != "") + { + if(this.ch == "\\") + { + this.nextChar(); + switch(this.ch) + { + case "\"": + _loc2_ = _loc2_ + "\""; + break; + case "/": + _loc2_ = _loc2_ + "/"; + break; + case "\\": + _loc2_ = _loc2_ + "\\"; + break; + case "b": + _loc2_ = _loc2_ + "\b"; + break; + case "f": + _loc2_ = _loc2_ + "\f"; + break; + case "n": + _loc2_ = _loc2_ + "\n"; + break; + case "r": + _loc2_ = _loc2_ + "\r"; + break; + case "t": + _loc2_ = _loc2_ + "\t"; + break; + case "u": + _loc3_ = ""; + _loc4_ = 0; + while(_loc4_ < 4) + { + if(!this.isHexDigit(this.nextChar())) + { + this.parseError(" Excepted a hex digit, but found: " + this.ch); + } + _loc3_ = _loc3_ + this.ch; + _loc4_++; + } + _loc2_ = _loc2_ + String.fromCharCode(parseInt(_loc3_,16)); + break; + default: + _loc2_ = _loc2_ + ("\\" + this.ch); + } + } + else + { + _loc2_ = _loc2_ + this.ch; + } + this.nextChar(); + } + if(this.ch == "") + { + this.parseError("Unterminated string literal"); + } + this.nextChar(); + _loc1_.value = _loc2_; + return _loc1_; + } + + private function readNumber() : JSONToken + { + var _loc1_:JSONToken = new JSONToken(); + _loc1_.type = JSONTokenType.NUMBER; + var _loc2_:* = ""; + if(this.ch == "-") + { + _loc2_ = _loc2_ + "-"; + this.nextChar(); + } + if(!this.isDigit(this.ch)) + { + this.parseError("Expecting a digit"); + } + if(this.ch == "0") + { + _loc2_ = _loc2_ + this.ch; + this.nextChar(); + if(this.isDigit(this.ch)) + { + this.parseError("A digit cannot immediately follow 0"); + } + } + else + { + while(this.isDigit(this.ch)) + { + _loc2_ = _loc2_ + this.ch; + this.nextChar(); + } + } + if(this.ch == ".") + { + _loc2_ = _loc2_ + "."; + this.nextChar(); + if(!this.isDigit(this.ch)) + { + this.parseError("Expecting a digit"); + } + while(this.isDigit(this.ch)) + { + _loc2_ = _loc2_ + this.ch; + this.nextChar(); + } + } + if(this.ch == "e" || this.ch == "E") + { + _loc2_ = _loc2_ + "e"; + this.nextChar(); + if(this.ch == "+" || this.ch == "-") + { + _loc2_ = _loc2_ + this.ch; + this.nextChar(); + } + if(!this.isDigit(this.ch)) + { + this.parseError("Scientific notation number needs exponent value"); + } + while(this.isDigit(this.ch)) + { + _loc2_ = _loc2_ + this.ch; + this.nextChar(); + } + } + var _loc3_:Number = Number(_loc2_); + if(isFinite(_loc3_) && !isNaN(_loc3_)) + { + _loc1_.value = _loc3_; + return _loc1_; + } + this.parseError("Number " + _loc3_ + " is not valid!"); + return null; + } + + private function nextChar() : String + { + return this.ch = this.jsonString.charAt(this.loc++); + } + + private function skipIgnored() : void + { + this.skipWhite(); + this.skipComments(); + this.skipWhite(); + } + + private function skipComments() : void + { + if(this.ch == "/") + { + this.nextChar(); + switch(this.ch) + { + case "/": + do + { + this.nextChar(); + } + while(this.ch != "\n" && this.ch != ""); + + this.nextChar(); + break; + case "*": + this.nextChar(); + while(true) + { + if(this.ch == "*") + { + this.nextChar(); + if(this.ch == "/") + { + break; + } + } + else + { + this.nextChar(); + } + if(this.ch == "") + { + this.parseError("Multi-line comment not closed"); + } + } + this.nextChar(); + break; + default: + this.parseError("Unexpected " + this.ch + " encountered (expecting \'/\' or \'*\' )"); + } + } + } + + private function skipWhite() : void + { + while(this.isWhiteSpace(this.ch)) + { + this.nextChar(); + } + } + + private function isWhiteSpace(param1:String) : Boolean + { + return param1 == " " || param1 == "\t" || param1 == "\n" || param1 == "\r"; + } + + private function isDigit(param1:String) : Boolean + { + return param1 >= "0" && param1 <= "9"; + } + + private function isHexDigit(param1:String) : Boolean + { + var _loc2_:String = param1.toUpperCase(); + return this.isDigit(param1) || _loc2_ >= "A" && _loc2_ <= "F"; + } + + public function parseError(param1:String) : void + { + throw new JSONParseError(param1,this.loc,this.jsonString); + } + } +} diff --git a/scripts/com/adobe/utils/IntUtil.as b/scripts/com/adobe/utils/IntUtil.as new file mode 100644 index 0000000..972d9f4 --- /dev/null +++ b/scripts/com/adobe/utils/IntUtil.as @@ -0,0 +1,53 @@ +package com.adobe.utils +{ + public class IntUtil + { + + private static var hexChars:String = "0123456789abcdef"; + + + public function IntUtil() + { + super(); + } + + public static function toHex(param1:int, param2:Boolean = false) : String + { + var _loc3_:String = null; + var _loc4_:int = 0; + var _loc5_:int = 0; + _loc3_ = ""; + if(param2) + { + _loc4_ = 0; + while(_loc4_ < 4) + { + _loc3_ = _loc3_ + (hexChars.charAt(param1 >> (3 - _loc4_) * 8 + 4 & 15) + hexChars.charAt(param1 >> (3 - _loc4_) * 8 & 15)); + _loc4_++; + } + } + else + { + _loc5_ = 0; + while(_loc5_ < 4) + { + _loc3_ = _loc3_ + (hexChars.charAt(param1 >> _loc5_ * 8 + 4 & 15) + hexChars.charAt(param1 >> _loc5_ * 8 & 15)); + _loc5_++; + } + } + return _loc3_; + } + + public static function ror(param1:int, param2:int) : uint + { + var _loc3_:int = 0; + _loc3_ = 32 - param2; + return param1 << _loc3_ | param1 >>> 32 - _loc3_; + } + + public static function rol(param1:int, param2:int) : int + { + return param1 << param2 | param1 >>> 32 - param2; + } + } +} diff --git a/scripts/com/adobe/webapis/gettext/GetText.as b/scripts/com/adobe/webapis/gettext/GetText.as new file mode 100644 index 0000000..32d08ca --- /dev/null +++ b/scripts/com/adobe/webapis/gettext/GetText.as @@ -0,0 +1,327 @@ +package com.adobe.webapis.gettext +{ + import flash.events.ErrorEvent; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.HTTPStatusEvent; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.utils.ByteArray; + import flash.utils.Endian; + + public class GetText extends EventDispatcher + { + + private static var singleton:GetText; + + public static const iso639_languageDict:Object = { + "aa":"Afar. ", + "ab":"Abkhazian", + "ae":"Avestan", + "af":"Afrikaans", + "am":"Amharic", + "ar":"Arabic", + "as":"Assamese", + "ay":"Aymara", + "az":"Azerbaijani", + "ba":"Bashkir", + "be":"Byelorussian; Belarusian", + "bg":"Bulgarian", + "bh":"Bihari", + "bi":"Bislama", + "bn":"Bengali; Bangla", + "bo":"Tibetan", + "br":"Breton", + "bs":"Bosnian", + "ca":"Catalan", + "ce":"Chechen", + "ch":"Chamorro", + "co":"Corsican", + "cs":"Czech", + "cu":"Church Slavic", + "cv":"Chuvash", + "cy":"Welsh", + "da":"Danish", + "de":"German", + "dz":"Dzongkha; Bhutani", + "el":"Greek", + "en":"English", + "eo":"Esperanto", + "es":"Spanish", + "et":"Estonian", + "eu":"Basque", + "fa":"Persian", + "fi":"Finnish", + "fj":"Fijian; Fiji", + "fo":"Faroese", + "fr":"French", + "fy":"Frisian", + "ga":"Irish", + "gd":"Scots; Gaelic", + "gl":"Gallegan; Galician", + "gn":"Guarani", + "gu":"Gujarati", + "gv":"Manx", + "ha":"Hausa (?)", + "he":"Hebrew (formerly iw)", + "hi":"Hindi", + "ho":"Hiri Motu", + "hr":"Croatian", + "hu":"Hungarian", + "hy":"Armenian", + "hz":"Herero", + "ia":"Interlingua", + "id":"Indonesian (formerly in)", + "ie":"Interlingue", + "ik":"Inupiak", + "io":"Ido", + "is":"Icelandic", + "it":"Italian", + "iu":"Inuktitut", + "ja":"Japanese", + "jv":"Javanese", + "ka":"Georgian", + "ki":"Kikuyu", + "kj":"Kuanyama", + "kk":"Kazakh", + "kl":"Kalaallisut; Greenlandic", + "km":"Khmer; Cambodian", + "kn":"Kannada", + "ko":"Korean", + "ks":"Kashmiri", + "ku":"Kurdish", + "kv":"Komi", + "kw":"Cornish", + "ky":"Kirghiz", + "la":"Latin", + "lb":"Letzeburgesch", + "ln":"Lingala", + "lo":"Lao; Laotian", + "lt":"Lithuanian", + "lv":"Latvian; Lettish", + "mg":"Malagasy", + "mh":"Marshall", + "mi":"Maori", + "mk":"Macedonian", + "ml":"Malayalam", + "mn":"Mongolian", + "mo":"Moldavian", + "mr":"Marathi", + "ms":"Malay", + "mt":"Maltese", + "my":"Burmese", + "na":"Nauru", + "nb":"Norwegian Bokmål", + "nd":"Ndebele, North", + "ne":"Nepali", + "ng":"Ndonga", + "nl":"Dutch", + "nn":"Norwegian Nynorsk", + "no":"Norwegian", + "nr":"Ndebele, South", + "nv":"Navajo", + "ny":"Chichewa; Nyanja", + "oc":"Occitan; Provençal", + "om":"(Afan) Oromo", + "or":"Oriya", + "os":"Ossetian; Ossetic", + "pa":"Panjabi; Punjabi", + "pi":"Pali", + "pl":"Polish", + "ps":"Pashto, Pushto", + "pt":"Portuguese", + "qu":"Quechua", + "rm":"Rhaeto-Romance", + "rn":"Rundi; Kirundi", + "ro":"Romanian", + "ru":"Russian", + "rw":"Kinyarwanda", + "sa":"Sanskrit", + "sc":"Sardinian", + "sd":"Sindhi", + "se":"Northern Sami", + "sg":"Sango; Sangro", + "si":"Sinhalese", + "sk":"Slovak", + "sl":"Slovenian", + "sm":"Samoan", + "sn":"Shona", + "so":"Somali", + "sq":"Albanian", + "sr":"Serbian", + "ss":"Swati; Siswati", + "st":"Sesotho; Sotho, Southern", + "su":"Sundanese", + "sv":"Swedish", + "sw":"Swahili", + "ta":"Tamil", + "te":"Telugu", + "tg":"Tajik", + "th":"Thai", + "ti":"Tigrinya", + "tk":"Turkmen", + "tl":"Tagalog", + "tn":"Tswana; Setswana", + "to":"Tonga", + "tr":"Turkish", + "ts":"Tsonga", + "tt":"Tatar", + "tw":"Twi", + "ty":"Tahitian", + "ug":"Uighur", + "uk":"Ukrainian", + "ur":"Urdu", + "uz":"Uzbek", + "vi":"Vietnamese", + "vo":"Volapük; Volapuk", + "wa":"Walloon", + "wo":"Wolof", + "xh":"Xhosa", + "yi":"Yiddish (formerly ji)", + "yo":"Yoruba", + "za":"Zhuang", + "zh":"Chinese", + "zh_tw":"Chinese Transitional", + "zh_cn":"Chinese Simplified", + "zu":"Zulu" + }; + + + private var translations:Object; + + private var name:String; + + private var language:String; + + private var charset:String; + + private var url:String; + + private var info:Object; + + private var xstream:URLStream; + + public function GetText(param1:Function = null) + { + super(); + } + + public static function getInstance() : GetText + { + if(GetText.singleton == null) + { + GetText.singleton = new GetText(arguments.callee); + } + return GetText.singleton; + } + + public static function FindLanguageInfo(param1:String) : String + { + if(iso639_languageDict.hasOwnProperty(param1)) + { + return iso639_languageDict[param1]; + } + return ""; + } + + public function getUrl() : String + { + return this.url; + } + + public function getName() : String + { + return this.name; + } + + protected function composeURLRequest() : URLRequest + { + var _loc1_:URLRequest = new URLRequest(this.url + this.getLocale() + "/" + this.name + ".mo"); + return _loc1_; + } + + public final function install() : void + { + var _loc1_:URLRequest = this.composeURLRequest(); + this.xstream = new URLStream(); + this.xstream.addEventListener(Event.COMPLETE,this.handleEvent); + this.xstream.addEventListener(Event.OPEN,this.handleEvent); + this.xstream.addEventListener(ProgressEvent.PROGRESS,this.handleEvent); + this.xstream.addEventListener(HTTPStatusEvent.HTTP_STATUS,this.handleEvent); + this.xstream.addEventListener(IOErrorEvent.IO_ERROR,this.handleEvent); + this.xstream.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.handleEvent); + this.xstream.load(_loc1_); + } + + public final function translation(param1:String, param2:String, param3:String) : void + { + this.url = "locale/"; + if(param2.length > 0) + { + this.url = param2; + } + this.name = param1; + this.language = param3; + } + + public function getLocale() : String + { + return this.language; + } + + protected function handleEvent(param1:Event) : void + { + var byte:ByteArray = null; + var retObject:Object = null; + var errEvent:ErrorEvent = null; + var event:Event = param1; + if(event.type == Event.COMPLETE) + { + byte = new ByteArray(); + byte.endian = Endian.LITTLE_ENDIAN; + event.target.readBytes(byte,0,event.target.bytesAvailable); + try + { + retObject = Parser.parse(byte); + this.translations = retObject.translation; + this.info = retObject.info; + this.charset = retObject.charset; + } + catch(e:Error) + { + errEvent = new ErrorEvent(ErrorEvent.ERROR,true,false,"EOFError: " + e.message); + this.dispatchEvent(errEvent); + return; + } + } + var evt:Event = new Event(event.type,true,true); + this.dispatchEvent(evt); + } + + public function translate(param1:String, param2:Boolean = false) : String + { + var id:String = param1; + var exception404:Boolean = param2; + try + { + if(this.translations.hasOwnProperty(id)) + { + return this.translations[id]; + } + throw new TypeError(); + } + catch(e:TypeError) + { + if(exception404) + { + throw e; + } + return id; + } + return ""; + } + } +} diff --git a/scripts/com/adobe/webapis/gettext/Parser.as b/scripts/com/adobe/webapis/gettext/Parser.as new file mode 100644 index 0000000..3be650c --- /dev/null +++ b/scripts/com/adobe/webapis/gettext/Parser.as @@ -0,0 +1,126 @@ +package com.adobe.webapis.gettext +{ + import flash.errors.IOError; + import flash.utils.ByteArray; + import flash.utils.Endian; + + public class Parser + { + + protected static const BE:uint = 3725722773; + + protected static const LE:uint = 2500072158; + + + public function Parser() + { + super(); + } + + public static function parse(param1:ByteArray) : Object + { + var _loc5_:String = null; + var _loc6_:String = null; + var _loc7_:String = null; + var _loc8_:Number = NaN; + var _loc9_:Number = NaN; + var _loc10_:Number = NaN; + var _loc11_:Number = NaN; + var _loc14_:Number = NaN; + var _loc15_:Number = NaN; + var _loc16_:Number = NaN; + var _loc17_:Number = NaN; + var _loc18_:Number = NaN; + var _loc19_:String = null; + var _loc20_:String = null; + var _loc21_:Number = NaN; + var _loc22_:Array = null; + var _loc23_:String = null; + var _loc24_:Array = null; + var _loc26_:uint = 0; + var _loc2_:Object = new Object(); + var _loc3_:Object = new Object(); + var _loc4_:String = ""; + var _loc12_:Number = param1.bytesAvailable; + var _loc13_:Number = param1.readUnsignedInt(); + if(_loc13_ == Parser.BE) + { + param1.endian = Endian.BIG_ENDIAN; + } + else if(_loc13_ == Parser.LE) + { + param1.endian = Endian.LITTLE_ENDIAN; + } + else + { + throw new IOError("Invalid file"); + } + _loc11_ = param1.readUnsignedInt(); + _loc10_ = param1.readUnsignedInt(); + _loc8_ = param1.readUnsignedInt(); + _loc9_ = param1.readUnsignedInt(); + var _loc25_:Number = 0; + while(_loc25_ < _loc10_) + { + param1.position = _loc8_; + _loc14_ = param1.readUnsignedInt(); + _loc15_ = param1.readUnsignedInt(); + _loc16_ = _loc15_ + _loc14_; + param1.position = _loc9_; + _loc17_ = param1.readUnsignedInt(); + _loc18_ = param1.readUnsignedInt(); + _loc21_ = _loc18_ + _loc17_; + if(_loc16_ < _loc12_ && _loc21_ < _loc12_) + { + param1.position = _loc15_; + _loc19_ = param1.readUTFBytes(_loc16_ - _loc15_); + param1.position = _loc18_; + _loc20_ = param1.readUTFBytes(_loc21_ - _loc18_); + _loc2_[_loc19_] = _loc20_; + if(_loc14_ == 0) + { + _loc5_ = _loc6_ = null; + _loc22_ = _loc20_.split("\n"); + _loc26_ = 0; + while(_loc26_ < _loc22_.length) + { + _loc23_ = _loc22_[_loc26_]; + if(_loc23_ != "") + { + if(_loc23_.indexOf(":") >= 0) + { + _loc24_ = _loc23_.split(":",2); + _loc6_ = _loc24_[0]; + _loc7_ = _loc24_[1]; + _loc6_ = _loc6_.toLowerCase(); + _loc3_[_loc6_] = _loc7_; + _loc5_ = _loc6_; + } + else if(_loc5_) + { + _loc3_[_loc5_] = _loc3_[_loc5_] + ("\n" + _loc23_); + } + if(_loc6_ == "content-type") + { + _loc4_ = _loc7_.split("charset=")[1]; + } + } + _loc26_++; + } + } + param1.position = 0; + _loc8_ = _loc8_ + 8; + _loc9_ = _loc9_ + 8; + _loc25_++; + continue; + } + throw IOError("File is corrupt"); + } + return { + "translation":_loc2_, + "info":_loc3_, + "charset":_loc4_ + }; + } + } +} diff --git a/scripts/creator.as b/scripts/creator.as new file mode 100644 index 0000000..38a57a8 --- /dev/null +++ b/scripts/creator.as @@ -0,0 +1,1782 @@ +package +{ + import anifire.component.EyeDropperScreenOverlay; + import anifire.constant.ServerConstants; + import anifire.creator.components.BodyShapeChooser; + import anifire.creator.components.BodyShapeMegaChooser; + import anifire.creator.components.CCLoadingScreen; + import anifire.creator.components.CcColorPickers; + import anifire.creator.components.CcComponentPropertyInspectorSpark; + import anifire.creator.components.CharPreviewOption; + import anifire.creator.components.CharPreviewer; + import anifire.creator.components.ClothesChooser; + import anifire.creator.components.ComponentThumbChooserSpark; + import anifire.creator.components.DecorationPanel; + import anifire.creator.components.ScaleChooserSpark; + import anifire.creator.components.TopButtons; + import anifire.creator.components.TypeChooserSpark; + import anifire.creator.components.facePreview; + import anifire.creator.config.GoAnimate; + import anifire.creator.core.CcConsole; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.interfaces.ICcCharEditorContainer; + import anifire.creator.interfaces.ICcMainUiContainer; + import anifire.creator.interfaces.ICcPreviewAndSaveContainer; + import anifire.creator.skins.ArrowTipContainerSkin; + import anifire.creator.skins.ConfirmPanelSkin; + import anifire.creator.skins.ConfirmPopUpSkin; + import anifire.creator.skins.DefaultButtonSkin; + import anifire.creator.skins.DefaultDropDownListSkin; + import anifire.creator.skins.DefaultHScrollBarSkin; + import anifire.creator.skins.DefaultTextInputSkin; + import anifire.creator.skins.DefaultVScrollBarSkin; + import anifire.creator.skins.FlatColorPickerSkin; + import anifire.creator.skins.IconButtonSkin; + import anifire.creator.skins.MenuItemListSkin; + import anifire.creator.skins.PrimaryButtonSkin; + import anifire.creator.skins.TopToolBarButtonSkin; + import anifire.managers.AppConfigManager; + import anifire.util.Util; + import anifire.util.UtilErrorLogger; + import anifire.utils.SecurityUtils; + import flash.events.Event; + import flash.events.UncaughtErrorEvent; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.State; + import mx.styles.CSSCondition; + import mx.styles.CSSSelector; + import mx.styles.CSSStyleDeclaration; + import spark.components.Application; + import spark.components.Group; + import spark.primitives.Line; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class creator extends Application implements ICcCharEditorContainer, ICcMainUiContainer, ICcPreviewAndSaveContainer, IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + { + SecurityUtils.init(); + } + + private var _267076680_ce_bodyShapeMegaChooser:BodyShapeMegaChooser; + + private var _495053373_ce_buttonBar:TopButtons; + + private var _1957548724_ce_buttonBar_preview:TopButtons; + + private var _1163196673_ce_charPreviewer:CharPreviewer; + + private var _1041579653_ce_charScaleChooser:ScaleChooserSpark; + + private var _931590865_ce_clothesChooser:ClothesChooser; + + private var _627432557_ce_colorPicker:CcColorPickers; + + private var _1243488953_ce_componentChooserViewStack:Group; + + private var _740228964_ce_componentThumbChooser:ComponentThumbChooserSpark; + + private var _309190686_ce_componentTypeChooser:TypeChooserSpark; + + private var _1659818534_ce_facePreviewer:facePreview; + + private var _678855911_ce_mainEditorComponentsContainer:Group; + + private var _164421228_ce_mainViewStack:Group; + + private var _580013481_ce_selectedDecoration:DecorationPanel; + + private var _614936982_ce_thumbPropertyInspector:CcComponentPropertyInspectorSpark; + + public var _creator_CCLoadingScreen1:CCLoadingScreen; + + private var _1246058471_topControl:Group; + + private var _361540722ccCharPreviewAndSaveScreen:Group; + + private var _1393817655eyedropperScreenCap:EyeDropperScreenOverlay; + + private var _1703153366mainViewStack:Group; + + private var _1262756942ps_charPreviewCanvas:Group; + + private var _1970784ps_charPreviewOptionBox:CharPreviewOption; + + private var _1263293821ps_charPreviewer:CharPreviewer; + + private var _1995015763ps_interactionViewStack:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _ccConsole:CcConsole; + + private var _componentInit:Boolean; + + private var _resourceInit:Boolean; + + protected var pendingStyleSheets:int; + + protected var localFlashVars:Boolean; + + protected var skipLocale:Boolean; + + protected var localClientTheme:Boolean; + + mx_internal var _creator_StylesInit_done:Boolean = false; + + private var _embed__font_StudioSparkMain_medium_normal_1328217743:Class; + + private var _embed__font_StudioSparkMain_medium_italic_932513666:Class; + + private var _embed__font_StudioSparkMain_bold_normal_252592600:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function creator() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed__font_StudioSparkMain_medium_normal_1328217743 = creator__embed__font_StudioSparkMain_medium_normal_1328217743; + this._embed__font_StudioSparkMain_medium_italic_932513666 = creator__embed__font_StudioSparkMain_medium_italic_932513666; + this._embed__font_StudioSparkMain_bold_normal_252592600 = creator__embed__font_StudioSparkMain_bold_normal_252592600; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._creator_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_creatorWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return creator[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 960; + this.height = 600; + this.creationPolicy = "auto"; + this.mxmlContentFactory = new DeferredInstanceFromFunction(this._creator_Array2_c); + this.currentState = "loading"; + this.addEventListener("preinitialize",this.___creator_Application1_preinitialize); + this.addEventListener("applicationComplete",this.___creator_Application1_applicationComplete); + var _creator_CCLoadingScreen1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._creator_CCLoadingScreen1_i); + states = [new State({ + "name":"loading", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_creator_CCLoadingScreen1_factory, + "destination":null, + "position":"after", + "relativeTo":["eyedropperScreenCap"] + })] + }),new State({ + "name":"ready", + "overrides":[new SetProperty().initializeFromObject({ + "target":"mainViewStack", + "name":"visible", + "value":true + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + creator._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.backgroundAlpha = 0; + this.backgroundColor = 16645629; + }; + mx_internal::_creator_StylesInit(); + } + + override public function initialize() : void + { + super.initialize(); + } + + private function initApp() : void + { + if(this.skipLocale) + { + this.onClientLocaleComplete(); + } + else + { + Util.loadClientLocale("go",this.onClientLocaleComplete); + } + } + + private function onClientLocaleComplete(param1:Event = null) : void + { + this.resourceComplete(); + } + + private function uncaughtErrorHandler(param1:UncaughtErrorEvent) : void + { + UtilErrorLogger.getInstance().fatal("uncaughtErrorHandler: " + new Error().getStackTrace()); + } + + private function onApplicationComplete() : void + { + this._componentInit = true; + if(this._resourceInit) + { + this.initialConsole(); + } + } + + private function resourceComplete() : void + { + this._resourceInit = true; + if(this._componentInit) + { + this.initialConsole(); + } + } + + private function initialConsole() : void + { + var _loc1_:AppConfigManager = AppConfigManager.instance; + var _loc2_:String = _loc1_.getValue(ServerConstants.FLASHVAR_SITE_ID); + CcConsole.setConfiguration(new GoAnimate()); + CcConsole.initializeCcConsole(this,this,this); + this._ccConsole = CcConsole.getCcConsole(); + this._ccConsole.addEventListener(CcCoreEvent.LOAD_EVERYTHING_COMPLETE,this.loadComplete); + } + + private function loadComplete(param1:Event) : void + { + this.setCurrentState("ready"); + } + + public function get ui_main_ViewStack() : Group + { + return this.mainViewStack; + } + + public function get ui_main_ccCharEditor() : Group + { + return this._ce_mainViewStack; + } + + public function get ui_main_ccCharPreviewAndSaveScreen() : Group + { + return this.ccCharPreviewAndSaveScreen; + } + + public function get ui_ps_charPreviewer() : CharPreviewer + { + return this.ps_charPreviewer; + } + + public function get ui_ps_interactionViewStack() : Group + { + return this.ps_interactionViewStack; + } + + public function get ui_ps_charPreviewCanvas() : Group + { + return this.ps_charPreviewCanvas; + } + + public function get ui_ps_charPreviewOptionBox() : CharPreviewOption + { + return this.ps_charPreviewOptionBox; + } + + public function get ui_ce_bodyShapeMegaChooser() : BodyShapeMegaChooser + { + return this._ce_bodyShapeMegaChooser; + } + + public function get ui_ce_bodyShapeChooser() : BodyShapeChooser + { + return this._ce_bodyShapeMegaChooser.bodyShapeChooser; + } + + public function get ui_ce_componentTypeChooser() : TypeChooserSpark + { + return this._ce_componentTypeChooser; + } + + public function get ui_ce_charPreviewer() : CharPreviewer + { + return this._ce_charPreviewer; + } + + public function get ui_ce_facePreviewer() : CharPreviewer + { + return this._ce_facePreviewer.face; + } + + public function get ui_ce_colorPicker() : CcColorPickers + { + return this._ce_colorPicker; + } + + public function get ui_ce_buttonBar() : TopButtons + { + return this._ce_buttonBar; + } + + public function get ui_ps_buttonBar() : TopButtons + { + return this._ce_buttonBar_preview; + } + + public function get ui_ce_componentChooserViewStack() : Group + { + return this._ce_componentChooserViewStack; + } + + public function get ui_ce_componentThumbChooser() : ComponentThumbChooserSpark + { + return this._ce_componentThumbChooser; + } + + public function get ui_ce_clothesChooser() : ClothesChooser + { + return this._ce_clothesChooser; + } + + public function get ui_ce_thumbPropertyInspector() : CcComponentPropertyInspectorSpark + { + return this._ce_thumbPropertyInspector; + } + + public function get ui_ce_selectedDecoration() : DecorationPanel + { + return this._ce_selectedDecoration; + } + + public function get ui_ce_mainViewStack() : Group + { + return this._ce_mainViewStack; + } + + public function get ui_ce_mainEditorComponentsContainer() : Group + { + return this._ce_mainEditorComponentsContainer; + } + + public function get ui_ce_charScaleChooser() : ScaleChooserSpark + { + return this._ce_charScaleChooser; + } + + private function _creator_Array2_c() : Array + { + var _loc1_:Array = [this._creator_Group1_i(),this._creator_EyeDropperScreenOverlay1_i()]; + return _loc1_; + } + + private function _creator_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.visible = false; + _loc1_.clipAndEnableScrolling = true; + _loc1_.mxmlContent = [this._creator_Rect1_c(),this._creator_Group2_i(),this._creator_Group6_i()]; + _loc1_.id = "mainViewStack"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.mainViewStack = _loc1_; + BindingManager.executeBindings(this,"mainViewStack",this.mainViewStack); + return _loc1_; + } + + private function _creator_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._creator_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _creator_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._creator_BodyShapeMegaChooser1_i(),this._creator_Group3_i()]; + _loc1_.id = "_ce_mainViewStack"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_mainViewStack = _loc1_; + BindingManager.executeBindings(this,"_ce_mainViewStack",this._ce_mainViewStack); + return _loc1_; + } + + private function _creator_BodyShapeMegaChooser1_i() : BodyShapeMegaChooser + { + var _loc1_:BodyShapeMegaChooser = new BodyShapeMegaChooser(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.visible = false; + _loc1_.id = "_ce_bodyShapeMegaChooser"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_bodyShapeMegaChooser = _loc1_; + BindingManager.executeBindings(this,"_ce_bodyShapeMegaChooser",this._ce_bodyShapeMegaChooser); + return _loc1_; + } + + private function _creator_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 960; + _loc1_.height = 600; + _loc1_.styleName = "bgCharEditor"; + _loc1_.mxmlContent = [this._creator_CharPreviewer1_i(),this._creator_facePreview1_i(),this._creator_Group4_i(),this._creator_CcColorPickers1_i(),this._creator_CcComponentPropertyInspectorSpark1_i(),this._creator_Group5_i(),this._creator_DecorationPanel1_i(),this._creator_ScaleChooserSpark1_i()]; + _loc1_.id = "_ce_mainEditorComponentsContainer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_mainEditorComponentsContainer = _loc1_; + BindingManager.executeBindings(this,"_ce_mainEditorComponentsContainer",this._ce_mainEditorComponentsContainer); + return _loc1_; + } + + private function _creator_CharPreviewer1_i() : CharPreviewer + { + var _loc1_:CharPreviewer = new CharPreviewer(); + _loc1_.x = 609; + _loc1_.y = 68; + _loc1_.width = 300; + _loc1_.height = 315; + _loc1_.scaleX = 1.3; + _loc1_.scaleY = 1.3; + _loc1_.id = "_ce_charPreviewer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_charPreviewer = _loc1_; + BindingManager.executeBindings(this,"_ce_charPreviewer",this._ce_charPreviewer); + return _loc1_; + } + + private function _creator_facePreview1_i() : facePreview + { + var _loc1_:facePreview = new facePreview(); + _loc1_.x = 654; + _loc1_.y = 68; + _loc1_.width = 300; + _loc1_.height = 430; + _loc1_.id = "_ce_facePreviewer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_facePreviewer = _loc1_; + BindingManager.executeBindings(this,"_ce_facePreviewer",this._ce_facePreviewer); + return _loc1_; + } + + private function _creator_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.top = 0; + _loc1_.left = 0; + _loc1_.width = 960; + _loc1_.height = 68; + _loc1_.mxmlContent = [this._creator_Rect2_c(),this._creator_TypeChooserSpark1_i(),this._creator_TopButtons1_i(),this._creator_Line1_c(),this._creator_Line2_c()]; + _loc1_.id = "_topControl"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._topControl = _loc1_; + BindingManager.executeBindings(this,"_topControl",this._topControl); + return _loc1_; + } + + private function _creator_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._creator_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _creator_TypeChooserSpark1_i() : TypeChooserSpark + { + var _loc1_:TypeChooserSpark = new TypeChooserSpark(); + _loc1_.left = 4; + _loc1_.top = 0; + _loc1_.width = 640; + _loc1_.height = 68; + _loc1_.id = "_ce_componentTypeChooser"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_componentTypeChooser = _loc1_; + BindingManager.executeBindings(this,"_ce_componentTypeChooser",this._ce_componentTypeChooser); + return _loc1_; + } + + private function _creator_TopButtons1_i() : TopButtons + { + var _loc1_:TopButtons = new TopButtons(); + _loc1_.right = 0; + _loc1_.width = 300; + _loc1_.height = 68; + _loc1_.id = "_ce_buttonBar"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_buttonBar = _loc1_; + BindingManager.executeBindings(this,"_ce_buttonBar",this._ce_buttonBar); + return _loc1_; + } + + private function _creator_Line1_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.percentWidth = 100; + _loc1_.top = 0; + _loc1_.stroke = this._creator_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + return _loc1_; + } + + private function _creator_Line2_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.percentWidth = 100; + _loc1_.bottom = 0; + _loc1_.stroke = this._creator_SolidColorStroke2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + return _loc1_; + } + + private function _creator_CcColorPickers1_i() : CcColorPickers + { + var _loc1_:CcColorPickers = new CcColorPickers(); + _loc1_.bottom = 10; + _loc1_.right = 45; + _loc1_.width = 248; + _loc1_.height = 62; + _loc1_.biggerElementWidth = 248; + _loc1_.smallerElementWidth = 248; + _loc1_.id = "_ce_colorPicker"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_colorPicker = _loc1_; + BindingManager.executeBindings(this,"_ce_colorPicker",this._ce_colorPicker); + return _loc1_; + } + + private function _creator_CcComponentPropertyInspectorSpark1_i() : CcComponentPropertyInspectorSpark + { + var _loc1_:CcComponentPropertyInspectorSpark = new CcComponentPropertyInspectorSpark(); + _loc1_.bottom = 0; + _loc1_.right = 0; + _loc1_.id = "_ce_thumbPropertyInspector"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_thumbPropertyInspector = _loc1_; + BindingManager.executeBindings(this,"_ce_thumbPropertyInspector",this._ce_thumbPropertyInspector); + return _loc1_; + } + + private function _creator_Group5_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.top = 68; + _loc1_.left = 0; + _loc1_.width = 654; + _loc1_.height = 532; + _loc1_.mxmlContent = [this._creator_Rect3_c(),this._creator_ComponentThumbChooserSpark1_i(),this._creator_ClothesChooser1_i()]; + _loc1_.id = "_ce_componentChooserViewStack"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_componentChooserViewStack = _loc1_; + BindingManager.executeBindings(this,"_ce_componentChooserViewStack",this._ce_componentChooserViewStack); + return _loc1_; + } + + private function _creator_Rect3_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._creator_SolidColor3_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColor3_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + _loc1_.alpha = 0; + return _loc1_; + } + + private function _creator_ComponentThumbChooserSpark1_i() : ComponentThumbChooserSpark + { + var _loc1_:ComponentThumbChooserSpark = new ComponentThumbChooserSpark(); + _loc1_.biggerHeight = 532; + _loc1_.width = 654; + _loc1_.height = 532; + _loc1_.id = "_ce_componentThumbChooser"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_componentThumbChooser = _loc1_; + BindingManager.executeBindings(this,"_ce_componentThumbChooser",this._ce_componentThumbChooser); + return _loc1_; + } + + private function _creator_ClothesChooser1_i() : ClothesChooser + { + var _loc1_:ClothesChooser = new ClothesChooser(); + _loc1_.y = 10; + _loc1_.percentWidth = 100; + _loc1_.height = 250; + _loc1_.visible = false; + _loc1_.clipContent = false; + _loc1_.thumbChooserWidth = 463; + _loc1_.biggerHeight = 70; + _loc1_.smallerHeight = 70; + _loc1_.creationPolicy = "all"; + _loc1_.setStyle("verticalGap",50); + _loc1_.id = "_ce_clothesChooser"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_clothesChooser = _loc1_; + BindingManager.executeBindings(this,"_ce_clothesChooser",this._ce_clothesChooser); + return _loc1_; + } + + private function _creator_DecorationPanel1_i() : DecorationPanel + { + var _loc1_:DecorationPanel = new DecorationPanel(); + _loc1_.left = 0; + _loc1_.bottom = 0; + _loc1_.width = 654; + _loc1_.height = 90; + _loc1_.id = "_ce_selectedDecoration"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_selectedDecoration = _loc1_; + BindingManager.executeBindings(this,"_ce_selectedDecoration",this._ce_selectedDecoration); + return _loc1_; + } + + private function _creator_ScaleChooserSpark1_i() : ScaleChooserSpark + { + var _loc1_:ScaleChooserSpark = new ScaleChooserSpark(); + _loc1_.bottom = 0; + _loc1_.right = 0; + _loc1_.id = "_ce_charScaleChooser"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_charScaleChooser = _loc1_; + BindingManager.executeBindings(this,"_ce_charScaleChooser",this._ce_charScaleChooser); + return _loc1_; + } + + private function _creator_Group6_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.visible = false; + _loc1_.mxmlContent = [this._creator_Group7_i()]; + _loc1_.id = "ccCharPreviewAndSaveScreen"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ccCharPreviewAndSaveScreen = _loc1_; + BindingManager.executeBindings(this,"ccCharPreviewAndSaveScreen",this.ccCharPreviewAndSaveScreen); + return _loc1_; + } + + private function _creator_Group7_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.x = 0; + _loc1_.y = 0; + _loc1_.percentWidth = 100; + _loc1_.height = 600; + _loc1_.mxmlContent = [this._creator_CharPreviewer2_i(),this._creator_Group8_i()]; + _loc1_.id = "ps_interactionViewStack"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ps_interactionViewStack = _loc1_; + BindingManager.executeBindings(this,"ps_interactionViewStack",this.ps_interactionViewStack); + return _loc1_; + } + + private function _creator_CharPreviewer2_i() : CharPreviewer + { + var _loc1_:CharPreviewer = new CharPreviewer(); + _loc1_.width = 300; + _loc1_.height = 200; + _loc1_.scaleX = 1.5; + _loc1_.scaleY = 1.5; + _loc1_.clipContent = false; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 20; + _loc1_.id = "ps_charPreviewer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ps_charPreviewer = _loc1_; + BindingManager.executeBindings(this,"ps_charPreviewer",this.ps_charPreviewer); + return _loc1_; + } + + private function _creator_Group8_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._creator_CharPreviewOption1_i(),this._creator_Group9_c()]; + _loc1_.id = "ps_charPreviewCanvas"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ps_charPreviewCanvas = _loc1_; + BindingManager.executeBindings(this,"ps_charPreviewCanvas",this.ps_charPreviewCanvas); + return _loc1_; + } + + private function _creator_CharPreviewOption1_i() : CharPreviewOption + { + var _loc1_:CharPreviewOption = new CharPreviewOption(); + _loc1_.bottom = 15; + _loc1_.horizontalCenter = 0; + _loc1_.id = "ps_charPreviewOptionBox"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ps_charPreviewOptionBox = _loc1_; + BindingManager.executeBindings(this,"ps_charPreviewOptionBox",this.ps_charPreviewOptionBox); + return _loc1_; + } + + private function _creator_Group9_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.top = 0; + _loc1_.left = 0; + _loc1_.width = 960; + _loc1_.height = 68; + _loc1_.mxmlContent = [this._creator_TopButtons2_i(),this._creator_Line3_c(),this._creator_Line4_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _creator_TopButtons2_i() : TopButtons + { + var _loc1_:TopButtons = new TopButtons(); + _loc1_.right = 0; + _loc1_.width = 300; + _loc1_.height = 68; + _loc1_.id = "_ce_buttonBar_preview"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ce_buttonBar_preview = _loc1_; + BindingManager.executeBindings(this,"_ce_buttonBar_preview",this._ce_buttonBar_preview); + return _loc1_; + } + + private function _creator_Line3_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.percentWidth = 100; + _loc1_.top = 0; + _loc1_.stroke = this._creator_SolidColorStroke3_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColorStroke3_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + return _loc1_; + } + + private function _creator_Line4_c() : Line + { + var _loc1_:Line = new Line(); + _loc1_.percentWidth = 100; + _loc1_.bottom = 0; + _loc1_.stroke = this._creator_SolidColorStroke4_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _creator_SolidColorStroke4_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + return _loc1_; + } + + private function _creator_EyeDropperScreenOverlay1_i() : EyeDropperScreenOverlay + { + var _loc1_:EyeDropperScreenOverlay = new EyeDropperScreenOverlay(); + _loc1_.id = "eyedropperScreenCap"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.eyedropperScreenCap = _loc1_; + BindingManager.executeBindings(this,"eyedropperScreenCap",this.eyedropperScreenCap); + return _loc1_; + } + + private function _creator_CCLoadingScreen1_i() : CCLoadingScreen + { + var _loc1_:CCLoadingScreen = new CCLoadingScreen(); + _loc1_.id = "_creator_CCLoadingScreen1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._creator_CCLoadingScreen1 = _loc1_; + BindingManager.executeBindings(this,"_creator_CCLoadingScreen1",this._creator_CCLoadingScreen1); + return _loc1_; + } + + public function ___creator_Application1_preinitialize(param1:FlexEvent) : void + { + this.initApp(); + } + + public function ___creator_Application1_applicationComplete(param1:FlexEvent) : void + { + this.onApplicationComplete(); + } + + private function _creator_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Number + { + return 532 - _ce_selectedDecoration.height; + },null,"_ce_componentThumbChooser.smallerHeight"); + return result; + } + + mx_internal function _creator_StylesInit() : void + { + var style:CSSStyleDeclaration = null; + var effects:Array = null; + var conditions:Array = null; + var condition:CSSCondition = null; + var selector:CSSSelector = null; + if(mx_internal::_creator_StylesInit_done) + { + return; + } + mx_internal::_creator_StylesInit_done = true; + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("global",conditions,selector); + style = styleManager.getStyleDeclaration("global"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.layoutDirection = "ltr"; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.Application",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.Application"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.fontSize = 13; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.HScrollBar",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.HScrollBar"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = DefaultHScrollBarSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.VScrollBar",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.VScrollBar"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = DefaultVScrollBarSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.supportClasses.TextBase",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.supportClasses.TextBase"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.fontLookup = "embeddedCFF"; + this.color = 5331305; + this.fontStyle = "normal"; + this.fontFamily = "StudioSparkMain"; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.supportClasses.SkinnableTextBase",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.supportClasses.SkinnableTextBase"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.fontLookup = "embeddedCFF"; + this.color = 5331305; + this.fontStyle = "normal"; + this.fontFamily = "StudioSparkMain"; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.RichEditableText",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.RichEditableText"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.fontLookup = "embeddedCFF"; + this.color = 5331305; + this.fontStyle = "normal"; + this.fontFamily = "StudioSparkMain"; + }; + } + selector = null; + conditions = null; + conditions = []; + condition = new CSSCondition("id","promptDisplay"); + conditions.push(condition); + selector = new CSSSelector("spark.components.Label",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.Label#promptDisplay"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.color = 13421772; + this.fontStyle = "normal"; + }; + } + selector = null; + conditions = null; + conditions = []; + condition = new CSSCondition("id","errorTextDisplay"); + conditions.push(condition); + selector = new CSSSelector("spark.components.RichText",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.RichText#errorTextDisplay"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.fontSize = 11; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.TextInput",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.TextInput"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.borderColor = 13290196; + this.skinClass = DefaultTextInputSkin; + }; + } + selector = null; + conditions = null; + conditions = []; + condition = new CSSCondition("class","primary"); + conditions.push(condition); + selector = new CSSSelector("spark.components.Button",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.Button.primary"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = PrimaryButtonSkin; + }; + } + selector = null; + conditions = null; + conditions = []; + condition = new CSSCondition("class","default"); + conditions.push(condition); + selector = new CSSSelector("spark.components.Button",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.Button.default"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = DefaultButtonSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("anifire.creator.components.IconButton",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.creator.components.IconButton"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = IconButtonSkin; + }; + } + selector = null; + conditions = null; + conditions = []; + condition = new CSSCondition("class","topToolBar"); + conditions.push(condition); + selector = new CSSSelector("anifire.components.IconButton",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.components.IconButton.topToolBar"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = TopToolBarButtonSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("anifire.creator.components.MenuItemList",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.creator.components.MenuItemList"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = MenuItemListSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("anifire.creator.components.ColorPicker",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.creator.components.ColorPicker"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = FlatColorPickerSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("anifire.creator.components.ArrowTipContainer",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.creator.components.ArrowTipContainer"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = ArrowTipContainerSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.DropDownList",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.DropDownList"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = DefaultDropDownListSkin; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("anifire.creator.components.ConfirmPopUp",conditions,selector); + style = styleManager.getStyleDeclaration("anifire.creator.components.ConfirmPopUp"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = ConfirmPopUpSkin; + this.fontSize = 14; + }; + } + selector = null; + conditions = null; + conditions = null; + selector = new CSSSelector("spark.components.Panel",conditions,selector); + style = styleManager.getStyleDeclaration("spark.components.Panel"); + if(!style) + { + style = new CSSStyleDeclaration(selector,styleManager); + } + if(style.factory == null) + { + style.factory = function():void + { + this.skinClass = ConfirmPanelSkin; + }; + } + styleManager.initProtoChainRoots(); + } + + [Bindable(event="propertyChange")] + public function get _ce_bodyShapeMegaChooser() : BodyShapeMegaChooser + { + return this._267076680_ce_bodyShapeMegaChooser; + } + + public function set _ce_bodyShapeMegaChooser(param1:BodyShapeMegaChooser) : void + { + var _loc2_:Object = this._267076680_ce_bodyShapeMegaChooser; + if(_loc2_ !== param1) + { + this._267076680_ce_bodyShapeMegaChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_bodyShapeMegaChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_buttonBar() : TopButtons + { + return this._495053373_ce_buttonBar; + } + + public function set _ce_buttonBar(param1:TopButtons) : void + { + var _loc2_:Object = this._495053373_ce_buttonBar; + if(_loc2_ !== param1) + { + this._495053373_ce_buttonBar = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_buttonBar",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_buttonBar_preview() : TopButtons + { + return this._1957548724_ce_buttonBar_preview; + } + + public function set _ce_buttonBar_preview(param1:TopButtons) : void + { + var _loc2_:Object = this._1957548724_ce_buttonBar_preview; + if(_loc2_ !== param1) + { + this._1957548724_ce_buttonBar_preview = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_buttonBar_preview",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_charPreviewer() : CharPreviewer + { + return this._1163196673_ce_charPreviewer; + } + + public function set _ce_charPreviewer(param1:CharPreviewer) : void + { + var _loc2_:Object = this._1163196673_ce_charPreviewer; + if(_loc2_ !== param1) + { + this._1163196673_ce_charPreviewer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_charPreviewer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_charScaleChooser() : ScaleChooserSpark + { + return this._1041579653_ce_charScaleChooser; + } + + public function set _ce_charScaleChooser(param1:ScaleChooserSpark) : void + { + var _loc2_:Object = this._1041579653_ce_charScaleChooser; + if(_loc2_ !== param1) + { + this._1041579653_ce_charScaleChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_charScaleChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_clothesChooser() : ClothesChooser + { + return this._931590865_ce_clothesChooser; + } + + public function set _ce_clothesChooser(param1:ClothesChooser) : void + { + var _loc2_:Object = this._931590865_ce_clothesChooser; + if(_loc2_ !== param1) + { + this._931590865_ce_clothesChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_clothesChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_colorPicker() : CcColorPickers + { + return this._627432557_ce_colorPicker; + } + + public function set _ce_colorPicker(param1:CcColorPickers) : void + { + var _loc2_:Object = this._627432557_ce_colorPicker; + if(_loc2_ !== param1) + { + this._627432557_ce_colorPicker = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_colorPicker",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_componentChooserViewStack() : Group + { + return this._1243488953_ce_componentChooserViewStack; + } + + public function set _ce_componentChooserViewStack(param1:Group) : void + { + var _loc2_:Object = this._1243488953_ce_componentChooserViewStack; + if(_loc2_ !== param1) + { + this._1243488953_ce_componentChooserViewStack = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_componentChooserViewStack",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_componentThumbChooser() : ComponentThumbChooserSpark + { + return this._740228964_ce_componentThumbChooser; + } + + public function set _ce_componentThumbChooser(param1:ComponentThumbChooserSpark) : void + { + var _loc2_:Object = this._740228964_ce_componentThumbChooser; + if(_loc2_ !== param1) + { + this._740228964_ce_componentThumbChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_componentThumbChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_componentTypeChooser() : TypeChooserSpark + { + return this._309190686_ce_componentTypeChooser; + } + + public function set _ce_componentTypeChooser(param1:TypeChooserSpark) : void + { + var _loc2_:Object = this._309190686_ce_componentTypeChooser; + if(_loc2_ !== param1) + { + this._309190686_ce_componentTypeChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_componentTypeChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_facePreviewer() : facePreview + { + return this._1659818534_ce_facePreviewer; + } + + public function set _ce_facePreviewer(param1:facePreview) : void + { + var _loc2_:Object = this._1659818534_ce_facePreviewer; + if(_loc2_ !== param1) + { + this._1659818534_ce_facePreviewer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_facePreviewer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_mainEditorComponentsContainer() : Group + { + return this._678855911_ce_mainEditorComponentsContainer; + } + + public function set _ce_mainEditorComponentsContainer(param1:Group) : void + { + var _loc2_:Object = this._678855911_ce_mainEditorComponentsContainer; + if(_loc2_ !== param1) + { + this._678855911_ce_mainEditorComponentsContainer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_mainEditorComponentsContainer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_mainViewStack() : Group + { + return this._164421228_ce_mainViewStack; + } + + public function set _ce_mainViewStack(param1:Group) : void + { + var _loc2_:Object = this._164421228_ce_mainViewStack; + if(_loc2_ !== param1) + { + this._164421228_ce_mainViewStack = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_mainViewStack",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_selectedDecoration() : DecorationPanel + { + return this._580013481_ce_selectedDecoration; + } + + public function set _ce_selectedDecoration(param1:DecorationPanel) : void + { + var _loc2_:Object = this._580013481_ce_selectedDecoration; + if(_loc2_ !== param1) + { + this._580013481_ce_selectedDecoration = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_selectedDecoration",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ce_thumbPropertyInspector() : CcComponentPropertyInspectorSpark + { + return this._614936982_ce_thumbPropertyInspector; + } + + public function set _ce_thumbPropertyInspector(param1:CcComponentPropertyInspectorSpark) : void + { + var _loc2_:Object = this._614936982_ce_thumbPropertyInspector; + if(_loc2_ !== param1) + { + this._614936982_ce_thumbPropertyInspector = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_thumbPropertyInspector",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _topControl() : Group + { + return this._1246058471_topControl; + } + + public function set _topControl(param1:Group) : void + { + var _loc2_:Object = this._1246058471_topControl; + if(_loc2_ !== param1) + { + this._1246058471_topControl = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_topControl",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ccCharPreviewAndSaveScreen() : Group + { + return this._361540722ccCharPreviewAndSaveScreen; + } + + public function set ccCharPreviewAndSaveScreen(param1:Group) : void + { + var _loc2_:Object = this._361540722ccCharPreviewAndSaveScreen; + if(_loc2_ !== param1) + { + this._361540722ccCharPreviewAndSaveScreen = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ccCharPreviewAndSaveScreen",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get eyedropperScreenCap() : EyeDropperScreenOverlay + { + return this._1393817655eyedropperScreenCap; + } + + public function set eyedropperScreenCap(param1:EyeDropperScreenOverlay) : void + { + var _loc2_:Object = this._1393817655eyedropperScreenCap; + if(_loc2_ !== param1) + { + this._1393817655eyedropperScreenCap = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"eyedropperScreenCap",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get mainViewStack() : Group + { + return this._1703153366mainViewStack; + } + + public function set mainViewStack(param1:Group) : void + { + var _loc2_:Object = this._1703153366mainViewStack; + if(_loc2_ !== param1) + { + this._1703153366mainViewStack = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"mainViewStack",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ps_charPreviewCanvas() : Group + { + return this._1262756942ps_charPreviewCanvas; + } + + public function set ps_charPreviewCanvas(param1:Group) : void + { + var _loc2_:Object = this._1262756942ps_charPreviewCanvas; + if(_loc2_ !== param1) + { + this._1262756942ps_charPreviewCanvas = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ps_charPreviewCanvas",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ps_charPreviewOptionBox() : CharPreviewOption + { + return this._1970784ps_charPreviewOptionBox; + } + + public function set ps_charPreviewOptionBox(param1:CharPreviewOption) : void + { + var _loc2_:Object = this._1970784ps_charPreviewOptionBox; + if(_loc2_ !== param1) + { + this._1970784ps_charPreviewOptionBox = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ps_charPreviewOptionBox",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ps_charPreviewer() : CharPreviewer + { + return this._1263293821ps_charPreviewer; + } + + public function set ps_charPreviewer(param1:CharPreviewer) : void + { + var _loc2_:Object = this._1263293821ps_charPreviewer; + if(_loc2_ !== param1) + { + this._1263293821ps_charPreviewer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ps_charPreviewer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ps_interactionViewStack() : Group + { + return this._1995015763ps_interactionViewStack; + } + + public function set ps_interactionViewStack(param1:Group) : void + { + var _loc2_:Object = this._1995015763ps_interactionViewStack; + if(_loc2_ !== param1) + { + this._1995015763ps_interactionViewStack = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ps_interactionViewStack",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/creator__embed__font_StudioSparkMain_bold_normal_252592600.as b/scripts/creator__embed__font_StudioSparkMain_bold_normal_252592600.as new file mode 100644 index 0000000..135eacc --- /dev/null +++ b/scripts/creator__embed__font_StudioSparkMain_bold_normal_252592600.as @@ -0,0 +1,14 @@ +package +{ + import mx.core.FontAsset; + + public class creator__embed__font_StudioSparkMain_bold_normal_252592600 extends FontAsset + { + + + public function creator__embed__font_StudioSparkMain_bold_normal_252592600() + { + super(); + } + } +} diff --git a/scripts/creator__embed__font_StudioSparkMain_medium_italic_932513666.as b/scripts/creator__embed__font_StudioSparkMain_medium_italic_932513666.as new file mode 100644 index 0000000..c386ecd --- /dev/null +++ b/scripts/creator__embed__font_StudioSparkMain_medium_italic_932513666.as @@ -0,0 +1,14 @@ +package +{ + import mx.core.FontAsset; + + public class creator__embed__font_StudioSparkMain_medium_italic_932513666 extends FontAsset + { + + + public function creator__embed__font_StudioSparkMain_medium_italic_932513666() + { + super(); + } + } +} diff --git a/scripts/creator__embed__font_StudioSparkMain_medium_normal_1328217743.as b/scripts/creator__embed__font_StudioSparkMain_medium_normal_1328217743.as new file mode 100644 index 0000000..4d9c0e7 --- /dev/null +++ b/scripts/creator__embed__font_StudioSparkMain_medium_normal_1328217743.as @@ -0,0 +1,14 @@ +package +{ + import mx.core.FontAsset; + + public class creator__embed__font_StudioSparkMain_medium_normal_1328217743 extends FontAsset + { + + + public function creator__embed__font_StudioSparkMain_medium_normal_1328217743() + { + super(); + } + } +} diff --git a/scripts/en_US$SharedResources_properties.as b/scripts/en_US$SharedResources_properties.as new file mode 100644 index 0000000..f16294a --- /dev/null +++ b/scripts/en_US$SharedResources_properties.as @@ -0,0 +1,31 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$SharedResources_properties extends ResourceBundle + { + + + public function en_US$SharedResources_properties() + { + super("en_US","SharedResources"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "dateFormat":"MM/DD/YYYY", + "dayNames":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday", + "thousandsSeparatorFrom":",", + "monthNames":"January,February,March,April,May,June,July,August,September,October,November,December", + "decimalSeparatorFrom":".", + "currencySymbol":"$", + "decimalSeparatorTo":".", + "thousandsSeparatorTo":",", + "monthSymbol":"", + "alignSymbol":"left" + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$collections_properties.as b/scripts/en_US$collections_properties.as new file mode 100644 index 0000000..12dde35 --- /dev/null +++ b/scripts/en_US$collections_properties.as @@ -0,0 +1,50 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$collections_properties extends ResourceBundle + { + + + public function en_US$collections_properties() + { + super("en_US","collections"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "findCondition":"Find criteria must contain all sort fields leading up to \'{0}\'.", + "getItemIndexError":"getItemIndex() is not available in this class.", + "noComparatorSortField":"Cannot determine comparator for SortField with name \'{0}\'.", + "outOfBounds":"Index \'{0}\' specified is out of bounds.", + "removeAllError":"removeAll() is not available in this class.", + "nonUnique":"Non-unique values in items.", + "incorrectAddition":"Attempt to add an item already in the view.", + "addItemError":"addItem() is not available in this class.", + "getItemAtError":"getItemAt() is not available in this class.", + "findRestriction":"Find criteria must contain at least one sort field value.", + "stepSizeError":"stepSize cannot be set to a value of zero.", + "invalidType":"Incorrect type. Must be of type XML or a XMLList that contains one XML object. ", + "unknownMode":"Unknown find mode.", + "addItemAtError":"addItemAt() is not available in this class.", + "invalidIndex":"Invalid index: \'{0}\'.", + "invalidRemove":"Cannot remove when current is beforeFirst or afterLast.", + "toArrayError":"toArray() is not available in this class.", + "unknownProperty":"Unknown Property: \'{0}\'.", + "lengthError":"length() is not available in this class.", + "invalidInsert":"Cannot insert when current is beforeFirst.", + "itemNotFound":"Cannot find when view is not sorted.", + "bookmarkInvalid":"Bookmark no longer valid.", + "itemUpdatedError":"itemUpdated() is not available in this class.", + "noComparator":"Cannot determine comparator for \'{0}\'.", + "setItemAtError":"setItemAt() is not available in this class.", + "invalidCursor":"Cursor no longer valid.", + "noItems":"No items to search.", + "bookmarkNotFound":"Bookmark is not from this view.", + "removeItemAtError":"removeItemAt() is not available in this class." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$components_properties.as b/scripts/en_US$components_properties.as new file mode 100644 index 0000000..18bdcc3 --- /dev/null +++ b/scripts/en_US$components_properties.as @@ -0,0 +1,72 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$components_properties extends ResourceBundle + { + + + public function en_US$components_properties() + { + super("en_US","components"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "objectNotFoundInDisplayLayer":"{0} is not found in this DisplayLayer.", + "sliderPageUpAccName":"Page up", + "setChildIndexError":"setChildIndex() is not available in this class. Instead, use setElementIndex() or modify the skin, if you have one.", + "scaleGridGroupError":"ScaleGrid properties can not be set on this Group since at least one child element is a DisplayObject.", + "videoPlayerVolumeBarAccName":"Volume", + "toggleSwitchUnselectedLabel":"OFF", + "swapChildrenError":"swapChildren() is not available in this class. Instead, use swapElements() or modify the skin, if you have one.", + "sliderPageLeftAccName":"Page left", + "addChildError":"addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.", + "swapChildrenDataGroupError":"DataGroup manages its own display objects, and you should not call swapChildren() directly. To add, remove, or swap items, modify the dataProvider.", + "operationNotSupported":"This operation is not supported.", + "unableToCreateRenderer":"Could not create an item renderer for {0}.", + "sliderPageRightAccName":"Page right", + "sortedDescending":"Sorted descending", + "videoPlayerMuteButtonAccName":"Not Muted,Muted", + "operationRequiresViewportLayout":"This operation requires that the viewport have a layout.", + "setChildIndexDataGroupError":"DataGroup manages its own display objects, and you should not call setChildIndex() directly. To add, remove, or swap items, modify the dataProvider.", + "elementNotFoundInGroup":"{0} is not found in this Group.", + "viewSource":"View Source", + "mxmlElementNoMultipleParents":"MXML element {0} can only have one parent.", + "sortedAscending":"Sorted", + "skinNotFound":"Skin for {0} cannot be found.", + "swapChildrenAtError":"swapChildrenAt() is not available in this class. Instead, use swapElementsAt() or modify the skin, if you have one.", + "sliderPageDownAccName":"Page down", + "indexOutOfRange":"Index {0} is out of range.", + "removeChildAtError":"removeChildAt() is not available in this class. Instead, use removeElementAt() or modify the skin, if you have one.", + "operationRequiresSnappingMode":"This operation requires scrollSnappingMode to be set to something other than NONE. ", + "sliderPositionAccName":"Position", + "videoPlayerScrubBarAccName":"Scrub", + "toggleSwitchSelectedLabel":"ON", + "videoPlayerVideoDisplayAccName":"Video Player", + "rowMofN":"Row %1 of %2", + "layoutReadOnly":"You are not allowed to change the layout for this class. It is read-only.", + "sortLevel":"Level %1", + "spinnerMoreAccName":"More", + "spinnerLessAccName":"Less", + "cannotAddYourselfAsYourChild":"Cannot add an element as a child of itself.", + "requiredSkinPartNotFound":"Required skin part {0} cannot be found.", + "cannotDisplayVisualElement":"DataGroup cannot display visual elements directly unless the elements are display objects and implement IVisualElement.", + "videoPlayerFullScreenButtonAccName":"Full screen", + "removeChildAtDataGroupError":"DataGroup manages its own display objects, and you should not call removeChildAt() directly. To add, remove, or swap items, modify the dataProvider.", + "addChildAtError":"addChildAt() is not available in this class. Instead, use addElementAt() or modify the skin, if you have one.", + "swapChildrenAtDataGroupError":"DataGroup manages its own display objects, and you should not call swapChildrenAt() directly. To add, remove, or swap items, modify the dataProvider.", + "operationSupportedForOneAxisOnly":"This operation is only supported when scrolling either horizontally or vertically, but not both.", + "elementNotFoundInScroller":"{0} is not found in this Scroller.", + "addChildAtDataGroupError":"DataGroup manages its own display objects, and you should not call addChildAt() directly. To add, remove, or swap items, modify the dataProvider.", + "styleSheetError":"This method or property cannot be used on a text field with a style sheet.", + "removeChildError":"removeChild() is not available in this class. Instead, use removeElement() or modify the skin, if you have one.", + "addChildDataGroupError":"DataGroup manages its own display objects, and you should not call addChild() directly. To add, remove, or swap items, modify the dataProvider.", + "removeChildDataGroupError":"DataGroup manages its own display objects, and you should not call removeChild() directly. To add, remove, or swap items, modify the dataProvider.", + "videoPlayerPlayButtonAccName":"Play,Pause" + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$containers_properties.as b/scripts/en_US$containers_properties.as new file mode 100644 index 0000000..316875c --- /dev/null +++ b/scripts/en_US$containers_properties.as @@ -0,0 +1,25 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$containers_properties extends ResourceBundle + { + + + public function en_US$containers_properties() + { + super("en_US","containers"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "noColumnsFound":"No ConstraintColumns found.", + "noRowsFound":"No ConstraintRows found.", + "rowNotFound":"ConstraintRow \'{0}\' not found.", + "columnNotFound":"ConstraintColumn \'{0}\' not found." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$controls_properties.as b/scripts/en_US$controls_properties.as new file mode 100644 index 0000000..cfb44c9 --- /dev/null +++ b/scripts/en_US$controls_properties.as @@ -0,0 +1,61 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$controls_properties extends ResourceBundle + { + + + public function en_US$controls_properties() + { + super("en_US","controls"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "undefinedParameter":"CuePoint parameter undefined.", + "nullURL":"Null URL sent to VideoPlayer.load.", + "incorrectType":"Type must be 0, 1 or 2.", + "okLabel":"OK", + "noLabel":"No", + "wrongNumParams":"Num params must be number.", + "wrongDisabled":"Disabled must be number.", + "wrongTime":"Time must be number.", + "dayNamesShortest":"S,M,T,W,T,F,S", + "wrongType":"Type must be number.", + "firstDayOfWeek":"0", + "requiredField":"Required Field", + "rootNotSMIL":"URL: \'{0}\' Root node not smil: \'{1}\'.", + "errorMessages":"Unable to make connection to server or to find FLV on server.,No matching cue point found.,Illegal cue point.,Invalid seek.,Invalid contentPath.,Invalid XML.,No bitrate match; must be no default FLV.,Cannot delete default VideoPlayer.", + "unexpectedEnd":"Unexpected end of cuePoint param string.", + "rootNotFound":"URL: \'{0}\' No root node found; if file is an flv, it must have a .flv extension.", + "errWrongContainer":"ERROR: The dataProvider of \'{0}\' must not contain objects of type flash.display.DisplayObject.", + "invalidCall":"Cannot call reconnect on an http connection.", + "cancelLabel":"Cancel", + "errWrongType":"ERROR: The dataProvider of \'{0}\' must be String, ViewStack, Array, or IList.", + "badArgs":"Bad args to _play.", + "missingRoot":"URL: \'{0}\' No root node found; if URL is for an FLV, it must have a .flv extension and take no parameters.", + "notLoadable":"Unable to load \'{0}\'.", + "wrongName":"Name cannot be undefined or null.", + "wrongTimeName":"Time must be number and/or name must not be undefined or null.", + "yesLabel":"Yes", + "undefinedArray":"CuePoint.array undefined.", + "missingProxy":"URL: \'{0}\' fpad xml requires proxy tag.", + "unknownInput":"Unknown inputType \'{0}\'.", + "missingAttributeSrc":"URL: \'{0}\' Attribute src is required in \'{1}\' tag.", + "yearSymbol":"", + "wrongIndex":"CuePoint.index must be number between -1 and cuePoint.array.length.", + "notImplemented":"\'{0}\' not implemented yet.", + "label":"LOADING %3%%", + "wrongFormat":"Unexpected cuePoint parameter format.", + "tagNotFound":"URL: \'{0}\' At least one video of ref tag is required.", + "unsupportedMode":"IMEMode \'{0}\' not supported.", + "cannotDisable":"Cannot disable actionscript cue points.", + "missingAttributes":"URL: \'{0}\' Tag \'{1}\' requires attributes id, width, and height. Width and height must be numbers greater than or equal to 0.", + "notfpad":"URL: \'{0}\' Root node not fpad." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$core_properties.as b/scripts/en_US$core_properties.as new file mode 100644 index 0000000..dd81096 --- /dev/null +++ b/scripts/en_US$core_properties.as @@ -0,0 +1,37 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$core_properties extends ResourceBundle + { + + + public function en_US$core_properties() + { + super("en_US","core"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "multipleChildSets_ClassAndInstance":"Multiple sets of visual children have been specified for this component (component definition and component instance).", + "truncationIndicator":"...", + "notExecuting":"Repeater is not executing.", + "remoteClassMemoryLeak":"warning: The class {0} has been used in a call to net.registerClassAlias() in {2}. This will cause {1} to be leaked. To resolve the leak, define {0} in the top-level application. ", + "nullParameter":"Parameter {0} must be non-null.", + "versionAlreadyRead":"Compatibility version has already been read.", + "multipleChildSets_ClassAndSubclass":"Multiple sets of visual children have been specified for this component (base component definition and derived component definition).", + "fontIncompatible":"warning: incompatible embedded font \'{0}\' specified for {1}. This component requires that the embedded font be declared with embedAsCFF={2}.", + "badParameter":"Parameter {0} must be one of the accepted values.", + "notImplementedInFTETextField":"\'{0}\' is not implemented in FTETextField.", + "viewSource":"View Source", + "unsupportedTypeInFTETextField":"FTETextField does not support setting type to \"input\".", + "badFile":"File does not exist.", + "stateUndefined":"Undefined state \'{0}\'.", + "badIndex":"The supplied index is out of bounds.", + "versionAlreadySet":"Compatibility version has already been set." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$effects_properties.as b/scripts/en_US$effects_properties.as new file mode 100644 index 0000000..000e186 --- /dev/null +++ b/scripts/en_US$effects_properties.as @@ -0,0 +1,23 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$effects_properties extends ResourceBundle + { + + + public function en_US$effects_properties() + { + super("en_US","effects"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "incorrectTrigger":"The Zoom effect can not be triggered by a moveEffect trigger.", + "incorrectSource":"Source property must be a Class or String." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$formatters_properties.as b/scripts/en_US$formatters_properties.as new file mode 100644 index 0000000..da2be14 --- /dev/null +++ b/scripts/en_US$formatters_properties.as @@ -0,0 +1,38 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$formatters_properties extends ResourceBundle + { + + + public function en_US$formatters_properties() + { + super("en_US","formatters"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "zipCodeFormat":"#####", + "useNegativeSignInCurrency":"true", + "useNegativeSignInNumber":"true", + "defaultInvalidFormatError":"Invalid format", + "pm":"PM", + "useThousandsSeparator":"true", + "am":"AM", + "areaCode":"-1", + "validPatternChars":"+()#- .", + "phoneNumberFormat":"(###) ###-####", + "defaultInvalidValueError":"Invalid value", + "areaCodeFormat":"(###)", + "monthNamesShort":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", + "numberFormatterPrecision":"-1", + "dayNamesShort":"Sun,Mon,Tue,Wed,Thu,Fri,Sat", + "rounding":"none", + "currencyFormatterPrecision":"-1" + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$layout_properties.as b/scripts/en_US$layout_properties.as new file mode 100644 index 0000000..d254010 --- /dev/null +++ b/scripts/en_US$layout_properties.as @@ -0,0 +1,27 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$layout_properties extends ResourceBundle + { + + + public function en_US$layout_properties() + { + super("en_US","layout"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "rowNotFound":"ConstraintRow \'{0}\' not found.", + "constraintLayoutNotVirtualized":"ConstraintLayout doesn\'t support virtualization.", + "basicLayoutNotVirtualized":"BasicLayout doesn\'t support virtualization.", + "columnNotFound":"ConstraintColumn \'{0}\' not found.", + "invalidIndex":"invalidIndex", + "invalidBaselineOnRow":"Invalid baseline value on row {0}: \'{1}\'. Must be a Number or of the form \'maxAscent:x\'." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$skins_properties.as b/scripts/en_US$skins_properties.as new file mode 100644 index 0000000..ce5d661 --- /dev/null +++ b/scripts/en_US$skins_properties.as @@ -0,0 +1,20 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$skins_properties extends ResourceBundle + { + + + public function en_US$skins_properties() + { + super("en_US","skins"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = {"notLoaded":"Unable to load \'{0}\'."}; + return _loc1_; + } + } +} diff --git a/scripts/en_US$sparkEffects_properties.as b/scripts/en_US$sparkEffects_properties.as new file mode 100644 index 0000000..3a01577 --- /dev/null +++ b/scripts/en_US$sparkEffects_properties.as @@ -0,0 +1,29 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$sparkEffects_properties extends ResourceBundle + { + + + public function en_US$sparkEffects_properties() + { + super("en_US","sparkEffects"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "cannotOperateOn":"AnimateShaderTransition can operate only on IUIComponent and GraphicElement instances.", + "accDecWithinRange":"(acceleration + deceleration) must be within range [0,1].", + "propNotPropOrStyle":"Property {0} is not a property or a style on object {1}: {2}.", + "cannotCalculateValue":"Interpolator cannot calculate interpolated values when startValue ({0}) or endValue ({1}) is not a number.", + "illegalPropValue":"Illegal property value: {0}.", + "arraysNotOfEqualLength":"The start and end arrays must be of equal length.", + "endValContainsNonNums":"The endValue array contains non-Numbers: you must supply a custom Interpolator to Animation.", + "startValContainsNonNums":"The startValue array contains non-Numbers: you must supply Interpolator to Animation." + }; + return _loc1_; + } + } +} diff --git a/scripts/en_US$styles_properties.as b/scripts/en_US$styles_properties.as new file mode 100644 index 0000000..2d3d09b --- /dev/null +++ b/scripts/en_US$styles_properties.as @@ -0,0 +1,20 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$styles_properties extends ResourceBundle + { + + + public function en_US$styles_properties() + { + super("en_US","styles"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = {"unableToLoad":"Unable to load style({0}): {1}."}; + return _loc1_; + } + } +} diff --git a/scripts/en_US$textLayout_properties.as b/scripts/en_US$textLayout_properties.as new file mode 100644 index 0000000..36145ba --- /dev/null +++ b/scripts/en_US$textLayout_properties.as @@ -0,0 +1,43 @@ +package +{ + import mx.resources.ResourceBundle; + + public class en_US$textLayout_properties extends ResourceBundle + { + + + public function en_US$textLayout_properties() + { + super("en_US","textLayout"); + } + + override protected function getContent() : Object + { + var _loc1_:Object = { + "badRemoveChild":"Child to remove not found", + "badReplaceChildrenIndex":"Out of range index to FlowGroupElement.replaceChildren", + "missingTextFlow":"No TextFlow to parse", + "unexpectedNamespace":"Unexpected namespace {0}", + "badMXMLChildrenArgument":"Bad element of type {0} passed to mxmlChildren", + "invalidReplaceTextPositions":"Invalid positions passed to SpanElement.replaceText", + "invalidSplitAtPosition":"Invalid parameter to splitAtPosition", + "badSurrogatePairCopy":"Copying only half of a surrogate pair in SpanElement.shallowCopy", + "invalidChildType":"NewElement not of a type that this can be parent of", + "unknownAttribute":"Attribute {0} not permitted in element {1}", + "invalidSurrogatePairSplit":"Invalid splitting of a surrogate pair", + "expectedExactlyOneTextLayoutFormat":"Expected one and only one TextLayoutFormat in {0}\t", + "invalidFlowElementConstruct":"Attempted construct of invalid FlowElement subclass", + "malformedTag":"Malformed tag {0}", + "missingStringResource":"No string for resource {0}", + "invalidSplitAtIndex":"Invalid parameter to splitAtIndex", + "illegalOperation":"Illegal attempt to execute {0} operation", + "malformedMarkup":"Malformed markup {0}", + "unexpectedXMLElementInSpan":"Unexpected element {0} within a span", + "badPropertyValue":"Property {0} value {1} is out of range", + "badShallowCopyRange":"Bad range in shallowCopy", + "unknownElement":"Unknown element {0}" + }; + return _loc1_; + } + } +} diff --git a/scripts/flashx/textLayout/compose/ISWFContext.as b/scripts/flashx/textLayout/compose/ISWFContext.as new file mode 100644 index 0000000..60b7c03 --- /dev/null +++ b/scripts/flashx/textLayout/compose/ISWFContext.as @@ -0,0 +1,9 @@ +package flashx.textLayout.compose +{ + public interface ISWFContext + { + + + function callInContext(param1:Function, param2:Object, param3:Array, param4:Boolean = true) : *; + } +} diff --git a/scripts/mx/core/ApplicationDomainTarget.as b/scripts/mx/core/ApplicationDomainTarget.as new file mode 100644 index 0000000..be8200b --- /dev/null +++ b/scripts/mx/core/ApplicationDomainTarget.as @@ -0,0 +1,24 @@ +package mx.core +{ + use namespace mx_internal; + + public final class ApplicationDomainTarget + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const DEFAULT:String = "default"; + + public static const CURRENT:String = "current"; + + public static const PARENT:String = "parent"; + + public static const TOP_LEVEL:String = "top-level"; + + + public function ApplicationDomainTarget() + { + super(); + } + } +} diff --git a/scripts/mx/core/BitmapAsset.as b/scripts/mx/core/BitmapAsset.as new file mode 100644 index 0000000..9a8ceb7 --- /dev/null +++ b/scripts/mx/core/BitmapAsset.as @@ -0,0 +1,465 @@ +package mx.core +{ + import flash.display.BitmapData; + import flash.display.DisplayObjectContainer; + import flash.events.Event; + import flash.geom.Point; + import flash.system.ApplicationDomain; + + use namespace mx_internal; + + public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject, ILayoutDirectionElement + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var FlexVersionClass:Class; + + private static var MatrixUtilClass:Class; + + + private var layoutFeaturesClass:Class; + + private var layoutFeatures:IAssetLayoutFeatures; + + private var _height:Number; + + private var _layoutDirection:String = "ltr"; + + public function BitmapAsset(param1:BitmapData = null, param2:String = "auto", param3:Boolean = false) + { + var _loc4_:ApplicationDomain = null; + super(param1,param2,param3); + if(FlexVersionClass == null) + { + _loc4_ = ApplicationDomain.currentDomain; + if(_loc4_.hasDefinition("mx.core::FlexVersion")) + { + FlexVersionClass = Class(_loc4_.getDefinition("mx.core::FlexVersion")); + } + } + if(FlexVersionClass && FlexVersionClass["compatibilityVersion"] >= FlexVersionClass["VERSION_4_0"]) + { + this.addEventListener(Event.ADDED,this.addedHandler); + } + } + + override public function get x() : Number + { + return this.layoutFeatures == null?Number(super.x):Number(this.layoutFeatures.layoutX); + } + + override public function set x(param1:Number) : void + { + if(this.x == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.x = param1; + } + else + { + this.layoutFeatures.layoutX = param1; + this.validateTransformMatrix(); + } + } + + override public function get y() : Number + { + return this.layoutFeatures == null?Number(super.y):Number(this.layoutFeatures.layoutY); + } + + override public function set y(param1:Number) : void + { + if(this.y == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.y = param1; + } + else + { + this.layoutFeatures.layoutY = param1; + this.validateTransformMatrix(); + } + } + + override public function get z() : Number + { + return this.layoutFeatures == null?Number(super.z):Number(this.layoutFeatures.layoutZ); + } + + override public function set z(param1:Number) : void + { + if(this.z == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.z = param1; + } + else + { + this.layoutFeatures.layoutZ = param1; + this.validateTransformMatrix(); + } + } + + override public function get width() : Number + { + var _loc1_:Point = null; + if(this.layoutFeatures == null) + { + return super.width; + } + if(MatrixUtilClass != null) + { + _loc1_ = MatrixUtilClass["transformSize"](this.layoutFeatures.layoutWidth,this._height,transform.matrix); + } + return !!_loc1_?Number(_loc1_.x):Number(super.width); + } + + override public function set width(param1:Number) : void + { + if(this.width == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.width = param1; + } + else + { + this.layoutFeatures.layoutWidth = param1; + this.layoutFeatures.layoutScaleX = this.measuredWidth != 0?Number(param1 / this.measuredWidth):Number(0); + this.validateTransformMatrix(); + } + } + + override public function get height() : Number + { + var _loc1_:Point = null; + if(this.layoutFeatures == null) + { + return super.height; + } + if(MatrixUtilClass != null) + { + _loc1_ = MatrixUtilClass["transformSize"](this.layoutFeatures.layoutWidth,this._height,transform.matrix); + } + return !!_loc1_?Number(_loc1_.y):Number(super.height); + } + + override public function set height(param1:Number) : void + { + if(this.height == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.height = param1; + } + else + { + this._height = param1; + this.layoutFeatures.layoutScaleY = this.measuredHeight != 0?Number(param1 / this.measuredHeight):Number(0); + this.validateTransformMatrix(); + } + } + + override public function get rotationX() : Number + { + return this.layoutFeatures == null?Number(super.rotationX):Number(this.layoutFeatures.layoutRotationX); + } + + override public function set rotationX(param1:Number) : void + { + if(this.rotationX == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.rotationX = param1; + } + else + { + this.layoutFeatures.layoutRotationX = param1; + this.validateTransformMatrix(); + } + } + + override public function get rotationY() : Number + { + return this.layoutFeatures == null?Number(super.rotationY):Number(this.layoutFeatures.layoutRotationY); + } + + override public function set rotationY(param1:Number) : void + { + if(this.rotationY == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.rotationY = param1; + } + else + { + this.layoutFeatures.layoutRotationY = param1; + this.validateTransformMatrix(); + } + } + + override public function get rotationZ() : Number + { + return this.layoutFeatures == null?Number(super.rotationZ):Number(this.layoutFeatures.layoutRotationZ); + } + + override public function set rotationZ(param1:Number) : void + { + if(this.rotationZ == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.rotationZ = param1; + } + else + { + this.layoutFeatures.layoutRotationZ = param1; + this.validateTransformMatrix(); + } + } + + override public function get rotation() : Number + { + return this.layoutFeatures == null?Number(super.rotation):Number(this.layoutFeatures.layoutRotationZ); + } + + override public function set rotation(param1:Number) : void + { + if(this.rotation == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.rotation = param1; + } + else + { + this.layoutFeatures.layoutRotationZ = param1; + this.validateTransformMatrix(); + } + } + + override public function get scaleX() : Number + { + return this.layoutFeatures == null?Number(super.scaleX):Number(this.layoutFeatures.layoutScaleX); + } + + override public function set scaleX(param1:Number) : void + { + if(this.scaleX == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.scaleX = param1; + } + else + { + this.layoutFeatures.layoutScaleX = param1; + this.layoutFeatures.layoutWidth = Math.abs(param1) * this.measuredWidth; + this.validateTransformMatrix(); + } + } + + override public function get scaleY() : Number + { + return this.layoutFeatures == null?Number(super.scaleY):Number(this.layoutFeatures.layoutScaleY); + } + + override public function set scaleY(param1:Number) : void + { + if(this.scaleY == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.scaleY = param1; + } + else + { + this.layoutFeatures.layoutScaleY = param1; + this._height = Math.abs(param1) * this.measuredHeight; + this.validateTransformMatrix(); + } + } + + override public function get scaleZ() : Number + { + return this.layoutFeatures == null?Number(super.scaleZ):Number(this.layoutFeatures.layoutScaleZ); + } + + override public function set scaleZ(param1:Number) : void + { + if(this.scaleZ == param1) + { + return; + } + if(this.layoutFeatures == null) + { + super.scaleZ = param1; + } + else + { + this.layoutFeatures.layoutScaleZ = param1; + this.validateTransformMatrix(); + } + } + + public function get layoutDirection() : String + { + return this._layoutDirection; + } + + public function set layoutDirection(param1:String) : void + { + if(param1 == this._layoutDirection) + { + return; + } + this._layoutDirection = param1; + this.invalidateLayoutDirection(); + } + + public function get measuredHeight() : Number + { + if(bitmapData) + { + return bitmapData.height; + } + return 0; + } + + public function get measuredWidth() : Number + { + if(bitmapData) + { + return bitmapData.width; + } + return 0; + } + + public function invalidateLayoutDirection() : void + { + var _loc2_:Boolean = false; + var _loc1_:DisplayObjectContainer = parent; + while(_loc1_) + { + if(_loc1_ is ILayoutDirectionElement) + { + _loc2_ = this._layoutDirection != null && ILayoutDirectionElement(_loc1_).layoutDirection != null && this._layoutDirection != ILayoutDirectionElement(_loc1_).layoutDirection; + if(_loc2_ && this.layoutFeatures == null) + { + this.initAdvancedLayoutFeatures(); + if(this.layoutFeatures != null) + { + this.layoutFeatures.mirror = _loc2_; + this.validateTransformMatrix(); + } + } + else if(!_loc2_ && this.layoutFeatures) + { + this.layoutFeatures.mirror = _loc2_; + this.validateTransformMatrix(); + this.layoutFeatures = null; + } + break; + } + _loc1_ = _loc1_.parent; + } + } + + public function move(param1:Number, param2:Number) : void + { + this.x = param1; + this.y = param2; + } + + public function setActualSize(param1:Number, param2:Number) : void + { + this.width = param1; + this.height = param2; + } + + private function addedHandler(param1:Event) : void + { + this.invalidateLayoutDirection(); + } + + private function initAdvancedLayoutFeatures() : void + { + var _loc1_:ApplicationDomain = null; + var _loc2_:IAssetLayoutFeatures = null; + if(this.layoutFeaturesClass == null) + { + _loc1_ = ApplicationDomain.currentDomain; + if(_loc1_.hasDefinition("mx.core::AdvancedLayoutFeatures")) + { + this.layoutFeaturesClass = Class(_loc1_.getDefinition("mx.core::AdvancedLayoutFeatures")); + } + if(MatrixUtilClass == null) + { + if(_loc1_.hasDefinition("mx.utils::MatrixUtil")) + { + MatrixUtilClass = Class(_loc1_.getDefinition("mx.utils::MatrixUtil")); + } + } + } + if(this.layoutFeaturesClass != null) + { + _loc2_ = new this.layoutFeaturesClass(); + _loc2_.layoutScaleX = this.scaleX; + _loc2_.layoutScaleY = this.scaleY; + _loc2_.layoutScaleZ = this.scaleZ; + _loc2_.layoutRotationX = this.rotationX; + _loc2_.layoutRotationY = this.rotationY; + _loc2_.layoutRotationZ = this.rotation; + _loc2_.layoutX = this.x; + _loc2_.layoutY = this.y; + _loc2_.layoutZ = this.z; + _loc2_.layoutWidth = this.width; + this._height = this.height; + this.layoutFeatures = _loc2_; + } + } + + private function validateTransformMatrix() : void + { + if(this.layoutFeatures != null) + { + if(this.layoutFeatures.is3D) + { + super.transform.matrix3D = this.layoutFeatures.computedMatrix3D; + } + else + { + super.transform.matrix = this.layoutFeatures.computedMatrix; + } + } + } + } +} diff --git a/scripts/mx/core/CrossDomainRSLItem.as b/scripts/mx/core/CrossDomainRSLItem.as new file mode 100644 index 0000000..ee0af7f --- /dev/null +++ b/scripts/mx/core/CrossDomainRSLItem.as @@ -0,0 +1,177 @@ +package mx.core +{ + import flash.display.Loader; + import flash.events.ErrorEvent; + import flash.events.Event; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.system.ApplicationDomain; + import flash.system.LoaderContext; + import flash.system.Security; + import flash.utils.ByteArray; + import mx.events.RSLEvent; + import mx.utils.LoaderUtil; + import mx.utils.SHA256; + + use namespace mx_internal; + + public class CrossDomainRSLItem extends RSLItem + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var rsls:Array; + + private var urlIndex:int = 0; + + private var loadBytesLoader:Loader; + + public function CrossDomainRSLItem(param1:Array, param2:String = null, param3:IFlexModuleFactory = null) + { + this.rsls = []; + super(param1[0].rslURL,param2,param3); + this.rsls = param1; + } + + private function get currentRSLData() : RSLData + { + return RSLData(this.rsls[this.urlIndex]); + } + + override public function load(param1:Function, param2:Function, param3:Function, param4:Function, param5:Function) : void + { + chainedProgressHandler = param1; + chainedCompleteHandler = param2; + chainedIOErrorHandler = param3; + chainedSecurityErrorHandler = param4; + chainedRSLErrorHandler = param5; + var _loc6_:RSLData = this.currentRSLData; + urlRequest = new URLRequest(LoaderUtil.createAbsoluteURL(rootURL,_loc6_.rslURL)); + var _loc7_:URLLoader = new URLLoader(); + _loc7_.dataFormat = URLLoaderDataFormat.BINARY; + _loc7_.addEventListener(ProgressEvent.PROGRESS,itemProgressHandler); + _loc7_.addEventListener(Event.COMPLETE,this.itemCompleteHandler); + _loc7_.addEventListener(IOErrorEvent.IO_ERROR,this.itemErrorHandler); + _loc7_.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.itemErrorHandler); + if(_loc6_.policyFileURL != "") + { + Security.loadPolicyFile(_loc6_.policyFileURL); + } + if(_loc6_.isSigned) + { + urlRequest.digest = _loc6_.digest; + } + _loc7_.load(urlRequest); + } + + private function completeCdRslLoad(param1:URLLoader) : Boolean + { + var _loc4_:Boolean = false; + var _loc5_:String = null; + var _loc6_:Boolean = false; + var _loc7_:ErrorEvent = null; + if(param1 == null || param1.data == null || ByteArray(param1.data).bytesAvailable == 0) + { + return true; + } + this.loadBytesLoader = new Loader(); + var _loc2_:LoaderContext = new LoaderContext(); + var _loc3_:RSLData = this.currentRSLData; + if(_loc3_.moduleFactory) + { + _loc2_.applicationDomain = _loc3_.moduleFactory.info()["currentDomain"]; + } + else if(moduleFactory) + { + _loc2_.applicationDomain = moduleFactory.info()["currentDomain"]; + } + else + { + _loc2_.applicationDomain = ApplicationDomain.currentDomain; + } + _loc2_.securityDomain = null; + _loc2_.allowCodeImport = true; + if(_loc3_.digest != null && _loc3_.verifyDigest) + { + _loc4_ = false; + if(!_loc3_.isSigned) + { + if(_loc3_.hashType == SHA256.TYPE_ID) + { + _loc5_ = null; + if(param1.data != null) + { + _loc5_ = SHA256.computeDigest(param1.data); + } + if(_loc5_ == _loc3_.digest) + { + _loc4_ = true; + } + } + } + else + { + _loc4_ = true; + } + if(!_loc4_) + { + _loc6_ = this.hasFailover(); + _loc7_ = new ErrorEvent(RSLEvent.RSL_ERROR); + _loc7_.text = "Flex Error #1001: Digest mismatch with RSL " + urlRequest.url + ". Redeploy the matching RSL or relink your application with the matching library."; + this.itemErrorHandler(_loc7_); + return !_loc6_; + } + } + this.loadBytesLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.loadBytesCompleteHandler); + this.loadBytesLoader.loadBytes(param1.data,_loc2_); + return true; + } + + public function hasFailover() : Boolean + { + return this.rsls.length > this.urlIndex + 1; + } + + public function loadFailover() : void + { + if(this.urlIndex < this.rsls.length) + { + trace("Failed to load RSL " + this.currentRSLData.rslURL); + trace("Failing over to RSL " + RSLData(this.rsls[this.urlIndex + 1]).rslURL); + this.urlIndex++; + url = this.currentRSLData.rslURL; + this.load(chainedProgressHandler,chainedCompleteHandler,chainedIOErrorHandler,chainedSecurityErrorHandler,chainedRSLErrorHandler); + } + } + + override public function itemCompleteHandler(param1:Event) : void + { + this.completeCdRslLoad(param1.target as URLLoader); + } + + override public function itemErrorHandler(param1:ErrorEvent) : void + { + if(this.hasFailover()) + { + trace(decodeURI(param1.text)); + this.loadFailover(); + } + else + { + super.itemErrorHandler(param1); + } + } + + private function loadBytesCompleteHandler(param1:Event) : void + { + this.loadBytesLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,this.loadBytesCompleteHandler); + this.loadBytesLoader = null; + super.itemCompleteHandler(param1); + } + } +} diff --git a/scripts/mx/core/DPIClassification.as b/scripts/mx/core/DPIClassification.as new file mode 100644 index 0000000..03dc2ce --- /dev/null +++ b/scripts/mx/core/DPIClassification.as @@ -0,0 +1,18 @@ +package mx.core +{ + public final class DPIClassification + { + + public static const DPI_160:Number = 160; + + public static const DPI_240:Number = 240; + + public static const DPI_320:Number = 320; + + + public function DPIClassification() + { + super(); + } + } +} diff --git a/scripts/mx/core/EmbeddedFont.as b/scripts/mx/core/EmbeddedFont.as new file mode 100644 index 0000000..896f9ca --- /dev/null +++ b/scripts/mx/core/EmbeddedFont.as @@ -0,0 +1,73 @@ +package mx.core +{ + use namespace mx_internal; + + public class EmbeddedFont + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var noEmbeddedFonts:Boolean; + + private static var _embeddedFontRegistry:IEmbeddedFontRegistry; + + + private var _bold:Boolean; + + private var _fontName:String; + + private var _fontStyle:String; + + private var _italic:Boolean; + + public function EmbeddedFont(param1:String, param2:Boolean, param3:Boolean) + { + super(); + this.initialize(param1,param2,param3); + } + + private static function get embeddedFontRegistry() : IEmbeddedFontRegistry + { + if(!_embeddedFontRegistry && !noEmbeddedFonts) + { + try + { + _embeddedFontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry")); + } + catch(e:Error) + { + noEmbeddedFonts = true; + } + } + return _embeddedFontRegistry; + } + + public function get bold() : Boolean + { + return this._bold; + } + + public function get fontName() : String + { + return this._fontName; + } + + public function get fontStyle() : String + { + return this._fontStyle; + } + + public function get italic() : Boolean + { + return this._italic; + } + + public function initialize(param1:String, param2:Boolean, param3:Boolean) : void + { + this._bold = param2; + this._italic = param3; + this._fontName = param1; + this._fontStyle = embeddedFontRegistry.getFontStyle(param2,param3); + } + } +} diff --git a/scripts/mx/core/EmbeddedFontRegistry.as b/scripts/mx/core/EmbeddedFontRegistry.as new file mode 100644 index 0000000..6574324 --- /dev/null +++ b/scripts/mx/core/EmbeddedFontRegistry.as @@ -0,0 +1,287 @@ +package mx.core +{ + import flash.system.Capabilities; + import flash.text.FontStyle; + import flash.text.TextField; + import flash.text.TextFormat; + import flash.text.engine.FontDescription; + import flash.utils.Dictionary; + import flash.utils.getQualifiedClassName; + import mx.managers.ISystemManager; + import mx.resources.IResourceManager; + import mx.resources.ResourceManager; + + use namespace mx_internal; + + public class EmbeddedFontRegistry implements IEmbeddedFontRegistry + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var fonts:Object = {}; + + private static var cachedFontsForObjects:Dictionary = new Dictionary(true); + + private static var instance:IEmbeddedFontRegistry; + + private static var staticTextFormat:TextFormat = new TextFormat(); + + private static var flaggedObjects:Dictionary = new Dictionary(true); + + + private var _resourceManager:IResourceManager; + + public function EmbeddedFontRegistry() + { + super(); + } + + public static function getInstance() : IEmbeddedFontRegistry + { + if(!instance) + { + instance = new EmbeddedFontRegistry(); + } + return instance; + } + + private static function createFontKey(param1:EmbeddedFont) : String + { + return param1.fontName + param1.fontStyle; + } + + private static function createEmbeddedFont(param1:String) : EmbeddedFont + { + var _loc2_:String = null; + var _loc3_:Boolean = false; + var _loc4_:Boolean = false; + var _loc5_:int = endsWith(param1,FontStyle.REGULAR); + if(_loc5_ > 0) + { + _loc2_ = param1.substring(0,_loc5_); + return new EmbeddedFont(_loc2_,false,false); + } + _loc5_ = endsWith(param1,FontStyle.BOLD); + if(_loc5_ > 0) + { + _loc2_ = param1.substring(0,_loc5_); + return new EmbeddedFont(_loc2_,true,false); + } + _loc5_ = endsWith(param1,FontStyle.BOLD_ITALIC); + if(_loc5_ > 0) + { + _loc2_ = param1.substring(0,_loc5_); + return new EmbeddedFont(_loc2_,true,true); + } + _loc5_ = endsWith(param1,FontStyle.ITALIC); + if(_loc5_ > 0) + { + _loc2_ = param1.substring(0,_loc5_); + return new EmbeddedFont(_loc2_,false,true); + } + return new EmbeddedFont("",false,false); + } + + private static function endsWith(param1:String, param2:String) : int + { + var _loc3_:int = param1.lastIndexOf(param2); + if(_loc3_ > 0 && _loc3_ + param2.length == param1.length) + { + return _loc3_; + } + return -1; + } + + public static function registerFonts(param1:Object, param2:IFlexModuleFactory) : void + { + var fontRegistry:IEmbeddedFontRegistry = null; + var f:Object = null; + var fontObj:Object = null; + var fieldIter:String = null; + var bold:Boolean = false; + var italic:Boolean = false; + var fonts:Object = param1; + var moduleFactory:IFlexModuleFactory = param2; + try + { + fontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry")); + } + catch(e:Error) + { + Singleton.registerClass("mx.core::IEmbeddedFontRegistry",EmbeddedFontRegistry); + fontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry")); + } + for(f in fonts) + { + fontObj = fonts[f]; + for(fieldIter in fontObj) + { + if(fontObj[fieldIter] != false) + { + if(fieldIter == "regular") + { + bold = false; + italic = false; + } + else if(fieldIter == "boldItalic") + { + bold = true; + italic = true; + } + else if(fieldIter == "bold") + { + bold = true; + italic = false; + } + else if(fieldIter == "italic") + { + bold = false; + italic = true; + } + fontRegistry.registerFont(new EmbeddedFont(String(f),bold,italic),moduleFactory); + } + } + } + } + + private function get resourceManager() : IResourceManager + { + if(!this._resourceManager) + { + this._resourceManager = ResourceManager.getInstance(); + } + return this._resourceManager; + } + + public function getFontStyle(param1:Boolean, param2:Boolean) : String + { + var _loc3_:String = FontStyle.REGULAR; + if(param1 && param2) + { + _loc3_ = FontStyle.BOLD_ITALIC; + } + else if(param1) + { + _loc3_ = FontStyle.BOLD; + } + else if(param2) + { + _loc3_ = FontStyle.ITALIC; + } + return _loc3_; + } + + public function registerFont(param1:EmbeddedFont, param2:IFlexModuleFactory) : void + { + var _loc3_:String = createFontKey(param1); + var _loc4_:Dictionary = fonts[_loc3_]; + if(!_loc4_) + { + _loc4_ = new Dictionary(true); + fonts[_loc3_] = _loc4_; + } + _loc4_[param2] = 1; + } + + public function deregisterFont(param1:EmbeddedFont, param2:IFlexModuleFactory) : void + { + var _loc5_:int = 0; + var _loc6_:* = null; + var _loc3_:String = createFontKey(param1); + var _loc4_:Dictionary = fonts[_loc3_]; + if(_loc4_ != null) + { + delete _loc4_[param2]; + _loc5_ = 0; + for(_loc6_ in _loc4_) + { + _loc5_++; + } + if(_loc5_ == 0) + { + delete fonts[_loc3_]; + } + } + } + + public function isFontRegistered(param1:EmbeddedFont, param2:IFlexModuleFactory) : Boolean + { + var _loc3_:String = createFontKey(param1); + var _loc4_:Dictionary = fonts[_loc3_]; + return _loc4_ && _loc4_[param2] == 1; + } + + public function getFonts() : Array + { + var _loc2_:* = null; + var _loc1_:Array = []; + for(_loc2_ in fonts) + { + _loc1_.push(createEmbeddedFont(_loc2_)); + } + return _loc1_; + } + + public function getAssociatedModuleFactory(param1:String, param2:Boolean, param3:Boolean, param4:Object, param5:IFlexModuleFactory, param6:ISystemManager, param7:* = undefined) : IFlexModuleFactory + { + var _loc8_:EmbeddedFont = null; + var _loc9_:IFlexModuleFactory = null; + var _loc11_:int = 0; + var _loc12_:* = null; + var _loc13_:Boolean = false; + var _loc14_:String = null; + _loc8_ = cachedFontsForObjects[param4]; + if(!_loc8_) + { + _loc8_ = new EmbeddedFont(param1,param2,param3); + cachedFontsForObjects[param4] = _loc8_; + } + else if(_loc8_.fontName != param1 || _loc8_.bold != param2 || _loc8_.italic != param3) + { + _loc8_ = new EmbeddedFont(param1,param2,param3); + cachedFontsForObjects[param4] = _loc8_; + } + var _loc10_:Dictionary = fonts[createFontKey(_loc8_)]; + if(_loc10_) + { + _loc11_ = _loc10_[param5]; + if(_loc11_) + { + _loc9_ = param5; + } + else + { + for(_loc12_ in _loc10_) + { + _loc9_ = _loc12_ as IFlexModuleFactory; + } + } + } + if(!_loc9_ && param6) + { + staticTextFormat.font = param1; + staticTextFormat.bold = param2; + staticTextFormat.italic = param3; + if(param6.isFontFaceEmbedded(staticTextFormat)) + { + _loc9_ = param6; + } + } + if(_loc9_ && param7 != undefined && Capabilities.isDebugger) + { + _loc13_ = !!param7?Boolean(_loc9_.callInContext(FontDescription.isFontCompatible,null,[param1,!!param2?"bold":"normal",!!param3?"italic":"normal"])):Boolean(_loc9_.callInContext(TextField.isFontCompatible,null,[param1,this.getFontStyle(param2,param3)])); + if(!_loc13_) + { + if(!flaggedObjects[param4]) + { + _loc14_ = getQualifiedClassName(param4); + _loc14_ = _loc14_ + ("name" in param4 && param4.name != null?" (" + param4.name + ") ":""); + trace(this.resourceManager.getString("core","fontIncompatible",[param1,_loc14_,param7])); + flaggedObjects[param4] = true; + } + } + } + return _loc9_; + } + } +} diff --git a/scripts/mx/core/FlexBitmap.as b/scripts/mx/core/FlexBitmap.as new file mode 100644 index 0000000..010f9c6 --- /dev/null +++ b/scripts/mx/core/FlexBitmap.as @@ -0,0 +1,34 @@ +package mx.core +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import mx.utils.NameUtil; + + use namespace mx_internal; + + public class FlexBitmap extends Bitmap + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function FlexBitmap(param1:BitmapData = null, param2:String = "auto", param3:Boolean = false) + { + super(param1,param2,param3); + try + { + name = NameUtil.createUniqueName(this); + return; + } + catch(e:Error) + { + return; + } + } + + override public function toString() : String + { + return NameUtil.displayObjectToString(this); + } + } +} diff --git a/scripts/mx/core/FlexSprite.as b/scripts/mx/core/FlexSprite.as new file mode 100644 index 0000000..5a2c80d --- /dev/null +++ b/scripts/mx/core/FlexSprite.as @@ -0,0 +1,33 @@ +package mx.core +{ + import flash.display.Sprite; + import mx.utils.NameUtil; + + use namespace mx_internal; + + public class FlexSprite extends Sprite + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function FlexSprite() + { + super(); + try + { + name = NameUtil.createUniqueName(this); + return; + } + catch(e:Error) + { + return; + } + } + + override public function toString() : String + { + return NameUtil.displayObjectToString(this); + } + } +} diff --git a/scripts/mx/core/IAssetLayoutFeatures.as b/scripts/mx/core/IAssetLayoutFeatures.as new file mode 100644 index 0000000..21aa18c --- /dev/null +++ b/scripts/mx/core/IAssetLayoutFeatures.as @@ -0,0 +1,90 @@ +package mx.core +{ + import flash.geom.Matrix; + import flash.geom.Matrix3D; + + public interface IAssetLayoutFeatures + { + + + function set layoutX(param1:Number) : void; + + function get layoutX() : Number; + + function set layoutY(param1:Number) : void; + + function get layoutY() : Number; + + function set layoutZ(param1:Number) : void; + + function get layoutZ() : Number; + + function get layoutWidth() : Number; + + function set layoutWidth(param1:Number) : void; + + function set transformX(param1:Number) : void; + + function get transformX() : Number; + + function set transformY(param1:Number) : void; + + function get transformY() : Number; + + function set transformZ(param1:Number) : void; + + function get transformZ() : Number; + + function set layoutRotationX(param1:Number) : void; + + function get layoutRotationX() : Number; + + function set layoutRotationY(param1:Number) : void; + + function get layoutRotationY() : Number; + + function set layoutRotationZ(param1:Number) : void; + + function get layoutRotationZ() : Number; + + function set layoutScaleX(param1:Number) : void; + + function get layoutScaleX() : Number; + + function set layoutScaleY(param1:Number) : void; + + function get layoutScaleY() : Number; + + function set layoutScaleZ(param1:Number) : void; + + function get layoutScaleZ() : Number; + + function set layoutMatrix(param1:Matrix) : void; + + function get layoutMatrix() : Matrix; + + function set layoutMatrix3D(param1:Matrix3D) : void; + + function get layoutMatrix3D() : Matrix3D; + + function get is3D() : Boolean; + + function get layoutIs3D() : Boolean; + + function get mirror() : Boolean; + + function set mirror(param1:Boolean) : void; + + function get stretchX() : Number; + + function set stretchX(param1:Number) : void; + + function get stretchY() : Number; + + function set stretchY(param1:Number) : void; + + function get computedMatrix() : Matrix; + + function get computedMatrix3D() : Matrix3D; + } +} diff --git a/scripts/mx/core/IChildList.as b/scripts/mx/core/IChildList.as new file mode 100644 index 0000000..21d452e --- /dev/null +++ b/scripts/mx/core/IChildList.as @@ -0,0 +1,32 @@ +package mx.core +{ + import flash.display.DisplayObject; + import flash.geom.Point; + + public interface IChildList + { + + + function get numChildren() : int; + + function addChild(param1:DisplayObject) : DisplayObject; + + function addChildAt(param1:DisplayObject, param2:int) : DisplayObject; + + function removeChild(param1:DisplayObject) : DisplayObject; + + function removeChildAt(param1:int) : DisplayObject; + + function getChildAt(param1:int) : DisplayObject; + + function getChildByName(param1:String) : DisplayObject; + + function getChildIndex(param1:DisplayObject) : int; + + function setChildIndex(param1:DisplayObject, param2:int) : void; + + function getObjectsUnderPoint(param1:Point) : Array; + + function contains(param1:DisplayObject) : Boolean; + } +} diff --git a/scripts/mx/core/IEmbeddedFontRegistry.as b/scripts/mx/core/IEmbeddedFontRegistry.as new file mode 100644 index 0000000..baa4f34 --- /dev/null +++ b/scripts/mx/core/IEmbeddedFontRegistry.as @@ -0,0 +1,21 @@ +package mx.core +{ + import mx.managers.ISystemManager; + + public interface IEmbeddedFontRegistry + { + + + function registerFont(param1:EmbeddedFont, param2:IFlexModuleFactory) : void; + + function deregisterFont(param1:EmbeddedFont, param2:IFlexModuleFactory) : void; + + function isFontRegistered(param1:EmbeddedFont, param2:IFlexModuleFactory) : Boolean; + + function getAssociatedModuleFactory(param1:String, param2:Boolean, param3:Boolean, param4:Object, param5:IFlexModuleFactory, param6:ISystemManager, param7:* = undefined) : IFlexModuleFactory; + + function getFonts() : Array; + + function getFontStyle(param1:Boolean, param2:Boolean) : String; + } +} diff --git a/scripts/mx/core/IFlexAsset.as b/scripts/mx/core/IFlexAsset.as new file mode 100644 index 0000000..ecd896a --- /dev/null +++ b/scripts/mx/core/IFlexAsset.as @@ -0,0 +1,7 @@ +package mx.core +{ + public interface IFlexAsset + { + + } +} diff --git a/scripts/mx/core/IFlexDisplayObject.as b/scripts/mx/core/IFlexDisplayObject.as new file mode 100644 index 0000000..08f7d08 --- /dev/null +++ b/scripts/mx/core/IFlexDisplayObject.as @@ -0,0 +1,126 @@ +package mx.core +{ + import flash.accessibility.AccessibilityProperties; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.IBitmapDrawable; + import flash.display.LoaderInfo; + import flash.display.Stage; + import flash.events.IEventDispatcher; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.geom.Transform; + + public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher + { + + + function get root() : DisplayObject; + + function get stage() : Stage; + + function get name() : String; + + function set name(param1:String) : void; + + function get parent() : DisplayObjectContainer; + + function get mask() : DisplayObject; + + function set mask(param1:DisplayObject) : void; + + function get visible() : Boolean; + + function set visible(param1:Boolean) : void; + + function get x() : Number; + + function set x(param1:Number) : void; + + function get y() : Number; + + function set y(param1:Number) : void; + + function get scaleX() : Number; + + function set scaleX(param1:Number) : void; + + function get scaleY() : Number; + + function set scaleY(param1:Number) : void; + + function get mouseX() : Number; + + function get mouseY() : Number; + + function get rotation() : Number; + + function set rotation(param1:Number) : void; + + function get alpha() : Number; + + function set alpha(param1:Number) : void; + + function get width() : Number; + + function set width(param1:Number) : void; + + function get height() : Number; + + function set height(param1:Number) : void; + + function get cacheAsBitmap() : Boolean; + + function set cacheAsBitmap(param1:Boolean) : void; + + function get opaqueBackground() : Object; + + function set opaqueBackground(param1:Object) : void; + + function get scrollRect() : Rectangle; + + function set scrollRect(param1:Rectangle) : void; + + function get filters() : Array; + + function set filters(param1:Array) : void; + + function get blendMode() : String; + + function set blendMode(param1:String) : void; + + function get transform() : Transform; + + function set transform(param1:Transform) : void; + + function get scale9Grid() : Rectangle; + + function set scale9Grid(param1:Rectangle) : void; + + function globalToLocal(param1:Point) : Point; + + function localToGlobal(param1:Point) : Point; + + function getBounds(param1:DisplayObject) : Rectangle; + + function getRect(param1:DisplayObject) : Rectangle; + + function get loaderInfo() : LoaderInfo; + + function hitTestObject(param1:DisplayObject) : Boolean; + + function hitTestPoint(param1:Number, param2:Number, param3:Boolean = false) : Boolean; + + function get accessibilityProperties() : AccessibilityProperties; + + function set accessibilityProperties(param1:AccessibilityProperties) : void; + + function get measuredHeight() : Number; + + function get measuredWidth() : Number; + + function move(param1:Number, param2:Number) : void; + + function setActualSize(param1:Number, param2:Number) : void; + } +} diff --git a/scripts/mx/core/IFlexModule.as b/scripts/mx/core/IFlexModule.as new file mode 100644 index 0000000..7ab66f0 --- /dev/null +++ b/scripts/mx/core/IFlexModule.as @@ -0,0 +1,11 @@ +package mx.core +{ + public interface IFlexModule + { + + + function set moduleFactory(param1:IFlexModuleFactory) : void; + + function get moduleFactory() : IFlexModuleFactory; + } +} diff --git a/scripts/mx/core/IFlexModuleFactory.as b/scripts/mx/core/IFlexModuleFactory.as new file mode 100644 index 0000000..41262f4 --- /dev/null +++ b/scripts/mx/core/IFlexModuleFactory.as @@ -0,0 +1,36 @@ +package mx.core +{ + import flash.display.LoaderInfo; + import flash.utils.Dictionary; + + public interface IFlexModuleFactory + { + + + function get allowDomainsInNewRSLs() : Boolean; + + function set allowDomainsInNewRSLs(param1:Boolean) : void; + + function get allowInsecureDomainsInNewRSLs() : Boolean; + + function set allowInsecureDomainsInNewRSLs(param1:Boolean) : void; + + function get preloadedRSLs() : Dictionary; + + function addPreloadedRSL(param1:LoaderInfo, param2:Vector.) : void; + + function allowDomain(... rest) : void; + + function allowInsecureDomain(... rest) : void; + + function callInContext(param1:Function, param2:Object, param3:Array, param4:Boolean = true) : *; + + function create(... rest) : Object; + + function getImplementation(param1:String) : Object; + + function info() : Object; + + function registerImplementation(param1:String, param2:Object) : void; + } +} diff --git a/scripts/mx/core/IInvalidating.as b/scripts/mx/core/IInvalidating.as new file mode 100644 index 0000000..54b6462 --- /dev/null +++ b/scripts/mx/core/IInvalidating.as @@ -0,0 +1,15 @@ +package mx.core +{ + public interface IInvalidating + { + + + function invalidateProperties() : void; + + function invalidateSize() : void; + + function invalidateDisplayList() : void; + + function validateNow() : void; + } +} diff --git a/scripts/mx/core/ILayoutDirectionElement.as b/scripts/mx/core/ILayoutDirectionElement.as new file mode 100644 index 0000000..1c1ff9b --- /dev/null +++ b/scripts/mx/core/ILayoutDirectionElement.as @@ -0,0 +1,13 @@ +package mx.core +{ + public interface ILayoutDirectionElement + { + + + function get layoutDirection() : String; + + function set layoutDirection(param1:String) : void; + + function invalidateLayoutDirection() : void; + } +} diff --git a/scripts/mx/core/IRawChildrenContainer.as b/scripts/mx/core/IRawChildrenContainer.as new file mode 100644 index 0000000..87228e9 --- /dev/null +++ b/scripts/mx/core/IRawChildrenContainer.as @@ -0,0 +1,9 @@ +package mx.core +{ + public interface IRawChildrenContainer + { + + + function get rawChildren() : IChildList; + } +} diff --git a/scripts/mx/core/IRepeaterClient.as b/scripts/mx/core/IRepeaterClient.as new file mode 100644 index 0000000..223bee5 --- /dev/null +++ b/scripts/mx/core/IRepeaterClient.as @@ -0,0 +1,23 @@ +package mx.core +{ + public interface IRepeaterClient + { + + + function get instanceIndices() : Array; + + function set instanceIndices(param1:Array) : void; + + function get isDocument() : Boolean; + + function get repeaterIndices() : Array; + + function set repeaterIndices(param1:Array) : void; + + function get repeaters() : Array; + + function set repeaters(param1:Array) : void; + + function initializeRepeaterArrays(param1:IRepeaterClient) : void; + } +} diff --git a/scripts/mx/core/IUIComponent.as b/scripts/mx/core/IUIComponent.as new file mode 100644 index 0000000..55e1d8c --- /dev/null +++ b/scripts/mx/core/IUIComponent.as @@ -0,0 +1,98 @@ +package mx.core +{ + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Sprite; + import mx.managers.ISystemManager; + + public interface IUIComponent extends IFlexDisplayObject + { + + + function get baselinePosition() : Number; + + function get document() : Object; + + function set document(param1:Object) : void; + + function get enabled() : Boolean; + + function set enabled(param1:Boolean) : void; + + function get explicitHeight() : Number; + + function set explicitHeight(param1:Number) : void; + + function get explicitMaxHeight() : Number; + + function get explicitMaxWidth() : Number; + + function get explicitMinHeight() : Number; + + function get explicitMinWidth() : Number; + + function get explicitWidth() : Number; + + function set explicitWidth(param1:Number) : void; + + function get focusPane() : Sprite; + + function set focusPane(param1:Sprite) : void; + + function get includeInLayout() : Boolean; + + function set includeInLayout(param1:Boolean) : void; + + function get isPopUp() : Boolean; + + function set isPopUp(param1:Boolean) : void; + + function get maxHeight() : Number; + + function get maxWidth() : Number; + + function get measuredMinHeight() : Number; + + function set measuredMinHeight(param1:Number) : void; + + function get measuredMinWidth() : Number; + + function set measuredMinWidth(param1:Number) : void; + + function get minHeight() : Number; + + function get minWidth() : Number; + + function get owner() : DisplayObjectContainer; + + function set owner(param1:DisplayObjectContainer) : void; + + function get percentHeight() : Number; + + function set percentHeight(param1:Number) : void; + + function get percentWidth() : Number; + + function set percentWidth(param1:Number) : void; + + function get systemManager() : ISystemManager; + + function set systemManager(param1:ISystemManager) : void; + + function get tweeningProperties() : Array; + + function set tweeningProperties(param1:Array) : void; + + function initialize() : void; + + function parentChanged(param1:DisplayObjectContainer) : void; + + function getExplicitOrMeasuredWidth() : Number; + + function getExplicitOrMeasuredHeight() : Number; + + function setVisible(param1:Boolean, param2:Boolean = false) : void; + + function owns(param1:DisplayObject) : Boolean; + } +} diff --git a/scripts/mx/core/RSLData.as b/scripts/mx/core/RSLData.as new file mode 100644 index 0000000..f5ebe8c --- /dev/null +++ b/scripts/mx/core/RSLData.as @@ -0,0 +1,85 @@ +package mx.core +{ + use namespace mx_internal; + + public class RSLData + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var _applicationDomainTarget:String; + + private var _digest:String; + + private var _hashType:String; + + private var _isSigned:Boolean; + + private var _moduleFactory:IFlexModuleFactory; + + private var _policyFileURL:String; + + private var _rslURL:String; + + private var _verifyDigest:Boolean; + + public function RSLData(param1:String = null, param2:String = null, param3:String = null, param4:String = null, param5:Boolean = false, param6:Boolean = false, param7:String = "default") + { + super(); + this._rslURL = param1; + this._policyFileURL = param2; + this._digest = param3; + this._hashType = param4; + this._isSigned = param5; + this._verifyDigest = param6; + this._applicationDomainTarget = param7; + this._moduleFactory = this.moduleFactory; + } + + public function get applicationDomainTarget() : String + { + return this._applicationDomainTarget; + } + + public function get digest() : String + { + return this._digest; + } + + public function get hashType() : String + { + return this._hashType; + } + + public function get isSigned() : Boolean + { + return this._isSigned; + } + + public function get moduleFactory() : IFlexModuleFactory + { + return this._moduleFactory; + } + + public function set moduleFactory(param1:IFlexModuleFactory) : void + { + this._moduleFactory = param1; + } + + public function get policyFileURL() : String + { + return this._policyFileURL; + } + + public function get rslURL() : String + { + return this._rslURL; + } + + public function get verifyDigest() : Boolean + { + return this._verifyDigest; + } + } +} diff --git a/scripts/mx/core/RSLItem.as b/scripts/mx/core/RSLItem.as new file mode 100644 index 0000000..c0f07b6 --- /dev/null +++ b/scripts/mx/core/RSLItem.as @@ -0,0 +1,122 @@ +package mx.core +{ + import flash.display.Loader; + import flash.events.ErrorEvent; + import flash.events.Event; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.net.URLRequest; + import flash.system.ApplicationDomain; + import flash.system.LoaderContext; + import mx.events.RSLEvent; + import mx.utils.LoaderUtil; + + use namespace mx_internal; + + public class RSLItem + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public var urlRequest:URLRequest; + + public var total:uint = 0; + + public var loaded:uint = 0; + + public var rootURL:String; + + protected var chainedProgressHandler:Function; + + protected var chainedCompleteHandler:Function; + + protected var chainedIOErrorHandler:Function; + + protected var chainedSecurityErrorHandler:Function; + + protected var chainedRSLErrorHandler:Function; + + private var completed:Boolean = false; + + private var errorText:String; + + protected var moduleFactory:IFlexModuleFactory; + + protected var url:String; + + public function RSLItem(param1:String, param2:String = null, param3:IFlexModuleFactory = null) + { + super(); + this.url = param1; + this.rootURL = param2; + this.moduleFactory = param3; + } + + public function load(param1:Function, param2:Function, param3:Function, param4:Function, param5:Function) : void + { + this.chainedProgressHandler = param1; + this.chainedCompleteHandler = param2; + this.chainedIOErrorHandler = param3; + this.chainedSecurityErrorHandler = param4; + this.chainedRSLErrorHandler = param5; + var _loc6_:Loader = new Loader(); + var _loc7_:LoaderContext = new LoaderContext(); + this.urlRequest = new URLRequest(LoaderUtil.createAbsoluteURL(this.rootURL,this.url)); + _loc6_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.itemProgressHandler); + _loc6_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.itemCompleteHandler); + _loc6_.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.itemErrorHandler); + _loc6_.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.itemErrorHandler); + if(this.moduleFactory != null) + { + _loc7_.applicationDomain = this.moduleFactory.info()["currentDomain"]; + } + else + { + _loc7_.applicationDomain = ApplicationDomain.currentDomain; + } + _loc6_.load(this.urlRequest,_loc7_); + } + + public function itemProgressHandler(param1:ProgressEvent) : void + { + this.loaded = param1.bytesLoaded; + this.total = param1.bytesTotal; + if(this.chainedProgressHandler != null) + { + this.chainedProgressHandler(param1); + } + } + + public function itemCompleteHandler(param1:Event) : void + { + this.completed = true; + if(this.chainedCompleteHandler != null) + { + this.chainedCompleteHandler(param1); + } + } + + public function itemErrorHandler(param1:ErrorEvent) : void + { + this.errorText = decodeURI(param1.text); + this.completed = true; + this.loaded = 0; + this.total = 0; + trace(this.errorText); + if(param1.type == IOErrorEvent.IO_ERROR && this.chainedIOErrorHandler != null) + { + this.chainedIOErrorHandler(param1); + } + else if(param1.type == SecurityErrorEvent.SECURITY_ERROR && this.chainedSecurityErrorHandler != null) + { + this.chainedSecurityErrorHandler(param1); + } + else if(param1.type == RSLEvent.RSL_ERROR && this.chainedRSLErrorHandler != null) + { + this.chainedRSLErrorHandler(param1); + } + } + } +} diff --git a/scripts/mx/core/RSLListLoader.as b/scripts/mx/core/RSLListLoader.as new file mode 100644 index 0000000..36de0e8 --- /dev/null +++ b/scripts/mx/core/RSLListLoader.as @@ -0,0 +1,106 @@ +package mx.core +{ + import flash.events.Event; + + use namespace mx_internal; + + public class RSLListLoader + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var currentIndex:int = 0; + + private var rslList:Array; + + private var chainedProgressHandler:Function; + + private var chainedCompleteHandler:Function; + + private var chainedIOErrorHandler:Function; + + private var chainedSecurityErrorHandler:Function; + + private var chainedRSLErrorHandler:Function; + + public function RSLListLoader(param1:Array) + { + this.rslList = []; + super(); + this.rslList = param1; + } + + public function load(param1:Function, param2:Function, param3:Function, param4:Function, param5:Function) : void + { + this.chainedProgressHandler = param1; + this.chainedCompleteHandler = param2; + this.chainedIOErrorHandler = param3; + this.chainedSecurityErrorHandler = param4; + this.chainedRSLErrorHandler = param5; + this.currentIndex = -1; + this.loadNext(); + } + + private function loadNext() : void + { + if(!this.isDone()) + { + this.currentIndex++; + if(this.currentIndex < this.rslList.length) + { + this.rslList[this.currentIndex].load(this.chainedProgressHandler,this.listCompleteHandler,this.listIOErrorHandler,this.listSecurityErrorHandler,this.chainedRSLErrorHandler); + } + } + } + + public function getItem(param1:int) : RSLItem + { + if(param1 < 0 || param1 >= this.rslList.length) + { + return null; + } + return this.rslList[param1]; + } + + public function getIndex() : int + { + return this.currentIndex; + } + + public function getItemCount() : int + { + return this.rslList.length; + } + + public function isDone() : Boolean + { + return this.currentIndex >= this.rslList.length; + } + + private function listCompleteHandler(param1:Event) : void + { + if(this.chainedCompleteHandler != null) + { + this.chainedCompleteHandler(param1); + } + this.loadNext(); + } + + private function listIOErrorHandler(param1:Event) : void + { + if(this.chainedIOErrorHandler != null) + { + this.chainedIOErrorHandler(param1); + } + } + + private function listSecurityErrorHandler(param1:Event) : void + { + if(this.chainedSecurityErrorHandler != null) + { + this.chainedSecurityErrorHandler(param1); + } + } + } +} diff --git a/scripts/mx/core/ResourceModuleRSLItem.as b/scripts/mx/core/ResourceModuleRSLItem.as new file mode 100644 index 0000000..0ef5787 --- /dev/null +++ b/scripts/mx/core/ResourceModuleRSLItem.as @@ -0,0 +1,60 @@ +package mx.core +{ + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.system.ApplicationDomain; + import mx.events.ResourceEvent; + import mx.resources.IResourceManager; + + use namespace mx_internal; + + public class ResourceModuleRSLItem extends RSLItem + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static var resourceManager:IResourceManager; + + + private var appDomain:ApplicationDomain; + + public function ResourceModuleRSLItem(param1:String, param2:ApplicationDomain) + { + super(param1); + this.appDomain = param2; + } + + override public function load(param1:Function, param2:Function, param3:Function, param4:Function, param5:Function) : void + { + var _loc7_:Class = null; + chainedProgressHandler = param1; + chainedCompleteHandler = param2; + chainedIOErrorHandler = param3; + chainedSecurityErrorHandler = param4; + chainedRSLErrorHandler = param5; + if(!resourceManager) + { + if(this.appDomain.hasDefinition("mx.resources::ResourceManager")) + { + _loc7_ = Class(this.appDomain.getDefinition("mx.resources::ResourceManager")); + resourceManager = IResourceManager(_loc7_["getInstance"]()); + } + else + { + return; + } + } + var _loc6_:IEventDispatcher = resourceManager.loadResourceModule(url); + _loc6_.addEventListener(ResourceEvent.PROGRESS,itemProgressHandler); + _loc6_.addEventListener(ResourceEvent.COMPLETE,itemCompleteHandler); + _loc6_.addEventListener(ResourceEvent.ERROR,this.resourceErrorHandler); + } + + private function resourceErrorHandler(param1:ResourceEvent) : void + { + var _loc2_:IOErrorEvent = new IOErrorEvent(IOErrorEvent.IO_ERROR); + _loc2_.text = param1.errorText; + super.itemErrorHandler(_loc2_); + } + } +} diff --git a/scripts/mx/core/RuntimeDPIProvider.as b/scripts/mx/core/RuntimeDPIProvider.as new file mode 100644 index 0000000..8f657e4 --- /dev/null +++ b/scripts/mx/core/RuntimeDPIProvider.as @@ -0,0 +1,34 @@ +package mx.core +{ + import flash.system.Capabilities; + + use namespace mx_internal; + + public class RuntimeDPIProvider + { + + + public function RuntimeDPIProvider() + { + super(); + } + + mx_internal static function classifyDPI(param1:Number) : Number + { + if(param1 < 200) + { + return DPIClassification.DPI_160; + } + if(param1 <= 280) + { + return DPIClassification.DPI_240; + } + return DPIClassification.DPI_320; + } + + public function get runtimeDPI() : Number + { + return classifyDPI(Capabilities.screenDPI); + } + } +} diff --git a/scripts/mx/core/Singleton.as b/scripts/mx/core/Singleton.as new file mode 100644 index 0000000..8a6899b --- /dev/null +++ b/scripts/mx/core/Singleton.as @@ -0,0 +1,42 @@ +package mx.core +{ + use namespace mx_internal; + + public class Singleton + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var classMap:Object = {}; + + + public function Singleton() + { + super(); + } + + public static function registerClass(param1:String, param2:Class) : void + { + var _loc3_:Class = classMap[param1]; + if(!_loc3_) + { + classMap[param1] = param2; + } + } + + public static function getClass(param1:String) : Class + { + return classMap[param1]; + } + + public static function getInstance(param1:String) : Object + { + var _loc2_:Class = classMap[param1]; + if(!_loc2_) + { + throw new Error("No class registered for interface \'" + param1 + "\'."); + } + return _loc2_["getInstance"](); + } + } +} diff --git a/scripts/mx/core/mx_internal.as b/scripts/mx/core/mx_internal.as new file mode 100644 index 0000000..79f7147 --- /dev/null +++ b/scripts/mx/core/mx_internal.as @@ -0,0 +1,4 @@ +package mx.core +{ + public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; +} diff --git a/scripts/mx/events/DynamicEvent.as b/scripts/mx/events/DynamicEvent.as new file mode 100644 index 0000000..c229313 --- /dev/null +++ b/scripts/mx/events/DynamicEvent.as @@ -0,0 +1,30 @@ +package mx.events +{ + import flash.events.Event; + import mx.core.mx_internal; + + use namespace mx_internal; + + public dynamic class DynamicEvent extends Event + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function DynamicEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + + override public function clone() : Event + { + var _loc2_:* = null; + var _loc1_:DynamicEvent = new DynamicEvent(type,bubbles,cancelable); + for(_loc2_ in this) + { + _loc1_[_loc2_] = this[_loc2_]; + } + return _loc1_; + } + } +} diff --git a/scripts/mx/events/FlexEvent.as b/scripts/mx/events/FlexEvent.as new file mode 100644 index 0000000..a620768 --- /dev/null +++ b/scripts/mx/events/FlexEvent.as @@ -0,0 +1,124 @@ +package mx.events +{ + import flash.events.Event; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class FlexEvent extends Event + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const ADD:String = "add"; + + public static const ADD_FOCUS_MANAGER:String = "addFocusManager"; + + public static const APPLICATION_COMPLETE:String = "applicationComplete"; + + public static const BUTTON_DOWN:String = "buttonDown"; + + public static const BACK_KEY_PRESSED:String = "backKeyPressed"; + + public static const CHANGE_END:String = "changeEnd"; + + public static const CHANGE_START:String = "changeStart"; + + public static const CHANGING:String = "changing"; + + public static const CREATION_COMPLETE:String = "creationComplete"; + + public static const CONTENT_CREATION_COMPLETE:String = "contentCreationComplete"; + + public static const CURSOR_UPDATE:String = "cursorUpdate"; + + public static const DATA_CHANGE:String = "dataChange"; + + public static const ENTER:String = "enter"; + + public static const ENTER_FRAME:String = "flexEventEnterFrame"; + + public static const ENTER_STATE:String = "enterState"; + + public static const EXIT_STATE:String = "exitState"; + + public static const FLEX_WINDOW_ACTIVATE:String = "flexWindowActivate"; + + public static const FLEX_WINDOW_DEACTIVATE:String = "flexWindowDeactivate"; + + public static const HIDE:String = "hide"; + + public static const IDLE:String = "idle"; + + public static const INIT_COMPLETE:String = "initComplete"; + + public static const INIT_PROGRESS:String = "initProgress"; + + public static const INITIALIZE:String = "initialize"; + + public static const INVALID:String = "invalid"; + + public static const LOADING:String = "loading"; + + public static const MENU_KEY_PRESSED:String = "menuKeyPressed"; + + public static const MUTED_CHANGE:String = "mutedChange"; + + public static const NAVIGATOR_STATE_LOADING:String = "navigatorStateLoading"; + + public static const NAVIGATOR_STATE_SAVING:String = "navigatorStateSaving"; + + public static const NEW_CHILD_APPLICATION:String = "newChildApplication"; + + public static const PREINITIALIZE:String = "preinitialize"; + + public static const PRELOADER_DONE:String = "preloaderDone"; + + public static const PRELOADER_DOC_FRAME_READY:String = "preloaderDocFrameReady"; + + public static const READY:String = "ready"; + + public static const RENDER:String = "flexEventRender"; + + public static const REMOVE:String = "remove"; + + public static const REPEAT:String = "repeat"; + + public static const REPEAT_END:String = "repeatEnd"; + + public static const REPEAT_START:String = "repeatStart"; + + public static const SELECTION_CHANGE:String = "selectionChange"; + + public static const SHOW:String = "show"; + + public static const STATE_CHANGE_COMPLETE:String = "stateChangeComplete"; + + public static const STATE_CHANGE_INTERRUPTED:String = "stateChangeInterrupted"; + + public static const TRANSFORM_CHANGE:String = "transformChange"; + + public static const TRANSITION_START:String = "transitionStart"; + + public static const TRANSITION_END:String = "transitionEnd"; + + public static const UPDATE_COMPLETE:String = "updateComplete"; + + public static const URL_CHANGED:String = "urlChanged"; + + public static const VALID:String = "valid"; + + public static const VALUE_COMMIT:String = "valueCommit"; + + + public function FlexEvent(param1:String, param2:Boolean = false, param3:Boolean = false) + { + super(param1,param2,param3); + } + + override public function clone() : Event + { + return new FlexEvent(type,bubbles,cancelable); + } + } +} diff --git a/scripts/mx/events/ModuleEvent.as b/scripts/mx/events/ModuleEvent.as new file mode 100644 index 0000000..4fc0eee --- /dev/null +++ b/scripts/mx/events/ModuleEvent.as @@ -0,0 +1,51 @@ +package mx.events +{ + import flash.events.Event; + import flash.events.ProgressEvent; + import mx.core.mx_internal; + import mx.modules.IModuleInfo; + + use namespace mx_internal; + + public class ModuleEvent extends ProgressEvent + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const ERROR:String = "error"; + + public static const PROGRESS:String = "progress"; + + public static const READY:String = "ready"; + + public static const SETUP:String = "setup"; + + public static const UNLOAD:String = "unload"; + + + public var errorText:String; + + private var _module:IModuleInfo; + + public function ModuleEvent(param1:String, param2:Boolean = false, param3:Boolean = false, param4:uint = 0, param5:uint = 0, param6:String = null, param7:IModuleInfo = null) + { + super(param1,param2,param3,param4,param5); + this.errorText = param6; + this._module = param7; + } + + public function get module() : IModuleInfo + { + if(this._module) + { + return this._module; + } + return target as IModuleInfo; + } + + override public function clone() : Event + { + return new ModuleEvent(type,bubbles,cancelable,bytesLoaded,bytesTotal,this.errorText,this.module); + } + } +} diff --git a/scripts/mx/events/RSLEvent.as b/scripts/mx/events/RSLEvent.as new file mode 100644 index 0000000..09ec8f7 --- /dev/null +++ b/scripts/mx/events/RSLEvent.as @@ -0,0 +1,53 @@ +package mx.events +{ + import flash.display.LoaderInfo; + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.net.URLRequest; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class RSLEvent extends ProgressEvent + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const RSL_ADD_PRELOADED:String = "rslAddPreloaded"; + + public static const RSL_COMPLETE:String = "rslComplete"; + + public static const RSL_ERROR:String = "rslError"; + + public static const RSL_PROGRESS:String = "rslProgress"; + + + public var errorText:String; + + public var isResourceModule:Boolean; + + public var loaderInfo:LoaderInfo; + + public var rslIndex:int; + + public var rslTotal:int; + + public var url:URLRequest; + + public function RSLEvent(param1:String, param2:Boolean = false, param3:Boolean = false, param4:int = -1, param5:int = -1, param6:int = -1, param7:int = -1, param8:URLRequest = null, param9:String = null, param10:Boolean = false, param11:LoaderInfo = null) + { + super(param1,param2,param3,param4,param5); + this.rslIndex = param6; + this.rslTotal = param7; + this.url = param8; + this.errorText = param9; + this.isResourceModule = param10; + this.loaderInfo = param11; + } + + override public function clone() : Event + { + return new RSLEvent(type,bubbles,cancelable,bytesLoaded,bytesTotal,this.rslIndex,this.rslTotal,this.url,this.errorText,this.isResourceModule,this.loaderInfo); + } + } +} diff --git a/scripts/mx/events/Request.as b/scripts/mx/events/Request.as new file mode 100644 index 0000000..6a852e1 --- /dev/null +++ b/scripts/mx/events/Request.as @@ -0,0 +1,30 @@ +package mx.events +{ + import flash.events.Event; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class Request extends Event + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const GET_PARENT_FLEX_MODULE_FACTORY_REQUEST:String = "getParentFlexModuleFactoryRequest"; + + + public var value:Object; + + public function Request(param1:String, param2:Boolean = false, param3:Boolean = false, param4:Object = null) + { + super(param1,param2,param3); + this.value = param4; + } + + override public function clone() : Event + { + var _loc1_:Request = new Request(type,bubbles,cancelable,this.value); + return _loc1_; + } + } +} diff --git a/scripts/mx/events/ResourceEvent.as b/scripts/mx/events/ResourceEvent.as new file mode 100644 index 0000000..d591aee --- /dev/null +++ b/scripts/mx/events/ResourceEvent.as @@ -0,0 +1,34 @@ +package mx.events +{ + import flash.events.Event; + import flash.events.ProgressEvent; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class ResourceEvent extends ProgressEvent + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const COMPLETE:String = "complete"; + + public static const ERROR:String = "error"; + + public static const PROGRESS:String = "progress"; + + + public var errorText:String; + + public function ResourceEvent(param1:String, param2:Boolean = false, param3:Boolean = false, param4:uint = 0, param5:uint = 0, param6:String = null) + { + super(param1,param2,param3,param4,param5); + this.errorText = param6; + } + + override public function clone() : Event + { + return new ResourceEvent(type,bubbles,cancelable,bytesLoaded,bytesTotal,this.errorText); + } + } +} diff --git a/scripts/mx/events/SandboxMouseEvent.as b/scripts/mx/events/SandboxMouseEvent.as new file mode 100644 index 0000000..8f59487 --- /dev/null +++ b/scripts/mx/events/SandboxMouseEvent.as @@ -0,0 +1,54 @@ +package mx.events +{ + import flash.events.Event; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class SandboxMouseEvent extends Event + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + public static const CLICK_SOMEWHERE:String = "clickSomewhere"; + + public static const DOUBLE_CLICK_SOMEWHERE:String = "doubleClickSomewhere"; + + public static const MOUSE_DOWN_SOMEWHERE:String = "mouseDownSomewhere"; + + public static const MOUSE_MOVE_SOMEWHERE:String = "mouseMoveSomewhere"; + + public static const MOUSE_UP_SOMEWHERE:String = "mouseUpSomewhere"; + + public static const MOUSE_WHEEL_SOMEWHERE:String = "mouseWheelSomewhere"; + + + public var altKey:Boolean; + + public var buttonDown:Boolean; + + public var ctrlKey:Boolean; + + public var shiftKey:Boolean; + + public function SandboxMouseEvent(param1:String, param2:Boolean = false, param3:Boolean = false, param4:Boolean = false, param5:Boolean = false, param6:Boolean = false, param7:Boolean = false) + { + super(param1,param2,param3); + this.ctrlKey = param4; + this.altKey = param5; + this.shiftKey = param6; + this.buttonDown = param7; + } + + public static function marshal(param1:Event) : SandboxMouseEvent + { + var _loc2_:Object = param1; + return new SandboxMouseEvent(_loc2_.type,_loc2_.bubbles,_loc2_.cancelable,_loc2_.ctrlKey,_loc2_.altKey,_loc2_.shiftKey,_loc2_.buttonDown); + } + + override public function clone() : Event + { + return new SandboxMouseEvent(type,bubbles,cancelable,this.ctrlKey,this.altKey,this.shiftKey,this.buttonDown); + } + } +} diff --git a/scripts/mx/managers/ISystemManager.as b/scripts/mx/managers/ISystemManager.as new file mode 100644 index 0000000..aef8848 --- /dev/null +++ b/scripts/mx/managers/ISystemManager.as @@ -0,0 +1,67 @@ +package mx.managers +{ + import flash.display.DisplayObject; + import flash.display.LoaderInfo; + import flash.display.Sprite; + import flash.display.Stage; + import flash.events.IEventDispatcher; + import flash.geom.Rectangle; + import flash.text.TextFormat; + import mx.core.IChildList; + import mx.core.IFlexModuleFactory; + + public interface ISystemManager extends IEventDispatcher, IChildList, IFlexModuleFactory + { + + + function get cursorChildren() : IChildList; + + function get document() : Object; + + function set document(param1:Object) : void; + + function get embeddedFontList() : Object; + + function get focusPane() : Sprite; + + function set focusPane(param1:Sprite) : void; + + function get isProxy() : Boolean; + + function get loaderInfo() : LoaderInfo; + + function get numModalWindows() : int; + + function set numModalWindows(param1:int) : void; + + function get popUpChildren() : IChildList; + + function get rawChildren() : IChildList; + + function get screen() : Rectangle; + + function get stage() : Stage; + + function get toolTipChildren() : IChildList; + + function get topLevelSystemManager() : ISystemManager; + + function getDefinitionByName(param1:String) : Object; + + function isTopLevel() : Boolean; + + function isFontFaceEmbedded(param1:TextFormat) : Boolean; + + function isTopLevelRoot() : Boolean; + + function getTopLevelRoot() : DisplayObject; + + function getSandboxRoot() : DisplayObject; + + function getVisibleApplicationRect(param1:Rectangle = null, param2:Boolean = false) : Rectangle; + + function deployMouseShields(param1:Boolean) : void; + + function invalidateParentSizeAndDisplayList() : void; + } +} diff --git a/scripts/mx/managers/ISystemManagerChildManager.as b/scripts/mx/managers/ISystemManagerChildManager.as new file mode 100644 index 0000000..d06c42b --- /dev/null +++ b/scripts/mx/managers/ISystemManagerChildManager.as @@ -0,0 +1,19 @@ +package mx.managers +{ + import flash.display.DisplayObject; + + public interface ISystemManagerChildManager + { + + + function addingChild(param1:DisplayObject) : void; + + function childAdded(param1:DisplayObject) : void; + + function childRemoved(param1:DisplayObject) : void; + + function removingChild(param1:DisplayObject) : void; + + function initializeTopLevelWindow(param1:Number, param2:Number) : void; + } +} diff --git a/scripts/mx/managers/SystemChildrenList.as b/scripts/mx/managers/SystemChildrenList.as new file mode 100644 index 0000000..e9262bc --- /dev/null +++ b/scripts/mx/managers/SystemChildrenList.as @@ -0,0 +1,113 @@ +package mx.managers +{ + import flash.display.DisplayObject; + import flash.geom.Point; + import mx.core.IChildList; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class SystemChildrenList implements IChildList + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var owner:SystemManager; + + private var lowerBoundReference:QName; + + private var upperBoundReference:QName; + + public function SystemChildrenList(param1:SystemManager, param2:QName, param3:QName) + { + super(); + this.owner = param1; + this.lowerBoundReference = param2; + this.upperBoundReference = param3; + } + + public function get numChildren() : int + { + return this.owner[this.upperBoundReference] - this.owner[this.lowerBoundReference]; + } + + public function addChild(param1:DisplayObject) : DisplayObject + { + this.owner.rawChildren_addChildAt(param1,this.owner[this.upperBoundReference]); + this.owner[this.upperBoundReference]++; + return param1; + } + + public function addChildAt(param1:DisplayObject, param2:int) : DisplayObject + { + this.owner.rawChildren_addChildAt(param1,this.owner[this.lowerBoundReference] + param2); + this.owner[this.upperBoundReference]++; + return param1; + } + + public function removeChild(param1:DisplayObject) : DisplayObject + { + var _loc2_:int = this.owner.rawChildren_getChildIndex(param1); + if(this.owner[this.lowerBoundReference] <= _loc2_ && _loc2_ < this.owner[this.upperBoundReference]) + { + this.owner.rawChildren_removeChild(param1); + this.owner[this.upperBoundReference]--; + } + return param1; + } + + public function removeChildAt(param1:int) : DisplayObject + { + var _loc2_:DisplayObject = this.owner.rawChildren_removeChildAt(param1 + this.owner[this.lowerBoundReference]); + this.owner[this.upperBoundReference]--; + return _loc2_; + } + + public function getChildAt(param1:int) : DisplayObject + { + var _loc2_:DisplayObject = this.owner.rawChildren_getChildAt(this.owner[this.lowerBoundReference] + param1); + return _loc2_; + } + + public function getChildByName(param1:String) : DisplayObject + { + return this.owner.rawChildren_getChildByName(param1); + } + + public function getChildIndex(param1:DisplayObject) : int + { + var _loc2_:int = this.owner.rawChildren_getChildIndex(param1); + _loc2_ = _loc2_ - this.owner[this.lowerBoundReference]; + return _loc2_; + } + + public function setChildIndex(param1:DisplayObject, param2:int) : void + { + this.owner.rawChildren_setChildIndex(param1,this.owner[this.lowerBoundReference] + param2); + } + + public function getObjectsUnderPoint(param1:Point) : Array + { + return this.owner.rawChildren_getObjectsUnderPoint(param1); + } + + public function contains(param1:DisplayObject) : Boolean + { + var _loc2_:int = 0; + if(param1 != this.owner && this.owner.rawChildren_contains(param1)) + { + while(param1.parent != this.owner) + { + param1 = param1.parent; + } + _loc2_ = this.owner.rawChildren_getChildIndex(param1); + if(_loc2_ >= this.owner[this.lowerBoundReference] && _loc2_ < this.owner[this.upperBoundReference]) + { + return true; + } + } + return false; + } + } +} diff --git a/scripts/mx/managers/SystemManager.as b/scripts/mx/managers/SystemManager.as new file mode 100644 index 0000000..5e13232 --- /dev/null +++ b/scripts/mx/managers/SystemManager.as @@ -0,0 +1,1994 @@ +package mx.managers +{ + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Graphics; + import flash.display.Loader; + import flash.display.LoaderInfo; + import flash.display.MovieClip; + import flash.display.Sprite; + import flash.display.Stage; + import flash.display.StageAlign; + import flash.display.StageQuality; + import flash.display.StageScaleMode; + import flash.events.Event; + import flash.events.EventPhase; + import flash.events.FocusEvent; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.events.TimerEvent; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.system.ApplicationDomain; + import flash.text.Font; + import flash.text.TextFormat; + import flash.ui.Keyboard; + import flash.utils.Dictionary; + import flash.utils.Timer; + import flash.utils.getQualifiedClassName; + import mx.core.FlexSprite; + import mx.core.IChildList; + import mx.core.IFlexDisplayObject; + import mx.core.IFlexModuleFactory; + import mx.core.IInvalidating; + import mx.core.IRawChildrenContainer; + import mx.core.IUIComponent; + import mx.core.RSLData; + import mx.core.RSLItem; + import mx.core.Singleton; + import mx.core.mx_internal; + import mx.events.DynamicEvent; + import mx.events.FlexEvent; + import mx.events.RSLEvent; + import mx.events.Request; + import mx.events.SandboxMouseEvent; + import mx.preloaders.Preloader; + import mx.utils.DensityUtil; + import mx.utils.LoaderUtil; + + use namespace mx_internal; + + public class SystemManager extends MovieClip implements IChildList, IFlexDisplayObject, IFlexModuleFactory, ISystemManager + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static const IDLE_THRESHOLD:Number = 1000; + + private static const IDLE_INTERVAL:Number = 100; + + mx_internal static var allSystemManagers:Dictionary = new Dictionary(true); + + + mx_internal var topLevel:Boolean = true; + + private var isDispatchingResizeEvent:Boolean; + + mx_internal var isStageRoot:Boolean = true; + + mx_internal var isBootstrapRoot:Boolean = false; + + private var _topLevelSystemManager:ISystemManager; + + mx_internal var childManager:ISystemManagerChildManager; + + private var _stage:Stage; + + mx_internal var nestLevel:int = 0; + + mx_internal var preloader:Preloader; + + private var mouseCatcher:Sprite; + + mx_internal var topLevelWindow:IUIComponent; + + mx_internal var idleCounter:int = 0; + + private var idleTimer:Timer; + + private var nextFrameTimer:Timer = null; + + private var lastFrame:int; + + private var readyForKickOff:Boolean; + + public var _resourceBundles:Array; + + private var rslDataList:Array; + + private var _height:Number; + + private var _width:Number; + + private var _allowDomainsInNewRSLs:Boolean = true; + + private var _allowInsecureDomainsInNewRSLs:Boolean = true; + + private var _applicationIndex:int = 1; + + private var _cursorChildren:SystemChildrenList; + + private var _cursorIndex:int = 0; + + private var _densityScale:Number = NaN; + + private var _document:Object; + + private var _fontList:Object = null; + + private var _explicitHeight:Number; + + private var _explicitWidth:Number; + + private var _focusPane:Sprite; + + private var _noTopMostIndex:int = 0; + + private var _numModalWindows:int = 0; + + private var _popUpChildren:SystemChildrenList; + + private var _rawChildren:SystemRawChildrenList; + + mx_internal var _screen:Rectangle; + + private var _toolTipChildren:SystemChildrenList; + + private var _toolTipIndex:int = 0; + + private var _topMostIndex:int = 0; + + mx_internal var _mouseX; + + mx_internal var _mouseY; + + private var implMap:Object; + + public function SystemManager() + { + this.implMap = {}; + super(); + if(this.stage) + { + this.stage.scaleMode = StageScaleMode.NO_SCALE; + this.stage.align = StageAlign.TOP_LEFT; + this.stage.quality = StageQuality.HIGH; + } + if(SystemManagerGlobals.topLevelSystemManagers.length > 0 && !this.stage) + { + this.topLevel = false; + } + if(!this.stage) + { + this.isStageRoot = false; + } + if(this.topLevel) + { + SystemManagerGlobals.topLevelSystemManagers.push(this); + } + stop(); + if(root && root.loaderInfo) + { + root.loaderInfo.addEventListener(Event.INIT,this.initHandler); + } + } + + public static function getSWFRoot(param1:Object) : DisplayObject + { + var _loc3_:* = undefined; + var _loc4_:ISystemManager = null; + var _loc5_:ApplicationDomain = null; + var _loc6_:Class = null; + var _loc2_:String = getQualifiedClassName(param1); + for(_loc3_ in allSystemManagers) + { + _loc4_ = _loc3_ as ISystemManager; + _loc5_ = _loc4_.loaderInfo.applicationDomain; + try + { + _loc6_ = Class(_loc5_.getDefinition(_loc2_)); + if(param1 is _loc6_) + { + return _loc4_ as DisplayObject; + } + } + catch(e:Error) + { + continue; + } + } + return null; + } + + private static function getChildListIndex(param1:IChildList, param2:Object) : int + { + var _loc3_:int = -1; + try + { + _loc3_ = param1.getChildIndex(DisplayObject(param2)); + } + catch(e:ArgumentError) + { + } + return _loc3_; + } + + private function deferredNextFrame() : void + { + if(currentFrame + 1 > totalFrames) + { + return; + } + if(currentFrame + 1 <= framesLoaded) + { + nextFrame(); + } + else + { + this.nextFrameTimer = new Timer(100); + this.nextFrameTimer.addEventListener(TimerEvent.TIMER,this.nextFrameTimerHandler); + this.nextFrameTimer.start(); + } + } + + override public function get height() : Number + { + return this._height; + } + + override public function get stage() : Stage + { + var _loc2_:DisplayObject = null; + if(this._stage) + { + return this._stage; + } + var _loc1_:Stage = super.stage; + if(_loc1_) + { + this._stage = _loc1_; + return _loc1_; + } + if(!this.topLevel && this._topLevelSystemManager) + { + this._stage = this._topLevelSystemManager.stage; + return this._stage; + } + if(!this.isStageRoot && this.topLevel) + { + _loc2_ = this.getTopLevelRoot(); + if(_loc2_) + { + this._stage = _loc2_.stage; + return this._stage; + } + } + return null; + } + + override public function get width() : Number + { + return this._width; + } + + override public function get numChildren() : int + { + return this.noTopMostIndex - this.applicationIndex; + } + + public function get allowDomainsInNewRSLs() : Boolean + { + return this._allowDomainsInNewRSLs; + } + + public function set allowDomainsInNewRSLs(param1:Boolean) : void + { + this._allowDomainsInNewRSLs = param1; + } + + public function get allowInsecureDomainsInNewRSLs() : Boolean + { + return this._allowInsecureDomainsInNewRSLs; + } + + public function set allowInsecureDomainsInNewRSLs(param1:Boolean) : void + { + this._allowInsecureDomainsInNewRSLs = param1; + } + + public function get application() : IUIComponent + { + return IUIComponent(this._document); + } + + mx_internal function get applicationIndex() : int + { + return this._applicationIndex; + } + + mx_internal function set applicationIndex(param1:int) : void + { + this._applicationIndex = param1; + } + + public function get cursorChildren() : IChildList + { + if(!this.topLevel) + { + return this._topLevelSystemManager.cursorChildren; + } + if(!this._cursorChildren) + { + this._cursorChildren = new SystemChildrenList(this,new QName(mx_internal,"toolTipIndex"),new QName(mx_internal,"cursorIndex")); + } + return this._cursorChildren; + } + + mx_internal function get cursorIndex() : int + { + return this._cursorIndex; + } + + mx_internal function set cursorIndex(param1:int) : void + { + var _loc2_:int = param1 - this._cursorIndex; + this._cursorIndex = param1; + } + + mx_internal function get densityScale() : Number + { + var _loc1_:Number = NaN; + var _loc2_:Number = NaN; + if(isNaN(this._densityScale)) + { + _loc1_ = this.info()["applicationDPI"]; + _loc2_ = DensityUtil.getRuntimeDPI(); + this._densityScale = DensityUtil.getDPIScale(_loc1_,_loc2_); + if(isNaN(this._densityScale)) + { + this._densityScale = 1; + } + } + return this._densityScale; + } + + public function get document() : Object + { + return this._document; + } + + public function set document(param1:Object) : void + { + this._document = param1; + } + + public function get embeddedFontList() : Object + { + var _loc1_:Object = null; + var _loc2_:* = null; + var _loc3_:Object = null; + if(this._fontList == null) + { + this._fontList = {}; + _loc1_ = this.info()["fonts"]; + for(_loc2_ in _loc1_) + { + this._fontList[_loc2_] = _loc1_[_loc2_]; + } + if(!this.topLevel && this._topLevelSystemManager) + { + _loc3_ = this._topLevelSystemManager.embeddedFontList; + for(_loc2_ in _loc3_) + { + this._fontList[_loc2_] = _loc3_[_loc2_]; + } + } + } + return this._fontList; + } + + public function get explicitHeight() : Number + { + return this._explicitHeight; + } + + public function set explicitHeight(param1:Number) : void + { + this._explicitHeight = param1; + } + + public function get explicitWidth() : Number + { + return this._explicitWidth; + } + + public function set explicitWidth(param1:Number) : void + { + this._explicitWidth = param1; + } + + public function get focusPane() : Sprite + { + return this._focusPane; + } + + public function set focusPane(param1:Sprite) : void + { + if(param1) + { + this.addChild(param1); + param1.x = 0; + param1.y = 0; + param1.scrollRect = null; + this._focusPane = param1; + } + else + { + this.removeChild(this._focusPane); + this._focusPane = null; + } + } + + public function get isProxy() : Boolean + { + return false; + } + + public function get measuredHeight() : Number + { + return !!this.topLevelWindow?Number(this.topLevelWindow.getExplicitOrMeasuredHeight()):Number(loaderInfo.height); + } + + public function get measuredWidth() : Number + { + return !!this.topLevelWindow?Number(this.topLevelWindow.getExplicitOrMeasuredWidth()):Number(loaderInfo.width); + } + + mx_internal function get noTopMostIndex() : int + { + return this._noTopMostIndex; + } + + mx_internal function set noTopMostIndex(param1:int) : void + { + var _loc2_:int = param1 - this._noTopMostIndex; + this._noTopMostIndex = param1; + this.topMostIndex = this.topMostIndex + _loc2_; + } + + mx_internal final function get $numChildren() : int + { + return super.numChildren; + } + + public function get numModalWindows() : int + { + return this._numModalWindows; + } + + public function set numModalWindows(param1:int) : void + { + this._numModalWindows = param1; + } + + public function get preloadedRSLs() : Dictionary + { + return null; + } + + public function addPreloadedRSL(param1:LoaderInfo, param2:Vector.) : void + { + var _loc3_:RSLEvent = null; + this.preloadedRSLs[param1] = param2; + if(hasEventListener(RSLEvent.RSL_ADD_PRELOADED)) + { + _loc3_ = new RSLEvent(RSLEvent.RSL_ADD_PRELOADED); + _loc3_.loaderInfo = param1; + dispatchEvent(_loc3_); + } + } + + public function get preloaderBackgroundAlpha() : Number + { + return this.info()["backgroundAlpha"]; + } + + public function get preloaderBackgroundColor() : uint + { + var _loc1_:* = this.info()["backgroundColor"]; + if(_loc1_ == undefined) + { + return 4294967295; + } + return _loc1_; + } + + public function get preloaderBackgroundImage() : Object + { + return this.info()["backgroundImage"]; + } + + public function get preloaderBackgroundSize() : String + { + return this.info()["backgroundSize"]; + } + + public function get popUpChildren() : IChildList + { + if(!this.topLevel) + { + return this._topLevelSystemManager.popUpChildren; + } + if(!this._popUpChildren) + { + this._popUpChildren = new SystemChildrenList(this,new QName(mx_internal,"noTopMostIndex"),new QName(mx_internal,"topMostIndex")); + } + return this._popUpChildren; + } + + public function get rawChildren() : IChildList + { + if(!this._rawChildren) + { + this._rawChildren = new SystemRawChildrenList(this); + } + return this._rawChildren; + } + + public function get screen() : Rectangle + { + if(!this._screen) + { + this.Stage_resizeHandler(); + } + if(!this.isStageRoot) + { + this.Stage_resizeHandler(); + } + return this._screen; + } + + public function get toolTipChildren() : IChildList + { + if(!this.topLevel) + { + return this._topLevelSystemManager.toolTipChildren; + } + if(!this._toolTipChildren) + { + this._toolTipChildren = new SystemChildrenList(this,new QName(mx_internal,"topMostIndex"),new QName(mx_internal,"toolTipIndex")); + } + return this._toolTipChildren; + } + + mx_internal function get toolTipIndex() : int + { + return this._toolTipIndex; + } + + mx_internal function set toolTipIndex(param1:int) : void + { + var _loc2_:int = param1 - this._toolTipIndex; + this._toolTipIndex = param1; + this.cursorIndex = this.cursorIndex + _loc2_; + } + + public function get topLevelSystemManager() : ISystemManager + { + if(this.topLevel) + { + return this; + } + return this._topLevelSystemManager; + } + + mx_internal function get topMostIndex() : int + { + return this._topMostIndex; + } + + mx_internal function set topMostIndex(param1:int) : void + { + var _loc2_:int = param1 - this._topMostIndex; + this._topMostIndex = param1; + this.toolTipIndex = this.toolTipIndex + _loc2_; + } + + mx_internal final function $addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + super.addEventListener(param1,param2,param3,param4,param5); + } + + public function get childAllowsParent() : Boolean + { + try + { + return loaderInfo.childAllowsParent; + } + catch(error:Error) + { + } + return false; + } + + public function get parentAllowsChild() : Boolean + { + try + { + return loaderInfo.parentAllowsChild; + } + catch(error:Error) + { + } + return false; + } + + override public function addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + var request:DynamicEvent = null; + var type:String = param1; + var listener:Function = param2; + var useCapture:Boolean = param3; + var priority:int = param4; + var useWeakReference:Boolean = param5; + if(type == MouseEvent.MOUSE_MOVE || type == MouseEvent.MOUSE_UP || type == MouseEvent.MOUSE_DOWN || type == Event.ACTIVATE || type == Event.DEACTIVATE) + { + try + { + if(this.stage) + { + this.stage.addEventListener(type,this.stageEventHandler,false,0,true); + } + } + catch(error:SecurityError) + { + } + } + if(hasEventListener("addEventListener")) + { + request = new DynamicEvent("addEventListener",false,true); + request.eventType = type; + request.listener = listener; + request.useCapture = useCapture; + request.priority = priority; + request.useWeakReference = useWeakReference; + if(!dispatchEvent(request)) + { + return; + } + } + if(type == SandboxMouseEvent.MOUSE_UP_SOMEWHERE) + { + try + { + if(this.stage) + { + this.stage.addEventListener(Event.MOUSE_LEAVE,this.mouseLeaveHandler,false,0,true); + } + else + { + super.addEventListener(Event.MOUSE_LEAVE,this.mouseLeaveHandler,false,0,true); + } + } + catch(error:SecurityError) + { + super.addEventListener(Event.MOUSE_LEAVE,mouseLeaveHandler,false,0,true); + } + } + if(type == FlexEvent.RENDER || type == FlexEvent.ENTER_FRAME) + { + if(type == FlexEvent.RENDER) + { + type = Event.RENDER; + } + else + { + type = Event.ENTER_FRAME; + } + try + { + if(this.stage) + { + this.stage.addEventListener(type,listener,useCapture,priority,useWeakReference); + } + else + { + super.addEventListener(type,listener,useCapture,priority,useWeakReference); + } + } + catch(error:SecurityError) + { + super.addEventListener(type,listener,useCapture,priority,useWeakReference); + } + if(this.stage && type == Event.RENDER) + { + this.stage.invalidate(); + } + return; + } + if(type == FlexEvent.IDLE && !this.idleTimer) + { + this.idleTimer = new Timer(IDLE_INTERVAL); + this.idleTimer.addEventListener(TimerEvent.TIMER,this.idleTimer_timerHandler); + this.idleTimer.start(); + this.addEventListener(MouseEvent.MOUSE_MOVE,this.mouseMoveHandler,true); + this.addEventListener(MouseEvent.MOUSE_UP,this.mouseUpHandler,true); + } + super.addEventListener(type,listener,useCapture,priority,useWeakReference); + } + + mx_internal final function $removeEventListener(param1:String, param2:Function, param3:Boolean = false) : void + { + super.removeEventListener(param1,param2,param3); + } + + override public function removeEventListener(param1:String, param2:Function, param3:Boolean = false) : void + { + var _loc4_:DynamicEvent = null; + if(hasEventListener("removeEventListener")) + { + _loc4_ = new DynamicEvent("removeEventListener",false,true); + _loc4_.eventType = param1; + _loc4_.listener = param2; + _loc4_.useCapture = param3; + if(!dispatchEvent(_loc4_)) + { + return; + } + } + if(param1 == FlexEvent.RENDER || param1 == FlexEvent.ENTER_FRAME) + { + if(param1 == FlexEvent.RENDER) + { + param1 = Event.RENDER; + } + else + { + param1 = Event.ENTER_FRAME; + } + try + { + if(this.stage) + { + this.stage.removeEventListener(param1,param2,param3); + } + } + catch(error:SecurityError) + { + } + super.removeEventListener(param1,param2,param3); + return; + } + if(param1 == FlexEvent.IDLE) + { + super.removeEventListener(param1,param2,param3); + if(!hasEventListener(FlexEvent.IDLE) && this.idleTimer) + { + this.idleTimer.stop(); + this.idleTimer = null; + this.removeEventListener(MouseEvent.MOUSE_MOVE,this.mouseMoveHandler); + this.removeEventListener(MouseEvent.MOUSE_UP,this.mouseUpHandler); + } + } + else + { + super.removeEventListener(param1,param2,param3); + } + if(param1 == MouseEvent.MOUSE_MOVE || param1 == MouseEvent.MOUSE_UP || param1 == MouseEvent.MOUSE_DOWN || param1 == Event.ACTIVATE || param1 == Event.DEACTIVATE) + { + if(!hasEventListener(param1)) + { + try + { + if(this.stage) + { + this.stage.removeEventListener(param1,this.stageEventHandler,false); + } + } + catch(error:SecurityError) + { + } + } + } + if(param1 == SandboxMouseEvent.MOUSE_UP_SOMEWHERE) + { + if(!hasEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE)) + { + try + { + if(this.stage) + { + this.stage.removeEventListener(Event.MOUSE_LEAVE,this.mouseLeaveHandler); + } + } + catch(error:SecurityError) + { + } + super.removeEventListener(Event.MOUSE_LEAVE,this.mouseLeaveHandler); + } + } + } + + override public function addChild(param1:DisplayObject) : DisplayObject + { + var _loc2_:int = this.numChildren; + if(param1.parent == this) + { + _loc2_--; + } + return this.addChildAt(param1,_loc2_); + } + + override public function addChildAt(param1:DisplayObject, param2:int) : DisplayObject + { + this.noTopMostIndex++; + var _loc3_:DisplayObjectContainer = param1.parent; + if(_loc3_) + { + _loc3_.removeChild(param1); + } + return this.rawChildren_addChildAt(param1,this.applicationIndex + param2); + } + + mx_internal final function $addChildAt(param1:DisplayObject, param2:int) : DisplayObject + { + return super.addChildAt(param1,param2); + } + + mx_internal final function $removeChildAt(param1:int) : DisplayObject + { + return super.removeChildAt(param1); + } + + override public function removeChild(param1:DisplayObject) : DisplayObject + { + this.noTopMostIndex--; + return this.rawChildren_removeChild(param1); + } + + override public function removeChildAt(param1:int) : DisplayObject + { + this.noTopMostIndex--; + return this.rawChildren_removeChildAt(this.applicationIndex + param1); + } + + override public function getChildAt(param1:int) : DisplayObject + { + return super.getChildAt(this.applicationIndex + param1); + } + + override public function getChildByName(param1:String) : DisplayObject + { + return super.getChildByName(param1); + } + + override public function getChildIndex(param1:DisplayObject) : int + { + return super.getChildIndex(param1) - this.applicationIndex; + } + + override public function setChildIndex(param1:DisplayObject, param2:int) : void + { + super.setChildIndex(param1,this.applicationIndex + param2); + } + + override public function getObjectsUnderPoint(param1:Point) : Array + { + var _loc5_:DisplayObject = null; + var _loc6_:Array = null; + var _loc2_:Array = []; + var _loc3_:int = this.topMostIndex; + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = super.getChildAt(_loc4_); + if(_loc5_ is DisplayObjectContainer) + { + _loc6_ = DisplayObjectContainer(_loc5_).getObjectsUnderPoint(param1); + if(_loc6_) + { + _loc2_ = _loc2_.concat(_loc6_); + } + } + _loc4_++; + } + return _loc2_; + } + + override public function contains(param1:DisplayObject) : Boolean + { + var _loc2_:int = 0; + var _loc3_:int = 0; + var _loc4_:DisplayObject = null; + if(super.contains(param1)) + { + if(param1.parent == this) + { + _loc2_ = super.getChildIndex(param1); + if(_loc2_ < this.noTopMostIndex) + { + return true; + } + } + else + { + _loc3_ = 0; + while(_loc3_ < this.noTopMostIndex) + { + _loc4_ = super.getChildAt(_loc3_); + if(_loc4_ is IRawChildrenContainer) + { + if(IRawChildrenContainer(_loc4_).rawChildren.contains(param1)) + { + return true; + } + } + if(_loc4_ is DisplayObjectContainer) + { + if(DisplayObjectContainer(_loc4_).contains(param1)) + { + return true; + } + } + _loc3_++; + } + } + } + return false; + } + + public function callInContext(param1:Function, param2:Object, param3:Array, param4:Boolean = true) : * + { + return undefined; + } + + public function create(... rest) : Object + { + var _loc4_:String = null; + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc2_:String = this.info()["mainClassName"]; + if(_loc2_ == null) + { + _loc4_ = loaderInfo.loaderURL; + _loc5_ = _loc4_.lastIndexOf("."); + _loc6_ = _loc4_.lastIndexOf("/"); + _loc2_ = _loc4_.substring(_loc6_ + 1,_loc5_); + } + var _loc3_:Class = Class(this.getDefinitionByName(_loc2_)); + return !!_loc3_?new _loc3_():null; + } + + public function info() : Object + { + return {}; + } + + mx_internal function initialize() : void + { + var _loc7_:int = 0; + var _loc8_:int = 0; + var _loc12_:String = null; + var _loc13_:Class = null; + var _loc14_:Array = null; + var _loc15_:Object = null; + var _loc16_:RSLItem = null; + var _loc1_:Class = this.info()["runtimeDPIProvider"] as Class; + if(_loc1_) + { + Singleton.registerClass("mx.core::RuntimeDPIProvider",_loc1_); + } + if(this.isStageRoot) + { + this.Stage_resizeHandler(); + } + else + { + this._width = loaderInfo.width; + this._height = loaderInfo.height; + } + this.preloader = new Preloader(); + this.preloader.addEventListener(FlexEvent.PRELOADER_DOC_FRAME_READY,this.preloader_preloaderDocFrameReadyHandler); + this.preloader.addEventListener(Event.COMPLETE,this.preloader_completeHandler); + this.preloader.addEventListener(FlexEvent.PRELOADER_DONE,this.preloader_preloaderDoneHandler); + this.preloader.addEventListener(RSLEvent.RSL_COMPLETE,this.preloader_rslCompleteHandler); + if(!this._popUpChildren) + { + this._popUpChildren = new SystemChildrenList(this,new QName(mx_internal,"noTopMostIndex"),new QName(mx_internal,"topMostIndex")); + } + this._popUpChildren.addChild(this.preloader); + var _loc2_:Array = this.info()["rsls"]; + var _loc3_:Array = this.info()["cdRsls"]; + var _loc4_:Boolean = true; + if(this.info()["usePreloader"] != undefined) + { + _loc4_ = this.info()["usePreloader"]; + } + var _loc5_:Class = this.info()["preloader"] as Class; + var _loc6_:Array = []; + if(_loc3_ && _loc3_.length > 0) + { + if(this.isTopLevel()) + { + this.rslDataList = _loc3_; + } + else + { + this.rslDataList = LoaderUtil.processRequiredRSLs(this,_loc3_); + } + _loc12_ = LoaderUtil.normalizeURL(this.loaderInfo); + _loc13_ = Class(this.getDefinitionByName("mx.core::CrossDomainRSLItem")); + _loc7_ = this.rslDataList.length; + _loc8_ = 0; + while(_loc8_ < _loc7_) + { + _loc14_ = this.rslDataList[_loc8_]; + _loc15_ = new _loc13_(_loc14_,_loc12_,this); + _loc6_.push(_loc15_); + _loc8_++; + } + } + if(_loc2_ != null && _loc2_.length > 0) + { + if(this.rslDataList == null) + { + this.rslDataList = []; + } + if(_loc12_ == null) + { + _loc12_ = LoaderUtil.normalizeURL(this.loaderInfo); + } + _loc7_ = _loc2_.length; + _loc8_ = 0; + while(_loc8_ < _loc7_) + { + _loc16_ = new RSLItem(_loc2_[_loc8_].url,_loc12_,this); + _loc6_.push(_loc16_); + this.rslDataList.push([new RSLData(_loc2_[_loc8_].url,null,null,null,false,false,"current")]); + _loc8_++; + } + } + var _loc9_:String = loaderInfo.parameters["resourceModuleURLs"]; + var _loc10_:Array = !!_loc9_?_loc9_.split(","):null; + var _loc11_:ApplicationDomain = !this.topLevel && this.parent is Loader?Loader(this.parent).contentLoaderInfo.applicationDomain:this.info()["currentDomain"] as ApplicationDomain; + this.preloader.initialize(_loc4_,_loc5_,this.preloaderBackgroundColor,this.preloaderBackgroundAlpha,this.preloaderBackgroundImage,this.preloaderBackgroundSize,!!this.isStageRoot?Number(this.stage.stageWidth):Number(loaderInfo.width),!!this.isStageRoot?Number(this.stage.stageHeight):Number(loaderInfo.height),null,null,_loc6_,_loc10_,_loc11_); + } + + mx_internal function rawChildren_addChild(param1:DisplayObject) : DisplayObject + { + this.childManager.addingChild(param1); + super.addChild(param1); + this.childManager.childAdded(param1); + return param1; + } + + mx_internal function rawChildren_addChildAt(param1:DisplayObject, param2:int) : DisplayObject + { + if(this.childManager) + { + this.childManager.addingChild(param1); + } + super.addChildAt(param1,param2); + if(this.childManager) + { + this.childManager.childAdded(param1); + } + return param1; + } + + mx_internal function rawChildren_removeChild(param1:DisplayObject) : DisplayObject + { + this.childManager.removingChild(param1); + super.removeChild(param1); + this.childManager.childRemoved(param1); + return param1; + } + + mx_internal function rawChildren_removeChildAt(param1:int) : DisplayObject + { + var _loc2_:DisplayObject = super.getChildAt(param1); + this.childManager.removingChild(_loc2_); + super.removeChildAt(param1); + this.childManager.childRemoved(_loc2_); + return _loc2_; + } + + mx_internal function rawChildren_getChildAt(param1:int) : DisplayObject + { + return super.getChildAt(param1); + } + + mx_internal function rawChildren_getChildByName(param1:String) : DisplayObject + { + return super.getChildByName(param1); + } + + mx_internal function rawChildren_getChildIndex(param1:DisplayObject) : int + { + return super.getChildIndex(param1); + } + + mx_internal function rawChildren_setChildIndex(param1:DisplayObject, param2:int) : void + { + super.setChildIndex(param1,param2); + } + + mx_internal function rawChildren_getObjectsUnderPoint(param1:Point) : Array + { + return super.getObjectsUnderPoint(param1); + } + + mx_internal function rawChildren_contains(param1:DisplayObject) : Boolean + { + return super.contains(param1); + } + + public function allowDomain(... rest) : void + { + } + + public function allowInsecureDomain(... rest) : void + { + } + + public function getExplicitOrMeasuredWidth() : Number + { + return !isNaN(this.explicitWidth)?Number(this.explicitWidth):Number(this.measuredWidth); + } + + public function getExplicitOrMeasuredHeight() : Number + { + return !isNaN(this.explicitHeight)?Number(this.explicitHeight):Number(this.measuredHeight); + } + + public function move(param1:Number, param2:Number) : void + { + } + + public function setActualSize(param1:Number, param2:Number) : void + { + if(this.isStageRoot) + { + return; + } + if(this.mouseCatcher) + { + this.mouseCatcher.width = param1; + this.mouseCatcher.height = param2; + } + if(this._width != param1 || this._height != param2) + { + this._width = param1; + this._height = param2; + dispatchEvent(new Event(Event.RESIZE)); + } + } + + public function getDefinitionByName(param1:String) : Object + { + var _loc3_:Object = null; + var _loc2_:ApplicationDomain = !this.topLevel && this.parent is Loader?Loader(this.parent).contentLoaderInfo.applicationDomain:this.info()["currentDomain"] as ApplicationDomain; + if(_loc2_.hasDefinition(param1)) + { + _loc3_ = _loc2_.getDefinition(param1); + } + return _loc3_; + } + + public function isTopLevel() : Boolean + { + return this.topLevel; + } + + public function isTopLevelRoot() : Boolean + { + return this.isStageRoot || this.isBootstrapRoot; + } + + public function isTopLevelWindow(param1:DisplayObject) : Boolean + { + return param1 is IUIComponent && IUIComponent(param1) == this.topLevelWindow; + } + + public function isFontFaceEmbedded(param1:TextFormat) : Boolean + { + var _loc9_:Font = null; + var _loc10_:String = null; + var _loc2_:String = param1.font; + var _loc3_:Boolean = param1.bold; + var _loc4_:Boolean = param1.italic; + var _loc5_:Array = Font.enumerateFonts(); + var _loc6_:int = _loc5_.length; + var _loc7_:int = 0; + while(_loc7_ < _loc6_) + { + _loc9_ = Font(_loc5_[_loc7_]); + if(_loc9_.fontName == _loc2_) + { + _loc10_ = "regular"; + if(_loc3_ && _loc4_) + { + _loc10_ = "boldItalic"; + } + else if(_loc3_) + { + _loc10_ = "bold"; + } + else if(_loc4_) + { + _loc10_ = "italic"; + } + if(_loc9_.fontStyle == _loc10_) + { + return true; + } + } + _loc7_++; + } + if(!_loc2_ || !this.embeddedFontList || !this.embeddedFontList[_loc2_]) + { + return false; + } + var _loc8_:Object = this.embeddedFontList[_loc2_]; + return !(_loc3_ && !_loc8_.bold || _loc4_ && !_loc8_.italic || !_loc3_ && !_loc4_ && !_loc8_.regular); + } + + private function resizeMouseCatcher() : void + { + var _loc1_:Graphics = null; + var _loc2_:Rectangle = null; + if(this.mouseCatcher) + { + try + { + _loc1_ = this.mouseCatcher.graphics; + _loc2_ = this.screen; + _loc1_.clear(); + _loc1_.beginFill(0,0); + _loc1_.drawRect(0,0,_loc2_.width,_loc2_.height); + _loc1_.endFill(); + return; + } + catch(e:SecurityError) + { + return; + } + } + } + + private function initHandler(param1:Event) : void + { + if(!this.isStageRoot) + { + if(root.loaderInfo.parentAllowsChild) + { + try + { + if(!this.parent.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot",false,true)) || !root.loaderInfo.sharedEvents.hasEventListener("bridgeNewApplication")) + { + this.isBootstrapRoot = true; + } + } + catch(e:Error) + { + } + } + } + allSystemManagers[this] = this.loaderInfo.url; + root.loaderInfo.removeEventListener(Event.INIT,this.initHandler); + if(!SystemManagerGlobals.info) + { + SystemManagerGlobals.info = this.info(); + } + if(!SystemManagerGlobals.parameters) + { + SystemManagerGlobals.parameters = loaderInfo.parameters; + } + var _loc2_:int = totalFrames == 1?0:1; + this.addEventListener(Event.ENTER_FRAME,this.docFrameListener); + this.initialize(); + } + + private function docFrameListener(param1:Event) : void + { + if(currentFrame == 2) + { + this.removeEventListener(Event.ENTER_FRAME,this.docFrameListener); + if(totalFrames > 2) + { + this.addEventListener(Event.ENTER_FRAME,this.extraFrameListener); + } + this.docFrameHandler(); + } + } + + private function extraFrameListener(param1:Event) : void + { + if(this.lastFrame == currentFrame) + { + return; + } + this.lastFrame = currentFrame; + if(currentFrame + 1 > totalFrames) + { + this.removeEventListener(Event.ENTER_FRAME,this.extraFrameListener); + } + this.extraFrameHandler(); + } + + private function preloader_preloaderDocFrameReadyHandler(param1:Event) : void + { + this.preloader.removeEventListener(FlexEvent.PRELOADER_DOC_FRAME_READY,this.preloader_preloaderDocFrameReadyHandler); + this.deferredNextFrame(); + } + + private function preloader_preloaderDoneHandler(param1:Event) : void + { + var _loc2_:IUIComponent = this.topLevelWindow; + this.preloader.removeEventListener(FlexEvent.PRELOADER_DONE,this.preloader_preloaderDoneHandler); + this.preloader.removeEventListener(RSLEvent.RSL_COMPLETE,this.preloader_rslCompleteHandler); + this._popUpChildren.removeChild(this.preloader); + this.preloader = null; + this.mouseCatcher = new FlexSprite(); + this.mouseCatcher.name = "mouseCatcher"; + this.noTopMostIndex++; + super.addChildAt(this.mouseCatcher,0); + this.resizeMouseCatcher(); + if(!this.topLevel) + { + this.mouseCatcher.visible = false; + mask = this.mouseCatcher; + } + this.noTopMostIndex++; + super.addChildAt(DisplayObject(_loc2_),1); + _loc2_.dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_COMPLETE)); + dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_COMPLETE)); + } + + private function preloader_rslCompleteHandler(param1:RSLEvent) : void + { + var _loc2_:Vector. = null; + var _loc3_:IFlexModuleFactory = null; + if(!param1.isResourceModule && param1.loaderInfo) + { + _loc2_ = Vector.(this.rslDataList[param1.rslIndex]); + _loc3_ = this; + if(_loc2_ && _loc2_[0].moduleFactory) + { + _loc3_ = _loc2_[0].moduleFactory; + } + if(_loc3_ == this) + { + this.preloadedRSLs[param1.loaderInfo] = _loc2_; + } + else + { + _loc3_.addPreloadedRSL(param1.loaderInfo,_loc2_); + } + } + } + + mx_internal function docFrameHandler(param1:Event = null) : void + { + if(this.readyForKickOff) + { + this.kickOff(); + } + } + + mx_internal function preloader_completeHandler(param1:Event) : void + { + this.preloader.removeEventListener(Event.COMPLETE,this.preloader_completeHandler); + this.readyForKickOff = true; + if(currentFrame >= 2) + { + this.kickOff(); + } + } + + mx_internal function kickOff() : void + { + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc7_:Class = null; + if(this.document) + { + return; + } + if(!this.isTopLevel()) + { + SystemManagerGlobals.topLevelSystemManagers[0].dispatchEvent(new FocusEvent(FlexEvent.NEW_CHILD_APPLICATION,false,false,this)); + } + Singleton.registerClass("mx.core::IEmbeddedFontRegistry",Class(this.getDefinitionByName("mx.core::EmbeddedFontRegistry"))); + Singleton.registerClass("mx.styles::IStyleManager",Class(this.getDefinitionByName("mx.styles::StyleManagerImpl"))); + Singleton.registerClass("mx.styles::IStyleManager2",Class(this.getDefinitionByName("mx.styles::StyleManagerImpl"))); + Singleton.registerClass("mx.managers::IBrowserManager",Class(this.getDefinitionByName("mx.managers::BrowserManagerImpl"))); + Singleton.registerClass("mx.managers::ICursorManager",Class(this.getDefinitionByName("mx.managers::CursorManagerImpl"))); + Singleton.registerClass("mx.managers::IHistoryManager",Class(this.getDefinitionByName("mx.managers::HistoryManagerImpl"))); + Singleton.registerClass("mx.managers::ILayoutManager",Class(this.getDefinitionByName("mx.managers::LayoutManager"))); + Singleton.registerClass("mx.managers::IPopUpManager",Class(this.getDefinitionByName("mx.managers::PopUpManagerImpl"))); + Singleton.registerClass("mx.managers::IToolTipManager2",Class(this.getDefinitionByName("mx.managers::ToolTipManagerImpl"))); + var _loc1_:Class = null; + var _loc2_:Object = this.info()["useNativeDragManager"]; + var _loc3_:Boolean = _loc2_ == null?true:String(_loc2_) == "true"; + if(_loc3_) + { + _loc1_ = Class(this.getDefinitionByName("mx.managers::NativeDragManagerImpl")); + } + if(_loc1_ == null) + { + _loc1_ = Class(this.getDefinitionByName("mx.managers::DragManagerImpl")); + } + Singleton.registerClass("mx.managers::IDragManager",_loc1_); + Singleton.registerClass("mx.core::ITextFieldFactory",Class(this.getDefinitionByName("mx.core::TextFieldFactory"))); + var _loc4_:Array = this.info()["mixins"]; + if(_loc4_ && _loc4_.length > 0) + { + _loc5_ = _loc4_.length; + _loc6_ = 0; + while(_loc6_ < _loc5_) + { + _loc7_ = Class(this.getDefinitionByName(_loc4_[_loc6_])); + _loc7_["init"](this); + _loc6_++; + } + } + _loc7_ = Singleton.getClass("mx.managers::IActiveWindowManager"); + if(_loc7_) + { + this.registerImplementation("mx.managers::IActiveWindowManager",new _loc7_(this)); + } + _loc7_ = Singleton.getClass("mx.managers::IMarshalSystemManager"); + if(_loc7_) + { + this.registerImplementation("mx.managers::IMarshalSystemManager",new _loc7_(this)); + } + this.initializeTopLevelWindow(null); + this.deferredNextFrame(); + } + + private function keyDownHandler(param1:KeyboardEvent) : void + { + var _loc2_:KeyboardEvent = null; + if(!param1.cancelable) + { + switch(param1.keyCode) + { + case Keyboard.UP: + case Keyboard.DOWN: + case Keyboard.PAGE_UP: + case Keyboard.PAGE_DOWN: + case Keyboard.HOME: + case Keyboard.END: + case Keyboard.LEFT: + case Keyboard.RIGHT: + case Keyboard.ENTER: + param1.stopImmediatePropagation(); + _loc2_ = new KeyboardEvent(param1.type,param1.bubbles,true,param1.charCode,param1.keyCode,param1.keyLocation,param1.ctrlKey,param1.altKey,param1.shiftKey); + param1.target.dispatchEvent(_loc2_); + default: + param1.stopImmediatePropagation(); + _loc2_ = new KeyboardEvent(param1.type,param1.bubbles,true,param1.charCode,param1.keyCode,param1.keyLocation,param1.ctrlKey,param1.altKey,param1.shiftKey); + param1.target.dispatchEvent(_loc2_); + } + } + } + + private function mouseEventHandler(param1:MouseEvent) : void + { + var _loc2_:MouseEvent = null; + var _loc3_:Class = null; + if(!param1.cancelable && param1.eventPhase != EventPhase.BUBBLING_PHASE) + { + param1.stopImmediatePropagation(); + _loc2_ = null; + if("clickCount" in param1) + { + _loc3_ = MouseEvent; + _loc2_ = new _loc3_(param1.type,param1.bubbles,true,param1.localX,param1.localY,param1.relatedObject,param1.ctrlKey,param1.altKey,param1.shiftKey,param1.buttonDown,param1.delta,param1["commandKey"],param1["controlKey"],param1["clickCount"]); + } + else + { + _loc2_ = new MouseEvent(param1.type,param1.bubbles,true,param1.localX,param1.localY,param1.relatedObject,param1.ctrlKey,param1.altKey,param1.shiftKey,param1.buttonDown,param1.delta); + } + param1.target.dispatchEvent(_loc2_); + } + } + + private function extraFrameHandler(param1:Event = null) : void + { + var _loc3_:Class = null; + var _loc2_:Object = this.info()["frames"]; + if(_loc2_ && _loc2_[currentLabel]) + { + _loc3_ = Class(this.getDefinitionByName(_loc2_[currentLabel])); + _loc3_["frame"](this); + } + this.deferredNextFrame(); + } + + private function nextFrameTimerHandler(param1:TimerEvent) : void + { + if(currentFrame + 1 <= framesLoaded) + { + nextFrame(); + this.nextFrameTimer.removeEventListener(TimerEvent.TIMER,this.nextFrameTimerHandler); + this.nextFrameTimer.reset(); + } + } + + private function initializeTopLevelWindow(param1:Event) : void + { + var _loc2_:Number = NaN; + var _loc3_:Number = NaN; + var _loc4_:DisplayObjectContainer = null; + var _loc5_:ISystemManager = null; + var _loc6_:DisplayObject = null; + if(this.getSandboxRoot() == this) + { + this.addEventListener(KeyboardEvent.KEY_DOWN,this.keyDownHandler,true,1000); + this.addEventListener(MouseEvent.MOUSE_WHEEL,this.mouseEventHandler,true,1000); + this.addEventListener(MouseEvent.MOUSE_DOWN,this.mouseEventHandler,true,1000); + } + if(this.isTopLevelRoot() && this.stage) + { + this.stage.addEventListener(KeyboardEvent.KEY_DOWN,this.keyDownHandler,false,1000); + this.stage.addEventListener(MouseEvent.MOUSE_WHEEL,this.mouseEventHandler,false,1000); + this.stage.addEventListener(MouseEvent.MOUSE_DOWN,this.mouseEventHandler,false,1000); + } + if(!this.parent && this.parentAllowsChild) + { + return; + } + if(!this.topLevel) + { + if(!this.parent) + { + return; + } + _loc4_ = this.parent.parent; + if(!_loc4_) + { + return; + } + while(_loc4_) + { + if(_loc4_ is IUIComponent) + { + _loc5_ = IUIComponent(_loc4_).systemManager; + if(_loc5_ && !_loc5_.isTopLevel()) + { + _loc5_ = _loc5_.topLevelSystemManager; + } + this._topLevelSystemManager = _loc5_; + break; + } + _loc4_ = _loc4_.parent; + } + } + if(this.isTopLevelRoot() && this.stage) + { + this.stage.addEventListener(Event.RESIZE,this.Stage_resizeHandler,false,0,true); + } + else if(this.topLevel && this.stage) + { + _loc6_ = this.getSandboxRoot(); + if(_loc6_ != this) + { + _loc6_.addEventListener(Event.RESIZE,this.Stage_resizeHandler,false,0,true); + } + } + if(this.isStageRoot && this.stage) + { + this.Stage_resizeHandler(); + if(this._width == 0 && this._height == 0 && loaderInfo.width != this._width && loaderInfo.height != this._height) + { + this._width = loaderInfo.width; + this._height = loaderInfo.height; + } + _loc2_ = this._width; + _loc3_ = this._height; + } + else + { + _loc2_ = loaderInfo.width; + _loc3_ = loaderInfo.height; + } + this.childManager.initializeTopLevelWindow(_loc2_,_loc3_); + } + + private function appCreationCompleteHandler(param1:FlexEvent) : void + { + this.invalidateParentSizeAndDisplayList(); + } + + public function invalidateParentSizeAndDisplayList() : void + { + var _loc1_:DisplayObjectContainer = null; + if(!this.topLevel && this.parent) + { + _loc1_ = this.parent.parent; + while(_loc1_) + { + if(_loc1_ is IInvalidating) + { + IInvalidating(_loc1_).invalidateSize(); + IInvalidating(_loc1_).invalidateDisplayList(); + return; + } + _loc1_ = _loc1_.parent; + } + } + dispatchEvent(new Event("invalidateParentSizeAndDisplayList")); + } + + private function Stage_resizeHandler(param1:Event = null) : void + { + var m:Number = NaN; + var n:Number = NaN; + var scale:Number = NaN; + var event:Event = param1; + if(this.isDispatchingResizeEvent) + { + return; + } + var w:Number = 0; + var h:Number = 0; + try + { + m = loaderInfo.width; + n = loaderInfo.height; + } + catch(error:Error) + { + if(!_screen) + { + _screen = new Rectangle(); + } + return; + } + var align:String = StageAlign.TOP_LEFT; + try + { + if(this.stage) + { + w = this.stage.stageWidth; + h = this.stage.stageHeight; + align = this.stage.align; + } + } + catch(error:SecurityError) + { + if(hasEventListener("getScreen")) + { + dispatchEvent(new Event("getScreen")); + if(_screen) + { + w = _screen.width; + h = _screen.height; + } + } + } + var x:Number = (m - w) / 2; + var y:Number = (n - h) / 2; + if(align == StageAlign.TOP) + { + y = 0; + } + else if(align == StageAlign.BOTTOM) + { + y = n - h; + } + else if(align == StageAlign.LEFT) + { + x = 0; + } + else if(align == StageAlign.RIGHT) + { + x = m - w; + } + else if(align == StageAlign.TOP_LEFT || align == "LT") + { + y = 0; + x = 0; + } + else if(align == StageAlign.TOP_RIGHT) + { + y = 0; + x = m - w; + } + else if(align == StageAlign.BOTTOM_LEFT) + { + y = n - h; + x = 0; + } + else if(align == StageAlign.BOTTOM_RIGHT) + { + y = n - h; + x = m - w; + } + if(!this._screen) + { + this._screen = new Rectangle(); + } + this._screen.x = x; + this._screen.y = y; + this._screen.width = w; + this._screen.height = h; + if(this.isStageRoot) + { + scale = this.densityScale; + root.scaleX = root.scaleY = scale; + this._width = this.stage.stageWidth / scale; + this._height = this.stage.stageHeight / scale; + this._screen.x = this._screen.x / scale; + this._screen.y = this._screen.y / scale; + this._screen.width = this._screen.width / scale; + this._screen.height = this._screen.height / scale; + } + if(event) + { + this.resizeMouseCatcher(); + this.isDispatchingResizeEvent = true; + dispatchEvent(event); + this.isDispatchingResizeEvent = false; + } + } + + private function mouseMoveHandler(param1:MouseEvent) : void + { + this.idleCounter = 0; + } + + private function mouseUpHandler(param1:MouseEvent) : void + { + this.idleCounter = 0; + } + + private function idleTimer_timerHandler(param1:TimerEvent) : void + { + this.idleCounter++; + if(this.idleCounter * IDLE_INTERVAL > IDLE_THRESHOLD) + { + dispatchEvent(new FlexEvent(FlexEvent.IDLE)); + } + } + + override public function get mouseX() : Number + { + if(this._mouseX === undefined) + { + return super.mouseX; + } + return this._mouseX; + } + + override public function get mouseY() : Number + { + if(this._mouseY === undefined) + { + return super.mouseY; + } + return this._mouseY; + } + + private function getTopLevelSystemManager(param1:DisplayObject) : ISystemManager + { + var _loc3_:ISystemManager = null; + var _loc2_:DisplayObjectContainer = DisplayObjectContainer(param1.root); + if((!_loc2_ || _loc2_ is Stage) && param1 is IUIComponent) + { + _loc2_ = DisplayObjectContainer(IUIComponent(param1).systemManager); + } + if(_loc2_ is ISystemManager) + { + _loc3_ = ISystemManager(_loc2_); + if(!_loc3_.isTopLevel()) + { + _loc3_ = _loc3_.topLevelSystemManager; + } + } + return _loc3_; + } + + override public function get parent() : DisplayObjectContainer + { + try + { + return super.parent; + } + catch(e:SecurityError) + { + } + return null; + } + + public function getTopLevelRoot() : DisplayObject + { + var _loc1_:ISystemManager = null; + var _loc2_:DisplayObject = null; + var _loc3_:DisplayObject = null; + try + { + _loc1_ = this; + if(_loc1_.topLevelSystemManager) + { + _loc1_ = _loc1_.topLevelSystemManager; + } + _loc2_ = DisplayObject(_loc1_).parent; + _loc3_ = DisplayObject(_loc1_); + while(_loc2_) + { + if(_loc2_ is Stage) + { + return _loc3_; + } + _loc3_ = _loc2_; + _loc2_ = _loc2_.parent; + } + } + catch(error:SecurityError) + { + } + return null; + } + + public function getSandboxRoot() : DisplayObject + { + var _loc2_:DisplayObject = null; + var _loc3_:DisplayObject = null; + var _loc4_:Loader = null; + var _loc5_:LoaderInfo = null; + var _loc1_:ISystemManager = this; + try + { + if(_loc1_.topLevelSystemManager) + { + _loc1_ = _loc1_.topLevelSystemManager; + } + _loc2_ = DisplayObject(_loc1_).parent; + if(_loc2_ is Stage) + { + return DisplayObject(_loc1_); + } + if(_loc2_ && !_loc2_.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot",false,true))) + { + return this; + } + _loc3_ = this; + while(_loc2_) + { + if(_loc2_ is Stage) + { + return _loc3_; + } + if(!_loc2_.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot",false,true))) + { + return _loc3_; + } + if(_loc2_ is Loader) + { + _loc4_ = Loader(_loc2_); + _loc5_ = _loc4_.contentLoaderInfo; + if(!_loc5_.childAllowsParent) + { + return _loc5_.content; + } + } + if(_loc2_.hasEventListener("systemManagerRequest")) + { + _loc3_ = _loc2_; + } + _loc2_ = _loc2_.parent; + } + } + catch(error:Error) + { + } + return _loc3_ != null?_loc3_:DisplayObject(_loc1_); + } + + public function registerImplementation(param1:String, param2:Object) : void + { + var _loc3_:Object = this.implMap[param1]; + if(!_loc3_) + { + this.implMap[param1] = param2; + } + } + + public function getImplementation(param1:String) : Object + { + var _loc2_:Object = this.implMap[param1]; + return _loc2_; + } + + public function getVisibleApplicationRect(param1:Rectangle = null, param2:Boolean = false) : Rectangle + { + var _loc3_:Request = null; + var _loc4_:DisplayObject = null; + var _loc5_:Rectangle = null; + var _loc6_:Point = null; + var _loc7_:Rectangle = null; + var _loc8_:DisplayObjectContainer = null; + var _loc9_:Rectangle = null; + if(hasEventListener("getVisibleApplicationRect")) + { + _loc3_ = new Request("getVisibleApplicationRect",false,true); + _loc3_.value = { + "bounds":param1, + "skipToSandboxRoot":param2 + }; + if(!dispatchEvent(_loc3_)) + { + return Rectangle(_loc3_.value); + } + } + if(param2 && !this.topLevel) + { + return this.topLevelSystemManager.getVisibleApplicationRect(param1,param2); + } + if(!param1) + { + param1 = getBounds(DisplayObject(this)); + _loc4_ = this.getSandboxRoot(); + _loc5_ = this.screen.clone(); + _loc5_.topLeft = _loc4_.localToGlobal(this.screen.topLeft); + _loc5_.bottomRight = _loc4_.localToGlobal(this.screen.bottomRight); + _loc6_ = new Point(Math.max(0,param1.x),Math.max(0,param1.y)); + _loc6_ = localToGlobal(_loc6_); + param1.x = _loc6_.x; + param1.y = _loc6_.y; + param1.width = _loc5_.width; + param1.height = _loc5_.height; + _loc7_ = this.stage.softKeyboardRect; + param1.height = param1.height - _loc7_.height; + } + if(!this.topLevel) + { + _loc8_ = this.parent.parent; + if("getVisibleApplicationRect" in _loc8_) + { + _loc9_ = _loc8_["getVisibleApplicationRect"](true); + param1 = param1.intersection(_loc9_); + } + } + return param1; + } + + public function deployMouseShields(param1:Boolean) : void + { + var _loc2_:DynamicEvent = null; + if(hasEventListener("deployMouseShields")) + { + _loc2_ = new DynamicEvent("deployMouseShields"); + _loc2_.deploy = param1; + dispatchEvent(_loc2_); + } + } + + private function stageEventHandler(param1:Event) : void + { + var _loc2_:MouseEvent = null; + var _loc3_:Point = null; + var _loc4_:Point = null; + if(param1.target is Stage && this.mouseCatcher) + { + if(param1 is MouseEvent) + { + _loc2_ = MouseEvent(param1); + _loc3_ = new Point(_loc2_.stageX,_loc2_.stageY); + _loc4_ = this.mouseCatcher.globalToLocal(_loc3_); + _loc2_.localX = _loc4_.x; + _loc2_.localY = _loc4_.y; + } + this.mouseCatcher.dispatchEvent(param1); + } + } + + private function mouseLeaveHandler(param1:Event) : void + { + dispatchEvent(new SandboxMouseEvent(SandboxMouseEvent.MOUSE_UP_SOMEWHERE)); + } + } +} diff --git a/scripts/mx/managers/SystemManagerGlobals.as b/scripts/mx/managers/SystemManagerGlobals.as new file mode 100644 index 0000000..87144c1 --- /dev/null +++ b/scripts/mx/managers/SystemManagerGlobals.as @@ -0,0 +1,26 @@ +package mx.managers +{ + public class SystemManagerGlobals + { + + public static var topLevelSystemManagers:Array = []; + + public static var bootstrapLoaderInfoURL:String; + + public static var showMouseCursor:Boolean; + + public static var changingListenersInOtherSystemManagers:Boolean; + + public static var dispatchingEventToOtherSystemManagers:Boolean; + + public static var info:Object; + + public static var parameters:Object; + + + public function SystemManagerGlobals() + { + super(); + } + } +} diff --git a/scripts/mx/managers/SystemRawChildrenList.as b/scripts/mx/managers/SystemRawChildrenList.as new file mode 100644 index 0000000..0c4b611 --- /dev/null +++ b/scripts/mx/managers/SystemRawChildrenList.as @@ -0,0 +1,79 @@ +package mx.managers +{ + import flash.display.DisplayObject; + import flash.geom.Point; + import mx.core.IChildList; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class SystemRawChildrenList implements IChildList + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var owner:SystemManager; + + public function SystemRawChildrenList(param1:SystemManager) + { + super(); + this.owner = param1; + } + + public function get numChildren() : int + { + return this.owner.$numChildren; + } + + public function getChildAt(param1:int) : DisplayObject + { + return this.owner.rawChildren_getChildAt(param1); + } + + public function addChild(param1:DisplayObject) : DisplayObject + { + return this.owner.rawChildren_addChild(param1); + } + + public function addChildAt(param1:DisplayObject, param2:int) : DisplayObject + { + return this.owner.rawChildren_addChildAt(param1,param2); + } + + public function removeChild(param1:DisplayObject) : DisplayObject + { + return this.owner.rawChildren_removeChild(param1); + } + + public function removeChildAt(param1:int) : DisplayObject + { + return this.owner.rawChildren_removeChildAt(param1); + } + + public function getChildByName(param1:String) : DisplayObject + { + return this.owner.rawChildren_getChildByName(param1); + } + + public function getChildIndex(param1:DisplayObject) : int + { + return this.owner.rawChildren_getChildIndex(param1); + } + + public function setChildIndex(param1:DisplayObject, param2:int) : void + { + this.owner.rawChildren_setChildIndex(param1,param2); + } + + public function getObjectsUnderPoint(param1:Point) : Array + { + return this.owner.rawChildren_getObjectsUnderPoint(param1); + } + + public function contains(param1:DisplayObject) : Boolean + { + return this.owner.rawChildren_contains(param1); + } + } +} diff --git a/scripts/mx/modules/IModuleInfo.as b/scripts/mx/modules/IModuleInfo.as new file mode 100644 index 0000000..468387c --- /dev/null +++ b/scripts/mx/modules/IModuleInfo.as @@ -0,0 +1,37 @@ +package mx.modules +{ + import flash.events.IEventDispatcher; + import flash.system.ApplicationDomain; + import flash.system.SecurityDomain; + import flash.utils.ByteArray; + import mx.core.IFlexModuleFactory; + + public interface IModuleInfo extends IEventDispatcher + { + + + function get data() : Object; + + function set data(param1:Object) : void; + + function get error() : Boolean; + + function get factory() : IFlexModuleFactory; + + function get loaded() : Boolean; + + function get ready() : Boolean; + + function get setup() : Boolean; + + function get url() : String; + + function load(param1:ApplicationDomain = null, param2:SecurityDomain = null, param3:ByteArray = null, param4:IFlexModuleFactory = null) : void; + + function release() : void; + + function unload() : void; + + function publish(param1:IFlexModuleFactory) : void; + } +} diff --git a/scripts/mx/modules/ModuleManager.as b/scripts/mx/modules/ModuleManager.as new file mode 100644 index 0000000..3c65733 --- /dev/null +++ b/scripts/mx/modules/ModuleManager.as @@ -0,0 +1,608 @@ +package mx.modules +{ + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class ModuleManager + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function ModuleManager() + { + super(); + } + + public static function getModule(param1:String) : IModuleInfo + { + return getSingleton().getModule(param1); + } + + public static function getAssociatedFactory(param1:Object) : IFlexModuleFactory + { + return getSingleton().getAssociatedFactory(param1); + } + + private static function getSingleton() : Object + { + if(!ModuleManagerGlobals.managerSingleton) + { + ModuleManagerGlobals.managerSingleton = new ModuleManagerImpl(); + } + return ModuleManagerGlobals.managerSingleton; + } + } +} + +import flash.events.EventDispatcher; +import flash.system.ApplicationDomain; +import flash.utils.Dictionary; +import flash.utils.getQualifiedClassName; +import mx.core.IFlexModuleFactory; +import mx.modules.IModuleInfo; + +class ModuleManagerImpl extends EventDispatcher +{ + + + private var moduleDictionary:Dictionary; + + function ModuleManagerImpl() + { + this.moduleDictionary = new Dictionary(true); + super(); + } + + public function getAssociatedFactory(param1:Object) : IFlexModuleFactory + { + var _loc3_:* = null; + var _loc4_:ModuleInfo = null; + var _loc5_:ApplicationDomain = null; + var _loc6_:Class = null; + var _loc2_:String = getQualifiedClassName(param1); + for(_loc3_ in this.moduleDictionary) + { + _loc4_ = _loc3_ as ModuleInfo; + if(_loc4_.ready) + { + _loc5_ = _loc4_.applicationDomain; + if(_loc5_.hasDefinition(_loc2_)) + { + _loc6_ = Class(_loc5_.getDefinition(_loc2_)); + if(_loc6_ && param1 is _loc6_) + { + return _loc4_.factory; + } + } + } + } + return null; + } + + public function getModule(param1:String) : IModuleInfo + { + var _loc3_:* = null; + var _loc4_:ModuleInfo = null; + var _loc2_:ModuleInfo = null; + for(_loc3_ in this.moduleDictionary) + { + _loc4_ = _loc3_ as ModuleInfo; + if(this.moduleDictionary[_loc4_] == param1) + { + _loc2_ = _loc4_; + break; + } + } + if(!_loc2_) + { + _loc2_ = new ModuleInfo(param1); + this.moduleDictionary[_loc2_] = param1; + } + return new ModuleInfoProxy(_loc2_); + } +} + +import flash.display.Loader; +import flash.events.ErrorEvent; +import flash.events.Event; +import flash.events.EventDispatcher; +import flash.events.IOErrorEvent; +import flash.events.ProgressEvent; +import flash.events.SecurityErrorEvent; +import flash.net.URLRequest; +import flash.system.ApplicationDomain; +import flash.system.LoaderContext; +import flash.system.Security; +import flash.system.SecurityDomain; +import flash.utils.ByteArray; +import mx.core.IFlexModuleFactory; +import mx.events.ModuleEvent; +import mx.events.Request; + +class ModuleInfo extends EventDispatcher +{ + + + private var factoryInfo:FactoryInfo; + + private var loader:Loader; + + private var numReferences:int = 0; + + private var parentModuleFactory:IFlexModuleFactory; + + private var _error:Boolean = false; + + private var _loaded:Boolean = false; + + private var _ready:Boolean = false; + + private var _setup:Boolean = false; + + private var _url:String; + + function ModuleInfo(param1:String) + { + super(); + this._url = param1; + } + + public function get applicationDomain() : ApplicationDomain + { + return !!this.factoryInfo?this.factoryInfo.applicationDomain:null; + } + + public function get error() : Boolean + { + return this._error; + } + + public function get factory() : IFlexModuleFactory + { + return !!this.factoryInfo?this.factoryInfo.factory:null; + } + + public function get loaded() : Boolean + { + return this._loaded; + } + + public function get ready() : Boolean + { + return this._ready; + } + + public function get setup() : Boolean + { + return this._setup; + } + + public function get size() : int + { + return !!this.factoryInfo?int(this.factoryInfo.bytesTotal):0; + } + + public function get url() : String + { + return this._url; + } + + public function load(param1:ApplicationDomain = null, param2:SecurityDomain = null, param3:ByteArray = null, param4:IFlexModuleFactory = null) : void + { + if(this._loaded) + { + return; + } + this._loaded = true; + this.parentModuleFactory = param4; + if(param3) + { + this.loadBytes(param1,param3); + return; + } + if(this._url.indexOf("published://") == 0) + { + return; + } + var _loc5_:URLRequest = new URLRequest(this._url); + var _loc6_:LoaderContext = new LoaderContext(); + _loc6_.applicationDomain = !!param1?param1:new ApplicationDomain(ApplicationDomain.currentDomain); + if(param2 != null && Security.sandboxType == Security.REMOTE) + { + _loc6_.securityDomain = param2; + } + this.loader = new Loader(); + this.loader.contentLoaderInfo.addEventListener(Event.INIT,this.initHandler); + this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.completeHandler); + this.loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.progressHandler); + this.loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandler); + this.loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.errorHandler); + this.loader.load(_loc5_,_loc6_); + } + + private function loadBytes(param1:ApplicationDomain, param2:ByteArray) : void + { + var _loc3_:LoaderContext = new LoaderContext(); + _loc3_.applicationDomain = !!param1?param1:new ApplicationDomain(ApplicationDomain.currentDomain); + if("allowLoadBytesCodeExecution" in _loc3_) + { + _loc3_["allowLoadBytesCodeExecution"] = true; + } + this.loader = new Loader(); + this.loader.contentLoaderInfo.addEventListener(Event.INIT,this.initHandler); + this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.completeHandler); + this.loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandler); + this.loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.errorHandler); + this.loader.loadBytes(param2,_loc3_); + } + + public function resurrect() : void + { + if(!this._ready) + { + return; + } + if(!this.factoryInfo) + { + if(this._loaded) + { + dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); + } + this.loader = null; + this._loaded = false; + this._setup = false; + this._ready = false; + this._error = false; + } + } + + public function release() : void + { + if(!this._ready) + { + this.unload(); + } + } + + private function clearLoader() : void + { + if(this.loader) + { + if(this.loader.contentLoaderInfo) + { + this.loader.contentLoaderInfo.removeEventListener(Event.INIT,this.initHandler); + this.loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,this.completeHandler); + this.loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,this.progressHandler); + this.loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,this.errorHandler); + this.loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.errorHandler); + } + try + { + if(this.loader.content) + { + this.loader.content.removeEventListener("ready",this.readyHandler); + this.loader.content.removeEventListener("error",this.moduleErrorHandler); + } + } + catch(error:Error) + { + } + if(this._loaded) + { + try + { + this.loader.close(); + } + catch(error:Error) + { + } + } + try + { + this.loader.unload(); + } + catch(error:Error) + { + } + this.loader = null; + } + } + + public function unload() : void + { + this.clearLoader(); + if(this._loaded) + { + dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); + } + this.factoryInfo = null; + this.parentModuleFactory = null; + this._loaded = false; + this._setup = false; + this._ready = false; + this._error = false; + } + + public function publish(param1:IFlexModuleFactory) : void + { + if(this.factoryInfo) + { + return; + } + if(this._url.indexOf("published://") != 0) + { + return; + } + this.factoryInfo = new FactoryInfo(); + this.factoryInfo.factory = param1; + this._loaded = true; + this._setup = true; + this._ready = true; + this._error = false; + dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); + dispatchEvent(new ModuleEvent(ModuleEvent.PROGRESS)); + dispatchEvent(new ModuleEvent(ModuleEvent.READY)); + } + + public function addReference() : void + { + this.numReferences++; + } + + public function removeReference() : void + { + this.numReferences--; + if(this.numReferences == 0) + { + this.release(); + } + } + + public function initHandler(param1:Event) : void + { + var _loc2_:ModuleEvent = null; + this.factoryInfo = new FactoryInfo(); + try + { + this.factoryInfo.factory = this.loader.content as IFlexModuleFactory; + } + catch(error:Error) + { + } + if(!this.factoryInfo.factory) + { + _loc2_ = new ModuleEvent(ModuleEvent.ERROR,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = 0; + _loc2_.bytesTotal = 0; + _loc2_.errorText = "SWF is not a loadable module"; + dispatchEvent(_loc2_); + return; + } + this.loader.content.addEventListener("ready",this.readyHandler); + this.loader.content.addEventListener("error",this.moduleErrorHandler); + this.loader.content.addEventListener(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST,this.getFlexModuleFactoryRequestHandler,false,0,true); + try + { + this.factoryInfo.applicationDomain = this.loader.contentLoaderInfo.applicationDomain; + } + catch(error:Error) + { + } + this._setup = true; + dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); + } + + public function progressHandler(param1:ProgressEvent) : void + { + var _loc2_:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = param1.bytesLoaded; + _loc2_.bytesTotal = param1.bytesTotal; + dispatchEvent(_loc2_); + } + + public function completeHandler(param1:Event) : void + { + var _loc2_:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = this.loader.contentLoaderInfo.bytesLoaded; + _loc2_.bytesTotal = this.loader.contentLoaderInfo.bytesTotal; + dispatchEvent(_loc2_); + } + + public function errorHandler(param1:ErrorEvent) : void + { + this._error = true; + var _loc2_:ModuleEvent = new ModuleEvent(ModuleEvent.ERROR,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = 0; + _loc2_.bytesTotal = 0; + _loc2_.errorText = param1.text; + dispatchEvent(_loc2_); + } + + public function getFlexModuleFactoryRequestHandler(param1:Request) : void + { + param1.value = this.parentModuleFactory; + } + + public function readyHandler(param1:Event) : void + { + this._ready = true; + this.factoryInfo.bytesTotal = this.loader.contentLoaderInfo.bytesTotal; + var _loc2_:ModuleEvent = new ModuleEvent(ModuleEvent.READY); + _loc2_.bytesLoaded = this.loader.contentLoaderInfo.bytesLoaded; + _loc2_.bytesTotal = this.loader.contentLoaderInfo.bytesTotal; + this.clearLoader(); + dispatchEvent(_loc2_); + } + + public function moduleErrorHandler(param1:Event) : void + { + var _loc2_:ModuleEvent = null; + this._ready = true; + this.factoryInfo.bytesTotal = this.loader.contentLoaderInfo.bytesTotal; + this.clearLoader(); + if(param1 is ModuleEvent) + { + _loc2_ = ModuleEvent(param1); + } + else + { + _loc2_ = new ModuleEvent(ModuleEvent.ERROR); + } + dispatchEvent(_loc2_); + } +} + +import flash.system.ApplicationDomain; +import mx.core.IFlexModuleFactory; + +class FactoryInfo +{ + + + public var factory:IFlexModuleFactory; + + public var applicationDomain:ApplicationDomain; + + public var bytesTotal:int = 0; + + function FactoryInfo() + { + super(); + } +} + +import flash.events.EventDispatcher; +import flash.system.ApplicationDomain; +import flash.system.SecurityDomain; +import flash.utils.ByteArray; +import mx.core.IFlexModuleFactory; +import mx.events.ModuleEvent; +import mx.modules.IModuleInfo; + +class ModuleInfoProxy extends EventDispatcher implements IModuleInfo +{ + + + private var info:ModuleInfo; + + private var referenced:Boolean = false; + + private var _data:Object; + + function ModuleInfoProxy(param1:ModuleInfo) + { + super(); + this.info = param1; + param1.addEventListener(ModuleEvent.SETUP,this.moduleEventHandler,false,0,true); + param1.addEventListener(ModuleEvent.PROGRESS,this.moduleEventHandler,false,0,true); + param1.addEventListener(ModuleEvent.READY,this.moduleEventHandler,false,0,true); + param1.addEventListener(ModuleEvent.ERROR,this.moduleEventHandler,false,0,true); + param1.addEventListener(ModuleEvent.UNLOAD,this.moduleEventHandler,false,0,true); + } + + public function get data() : Object + { + return this._data; + } + + public function set data(param1:Object) : void + { + this._data = param1; + } + + public function get error() : Boolean + { + return this.info.error; + } + + public function get factory() : IFlexModuleFactory + { + return this.info.factory; + } + + public function get loaded() : Boolean + { + return this.info.loaded; + } + + public function get ready() : Boolean + { + return this.info.ready; + } + + public function get setup() : Boolean + { + return this.info.setup; + } + + public function get url() : String + { + return this.info.url; + } + + public function publish(param1:IFlexModuleFactory) : void + { + this.info.publish(param1); + } + + public function load(param1:ApplicationDomain = null, param2:SecurityDomain = null, param3:ByteArray = null, param4:IFlexModuleFactory = null) : void + { + var _loc5_:ModuleEvent = null; + this.info.resurrect(); + if(!this.referenced) + { + this.info.addReference(); + this.referenced = true; + } + if(this.info.error) + { + dispatchEvent(new ModuleEvent(ModuleEvent.ERROR)); + } + else if(this.info.loaded) + { + if(this.info.setup) + { + dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); + if(this.info.ready) + { + _loc5_ = new ModuleEvent(ModuleEvent.PROGRESS); + _loc5_.bytesLoaded = this.info.size; + _loc5_.bytesTotal = this.info.size; + dispatchEvent(_loc5_); + dispatchEvent(new ModuleEvent(ModuleEvent.READY)); + } + } + } + else + { + this.info.load(param1,param2,param3,param4); + } + } + + public function release() : void + { + if(this.referenced) + { + this.info.removeReference(); + this.referenced = false; + } + } + + public function unload() : void + { + this.info.unload(); + this.info.removeEventListener(ModuleEvent.SETUP,this.moduleEventHandler); + this.info.removeEventListener(ModuleEvent.PROGRESS,this.moduleEventHandler); + this.info.removeEventListener(ModuleEvent.READY,this.moduleEventHandler); + this.info.removeEventListener(ModuleEvent.ERROR,this.moduleEventHandler); + this.info.removeEventListener(ModuleEvent.UNLOAD,this.moduleEventHandler); + } + + private function moduleEventHandler(param1:ModuleEvent) : void + { + dispatchEvent(param1); + } +} diff --git a/scripts/mx/modules/ModuleManagerGlobals.as b/scripts/mx/modules/ModuleManagerGlobals.as new file mode 100644 index 0000000..4929439 --- /dev/null +++ b/scripts/mx/modules/ModuleManagerGlobals.as @@ -0,0 +1,14 @@ +package mx.modules +{ + public class ModuleManagerGlobals + { + + public static var managerSingleton:Object = null; + + + public function ModuleManagerGlobals() + { + super(); + } + } +} diff --git a/scripts/mx/preloaders/IPreloaderDisplay.as b/scripts/mx/preloaders/IPreloaderDisplay.as new file mode 100644 index 0000000..f565362 --- /dev/null +++ b/scripts/mx/preloaders/IPreloaderDisplay.as @@ -0,0 +1,38 @@ +package mx.preloaders +{ + import flash.display.Sprite; + import flash.events.IEventDispatcher; + + public interface IPreloaderDisplay extends IEventDispatcher + { + + + function get backgroundAlpha() : Number; + + function set backgroundAlpha(param1:Number) : void; + + function get backgroundColor() : uint; + + function set backgroundColor(param1:uint) : void; + + function get backgroundImage() : Object; + + function set backgroundImage(param1:Object) : void; + + function get backgroundSize() : String; + + function set backgroundSize(param1:String) : void; + + function set preloader(param1:Sprite) : void; + + function get stageHeight() : Number; + + function set stageHeight(param1:Number) : void; + + function get stageWidth() : Number; + + function set stageWidth(param1:Number) : void; + + function initialize() : void; + } +} diff --git a/scripts/mx/preloaders/Preloader.as b/scripts/mx/preloaders/Preloader.as new file mode 100644 index 0000000..67ab57e --- /dev/null +++ b/scripts/mx/preloaders/Preloader.as @@ -0,0 +1,326 @@ +package mx.preloaders +{ + import flash.display.DisplayObject; + import flash.display.LoaderInfo; + import flash.display.MovieClip; + import flash.display.Sprite; + import flash.events.ErrorEvent; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.TimerEvent; + import flash.system.ApplicationDomain; + import flash.utils.Timer; + import mx.core.RSLItem; + import mx.core.RSLListLoader; + import mx.core.ResourceModuleRSLItem; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.RSLEvent; + + use namespace mx_internal; + + public class Preloader extends Sprite + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + private var displayClass:IPreloaderDisplay = null; + + private var timer:Timer; + + private var showDisplay:Boolean; + + private var rslListLoader:RSLListLoader; + + private var resourceModuleListLoader:RSLListLoader; + + private var rslDone:Boolean = false; + + private var loadingRSLs:Boolean = false; + + private var waitingToLoadResourceModules:Boolean = false; + + private var sentDocFrameReady:Boolean = false; + + private var app:IEventDispatcher = null; + + private var applicationDomain:ApplicationDomain = null; + + private var waitedAFrame:Boolean = false; + + public function Preloader() + { + super(); + } + + public function initialize(param1:Boolean, param2:Class, param3:uint, param4:Number, param5:Object, param6:String, param7:Number, param8:Number, param9:Array = null, param10:Array = null, param11:Array = null, param12:Array = null, param13:ApplicationDomain = null) : void + { + var _loc14_:int = 0; + var _loc15_:int = 0; + var _loc17_:RSLItem = null; + var _loc18_:ResourceModuleRSLItem = null; + if((param9 != null || param10 != null) && param11 != null) + { + throw new Error("RSLs may only be specified by using libs and sizes or rslList, not both."); + } + this.applicationDomain = param13; + root.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.ioErrorHandler); + if(param9 && param9.length > 0) + { + if(param11 == null) + { + param11 = []; + } + _loc14_ = param9.length; + _loc15_ = 0; + while(_loc15_ < _loc14_) + { + _loc17_ = new RSLItem(param9[_loc15_]); + param11.push(_loc17_); + _loc15_++; + } + } + var _loc16_:Array = []; + if(param12 && param12.length > 0) + { + _loc14_ = param12.length; + _loc15_ = 0; + while(_loc15_ < _loc14_) + { + _loc18_ = new ResourceModuleRSLItem(param12[_loc15_],param13); + _loc16_.push(_loc18_); + _loc15_++; + } + } + this.rslListLoader = new RSLListLoader(param11); + if(_loc16_.length) + { + this.resourceModuleListLoader = new RSLListLoader(_loc16_); + } + this.showDisplay = param1; + this.timer = new Timer(10); + this.timer.addEventListener(TimerEvent.TIMER,this.timerHandler); + this.timer.start(); + if(param1) + { + this.displayClass = new param2(); + this.displayClass.addEventListener(Event.COMPLETE,this.displayClassCompleteHandler); + addChild(DisplayObject(this.displayClass)); + this.displayClass.backgroundColor = param3; + this.displayClass.backgroundAlpha = param4; + this.displayClass.backgroundImage = param5; + this.displayClass.backgroundSize = param6; + this.displayClass.stageWidth = param7; + this.displayClass.stageHeight = param8; + this.displayClass.initialize(); + this.displayClass.preloader = this; + this.addEventListener(Event.ENTER_FRAME,this.waitAFrame); + } + if(this.rslListLoader.getItemCount() > 0) + { + this.rslListLoader.load(this.rslProgressHandler,this.rslCompleteHandler,this.rslErrorHandler,this.rslErrorHandler,this.rslErrorHandler); + this.loadingRSLs = true; + } + else if(this.resourceModuleListLoader && this.resourceModuleListLoader.getItemCount() > 0) + { + if(param13.hasDefinition("mx.resources::ResourceManager")) + { + this.rslListLoader = this.resourceModuleListLoader; + this.rslListLoader.load(this.rslProgressHandler,this.rslCompleteHandler,this.rslErrorHandler,this.rslErrorHandler,this.rslErrorHandler); + } + else + { + this.waitingToLoadResourceModules = true; + this.rslDone = true; + } + } + else + { + this.rslDone = true; + } + } + + public function registerApplication(param1:IEventDispatcher) : void + { + param1.addEventListener("validatePropertiesComplete",this.appProgressHandler); + param1.addEventListener("validateSizeComplete",this.appProgressHandler); + param1.addEventListener("validateDisplayListComplete",this.appProgressHandler); + param1.addEventListener(FlexEvent.CREATION_COMPLETE,this.appCreationCompleteHandler); + this.app = param1; + } + + private function getByteValues() : Object + { + var _loc6_:int = 0; + var _loc1_:LoaderInfo = root.loaderInfo; + var _loc2_:int = _loc1_.bytesLoaded; + var _loc3_:int = _loc1_.bytesTotal; + var _loc4_:int = !!this.rslListLoader?int(this.rslListLoader.getItemCount()):0; + var _loc5_:int = 0; + while(_loc5_ < _loc4_) + { + _loc2_ = _loc2_ + this.rslListLoader.getItem(_loc5_).loaded; + _loc6_ = this.rslListLoader.getItem(_loc5_).total; + _loc3_ = _loc3_ + _loc6_; + _loc5_++; + } + return { + "loaded":_loc2_, + "total":_loc3_ + }; + } + + private function dispatchAppEndEvent(param1:Object = null) : void + { + dispatchEvent(new FlexEvent(FlexEvent.INIT_COMPLETE)); + if(!this.showDisplay) + { + this.displayClassCompleteHandler(null); + } + } + + mx_internal function rslProgressHandler(param1:ProgressEvent) : void + { + var _loc2_:int = this.rslListLoader.getIndex(); + var _loc3_:RSLItem = this.rslListLoader.getItem(_loc2_); + var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_PROGRESS); + _loc4_.isResourceModule = this.rslListLoader == this.resourceModuleListLoader; + _loc4_.bytesLoaded = param1.bytesLoaded; + _loc4_.bytesTotal = param1.bytesTotal; + _loc4_.rslIndex = _loc2_; + _loc4_.rslTotal = this.rslListLoader.getItemCount(); + _loc4_.url = _loc3_.urlRequest; + dispatchEvent(_loc4_); + } + + mx_internal function rslCompleteHandler(param1:Event) : void + { + var _loc2_:int = this.rslListLoader.getIndex(); + var _loc3_:RSLItem = this.rslListLoader.getItem(_loc2_); + var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_COMPLETE); + _loc4_.isResourceModule = this.rslListLoader == this.resourceModuleListLoader; + _loc4_.bytesLoaded = _loc3_.total; + _loc4_.bytesTotal = _loc3_.total; + _loc4_.loaderInfo = param1.target as LoaderInfo; + _loc4_.rslIndex = _loc2_; + _loc4_.rslTotal = this.rslListLoader.getItemCount(); + _loc4_.url = _loc3_.urlRequest; + dispatchEvent(_loc4_); + if(this.loadingRSLs && this.resourceModuleListLoader && _loc2_ + 1 == _loc4_.rslTotal) + { + this.loadingRSLs = false; + this.waitingToLoadResourceModules = true; + } + this.rslDone = _loc2_ + 1 == _loc4_.rslTotal; + } + + mx_internal function rslErrorHandler(param1:ErrorEvent) : void + { + var _loc2_:int = this.rslListLoader.getIndex(); + var _loc3_:RSLItem = this.rslListLoader.getItem(_loc2_); + var _loc4_:RSLEvent = new RSLEvent(RSLEvent.RSL_ERROR); + _loc4_.isResourceModule = this.rslListLoader == this.resourceModuleListLoader; + _loc4_.bytesLoaded = 0; + _loc4_.bytesTotal = 0; + _loc4_.rslIndex = _loc2_; + _loc4_.rslTotal = this.rslListLoader.getItemCount(); + _loc4_.url = _loc3_.urlRequest; + _loc4_.errorText = decodeURI(param1.text); + dispatchEvent(_loc4_); + } + + private function timerHandler(param1:TimerEvent) : void + { + if(!root) + { + return; + } + var _loc2_:Object = this.getByteValues(); + var _loc3_:int = _loc2_.loaded; + var _loc4_:int = _loc2_.total; + dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS,false,false,_loc3_,_loc4_)); + if(this.waitingToLoadResourceModules) + { + if(this.applicationDomain.hasDefinition("mx.resources::ResourceManager")) + { + this.waitingToLoadResourceModules = false; + this.rslListLoader = this.resourceModuleListLoader; + this.rslDone = false; + this.rslListLoader.load(this.rslProgressHandler,this.rslCompleteHandler,this.rslErrorHandler,this.rslErrorHandler,this.rslErrorHandler); + } + } + if(this.rslDone && (_loc3_ >= _loc4_ && _loc4_ > 0 || _loc4_ == 0 && _loc3_ > 0 || root is MovieClip && MovieClip(root).totalFrames > 2 && MovieClip(root).framesLoaded >= 2)) + { + if(!this.sentDocFrameReady) + { + if(this.showDisplay && !this.waitedAFrame) + { + return; + } + this.sentDocFrameReady = true; + dispatchEvent(new FlexEvent(FlexEvent.PRELOADER_DOC_FRAME_READY)); + return; + } + if(this.waitingToLoadResourceModules) + { + if(this.applicationDomain.hasDefinition("mx.resources::ResourceManager")) + { + this.waitingToLoadResourceModules = false; + this.rslListLoader = this.resourceModuleListLoader; + this.rslDone = false; + this.rslListLoader.load(this.rslProgressHandler,this.rslCompleteHandler,this.rslErrorHandler,this.rslErrorHandler,this.rslErrorHandler); + return; + } + } + this.timer.removeEventListener(TimerEvent.TIMER,this.timerHandler); + this.timer.reset(); + dispatchEvent(new Event(Event.COMPLETE)); + dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS)); + } + } + + private function ioErrorHandler(param1:IOErrorEvent) : void + { + } + + private function displayClassCompleteHandler(param1:Event) : void + { + if(this.displayClass) + { + this.displayClass.removeEventListener(Event.COMPLETE,this.displayClassCompleteHandler); + } + if(root) + { + root.loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,this.ioErrorHandler); + } + if(this.app) + { + this.app.removeEventListener("validatePropertiesComplete",this.appProgressHandler); + this.app.removeEventListener("validateSizeComplete",this.appProgressHandler); + this.app.removeEventListener("validateDisplayListComplete",this.appProgressHandler); + this.app.removeEventListener(FlexEvent.CREATION_COMPLETE,this.appCreationCompleteHandler); + this.app = null; + } + dispatchEvent(new FlexEvent(FlexEvent.PRELOADER_DONE)); + } + + private function appCreationCompleteHandler(param1:FlexEvent) : void + { + this.dispatchAppEndEvent(); + } + + private function appProgressHandler(param1:Event) : void + { + dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS)); + } + + private function waitAFrame(param1:Event) : void + { + this.removeEventListener(Event.ENTER_FRAME,this.waitAFrame); + this.waitedAFrame = true; + } + } +} diff --git a/scripts/mx/resources/IResourceBundle.as b/scripts/mx/resources/IResourceBundle.as new file mode 100644 index 0000000..12455fa --- /dev/null +++ b/scripts/mx/resources/IResourceBundle.as @@ -0,0 +1,13 @@ +package mx.resources +{ + public interface IResourceBundle + { + + + function get bundleName() : String; + + function get content() : Object; + + function get locale() : String; + } +} diff --git a/scripts/mx/resources/IResourceManager.as b/scripts/mx/resources/IResourceManager.as new file mode 100644 index 0000000..c86be83 --- /dev/null +++ b/scripts/mx/resources/IResourceManager.as @@ -0,0 +1,65 @@ +package mx.resources +{ + import flash.events.IEventDispatcher; + import flash.system.ApplicationDomain; + import flash.system.SecurityDomain; + + public interface IResourceManager extends IEventDispatcher + { + + + function get localeChain() : Array; + + function set localeChain(param1:Array) : void; + + function loadResourceModule(param1:String, param2:Boolean = true, param3:ApplicationDomain = null, param4:SecurityDomain = null) : IEventDispatcher; + + function unloadResourceModule(param1:String, param2:Boolean = true) : void; + + function addResourceBundle(param1:IResourceBundle, param2:Boolean = false) : void; + + function removeResourceBundle(param1:String, param2:String) : void; + + function removeResourceBundlesForLocale(param1:String) : void; + + function update() : void; + + function getLocales() : Array; + + function getPreferredLocaleChain() : Array; + + function getBundleNamesForLocale(param1:String) : Array; + + function getResourceBundle(param1:String, param2:String) : IResourceBundle; + + function findResourceBundleWithResource(param1:String, param2:String) : IResourceBundle; + + [Bindable("change")] + function getObject(param1:String, param2:String, param3:String = null) : *; + + [Bindable("change")] + function getString(param1:String, param2:String, param3:Array = null, param4:String = null) : String; + + [Bindable("change")] + function getStringArray(param1:String, param2:String, param3:String = null) : Array; + + [Bindable("change")] + function getNumber(param1:String, param2:String, param3:String = null) : Number; + + [Bindable("change")] + function getInt(param1:String, param2:String, param3:String = null) : int; + + [Bindable("change")] + function getUint(param1:String, param2:String, param3:String = null) : uint; + + [Bindable("change")] + function getBoolean(param1:String, param2:String, param3:String = null) : Boolean; + + [Bindable("change")] + function getClass(param1:String, param2:String, param3:String = null) : Class; + + function installCompiledResourceBundles(param1:ApplicationDomain, param2:Array, param3:Array, param4:Boolean = false) : Array; + + function initializeLocaleChain(param1:Array) : void; + } +} diff --git a/scripts/mx/resources/IResourceModule.as b/scripts/mx/resources/IResourceModule.as new file mode 100644 index 0000000..653e244 --- /dev/null +++ b/scripts/mx/resources/IResourceModule.as @@ -0,0 +1,9 @@ +package mx.resources +{ + public interface IResourceModule + { + + + function get resourceBundles() : Array; + } +} diff --git a/scripts/mx/resources/LocaleSorter.as b/scripts/mx/resources/LocaleSorter.as new file mode 100644 index 0000000..38e86ac --- /dev/null +++ b/scripts/mx/resources/LocaleSorter.as @@ -0,0 +1,751 @@ +package mx.resources +{ + import mx.core.mx_internal; + + use namespace mx_internal; + + public class LocaleSorter + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function LocaleSorter() + { + super(); + } + + public static function sortLocalesByPreference(param1:Array, param2:Array, param3:String = null, param4:Boolean = false) : Array + { + var result:Array = null; + var hasLocale:Object = null; + var i:int = 0; + var j:int = 0; + var k:int = 0; + var l:int = 0; + var locale:String = null; + var plocale:LocaleID = null; + var appLocales:Array = param1; + var systemPreferences:Array = param2; + var ultimateFallbackLocale:String = param3; + var addAll:Boolean = param4; + var promote:Function = function(param1:String):void + { + if(typeof hasLocale[param1] != "undefined") + { + result.push(appLocales[hasLocale[param1]]); + delete hasLocale[param1]; + } + }; + result = []; + hasLocale = {}; + var locales:Array = trimAndNormalize(appLocales); + var preferenceLocales:Array = trimAndNormalize(systemPreferences); + addUltimateFallbackLocale(preferenceLocales,ultimateFallbackLocale); + j = 0; + while(j < locales.length) + { + hasLocale[locales[j]] = j; + j++; + } + i = 0; + l = preferenceLocales.length; + while(i < l) + { + plocale = LocaleID.fromString(preferenceLocales[i]); + promote(preferenceLocales[i]); + promote(plocale.toString()); + while(plocale.transformToParent()) + { + promote(plocale.toString()); + } + plocale = LocaleID.fromString(preferenceLocales[i]); + j = 0; + while(j < l) + { + locale = preferenceLocales[j]; + if(plocale.isSiblingOf(LocaleID.fromString(locale))) + { + promote(locale); + } + j++; + } + j = 0; + k = locales.length; + while(j < k) + { + locale = locales[j]; + if(plocale.isSiblingOf(LocaleID.fromString(locale))) + { + promote(locale); + } + j++; + } + i++; + } + if(addAll) + { + j = 0; + k = locales.length; + while(j < k) + { + promote(locales[j]); + j++; + } + } + return result; + } + + private static function trimAndNormalize(param1:Array) : Array + { + var _loc2_:Array = []; + var _loc3_:int = 0; + while(_loc3_ < param1.length) + { + _loc2_.push(normalizeLocale(param1[_loc3_])); + _loc3_++; + } + return _loc2_; + } + + private static function normalizeLocale(param1:String) : String + { + return param1.toLowerCase().replace(/-/g,"_"); + } + + private static function addUltimateFallbackLocale(param1:Array, param2:String) : void + { + var _loc3_:String = null; + if(param2 != null && param2 != "") + { + _loc3_ = normalizeLocale(param2); + if(param1.indexOf(_loc3_) == -1) + { + param1.push(_loc3_); + } + } + } + } +} + +class LocaleID +{ + + public static const STATE_PRIMARY_LANGUAGE:int = 0; + + public static const STATE_EXTENDED_LANGUAGES:int = 1; + + public static const STATE_SCRIPT:int = 2; + + public static const STATE_REGION:int = 3; + + public static const STATE_VARIANTS:int = 4; + + public static const STATE_EXTENSIONS:int = 5; + + public static const STATE_PRIVATES:int = 6; + + + private var lang:String = ""; + + private var script:String = ""; + + private var region:String = ""; + + private var extended_langs:Array; + + private var variants:Array; + + private var extensions:Object; + + private var privates:Array; + + private var privateLangs:Boolean = false; + + function LocaleID() + { + this.extended_langs = []; + this.variants = []; + this.extensions = {}; + this.privates = []; + super(); + } + + private static function appendElements(param1:Array, param2:Array) : void + { + var _loc3_:uint = 0; + var _loc4_:uint = param2.length; + while(_loc3_ < _loc4_) + { + param1.push(param2[_loc3_]); + _loc3_++; + } + } + + public static function fromString(param1:String) : LocaleID + { + var _loc5_:Array = null; + var _loc8_:String = null; + var _loc9_:int = 0; + var _loc10_:String = null; + var _loc2_:LocaleID = new LocaleID(); + var _loc3_:int = STATE_PRIMARY_LANGUAGE; + var _loc4_:Array = param1.replace(/-/g,"_").split("_"); + var _loc6_:int = 0; + var _loc7_:int = _loc4_.length; + while(_loc6_ < _loc7_) + { + _loc8_ = _loc4_[_loc6_].toLowerCase(); + if(_loc3_ == STATE_PRIMARY_LANGUAGE) + { + if(_loc8_ == "x") + { + _loc2_.privateLangs = true; + } + else if(_loc8_ == "i") + { + _loc2_.lang = _loc2_.lang + "i-"; + } + else + { + _loc2_.lang = _loc2_.lang + _loc8_; + _loc3_ = STATE_EXTENDED_LANGUAGES; + } + } + else + { + _loc9_ = _loc8_.length; + if(_loc9_ != 0) + { + _loc10_ = _loc8_.charAt(0).toLowerCase(); + if(_loc3_ <= STATE_EXTENDED_LANGUAGES && _loc9_ == 3) + { + _loc2_.extended_langs.push(_loc8_); + if(_loc2_.extended_langs.length == 3) + { + _loc3_ = STATE_SCRIPT; + } + } + else if(_loc3_ <= STATE_SCRIPT && _loc9_ == 4) + { + _loc2_.script = _loc8_; + _loc3_ = STATE_REGION; + } + else if(_loc3_ <= STATE_REGION && (_loc9_ == 2 || _loc9_ == 3)) + { + _loc2_.region = _loc8_; + _loc3_ = STATE_VARIANTS; + } + else if(_loc3_ <= STATE_VARIANTS && (_loc10_ >= "a" && _loc10_ <= "z" && _loc9_ >= 5 || _loc10_ >= "0" && _loc10_ <= "9" && _loc9_ >= 4)) + { + _loc2_.variants.push(_loc8_); + _loc3_ = STATE_VARIANTS; + } + else if(_loc3_ < STATE_PRIVATES && _loc9_ == 1) + { + if(_loc8_ == "x") + { + _loc3_ = STATE_PRIVATES; + _loc5_ = _loc2_.privates; + } + else + { + _loc3_ = STATE_EXTENSIONS; + _loc5_ = _loc2_.extensions[_loc8_] || []; + _loc2_.extensions[_loc8_] = _loc5_; + } + } + else if(_loc3_ >= STATE_EXTENSIONS) + { + _loc5_.push(_loc8_); + } + } + } + _loc6_++; + } + _loc2_.canonicalize(); + return _loc2_; + } + + public function canonicalize() : void + { + var _loc1_:* = null; + for(_loc1_ in this.extensions) + { + if(this.extensions.hasOwnProperty(_loc1_)) + { + if(this.extensions[_loc1_].length == 0) + { + delete this.extensions[_loc1_]; + } + else + { + this.extensions[_loc1_] = this.extensions[_loc1_].sort(); + } + } + } + this.extended_langs = this.extended_langs.sort(); + this.variants = this.variants.sort(); + this.privates = this.privates.sort(); + if(this.script == "") + { + this.script = LocaleRegistry.getScriptByLang(this.lang); + } + if(this.script == "" && this.region != "") + { + this.script = LocaleRegistry.getScriptByLangAndRegion(this.lang,this.region); + } + if(this.region == "" && this.script != "") + { + this.region = LocaleRegistry.getDefaultRegionForLangAndScript(this.lang,this.script); + } + } + + public function toString() : String + { + var _loc2_:* = null; + var _loc1_:Array = [this.lang]; + appendElements(_loc1_,this.extended_langs); + if(this.script != "") + { + _loc1_.push(this.script); + } + if(this.region != "") + { + _loc1_.push(this.region); + } + appendElements(_loc1_,this.variants); + for(_loc2_ in this.extensions) + { + if(this.extensions.hasOwnProperty(_loc2_)) + { + _loc1_.push(_loc2_); + appendElements(_loc1_,this.extensions[_loc2_]); + } + } + if(this.privates.length > 0) + { + _loc1_.push("x"); + appendElements(_loc1_,this.privates); + } + return _loc1_.join("_"); + } + + public function equals(param1:LocaleID) : Boolean + { + return this.toString() == param1.toString(); + } + + public function isSiblingOf(param1:LocaleID) : Boolean + { + return this.lang == param1.lang && this.script == param1.script; + } + + public function transformToParent() : Boolean + { + var _loc2_:* = null; + var _loc3_:Array = null; + var _loc4_:String = null; + if(this.privates.length > 0) + { + this.privates.splice(this.privates.length - 1,1); + return true; + } + var _loc1_:String = null; + for(_loc2_ in this.extensions) + { + if(this.extensions.hasOwnProperty(_loc2_)) + { + _loc1_ = _loc2_; + } + } + if(_loc1_) + { + _loc3_ = this.extensions[_loc1_]; + if(_loc3_.length == 1) + { + delete this.extensions[_loc1_]; + return true; + } + _loc3_.splice(_loc3_.length - 1,1); + return true; + } + if(this.variants.length > 0) + { + this.variants.splice(this.variants.length - 1,1); + return true; + } + if(this.script != "") + { + if(LocaleRegistry.getScriptByLang(this.lang) != "") + { + this.script = ""; + return true; + } + if(this.region == "") + { + _loc4_ = LocaleRegistry.getDefaultRegionForLangAndScript(this.lang,this.script); + if(_loc4_ != "") + { + this.region = _loc4_; + this.script = ""; + return true; + } + } + } + if(this.region != "") + { + if(!(this.script == "" && LocaleRegistry.getScriptByLang(this.lang) == "")) + { + this.region = ""; + return true; + } + } + if(this.extended_langs.length > 0) + { + this.extended_langs.splice(this.extended_langs.length - 1,1); + return true; + } + return false; + } +} + +class LocaleRegistry +{ + + private static const SCRIPTS:Array = ["","latn","ethi","arab","beng","cyrl","thaa","tibt","grek","gujr","hebr","deva","armn","jpan","geor","khmr","knda","kore","laoo","mlym","mymr","orya","guru","sinh","taml","telu","thai","nkoo","blis","hans","hant","mong","syrc"]; + + private static const SCRIPT_BY_ID:Object = { + "latn":1, + "ethi":2, + "arab":3, + "beng":4, + "cyrl":5, + "thaa":6, + "tibt":7, + "grek":8, + "gujr":9, + "hebr":10, + "deva":11, + "armn":12, + "jpan":13, + "geor":14, + "khmr":15, + "knda":16, + "kore":17, + "laoo":18, + "mlym":19, + "mymr":20, + "orya":21, + "guru":22, + "sinh":23, + "taml":24, + "telu":25, + "thai":26, + "nkoo":27, + "blis":28, + "hans":29, + "hant":30, + "mong":31, + "syrc":32 + }; + + private static const DEFAULT_REGION_BY_LANG_AND_SCRIPT:Object = { + "bg":{5:"bg"}, + "ca":{1:"es"}, + "zh":{ + 30:"tw", + 29:"cn" + }, + "cs":{1:"cz"}, + "da":{1:"dk"}, + "de":{1:"de"}, + "el":{8:"gr"}, + "en":{1:"us"}, + "es":{1:"es"}, + "fi":{1:"fi"}, + "fr":{1:"fr"}, + "he":{10:"il"}, + "hu":{1:"hu"}, + "is":{1:"is"}, + "it":{1:"it"}, + "ja":{13:"jp"}, + "ko":{17:"kr"}, + "nl":{1:"nl"}, + "nb":{1:"no"}, + "pl":{1:"pl"}, + "pt":{1:"br"}, + "ro":{1:"ro"}, + "ru":{5:"ru"}, + "hr":{1:"hr"}, + "sk":{1:"sk"}, + "sq":{1:"al"}, + "sv":{1:"se"}, + "th":{26:"th"}, + "tr":{1:"tr"}, + "ur":{3:"pk"}, + "id":{1:"id"}, + "uk":{5:"ua"}, + "be":{5:"by"}, + "sl":{1:"si"}, + "et":{1:"ee"}, + "lv":{1:"lv"}, + "lt":{1:"lt"}, + "fa":{3:"ir"}, + "vi":{1:"vn"}, + "hy":{12:"am"}, + "az":{ + 1:"az", + 5:"az" + }, + "eu":{1:"es"}, + "mk":{5:"mk"}, + "af":{1:"za"}, + "ka":{14:"ge"}, + "fo":{1:"fo"}, + "hi":{11:"in"}, + "ms":{1:"my"}, + "kk":{5:"kz"}, + "ky":{5:"kg"}, + "sw":{1:"ke"}, + "uz":{ + 1:"uz", + 5:"uz" + }, + "tt":{5:"ru"}, + "pa":{22:"in"}, + "gu":{9:"in"}, + "ta":{24:"in"}, + "te":{25:"in"}, + "kn":{16:"in"}, + "mr":{11:"in"}, + "sa":{11:"in"}, + "mn":{5:"mn"}, + "gl":{1:"es"}, + "kok":{11:"in"}, + "syr":{32:"sy"}, + "dv":{6:"mv"}, + "nn":{1:"no"}, + "sr":{ + 1:"cs", + 5:"cs" + }, + "cy":{1:"gb"}, + "mi":{1:"nz"}, + "mt":{1:"mt"}, + "quz":{1:"bo"}, + "tn":{1:"za"}, + "xh":{1:"za"}, + "zu":{1:"za"}, + "nso":{1:"za"}, + "se":{1:"no"}, + "smj":{1:"no"}, + "sma":{1:"no"}, + "sms":{1:"fi"}, + "smn":{1:"fi"}, + "bs":{1:"ba"} + }; + + private static const SCRIPT_ID_BY_LANG:Object = { + "ab":5, + "af":1, + "am":2, + "ar":3, + "as":4, + "ay":1, + "be":5, + "bg":5, + "bn":4, + "bs":1, + "ca":1, + "ch":1, + "cs":1, + "cy":1, + "da":1, + "de":1, + "dv":6, + "dz":7, + "el":8, + "en":1, + "eo":1, + "es":1, + "et":1, + "eu":1, + "fa":3, + "fi":1, + "fj":1, + "fo":1, + "fr":1, + "frr":1, + "fy":1, + "ga":1, + "gl":1, + "gn":1, + "gu":9, + "gv":1, + "he":10, + "hi":11, + "hr":1, + "ht":1, + "hu":1, + "hy":12, + "id":1, + "in":1, + "is":1, + "it":1, + "iw":10, + "ja":13, + "ka":14, + "kk":5, + "kl":1, + "km":15, + "kn":16, + "ko":17, + "la":1, + "lb":1, + "ln":1, + "lo":18, + "lt":1, + "lv":1, + "mg":1, + "mh":1, + "mk":5, + "ml":19, + "mo":1, + "mr":11, + "ms":1, + "mt":1, + "my":20, + "na":1, + "nb":1, + "nd":1, + "ne":11, + "nl":1, + "nn":1, + "no":1, + "nr":1, + "ny":1, + "om":1, + "or":21, + "pa":22, + "pl":1, + "ps":3, + "pt":1, + "qu":1, + "rn":1, + "ro":1, + "ru":5, + "rw":1, + "sg":1, + "si":23, + "sk":1, + "sl":1, + "sm":1, + "so":1, + "sq":1, + "ss":1, + "st":1, + "sv":1, + "sw":1, + "ta":24, + "te":25, + "th":26, + "ti":2, + "tl":1, + "tn":1, + "to":1, + "tr":1, + "ts":1, + "uk":5, + "ur":3, + "ve":1, + "vi":1, + "wo":1, + "xh":1, + "yi":10, + "zu":1, + "cpe":1, + "dsb":1, + "frs":1, + "gsw":1, + "hsb":1, + "kok":11, + "mai":11, + "men":1, + "nds":1, + "niu":1, + "nqo":27, + "nso":1, + "son":1, + "tem":1, + "tkl":1, + "tmh":1, + "tpi":1, + "tvl":1, + "zbl":28 + }; + + private static const SCRIPT_ID_BY_LANG_AND_REGION:Object = { + "zh":{ + "cn":29, + "sg":29, + "tw":30, + "hk":30, + "mo":30 + }, + "mn":{ + "cn":31, + "sg":5 + }, + "pa":{ + "pk":3, + "in":22 + }, + "ha":{ + "gh":1, + "ne":1 + } + }; + + + function LocaleRegistry() + { + super(); + } + + public static function getScriptByLangAndRegion(param1:String, param2:String) : String + { + var _loc3_:Object = SCRIPT_ID_BY_LANG_AND_REGION[param1]; + if(_loc3_ == null) + { + return ""; + } + var _loc4_:Object = _loc3_[param2]; + if(_loc4_ == null) + { + return ""; + } + return SCRIPTS[int(_loc4_)].toLowerCase(); + } + + public static function getScriptByLang(param1:String) : String + { + var _loc2_:Object = SCRIPT_ID_BY_LANG[param1]; + if(_loc2_ == null) + { + return ""; + } + return SCRIPTS[int(_loc2_)].toLowerCase(); + } + + public static function getDefaultRegionForLangAndScript(param1:String, param2:String) : String + { + var _loc3_:Object = DEFAULT_REGION_BY_LANG_AND_SCRIPT[param1]; + var _loc4_:Object = SCRIPT_BY_ID[param2]; + if(_loc3_ == null || _loc4_ == null) + { + return ""; + } + return _loc3_[int(_loc4_)] || ""; + } +} diff --git a/scripts/mx/resources/ResourceBundle.as b/scripts/mx/resources/ResourceBundle.as new file mode 100644 index 0000000..e7c3db7 --- /dev/null +++ b/scripts/mx/resources/ResourceBundle.as @@ -0,0 +1,73 @@ +package mx.resources +{ + import flash.system.ApplicationDomain; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class ResourceBundle implements IResourceBundle + { + + mx_internal static const VERSION:String = "4.6.0.0"; + + mx_internal static var locale:String; + + mx_internal static var backupApplicationDomain:ApplicationDomain; + + + mx_internal var _bundleName:String; + + private var _content:Object; + + mx_internal var _locale:String; + + public function ResourceBundle(param1:String = null, param2:String = null) + { + this._content = {}; + super(); + this._locale = param1; + this._bundleName = param2; + this._content = this.getContent(); + } + + private static function getClassByName(param1:String, param2:ApplicationDomain) : Class + { + var _loc3_:Class = null; + if(param2.hasDefinition(param1)) + { + _loc3_ = param2.getDefinition(param1) as Class; + } + return _loc3_; + } + + public function get bundleName() : String + { + return this._bundleName; + } + + public function get content() : Object + { + return this._content; + } + + public function get locale() : String + { + return this._locale; + } + + protected function getContent() : Object + { + return {}; + } + + private function _getObject(param1:String) : Object + { + var _loc2_:Object = this.content[param1]; + if(!_loc2_) + { + throw new Error("Key " + param1 + " was not found in resource bundle " + this.bundleName); + } + return _loc2_; + } + } +} diff --git a/scripts/mx/resources/ResourceManager.as b/scripts/mx/resources/ResourceManager.as new file mode 100644 index 0000000..705999a --- /dev/null +++ b/scripts/mx/resources/ResourceManager.as @@ -0,0 +1,44 @@ +package mx.resources +{ + import flash.utils.getDefinitionByName; + import mx.core.Singleton; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class ResourceManager + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var implClassDependency:ResourceManagerImpl; + + private static var instance:IResourceManager; + + + public function ResourceManager() + { + super(); + } + + public static function getInstance() : IResourceManager + { + if(!instance) + { + if(!Singleton.getClass("mx.resources::IResourceManager")) + { + Singleton.registerClass("mx.resources::IResourceManager",Class(getDefinitionByName("mx.resources::ResourceManagerImpl"))); + } + try + { + instance = IResourceManager(Singleton.getInstance("mx.resources::IResourceManager")); + } + catch(e:Error) + { + instance = new ResourceManagerImpl(); + } + } + return instance; + } + } +} diff --git a/scripts/mx/resources/ResourceManagerImpl.as b/scripts/mx/resources/ResourceManagerImpl.as new file mode 100644 index 0000000..7b0144c --- /dev/null +++ b/scripts/mx/resources/ResourceManagerImpl.as @@ -0,0 +1,709 @@ +package mx.resources +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.FocusEvent; + import flash.events.IEventDispatcher; + import flash.events.TimerEvent; + import flash.system.ApplicationDomain; + import flash.system.Capabilities; + import flash.system.SecurityDomain; + import flash.utils.Dictionary; + import flash.utils.Timer; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.ModuleEvent; + import mx.events.ResourceEvent; + import mx.managers.SystemManagerGlobals; + import mx.modules.IModuleInfo; + import mx.modules.ModuleManager; + import mx.utils.StringUtil; + + use namespace mx_internal; + + public class ResourceManagerImpl extends EventDispatcher implements IResourceManager + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var instance:IResourceManager; + + + private var ignoreMissingBundles:Boolean; + + private var bundleDictionary:Dictionary; + + private var localeMap:Object; + + private var resourceModules:Object; + + private var initializedForNonFrameworkApp:Boolean = false; + + private var _localeChain:Array; + + public function ResourceManagerImpl() + { + this.localeMap = {}; + this.resourceModules = {}; + super(); + if(SystemManagerGlobals.topLevelSystemManagers.length) + { + if(SystemManagerGlobals.topLevelSystemManagers[0].currentFrame == 1) + { + this.ignoreMissingBundles = true; + SystemManagerGlobals.topLevelSystemManagers[0].addEventListener(Event.ENTER_FRAME,this.enterFrameHandler); + } + } + var _loc1_:Object = SystemManagerGlobals.info; + if(_loc1_) + { + this.processInfo(_loc1_,false); + } + this.ignoreMissingBundles = false; + if(SystemManagerGlobals.topLevelSystemManagers.length) + { + SystemManagerGlobals.topLevelSystemManagers[0].addEventListener(FlexEvent.NEW_CHILD_APPLICATION,this.newChildApplicationHandler); + } + } + + public static function getInstance() : IResourceManager + { + if(!instance) + { + instance = new ResourceManagerImpl(); + } + return instance; + } + + public function get localeChain() : Array + { + return this._localeChain; + } + + public function set localeChain(param1:Array) : void + { + this._localeChain = param1; + this.update(); + } + + public function installCompiledResourceBundles(param1:ApplicationDomain, param2:Array, param3:Array, param4:Boolean = false) : Array + { + var _loc10_:String = null; + var _loc11_:int = 0; + var _loc12_:String = null; + var _loc13_:IResourceBundle = null; + var _loc5_:Array = []; + var _loc6_:uint = 0; + var _loc7_:int = !!param2?int(param2.length):0; + var _loc8_:int = !!param3?int(param3.length):0; + var _loc9_:int = 0; + while(_loc9_ < _loc7_) + { + _loc10_ = param2[_loc9_]; + _loc11_ = 0; + while(_loc11_ < _loc8_) + { + _loc12_ = param3[_loc11_]; + _loc13_ = this.installCompiledResourceBundle(param1,_loc10_,_loc12_,param4); + if(_loc13_) + { + _loc5_[_loc6_++] = _loc13_; + } + _loc11_++; + } + _loc9_++; + } + return _loc5_; + } + + private function installCompiledResourceBundle(param1:ApplicationDomain, param2:String, param3:String, param4:Boolean = false) : IResourceBundle + { + var _loc5_:String = null; + var _loc6_:String = param3; + var _loc7_:int = param3.indexOf(":"); + if(_loc7_ != -1) + { + _loc5_ = param3.substring(0,_loc7_); + _loc6_ = param3.substring(_loc7_ + 1); + } + var _loc8_:IResourceBundle = this.getResourceBundleInternal(param2,param3,param4); + if(_loc8_) + { + return _loc8_; + } + var _loc9_:* = param2 + "$" + _loc6_ + "_properties"; + if(_loc5_ != null) + { + _loc9_ = _loc5_ + "." + _loc9_; + } + var _loc10_:Class = null; + if(param1.hasDefinition(_loc9_)) + { + _loc10_ = Class(param1.getDefinition(_loc9_)); + } + if(!_loc10_) + { + _loc9_ = param3; + if(param1.hasDefinition(_loc9_)) + { + _loc10_ = Class(param1.getDefinition(_loc9_)); + } + } + if(!_loc10_) + { + _loc9_ = param3 + "_properties"; + if(param1.hasDefinition(_loc9_)) + { + _loc10_ = Class(param1.getDefinition(_loc9_)); + } + } + if(!_loc10_) + { + if(this.ignoreMissingBundles) + { + return null; + } + throw new Error("Could not find compiled resource bundle \'" + param3 + "\' for locale \'" + param2 + "\'."); + } + _loc8_ = ResourceBundle(new _loc10_()); + ResourceBundle(_loc8_)._locale = param2; + ResourceBundle(_loc8_)._bundleName = param3; + this.addResourceBundle(_loc8_,param4); + return _loc8_; + } + + private function newChildApplicationHandler(param1:FocusEvent) : void + { + var _loc2_:Object = param1.relatedObject["info"](); + var _loc3_:Boolean = false; + if("_resourceBundles" in param1.relatedObject) + { + _loc3_ = true; + } + var _loc4_:Array = this.processInfo(_loc2_,_loc3_); + if(_loc3_) + { + param1.relatedObject["_resourceBundles"] = _loc4_; + } + } + + private function processInfo(param1:Object, param2:Boolean) : Array + { + var _loc3_:Array = param1["compiledLocales"]; + ResourceBundle.locale = _loc3_ != null && _loc3_.length > 0?_loc3_[0]:"en_US"; + var _loc4_:String = SystemManagerGlobals.parameters["localeChain"]; + if(_loc4_ != null && _loc4_ != "") + { + this.localeChain = _loc4_.split(","); + } + var _loc5_:ApplicationDomain = param1["currentDomain"]; + var _loc6_:Array = param1["compiledResourceBundleNames"]; + var _loc7_:Array = this.installCompiledResourceBundles(_loc5_,_loc3_,_loc6_,param2); + if(!this.localeChain) + { + this.initializeLocaleChain(_loc3_); + } + return _loc7_; + } + + public function initializeLocaleChain(param1:Array) : void + { + this.localeChain = LocaleSorter.sortLocalesByPreference(param1,this.getSystemPreferredLocales(),null,true); + } + + public function loadResourceModule(param1:String, param2:Boolean = true, param3:ApplicationDomain = null, param4:SecurityDomain = null) : IEventDispatcher + { + var moduleInfo:IModuleInfo = null; + var resourceEventDispatcher:ResourceEventDispatcher = null; + var timer:Timer = null; + var timerHandler:Function = null; + var url:String = param1; + var updateFlag:Boolean = param2; + var applicationDomain:ApplicationDomain = param3; + var securityDomain:SecurityDomain = param4; + moduleInfo = ModuleManager.getModule(url); + resourceEventDispatcher = new ResourceEventDispatcher(moduleInfo); + var readyHandler:Function = function(param1:ModuleEvent):void + { + var _loc2_:* = param1.module.factory.create(); + resourceModules[param1.module.url].resourceModule = _loc2_; + if(updateFlag) + { + update(); + } + }; + moduleInfo.addEventListener(ModuleEvent.READY,readyHandler,false,0,true); + var errorHandler:Function = function(param1:ModuleEvent):void + { + var _loc3_:ResourceEvent = null; + var _loc2_:String = "Unable to load resource module from " + url; + if(resourceEventDispatcher.willTrigger(ResourceEvent.ERROR)) + { + _loc3_ = new ResourceEvent(ResourceEvent.ERROR,param1.bubbles,param1.cancelable); + _loc3_.bytesLoaded = 0; + _loc3_.bytesTotal = 0; + _loc3_.errorText = _loc2_; + resourceEventDispatcher.dispatchEvent(_loc3_); + return; + } + throw new Error(_loc2_); + }; + moduleInfo.addEventListener(ModuleEvent.ERROR,errorHandler,false,0,true); + this.resourceModules[url] = new ResourceModuleInfo(moduleInfo,readyHandler,errorHandler); + timer = new Timer(0); + timerHandler = function(param1:TimerEvent):void + { + timer.removeEventListener(TimerEvent.TIMER,timerHandler); + timer.stop(); + moduleInfo.load(applicationDomain,securityDomain); + }; + timer.addEventListener(TimerEvent.TIMER,timerHandler,false,0,true); + timer.start(); + return resourceEventDispatcher; + } + + public function unloadResourceModule(param1:String, param2:Boolean = true) : void + { + var _loc4_:Array = null; + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc7_:String = null; + var _loc8_:String = null; + var _loc3_:ResourceModuleInfo = this.resourceModules[param1]; + if(!_loc3_) + { + return; + } + if(_loc3_.resourceModule) + { + _loc4_ = _loc3_.resourceModule.resourceBundles; + if(_loc4_) + { + _loc5_ = _loc4_.length; + _loc6_ = 0; + while(_loc6_ < _loc5_) + { + _loc7_ = _loc4_[_loc6_].locale; + _loc8_ = _loc4_[_loc6_].bundleName; + this.removeResourceBundle(_loc7_,_loc8_); + _loc6_++; + } + } + } + this.resourceModules[param1] = null; + delete this.resourceModules[param1]; + _loc3_.moduleInfo.unload(); + if(param2) + { + this.update(); + } + } + + public function addResourceBundle(param1:IResourceBundle, param2:Boolean = false) : void + { + var _loc3_:String = param1.locale; + var _loc4_:String = param1.bundleName; + if(!this.localeMap[_loc3_]) + { + this.localeMap[_loc3_] = {}; + } + if(param2) + { + if(!this.bundleDictionary) + { + this.bundleDictionary = new Dictionary(true); + } + this.bundleDictionary[param1] = _loc3_ + _loc4_; + this.localeMap[_loc3_][_loc4_] = this.bundleDictionary; + } + else + { + this.localeMap[_loc3_][_loc4_] = param1; + } + } + + public function getResourceBundle(param1:String, param2:String) : IResourceBundle + { + return this.getResourceBundleInternal(param1,param2,false); + } + + private function getResourceBundleInternal(param1:String, param2:String, param3:Boolean) : IResourceBundle + { + var _loc7_:String = null; + var _loc8_:* = null; + var _loc4_:Object = this.localeMap[param1]; + if(!_loc4_) + { + return null; + } + var _loc5_:IResourceBundle = null; + var _loc6_:Object = _loc4_[param2]; + if(_loc6_ is Dictionary) + { + if(param3) + { + return null; + } + _loc7_ = param1 + param2; + for(_loc8_ in _loc6_) + { + if(_loc6_[_loc8_] == _loc7_) + { + _loc5_ = _loc8_ as IResourceBundle; + break; + } + } + } + else + { + _loc5_ = _loc6_ as IResourceBundle; + } + return _loc5_; + } + + public function removeResourceBundle(param1:String, param2:String) : void + { + delete this.localeMap[param1][param2]; + if(this.getBundleNamesForLocale(param1).length == 0) + { + delete this.localeMap[param1]; + } + } + + public function removeResourceBundlesForLocale(param1:String) : void + { + delete this.localeMap[param1]; + } + + public function update() : void + { + dispatchEvent(new Event(Event.CHANGE)); + } + + public function getLocales() : Array + { + var _loc2_:* = null; + var _loc1_:Array = []; + for(_loc2_ in this.localeMap) + { + _loc1_.push(_loc2_); + } + return _loc1_; + } + + public function getPreferredLocaleChain() : Array + { + return LocaleSorter.sortLocalesByPreference(this.getLocales(),this.getSystemPreferredLocales(),null,true); + } + + public function getBundleNamesForLocale(param1:String) : Array + { + var _loc3_:* = null; + var _loc2_:Array = []; + for(_loc3_ in this.localeMap[param1]) + { + _loc2_.push(_loc3_); + } + return _loc2_; + } + + public function findResourceBundleWithResource(param1:String, param2:String) : IResourceBundle + { + var _loc5_:String = null; + var _loc6_:Object = null; + var _loc7_:Object = null; + var _loc8_:IResourceBundle = null; + var _loc9_:String = null; + var _loc10_:* = null; + if(!this._localeChain) + { + return null; + } + var _loc3_:int = this._localeChain.length; + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = this.localeChain[_loc4_]; + _loc6_ = this.localeMap[_loc5_]; + if(_loc6_) + { + _loc7_ = _loc6_[param1]; + if(_loc7_) + { + _loc8_ = null; + if(_loc7_ is Dictionary) + { + _loc9_ = _loc5_ + param1; + for(_loc10_ in _loc7_) + { + if(_loc7_[_loc10_] == _loc9_) + { + _loc8_ = _loc10_ as IResourceBundle; + break; + } + } + } + else + { + _loc8_ = _loc7_ as IResourceBundle; + } + if(_loc8_ && param2 in _loc8_.content) + { + return _loc8_; + } + } + } + _loc4_++; + } + return null; + } + + [Bindable("change")] + public function getObject(param1:String, param2:String, param3:String = null) : * + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return undefined; + } + return _loc4_.content[param2]; + } + + [Bindable("change")] + public function getString(param1:String, param2:String, param3:Array = null, param4:String = null) : String + { + var _loc5_:IResourceBundle = this.findBundle(param1,param2,param4); + if(!_loc5_) + { + return null; + } + var _loc6_:String = String(_loc5_.content[param2]); + if(param3) + { + _loc6_ = StringUtil.substitute(_loc6_,param3); + } + return _loc6_; + } + + [Bindable("change")] + public function getStringArray(param1:String, param2:String, param3:String = null) : Array + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return null; + } + var _loc5_:* = _loc4_.content[param2]; + var _loc6_:Array = String(_loc5_).split(","); + var _loc7_:int = _loc6_.length; + var _loc8_:int = 0; + while(_loc8_ < _loc7_) + { + _loc6_[_loc8_] = StringUtil.trim(_loc6_[_loc8_]); + _loc8_++; + } + return _loc6_; + } + + [Bindable("change")] + public function getNumber(param1:String, param2:String, param3:String = null) : Number + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return NaN; + } + var _loc5_:* = _loc4_.content[param2]; + return Number(_loc5_); + } + + [Bindable("change")] + public function getInt(param1:String, param2:String, param3:String = null) : int + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return 0; + } + var _loc5_:* = _loc4_.content[param2]; + return int(_loc5_); + } + + [Bindable("change")] + public function getUint(param1:String, param2:String, param3:String = null) : uint + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return 0; + } + var _loc5_:* = _loc4_.content[param2]; + return uint(_loc5_); + } + + [Bindable("change")] + public function getBoolean(param1:String, param2:String, param3:String = null) : Boolean + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return false; + } + var _loc5_:* = _loc4_.content[param2]; + return String(_loc5_).toLowerCase() == "true"; + } + + [Bindable("change")] + public function getClass(param1:String, param2:String, param3:String = null) : Class + { + var _loc4_:IResourceBundle = this.findBundle(param1,param2,param3); + if(!_loc4_) + { + return null; + } + var _loc5_:* = _loc4_.content[param2]; + return _loc5_ as Class; + } + + private function findBundle(param1:String, param2:String, param3:String) : IResourceBundle + { + this.supportNonFrameworkApps(); + return param3 != null?this.getResourceBundle(param3,param1):this.findResourceBundleWithResource(param1,param2); + } + + private function supportNonFrameworkApps() : void + { + if(this.initializedForNonFrameworkApp) + { + return; + } + this.initializedForNonFrameworkApp = true; + if(this.getLocales().length > 0) + { + return; + } + var _loc1_:ApplicationDomain = ApplicationDomain.currentDomain; + if(!_loc1_.hasDefinition("_CompiledResourceBundleInfo")) + { + return; + } + var _loc2_:Class = Class(_loc1_.getDefinition("_CompiledResourceBundleInfo")); + var _loc3_:Array = _loc2_.compiledLocales; + var _loc4_:Array = _loc2_.compiledResourceBundleNames; + this.installCompiledResourceBundles(_loc1_,_loc3_,_loc4_); + this.localeChain = _loc3_; + } + + private function getSystemPreferredLocales() : Array + { + var _loc1_:Array = null; + if(Capabilities["languages"]) + { + _loc1_ = Capabilities["languages"]; + } + else + { + _loc1_ = [Capabilities.language]; + } + return _loc1_; + } + + private function dumpResourceModule(param1:*) : void + { + var _loc2_:ResourceBundle = null; + var _loc3_:* = null; + for each(_loc2_ in param1.resourceBundles) + { + trace(_loc2_.locale,_loc2_.bundleName); + for(_loc3_ in _loc2_.content) + { + } + } + } + + private function enterFrameHandler(param1:Event) : void + { + if(SystemManagerGlobals.topLevelSystemManagers.length) + { + if(SystemManagerGlobals.topLevelSystemManagers[0].currentFrame == 2) + { + SystemManagerGlobals.topLevelSystemManagers[0].removeEventListener(Event.ENTER_FRAME,this.enterFrameHandler); + } + else + { + return; + } + } + var _loc2_:Object = SystemManagerGlobals.info; + if(_loc2_) + { + this.processInfo(_loc2_,false); + } + } + } +} + +import mx.modules.IModuleInfo; +import mx.resources.IResourceModule; + +class ResourceModuleInfo +{ + + + public var errorHandler:Function; + + public var moduleInfo:IModuleInfo; + + public var readyHandler:Function; + + public var resourceModule:IResourceModule; + + function ResourceModuleInfo(param1:IModuleInfo, param2:Function, param3:Function) + { + super(); + this.moduleInfo = param1; + this.readyHandler = param2; + this.errorHandler = param3; + } +} + +import flash.events.EventDispatcher; +import mx.events.ModuleEvent; +import mx.events.ResourceEvent; +import mx.modules.IModuleInfo; + +class ResourceEventDispatcher extends EventDispatcher +{ + + + function ResourceEventDispatcher(param1:IModuleInfo) + { + super(); + param1.addEventListener(ModuleEvent.ERROR,this.moduleInfo_errorHandler,false,0,true); + param1.addEventListener(ModuleEvent.PROGRESS,this.moduleInfo_progressHandler,false,0,true); + param1.addEventListener(ModuleEvent.READY,this.moduleInfo_readyHandler,false,0,true); + } + + private function moduleInfo_errorHandler(param1:ModuleEvent) : void + { + var _loc2_:ResourceEvent = new ResourceEvent(ResourceEvent.ERROR,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = param1.bytesLoaded; + _loc2_.bytesTotal = param1.bytesTotal; + _loc2_.errorText = param1.errorText; + dispatchEvent(_loc2_); + } + + private function moduleInfo_progressHandler(param1:ModuleEvent) : void + { + var _loc2_:ResourceEvent = new ResourceEvent(ResourceEvent.PROGRESS,param1.bubbles,param1.cancelable); + _loc2_.bytesLoaded = param1.bytesLoaded; + _loc2_.bytesTotal = param1.bytesTotal; + dispatchEvent(_loc2_); + } + + private function moduleInfo_readyHandler(param1:ModuleEvent) : void + { + var _loc2_:ResourceEvent = new ResourceEvent(ResourceEvent.COMPLETE); + dispatchEvent(_loc2_); + } +} diff --git a/scripts/mx/utils/DensityUtil.as b/scripts/mx/utils/DensityUtil.as new file mode 100644 index 0000000..11bce2a --- /dev/null +++ b/scripts/mx/utils/DensityUtil.as @@ -0,0 +1,43 @@ +package mx.utils +{ + import mx.core.DPIClassification; + import mx.core.RuntimeDPIProvider; + import mx.core.Singleton; + + public class DensityUtil + { + + private static var runtimeDPI:Number; + + + public function DensityUtil() + { + super(); + } + + public static function getRuntimeDPI() : Number + { + if(!isNaN(runtimeDPI)) + { + return runtimeDPI; + } + var _loc1_:Class = Singleton.getClass("mx.core::RuntimeDPIProvider"); + if(!_loc1_) + { + _loc1_ = RuntimeDPIProvider; + } + var _loc2_:RuntimeDPIProvider = RuntimeDPIProvider(new _loc1_()); + runtimeDPI = _loc2_.runtimeDPI; + return runtimeDPI; + } + + public static function getDPIScale(param1:Number, param2:Number) : Number + { + if(param1 != DPIClassification.DPI_160 && param1 != DPIClassification.DPI_240 && param1 != DPIClassification.DPI_320 || param2 != DPIClassification.DPI_160 && param2 != DPIClassification.DPI_240 && param2 != DPIClassification.DPI_320) + { + return NaN; + } + return param2 / param1; + } + } +} diff --git a/scripts/mx/utils/LoaderUtil.as b/scripts/mx/utils/LoaderUtil.as new file mode 100644 index 0000000..99648d4 --- /dev/null +++ b/scripts/mx/utils/LoaderUtil.as @@ -0,0 +1,382 @@ +package mx.utils +{ + import flash.display.DisplayObject; + import flash.display.LoaderInfo; + import flash.system.Capabilities; + import flash.utils.Dictionary; + import mx.core.ApplicationDomainTarget; + import mx.core.IFlexModuleFactory; + import mx.core.RSLData; + import mx.core.mx_internal; + import mx.events.Request; + import mx.managers.SystemManagerGlobals; + + use namespace mx_internal; + + public class LoaderUtil + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + mx_internal static var urlFilters:Array = [{ + "searchString":"/[[DYNAMIC]]/", + "filterFunction":dynamicURLFilter + },{ + "searchString":"/[[IMPORT]]/", + "filterFunction":importURLFilter + }]; + + + public function LoaderUtil() + { + super(); + } + + public static function normalizeURL(param1:LoaderInfo) : String + { + var _loc3_:int = 0; + var _loc4_:String = null; + var _loc5_:Function = null; + var _loc2_:String = param1.url; + var _loc6_:uint = LoaderUtil.urlFilters.length; + var _loc7_:uint = 0; + while(_loc7_ < _loc6_) + { + _loc4_ = LoaderUtil.urlFilters[_loc7_].searchString; + if((_loc3_ = _loc2_.indexOf(_loc4_)) != -1) + { + _loc5_ = LoaderUtil.urlFilters[_loc7_].filterFunction; + _loc2_ = _loc5_(_loc2_,_loc3_); + } + _loc7_++; + } + if(isMac()) + { + return encodeURI(_loc2_); + } + return _loc2_; + } + + public static function createAbsoluteURL(param1:String, param2:String) : String + { + var _loc4_:int = 0; + var _loc5_:int = 0; + var _loc3_:String = param2; + if(param1 && !(param2.indexOf(":") > -1 || param2.indexOf("/") == 0 || param2.indexOf("\\") == 0)) + { + if((_loc4_ = param1.indexOf("?")) != -1) + { + param1 = param1.substring(0,_loc4_); + } + if((_loc4_ = param1.indexOf("#")) != -1) + { + param1 = param1.substring(0,_loc4_); + } + _loc5_ = Math.max(param1.lastIndexOf("\\"),param1.lastIndexOf("/")); + if(param2.indexOf("./") == 0) + { + param2 = param2.substring(2); + } + else + { + while(param2.indexOf("../") == 0) + { + param2 = param2.substring(3); + _loc5_ = Math.max(param1.lastIndexOf("\\",_loc5_ - 1),param1.lastIndexOf("/",_loc5_ - 1)); + } + } + if(_loc5_ != -1) + { + _loc3_ = param1.substr(0,_loc5_ + 1) + param2; + } + } + return _loc3_; + } + + mx_internal static function processRequiredRSLs(param1:IFlexModuleFactory, param2:Array) : Array + { + var _loc12_:int = 0; + var _loc13_:int = 0; + var _loc14_:Array = null; + var _loc15_:int = 0; + var _loc3_:Array = []; + var _loc4_:IFlexModuleFactory = SystemManagerGlobals.topLevelSystemManagers[0]; + var _loc5_:IFlexModuleFactory = _loc4_; + var _loc6_:IFlexModuleFactory = null; + var _loc7_:Dictionary = new Dictionary(); + var _loc8_:int = 0; + var _loc9_:Dictionary = new Dictionary(); + var _loc10_:int = 0; + var _loc11_:Array = null; + while(_loc5_ != param1) + { + _loc12_ = param2.length; + _loc13_ = 0; + while(_loc13_ < _loc12_) + { + _loc14_ = param2[_loc13_]; + if(!_loc7_[_loc14_]) + { + if(isRSLLoaded(_loc5_,_loc14_[0].digest)) + { + _loc7_[_loc14_] = 1; + _loc8_++; + if(_loc5_ != _loc4_) + { + _loc15_ = _loc3_.indexOf(_loc14_); + if(_loc15_ != -1) + { + _loc3_.splice(_loc15_,1); + } + } + } + else if(_loc3_.indexOf(_loc14_) == -1) + { + _loc3_.push(_loc14_); + } + } + if(!_loc7_[_loc14_] && _loc9_[_loc14_] == null) + { + if(!_loc6_ && RSLData(_loc14_[0]).applicationDomainTarget == ApplicationDomainTarget.PARENT) + { + _loc6_ = getParentModuleFactory(param1); + } + if(resolveApplicationDomainTarget(_loc14_,param1,_loc5_,_loc6_,_loc4_)) + { + _loc9_[_loc14_] = 1; + _loc10_++; + } + } + _loc13_++; + } + if(_loc8_ + _loc10_ >= param2.length) + { + break; + } + if(!_loc11_) + { + _loc11_ = [param1]; + _loc5_ = param1; + while(_loc5_ != _loc4_) + { + _loc5_ = getParentModuleFactory(_loc5_); + if(!_loc5_) + { + break; + } + if(_loc5_ != _loc4_) + { + _loc11_.push(_loc5_); + } + if(!_loc6_) + { + _loc6_ = _loc5_; + } + } + } + _loc5_ = _loc11_.pop(); + } + return _loc3_; + } + + mx_internal static function isLocal(param1:String) : Boolean + { + return param1.indexOf("file:") == 0 || param1.indexOf(":") == 1; + } + + mx_internal static function OSToPlayerURI(param1:String, param2:Boolean) : String + { + var _loc3_:int = 0; + var _loc4_:int = 0; + var _loc7_:int = 0; + var _loc5_:String = param1; + if((_loc3_ = _loc5_.indexOf("?")) != -1) + { + _loc5_ = _loc5_.substring(0,_loc3_); + } + if((_loc4_ = _loc5_.indexOf("#")) != -1) + { + _loc5_ = _loc5_.substring(0,_loc4_); + } + try + { + _loc5_ = decodeURI(_loc5_); + } + catch(e:Error) + { + } + var _loc6_:String = null; + if(_loc3_ != -1 || _loc4_ != -1) + { + _loc7_ = _loc3_; + if(_loc3_ == -1 || _loc4_ != -1 && _loc4_ < _loc3_) + { + _loc7_ = _loc4_; + } + _loc6_ = param1.substr(_loc7_); + } + if(param2 && Capabilities.playerType == "ActiveX") + { + if(_loc6_) + { + return _loc5_ + _loc6_; + } + return _loc5_; + } + if(_loc6_) + { + return encodeURI(_loc5_) + _loc6_; + } + return encodeURI(_loc5_); + } + + private static function getParentModuleFactory(param1:IFlexModuleFactory) : IFlexModuleFactory + { + var _loc2_:Request = new Request(Request.GET_PARENT_FLEX_MODULE_FACTORY_REQUEST); + DisplayObject(param1).dispatchEvent(_loc2_); + return _loc2_.value as IFlexModuleFactory; + } + + private static function resolveApplicationDomainTarget(param1:Array, param2:IFlexModuleFactory, param3:IFlexModuleFactory, param4:IFlexModuleFactory, param5:IFlexModuleFactory) : Boolean + { + var _loc6_:Boolean = false; + var _loc7_:IFlexModuleFactory = null; + var _loc8_:String = param1[0].applicationDomainTarget; + if(isLoadedIntoTopLevelApplicationDomain(param2)) + { + _loc7_ = param5; + } + else if(_loc8_ == ApplicationDomainTarget.DEFAULT) + { + if(hasPlaceholderRSL(param3,param1[0].digest)) + { + _loc7_ = param3; + } + } + else if(_loc8_ == ApplicationDomainTarget.TOP_LEVEL) + { + _loc7_ = param5; + } + else if(_loc8_ == ApplicationDomainTarget.CURRENT) + { + _loc6_ = true; + } + else if(_loc8_ == ApplicationDomainTarget.PARENT) + { + _loc7_ = param4; + } + else + { + _loc6_ = true; + } + if(_loc6_ || _loc7_) + { + if(_loc7_) + { + updateRSLModuleFactory(param1,_loc7_); + } + return true; + } + return false; + } + + private static function isRSLLoaded(param1:IFlexModuleFactory, param2:String) : Boolean + { + var _loc4_:Vector. = null; + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc3_:Dictionary = param1.preloadedRSLs; + if(_loc3_) + { + for each(_loc4_ in _loc3_) + { + _loc5_ = _loc4_.length; + _loc6_ = 0; + while(_loc6_ < _loc5_) + { + if(_loc4_[_loc6_].digest == param2) + { + return true; + } + _loc6_++; + } + } + } + return false; + } + + private static function hasPlaceholderRSL(param1:IFlexModuleFactory, param2:String) : Boolean + { + var _loc4_:int = 0; + var _loc5_:int = 0; + var _loc6_:Object = null; + var _loc7_:int = 0; + var _loc8_:int = 0; + var _loc3_:Array = param1.info()["placeholderRsls"]; + if(_loc3_) + { + _loc4_ = _loc3_.length; + _loc5_ = 0; + while(_loc5_ < _loc4_) + { + _loc6_ = _loc3_[_loc5_]; + _loc7_ = _loc6_.length; + _loc8_ = 0; + while(_loc8_ < _loc7_) + { + if(_loc6_[_loc8_].digest == param2) + { + return true; + } + _loc8_++; + } + _loc5_++; + } + } + return false; + } + + private static function isLoadedIntoTopLevelApplicationDomain(param1:IFlexModuleFactory) : Boolean + { + var _loc2_:DisplayObject = null; + var _loc3_:LoaderInfo = null; + if(param1 is DisplayObject) + { + _loc2_ = DisplayObject(param1); + _loc3_ = _loc2_.loaderInfo; + if(_loc3_ && _loc3_.applicationDomain && _loc3_.applicationDomain.parentDomain == null) + { + return true; + } + } + return false; + } + + private static function updateRSLModuleFactory(param1:Array, param2:IFlexModuleFactory) : void + { + var _loc3_:int = param1.length; + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + param1[_loc4_].moduleFactory = param2; + _loc4_++; + } + } + + private static function isMac() : Boolean + { + return Capabilities.os.substring(0,3) == "Mac"; + } + + private static function dynamicURLFilter(param1:String, param2:int) : String + { + return param1.substring(0,param2); + } + + private static function importURLFilter(param1:String, param2:int) : String + { + var _loc3_:int = param1.indexOf("://"); + return param1.substring(0,_loc3_ + 3) + param1.substring(param2 + 12); + } + } +} diff --git a/scripts/mx/utils/NameUtil.as b/scripts/mx/utils/NameUtil.as new file mode 100644 index 0000000..2fe06e5 --- /dev/null +++ b/scripts/mx/utils/NameUtil.as @@ -0,0 +1,96 @@ +package mx.utils +{ + import flash.display.DisplayObject; + import flash.utils.getQualifiedClassName; + import mx.core.IRepeaterClient; + import mx.core.mx_internal; + + use namespace mx_internal; + + public class NameUtil + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + private static var counter:int = 0; + + + public function NameUtil() + { + super(); + } + + public static function createUniqueName(param1:Object) : String + { + if(!param1) + { + return null; + } + var _loc2_:* = getQualifiedClassName(param1); + var _loc3_:int = _loc2_.indexOf("::"); + if(_loc3_ != -1) + { + _loc2_ = _loc2_.substr(_loc3_ + 2); + } + var _loc4_:int = _loc2_.charCodeAt(_loc2_.length - 1); + if(_loc4_ >= 48 && _loc4_ <= 57) + { + _loc2_ = _loc2_ + "_"; + } + return _loc2_ + counter++; + } + + public static function displayObjectToString(param1:DisplayObject) : String + { + var _loc2_:String = null; + var _loc3_:DisplayObject = null; + var _loc4_:String = null; + var _loc5_:Array = null; + try + { + _loc3_ = param1; + while(_loc3_ != null) + { + if(_loc3_.parent && _loc3_.stage && _loc3_.parent == _loc3_.stage) + { + break; + } + _loc4_ = "id" in _loc3_ && _loc3_["id"]?_loc3_["id"]:_loc3_.name; + if(_loc3_ is IRepeaterClient) + { + _loc5_ = IRepeaterClient(_loc3_).instanceIndices; + if(_loc5_) + { + _loc4_ = _loc4_ + ("[" + _loc5_.join("][") + "]"); + } + } + _loc2_ = _loc2_ == null?_loc4_:_loc4_ + "." + _loc2_; + _loc3_ = _loc3_.parent; + } + } + catch(e:SecurityError) + { + } + return _loc2_; + } + + public static function getUnqualifiedClassName(param1:Object) : String + { + var _loc2_:String = null; + if(param1 is String) + { + _loc2_ = param1 as String; + } + else + { + _loc2_ = getQualifiedClassName(param1); + } + var _loc3_:int = _loc2_.indexOf("::"); + if(_loc3_ != -1) + { + _loc2_ = _loc2_.substr(_loc3_ + 2); + } + return _loc2_; + } + } +} diff --git a/scripts/mx/utils/SHA256.as b/scripts/mx/utils/SHA256.as new file mode 100644 index 0000000..a4c0567 --- /dev/null +++ b/scripts/mx/utils/SHA256.as @@ -0,0 +1,188 @@ +package mx.utils +{ + import flash.utils.ByteArray; + + public class SHA256 + { + + public static const TYPE_ID:String = "SHA-256"; + + private static var k:Array = [1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]; + + + public function SHA256() + { + super(); + } + + public static function computeDigest(param1:ByteArray) : String + { + var _loc7_:int = 0; + var _loc17_:int = 0; + var _loc18_:int = 0; + var _loc19_:int = 0; + var _loc20_:int = 0; + var _loc21_:int = 0; + var _loc22_:int = 0; + var _loc23_:int = 0; + var _loc24_:int = 0; + var _loc29_:uint = 0; + var _loc30_:int = 0; + var _loc31_:int = 0; + var _loc32_:uint = 0; + var _loc33_:uint = 0; + var _loc34_:int = 0; + var _loc35_:int = 0; + var _loc36_:int = 0; + var _loc2_:uint = param1.position; + param1.position = 0; + var _loc3_:int = param1.length % 64; + _loc3_ = 64 - _loc3_; + if(_loc3_ < 1 + 8) + { + _loc3_ = _loc3_ + 64; + } + var _loc4_:Array = new Array(_loc3_); + var _loc5_:int = (param1.length + _loc3_) / 64; + var _loc6_:uint = param1.length * 8; + _loc4_[0] = 128; + _loc7_ = 1; + while(_loc7_ < _loc3_ - 8) + { + _loc4_[_loc7_] = 0; + _loc7_++; + } + var _loc8_:int = _loc4_.length - 1; + _loc7_ = 0; + while(_loc7_ < 4) + { + _loc4_[_loc8_ - _loc7_] = _loc6_ >> (_loc7_ << 3) & 255; + _loc7_++; + } + var _loc9_:int = 1779033703; + var _loc10_:int = 3144134277; + var _loc11_:int = 1013904242; + var _loc12_:int = 2773480762; + var _loc13_:int = 1359893119; + var _loc14_:int = 2600822924; + var _loc15_:int = 528734635; + var _loc16_:int = 1541459225; + var _loc25_:ByteArray = new ByteArray(); + var _loc26_:Array = new Array(64); + var _loc27_:uint = 0; + var _loc28_:uint = 0; + _loc7_ = 0; + while(_loc7_ < _loc5_) + { + getMessageBlock(param1,_loc25_); + if(_loc7_ == _loc5_ - 2 && _loc4_.length > 64) + { + _loc27_ = 64 - _loc4_.length % 64; + _loc28_ = 64 - _loc27_; + _loc29_ = 0; + while(_loc29_ < _loc28_) + { + _loc25_[_loc29_ + _loc27_] = _loc4_[_loc29_]; + _loc29_++; + } + } + else if(_loc7_ == _loc5_ - 1) + { + _loc36_ = _loc28_; + if(_loc4_.length > 64) + { + _loc27_ = 0; + _loc28_ = 64; + } + else + { + _loc27_ = 64 - _loc4_.length; + _loc28_ = _loc4_.length; + } + _loc29_ = 0; + while(_loc29_ < _loc28_) + { + _loc25_[_loc29_ + _loc27_] = _loc4_[_loc29_ + _loc36_]; + _loc29_++; + } + } + _loc32_ = 0; + while(_loc32_ < 64) + { + if(_loc32_ < 16) + { + _loc33_ = _loc32_ << 2; + _loc26_[_loc32_] = int(_loc25_[_loc33_] << 24 | _loc25_[_loc33_ + 1] << 16 | _loc25_[_loc33_ + 2] << 8 | _loc25_[_loc33_ + 3]); + } + else + { + _loc34_ = _loc26_[_loc32_ - 2]; + _loc35_ = _loc26_[_loc32_ - 15]; + _loc26_[_loc32_] = int(int((_loc34_ >>> 17 | _loc34_ << 15) ^ (_loc34_ >>> 19 | _loc34_ << 13) ^ _loc34_ >>> 10) + int(_loc26_[_loc32_ - 7]) + int((_loc35_ >>> 7 | _loc35_ << 25) ^ (_loc35_ >>> 18 | _loc35_ << 14) ^ _loc35_ >>> 3) + int(_loc26_[_loc32_ - 16])); + } + _loc32_++; + } + _loc17_ = _loc9_; + _loc18_ = _loc10_; + _loc19_ = _loc11_; + _loc20_ = _loc12_; + _loc21_ = _loc13_; + _loc22_ = _loc14_; + _loc23_ = _loc15_; + _loc24_ = _loc16_; + _loc32_ = 0; + while(_loc32_ < 64) + { + _loc30_ = _loc24_ + int((_loc21_ >>> 6 | _loc21_ << 26) ^ (_loc21_ >>> 11 | _loc21_ << 21) ^ (_loc21_ >>> 25 | _loc21_ << 7)) + int(_loc21_ & _loc22_ ^ ~_loc21_ & _loc23_) + int(k[_loc32_]) + int(_loc26_[_loc32_]); + _loc31_ = int((_loc17_ >>> 2 | _loc17_ << 30) ^ (_loc17_ >>> 13 | _loc17_ << 19) ^ (_loc17_ >>> 22 | _loc17_ << 10)) + int(_loc17_ & _loc18_ ^ _loc17_ & _loc19_ ^ _loc18_ & _loc19_); + _loc24_ = _loc23_; + _loc23_ = _loc22_; + _loc22_ = _loc21_; + _loc21_ = _loc20_ + _loc30_; + _loc20_ = _loc19_; + _loc19_ = _loc18_; + _loc18_ = _loc17_; + _loc17_ = _loc30_ + _loc31_; + _loc32_++; + } + _loc9_ = _loc9_ + _loc17_; + _loc10_ = _loc10_ + _loc18_; + _loc11_ = _loc11_ + _loc19_; + _loc12_ = _loc12_ + _loc20_; + _loc13_ = _loc13_ + _loc21_; + _loc14_ = _loc14_ + _loc22_; + _loc15_ = _loc15_ + _loc23_; + _loc16_ = _loc16_ + _loc24_; + _loc7_++; + } + param1.position = _loc2_; + return toHex(_loc9_) + toHex(_loc10_) + toHex(_loc11_) + toHex(_loc12_) + toHex(_loc13_) + toHex(_loc14_) + toHex(_loc15_) + toHex(_loc16_); + } + + private static function getMessageBlock(param1:ByteArray, param2:ByteArray) : void + { + param1.readBytes(param2,0,Math.min(param1.bytesAvailable,64)); + } + + private static function toHex(param1:uint) : String + { + var _loc3_:String = null; + var _loc4_:int = 0; + var _loc5_:int = 0; + var _loc2_:String = param1.toString(16); + if(_loc2_.length < 8) + { + _loc3_ = "0"; + _loc4_ = 8 - _loc2_.length; + _loc5_ = 1; + while(_loc5_ < _loc4_) + { + _loc3_ = _loc3_.concat("0"); + _loc5_++; + } + return _loc3_ + _loc2_; + } + return _loc2_; + } + } +} diff --git a/scripts/mx/utils/StringUtil.as b/scripts/mx/utils/StringUtil.as new file mode 100644 index 0000000..7621ce0 --- /dev/null +++ b/scripts/mx/utils/StringUtil.as @@ -0,0 +1,219 @@ +package mx.utils +{ + import mx.core.mx_internal; + + use namespace mx_internal; + + public class StringUtil + { + + mx_internal static const VERSION:String = "4.6.0.23201"; + + + public function StringUtil() + { + super(); + } + + public static function trim(param1:String) : String + { + if(param1 == null) + { + return ""; + } + var _loc2_:int = 0; + while(isWhitespace(param1.charAt(_loc2_))) + { + _loc2_++; + } + var _loc3_:int = param1.length - 1; + while(isWhitespace(param1.charAt(_loc3_))) + { + _loc3_--; + } + if(_loc3_ >= _loc2_) + { + return param1.slice(_loc2_,_loc3_ + 1); + } + return ""; + } + + public static function trimArrayElements(param1:String, param2:String) : String + { + var _loc3_:Array = null; + var _loc4_:int = 0; + var _loc5_:int = 0; + if(param1 != "" && param1 != null) + { + _loc3_ = param1.split(param2); + _loc4_ = _loc3_.length; + _loc5_ = 0; + while(_loc5_ < _loc4_) + { + _loc3_[_loc5_] = StringUtil.trim(_loc3_[_loc5_]); + _loc5_++; + } + if(_loc4_ > 0) + { + param1 = _loc3_.join(param2); + } + } + return param1; + } + + public static function isWhitespace(param1:String) : Boolean + { + switch(param1) + { + case " ": + case "\t": + case "\r": + case "\n": + case "\f": + return true; + default: + return false; + } + } + + public static function substitute(param1:String, ... rest) : String + { + var _loc4_:Array = null; + if(param1 == null) + { + return ""; + } + var _loc3_:uint = rest.length; + if(_loc3_ == 1 && rest[0] is Array) + { + _loc4_ = rest[0] as Array; + _loc3_ = _loc4_.length; + } + else + { + _loc4_ = rest; + } + var _loc5_:int = 0; + while(_loc5_ < _loc3_) + { + param1 = param1.replace(new RegExp("\\{" + _loc5_ + "\\}","g"),_loc4_[_loc5_]); + _loc5_++; + } + return param1; + } + + public static function repeat(param1:String, param2:int) : String + { + if(param2 == 0) + { + return ""; + } + var _loc3_:String = param1; + var _loc4_:int = 1; + while(_loc4_ < param2) + { + _loc3_ = _loc3_ + param1; + _loc4_++; + } + return _loc3_; + } + + public static function restrict(param1:String, param2:String) : String + { + var _loc6_:uint = 0; + if(param2 == null) + { + return param1; + } + if(param2 == "") + { + return ""; + } + var _loc3_:Array = []; + var _loc4_:int = param1.length; + var _loc5_:int = 0; + while(_loc5_ < _loc4_) + { + _loc6_ = param1.charCodeAt(_loc5_); + if(testCharacter(_loc6_,param2)) + { + _loc3_.push(_loc6_); + } + _loc5_++; + } + return String.fromCharCode.apply(null,_loc3_); + } + + private static function testCharacter(param1:uint, param2:String) : Boolean + { + var _loc9_:uint = 0; + var _loc11_:Boolean = false; + var _loc3_:Boolean = false; + var _loc4_:Boolean = false; + var _loc5_:Boolean = false; + var _loc6_:* = true; + var _loc7_:uint = 0; + var _loc8_:int = param2.length; + if(_loc8_ > 0) + { + _loc9_ = param2.charCodeAt(0); + if(_loc9_ == 94) + { + _loc3_ = true; + } + } + var _loc10_:int = 0; + while(_loc10_ < _loc8_) + { + _loc9_ = param2.charCodeAt(_loc10_); + _loc11_ = false; + if(!_loc4_) + { + if(_loc9_ == 45) + { + _loc5_ = true; + } + else if(_loc9_ == 94) + { + _loc6_ = !_loc6_; + } + else if(_loc9_ == 92) + { + _loc4_ = true; + } + else + { + _loc11_ = true; + } + } + else + { + _loc11_ = true; + _loc4_ = false; + } + if(_loc11_) + { + if(_loc5_) + { + if(_loc7_ <= param1 && param1 <= _loc9_) + { + _loc3_ = _loc6_; + } + _loc5_ = false; + _loc7_ = 0; + } + else + { + if(param1 == _loc9_) + { + _loc3_ = _loc6_; + } + _loc7_ = _loc9_; + } + } + _loc10_++; + } + return _loc3_; + } + } +} diff --git a/scripts/nochump/util/zip/ZipConstants.as b/scripts/nochump/util/zip/ZipConstants.as new file mode 100644 index 0000000..db79263 --- /dev/null +++ b/scripts/nochump/util/zip/ZipConstants.as @@ -0,0 +1,46 @@ +package nochump.util.zip +{ + class ZipConstants + { + + static const LOCSIG:uint = 67324752; + + static const LOCHDR:uint = 30; + + static const LOCVER:uint = 4; + + static const LOCNAM:uint = 26; + + static const EXTSIG:uint = 134695760; + + static const EXTHDR:uint = 16; + + static const CENSIG:uint = 33639248; + + static const CENHDR:uint = 46; + + static const CENVER:uint = 6; + + static const CENNAM:uint = 28; + + static const CENOFF:uint = 42; + + static const ENDSIG:uint = 101010256; + + static const ENDHDR:uint = 22; + + static const ENDTOT:uint = 10; + + static const ENDOFF:uint = 16; + + static const STORED:uint = 0; + + static const DEFLATED:uint = 8; + + + function ZipConstants() + { + super(); + } + } +} diff --git a/scripts/nochump/util/zip/ZipEntry.as b/scripts/nochump/util/zip/ZipEntry.as new file mode 100644 index 0000000..dd672ef --- /dev/null +++ b/scripts/nochump/util/zip/ZipEntry.as @@ -0,0 +1,124 @@ +package nochump.util.zip +{ + import flash.utils.ByteArray; + + public class ZipEntry + { + + + private var _name:String; + + private var _size:int = -1; + + private var _compressedSize:int = -1; + + private var _crc:uint; + + var dostime:uint; + + private var _method:int = -1; + + private var _extra:ByteArray; + + private var _comment:String; + + var flag:int; + + var version:int; + + var offset:int; + + public function ZipEntry(param1:String) + { + super(); + _name = param1; + } + + public function get name() : String + { + return _name; + } + + public function get time() : Number + { + var _loc1_:Date = new Date((dostime >> 25 & 127) + 1980,dostime >> 21 & 15 - 1,dostime >> 16 & 31,dostime >> 11 & 31,dostime >> 5 & 63,(dostime & 31) << 1); + return _loc1_.time; + } + + public function set time(param1:Number) : void + { + var _loc2_:Date = new Date(param1); + dostime = (_loc2_.fullYear - 1980 & 127) << 25 | _loc2_.month + 1 << 21 | _loc2_.day << 16 | _loc2_.hours << 11 | _loc2_.minutes << 5 | _loc2_.seconds >> 1; + } + + public function get size() : int + { + return _size; + } + + public function set size(param1:int) : void + { + _size = param1; + } + + public function get compressedSize() : int + { + return _compressedSize; + } + + public function set compressedSize(param1:int) : void + { + _compressedSize = param1; + } + + public function get crc() : uint + { + return _crc; + } + + public function set crc(param1:uint) : void + { + _crc = param1; + } + + public function get method() : int + { + return _method; + } + + public function set method(param1:int) : void + { + _method = param1; + } + + public function get extra() : ByteArray + { + return _extra; + } + + public function set extra(param1:ByteArray) : void + { + _extra = param1; + } + + public function get comment() : String + { + return _comment; + } + + public function set comment(param1:String) : void + { + _comment = param1; + } + + public function isDirectory() : Boolean + { + return _name.charAt(_name.length - 1) == "/"; + } + + public function toString() : String + { + return _name; + } + } +} diff --git a/scripts/nochump/util/zip/ZipError.as b/scripts/nochump/util/zip/ZipError.as new file mode 100644 index 0000000..38ec07e --- /dev/null +++ b/scripts/nochump/util/zip/ZipError.as @@ -0,0 +1,14 @@ +package nochump.util.zip +{ + import flash.errors.IOError; + + public class ZipError extends IOError + { + + + public function ZipError(param1:String = "", param2:int = 0) + { + super(param1,param2); + } + } +} diff --git a/scripts/nochump/util/zip/ZipFile.as b/scripts/nochump/util/zip/ZipFile.as new file mode 100644 index 0000000..80874e4 --- /dev/null +++ b/scripts/nochump/util/zip/ZipFile.as @@ -0,0 +1,159 @@ +package nochump.util.zip +{ + import flash.utils.ByteArray; + import flash.utils.Dictionary; + import flash.utils.IDataInput; + + public class ZipFile + { + + + private var buf:ByteArray; + + private var entryList:Vector.; + + private var entryTable:Dictionary; + + private var locOffsetTable:Dictionary; + + public function ZipFile(param1:IDataInput) + { + super(); + buf = new ByteArray(); + buf.endian = "littleEndian"; + param1.readBytes(buf); + readEntries(); + } + + public function get entries() : Vector. + { + return entryList; + } + + public function get size() : int + { + return entryList.length; + } + + public function getEntry(param1:String) : ZipEntry + { + return entryTable[param1]; + } + + public function getInput(param1:ZipEntry) : ByteArray + { + buf.position = locOffsetTable[param1.name] + 30 - 2; + var _loc3_:uint = buf.readShort(); + buf.position = buf.position + (param1.name.length + _loc3_); + var _loc2_:ByteArray = new ByteArray(); + if(param1.compressedSize > 0) + { + buf.readBytes(_loc2_,0,param1.compressedSize); + } + switch(int(param1.method)) + { + case 0: + return _loc2_; + default: + default: + default: + default: + default: + default: + default: + throw new ZipError("invalid compression method"); + case 8: + _loc2_.inflate(); + return _loc2_; + } + } + + private function readEntries() : void + { + var _loc3_:* = null; + var _loc4_:* = 0; + var _loc2_:* = null; + var _loc6_:int = 0; + readEND(); + entryTable = new Dictionary(); + locOffsetTable = new Dictionary(); + var _loc5_:int = entryList.length; + var _loc1_:ByteArray = new ByteArray(); + _loc1_.endian = "littleEndian"; + _loc6_ = 0; + while(_loc6_ < _loc5_) + { + buf.readBytes(_loc1_,0,46); + if(_loc1_.readUnsignedInt() != 33639248) + { + throw new ZipError("invalid CEN header (bad signature)"); + } + _loc1_.position = 28; + _loc4_ = uint(_loc1_.readUnsignedShort()); + if(_loc4_ == 0) + { + throw new ZipError("missing entry name"); + } + _loc3_ = buf.readUTFBytes(_loc4_); + _loc2_ = new ZipEntry(_loc3_); + _loc4_ = uint(_loc1_.readUnsignedShort()); + _loc2_.extra = new ByteArray(); + if(_loc4_ > 0) + { + buf.readBytes(_loc2_.extra,0,_loc4_); + } + buf.position = buf.position + _loc1_.readUnsignedShort(); + _loc1_.position = 6; + _loc2_.version = _loc1_.readUnsignedShort(); + _loc2_.flag = _loc1_.readUnsignedShort(); + if(_loc2_.flag & 1) + { + throw new ZipError("encrypted ZIP entry not supported"); + } + _loc2_.method = _loc1_.readUnsignedShort(); + _loc2_.dostime = _loc1_.readUnsignedInt(); + _loc2_.crc = _loc1_.readUnsignedInt(); + _loc2_.compressedSize = _loc1_.readUnsignedInt(); + _loc2_.size = _loc1_.readUnsignedInt(); + entryList[_loc6_] = _loc2_; + entryTable[_loc3_] = _loc2_; + _loc1_.position = 42; + locOffsetTable[_loc3_] = _loc1_.readUnsignedInt(); + _loc1_.clear(); + _loc6_++; + } + } + + private function readEND() : void + { + var _loc1_:ByteArray = new ByteArray(); + _loc1_.endian = "littleEndian"; + buf.position = findEND(); + buf.readBytes(_loc1_,0,22); + _loc1_.position = 10; + entryList = new Vector.(_loc1_.readUnsignedShort()); + _loc1_.position = 16; + buf.position = _loc1_.readUnsignedInt(); + } + + private function findEND() : uint + { + var _loc2_:uint = buf.length - 22; + var _loc1_:uint = Math.max(0,_loc2_ - 65535); + _loc2_; + while(_loc2_ >= _loc1_) + { + if(buf[_loc2_] == 80) + { + buf.position = _loc2_; + if(buf.readUnsignedInt() == 101010256) + { + return _loc2_; + } + } + _loc2_--; + } + throw new ZipError("invalid zip"); + } + } +} diff --git a/shapes/11.svg b/shapes/11.svg new file mode 100644 index 0000000..1d8384a --- /dev/null +++ b/shapes/11.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/shapes/12.svg b/shapes/12.svg new file mode 100644 index 0000000..c7409bb --- /dev/null +++ b/shapes/12.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/shapes/14.svg b/shapes/14.svg new file mode 100644 index 0000000..484c6be --- /dev/null +++ b/shapes/14.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/shapes/4.svg b/shapes/4.svg new file mode 100644 index 0000000..5b66702 --- /dev/null +++ b/shapes/4.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/shapes/6.svg b/shapes/6.svg new file mode 100644 index 0000000..f2541b6 --- /dev/null +++ b/shapes/6.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/shapes/7.svg b/shapes/7.svg new file mode 100644 index 0000000..111e355 --- /dev/null +++ b/shapes/7.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/sprites/DefineSprite_10_mx.skins.cursor.DragMove__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragMove_535938101/1.png b/sprites/DefineSprite_10_mx.skins.cursor.DragMove__class_embed_css_Assets_swf_1135953132_mx_skins_cursor_DragMove_535938101/1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe972ee44d697963924240b9778a49bf943959ce GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(5uPrNAr-f#UcSx6puoX=;qQNY zZ}Alh(N^sHT-b$pbB~;P;uNjP$Y5mU;3^()f!WB#v1Q+bcBcaYTsBP000#T1^@s6vnxdy0005wNklITBcfd!`)k@o4gY|63qe99yIPWY18WG!@$I}r zBVNX_qB-y}oHK{-neTnicSeF3s;XKV626D!5J{3O1&tt9f+iqVfo339fD9r34VnvC z1j>r{#C_jfx zg9s?Btl%yXz=PL|>iRlvH#Sh)+r#7TF0NNsMF6A668Vt5iDRz?t|Gwc&HKM0{D_uJcek3^t08t7*-Q1W@Gtrq0dQ@r^7C_9}R zgdQ1oycviPYF~A`@wUH@ek#Qcz;K9x0CkU#@w~N#8zC9@@h}+PT?-*X3VP5yJcN?X zY5;9tv54Nu30^!NRM*xAGnqsq6q>EXs0Yj- z^yG182OsC>kfTveqFy+R&&x~5!uYy?%y=@d*~W*y*6DP#({=4~;Yom=#VMl)jMrcg zbrIFg&DqoS+be>7a%Hn=iTK5oh92P000#T1^@s6vnxdy0003-NklbF5Qi5I1rg9{7wo#Xo--r%TN<{@(NKDWYBo=4|5(DIg{5Pl*(g#uxYH6iu zDp{6ES(ef?&H4}@hz3Pb$mnq-yYn3xFZSf%XKQ3#8*YJ_hgE)dxX}zL>n7TFETLm8A=0cEX!710*tWpWf-5 z`pQmx9tc4O&7{k0f5X(Osv7onZF)qwK0z905cJ8W5aW0nxsIpib^Opn59w&eaA_Po dyJG*}S>Kh?#VwD8tt2wND&(CmVHUq=mjgsJf2<&t^iw+TVXflyuC<)$&z*ejE17um292^*paOv|Y z0$v9K#E1SS_oSBYaNl46EtedQMzUaE+)$3W`$Hf4>-G9F5Vfb*!Z-Og&Mwza=9$N9PnbXU|XZvC?1y2=hv^VYPBj9Z>iNQ;&ZuN4zk&-ynR?ImDVm; xhGCQ~SQJjJSS&&&lYwM1Nrc~crg&rjN8hNHijU{mCQbkV002ovPDHLkV1f^g+Bg6J literal 0 HcmV?d00001 diff --git a/sprites/DefineSprite_8/1.png b/sprites/DefineSprite_8/1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe972ee44d697963924240b9778a49bf943959ce GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3HGrSK5O(5uPrNAr-f#UcSx6puoX=;qQNY zZ}Alh(N^sHT-b$pbB~;P;uNjP$Y5mU;3^()f!WB#v1Q+bcBcaYTsBP000#T1^@s6vnxdy00044NklH!EO!H!+mrJ^WK5cm-X1U2Gz{2d4oXb)*T&!Z$s zP7wGJ$9K34+_&o$1X7>|zVB1t_a_Mah%?D{$WfLn(Bny>DB5DfFi@JNRF>uSNq9YQ z2VphI^PJ*1rXUC?48v_kjkq

fNE66QyB;h{`+DL(4 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 h%`fv6+N+zK?Vj6 z=8eC;-(i-YpvYGDdy6bk)ei+FAeqp_$iQ%bg_(h&ffJ-xmTS;>n*bDU1(hYPT(P4&Ah+q*2W`sfniv%rVOhES$5u50S4_YnY^oT!Y zqWgu8TEH0vXO_Y0Fgj`h=U{Ak8Mnjes0Cc0pcOI%97b0yqva&Dq$8_n9W5t;1u?kX zqEFFE$3l;c(wL5g9vP)E9Sc1&N@KbfdcZ_WT0_s^;AlBHgv!Z=%VL!m{q|O9DTV^0 On!(f6&t;ucLK6U&1Cw(A literal 0 HcmV?d00001 diff --git a/frames/2.png b/frames/2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca32639112496126d632d47ffa033a1356a181a GIT binary patch literal 3161 zcmeAS@N?(olHy`uVBq!ia0y~yU_Qvez!b^B1{CS!GM~l3z@y;l;uunK>+N+zK?Vj6 z=8eC;-(i-YpvYGDdy6bk)ei+FAeqp_$iQ%bg_(h&ffJ-xmTS;>n*bDU1(hYPT(P4&Ah+q*2W`sfniv%rVOhES$5u50S4_YnY^oT!Y zqWgu8TEH0vXO_Y0Fgj`h=U{Ak8Mnjes0Cc0pcOI%97b0yqva&Dq$8_n9W5t;1u?kX zqEFFE$3l;c(wL5g9vP)E9Sc1&N@KbfdcZ_WT0_s^;AlBHgv!Z=%VL!m{q|O9DTV^0 On!(f6&t;ucLK6U&1Cw(A literal 0 HcmV?d00001 diff --git a/images/100_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.png b/images/100_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.png new file mode 100644 index 0000000000000000000000000000000000000000..0c523c7eeae06f7636178305509ec9217b8b8ed9 GIT binary patch literal 339 zcmV-Z0j&OsP)P000>X1^@s6#OZ}&0003RNkl4DI6L;Ns%q;^Hb47Z(SYBGrC?2)%agQUvM8|F^Gj5YMa4_2{I5ENw0?FYgh@ z`MGf2e0CMhHW1AzPOA&eFl&y%y-C6OD{OU|nef zoy+hI^<7PC20IYaKuukZ5eN(*nRK?*q;ws$V1vL(bRFNEHClKC1m}v6At;MDd2ZO} z~)y>n2o$v}WLz-t5Z z250XL%-#if=v}bY7tJtec>*{ygOV27nEVZ+;m6r>wK0~yG>?$ zEx1)ur5>=!qfrM<`3BCGHSfK4oBrSb-@k&f^x2QDQ;p(*Kp!)By85}Sb4q9e02qd5 A3;+NC literal 0 HcmV?d00001 diff --git a/images/102_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.png b/images/102_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8b9e1f8940f9e0974849f01a66dc5f39f3b03f GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gw!3HFS-u9~jseDft$B>F!$q5pyCCoX!tj}-G z=K3Gpza(8wPrms0sT**{;GHV4BL+#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q@{fw$0P z?VSJbe}4ZD0uMfY0P|^Pq3D8MxMeT^;)BF#Vxi0CCI7JjkT^{&R9QX+tA!wOn#E!A zfz2qEf%r5{G$7v;AKU%E>Fgn}Wu*9yWDAi~C~~49C8aV@Vi`G>5^W*K&0T=Aes(px^}6fpoKQ;mwO+HmMc@n~AT04dIqu^lHyA&us2uV3=4b3bb?u nsF6y;2Jmy{nJv8x_4RB3F9I8pE1rt`00000NkvXXu0mjf-6EE+ literal 0 HcmV?d00001 diff --git a/images/104_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.png b/images/104_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1af0a41500101abfb6d465c443203e3eae3ea2 GIT binary patch literal 552 zcmV+@0@wYCP)-q&4D1Muzz7*3BV+_dV1#VI2pJ(Gbc8oTM__~Uf@F|;GKe+~<>|#zq<$|K+c_KG zZq=$)tM*l!rm0EGrRAT`=bf+g*^pM3R(ln)Hmxunv~-A{`2gSa>|wG3`8fjSOu{B@ z`Vfdb=pdd_#nS6xjQ# zPpQJLrCu{^j=hgsibR-(OJFWAHxKU}+-7Nhwc-e31IC=ObTI@SVSYg3dCoMET?Xo#k%XX_@Sq>|uQ&G}TY&u5V zOXZyo=ow+d(@9dQT=lr)>9H-%#9VQC?yEIQi|9kRV5S*qtL$e1+1A5Tq)k| zH^}35E9Eo`Ojn>98dNC_&<>sh8%@%@5~_BQrGSNpi>6oz=jx~#!IIC3xJk%}T(5=o zwp_hCbRl_*ICVN>_Th!uMc5lBPP000>X1^@s6#OZ}&0003`NklOU>0|!7>s$z@wiS~|9)06}1x;ESKre{}KmgZ-dwNu#2 mePZoqw06f^d#(J(yXzZonq?ewB(!}10000z+t}8F9X$se+xq)w|N2YAp6kkkEz|>!T79wO z2L|qogZ;x15IR07)X{cvFv;$G*J{I$n~&-_N9vw|jRc?sbG}DWdAZ6m8Mhoq-OD>^Mdt6fTS(8CY$+Myb$(!hC z+1k6zCkw4Stc0Nk5-R>hs`Yu1m$rmG0q?qShH%HC;OXk;vd$@?2>_XiL-+sy literal 0 HcmV?d00001 diff --git a/images/108_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.png b/images/108_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.png new file mode 100644 index 0000000000000000000000000000000000000000..1121111320a718a822bb61f4c4ff5938f95d090d GIT binary patch literal 344 zcmV-e0jK_nP)LwMJcE(VEhb4BHM qEnNX>q|&gN|6F0$l3s>Y^=trPnH^#7f5oW)0000Bu=auqZZQF!nqG`pcqKV!qTfJ!2Ah!FO%=XtDoNe|M>gofBpSy z@LFhlWFuJJ@pmsN3sUbB+u;V`vk>Mmki`_oA;>ZiXuf$CtA#LeP!v#{Xwoknf*Xd< zhpV67MTt+cEQG}iD7XkE8c-aA)II+81wtbZZFjTGGWJv2CuX{H~=dK#f!y`s}&Ft|h$;tLoVR_b&^P Te_%4B00000NkvXXu0mjfxGRtu literal 0 HcmV?d00001 diff --git a/images/110_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.png b/images/110_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.png new file mode 100644 index 0000000000000000000000000000000000000000..ba81557df65c347598b7f1daea591968bdeccaa6 GIT binary patch literal 367 zcmV-#0g(QQP)P000>X1^@s6#OZ}&0003tNklS?@MDRBoFajeu0wXv=M{oq~!(hsJEr;}ni6oaal)HBy zudf8bUp{eK-nYlg1BSJCfbei$_W-?x`(pKd#z}EPrg2i%VVEsoQCc<>1n>HNe5-w0 z_=*6`K-y86ZKBpCL-t22L{M8msi7h#h;Bh;aa2)Swa)G6qCh1rWp#XGQf0U|wX! zrMTV%l2UO@m8sNY&7OA4rPcOj+b%84!`QFjGwZhWe*Fr6BvkNA&l6g^465HtXD|Q& N002ovPDHLkV1mVpmWluX literal 0 HcmV?d00001 diff --git a/images/111_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.png b/images/111_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.png new file mode 100644 index 0000000000000000000000000000000000000000..027ed1f1b88d99ba07a9fc070f605b6ff590e24c GIT binary patch literal 256 zcmV+b0ssDqP)TFSG8mX}_cHA)M7InEO0S-vzJ<6fBh^v{YFGvWAAkS+ z?|ouBc9DEi6+rY0t z4dGpMYY6XJ(#0ULZLX;NuB9tLjZ_-??770OCA|!*>e&ExJRLJR?N*ln0000}1CrGd^ZU_+&iLSbL z-#)%!*)*2pQ~xgSbp02o%GS7XDX#+0rj}J=tVgG)F!1i?HS(x>G2_v9$IhlTDqSfjswW)0@uYEGynope zVJ^0gqpF-D>1Gngo(28?P{W!fBK`iPm!ZnCbw2~Vzg<2f6i{%W#`$uSz!V)vvBnzL o%a_ESaA(|mA;0!P8#@Do@9L|ULgxPU1$u$O)78&qol`;+0L189)c^nh literal 0 HcmV?d00001 diff --git a/images/113_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.png b/images/113_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.png new file mode 100644 index 0000000000000000000000000000000000000000..f443c6e0964ca9850e09c1804b09023aaf16d5c5 GIT binary patch literal 522 zcmV+l0`>igP)W6OF`i|{}~|H`y27P=g02m`G_^Q z4wJRl%Y{(~f?2OL6g#@w^)j$=c6+c^4vrT&^kjR_7)pk3cnVM_`Gus40{N)|CF|}q zdCs4WLyVA>g_7MLtxgWP^qnbQNL8UQ6e5Kj=Uty$)c^>L3bg@F?^>H{1r8~9SQYjKYl?%7Do$gvK@)H8a?8^bh_$FmFWH1b zxrW_K^m4TqebyG3tCb8yLn{!rTV^WEa=aw65vPa-n~8)b%)?!a2G?Tb$5N}55TSf& z48#q6@X}t?jyi=00n_;l!p(PHq}Y%m4#h^yM_LsY4yW^-7kaEgVA7**@p<|i9;QcE zg#Y2#O$rBwdpygGxOv57I{Z;rGcm}k_PkbfAk;a5XILve#Q)^=1rAkQf0g-Z&j0`b M07*qoM6N<$f^V1U-~a#s literal 0 HcmV?d00001 diff --git a/images/114_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.png b/images/114_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.png new file mode 100644 index 0000000000000000000000000000000000000000..f2710085383e686c31e32edacc31901fe7ab982d GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAI8$DedLn>}1CrGd^ZV37C;9&FT z@9*!6FIcI{FK_q9U%0!0O^TtAnWI@};VM@LXQ76+yX}%aeVUs%mI$UW=pEMF)*-?@ zL09SOB(@+OhQtN)n1Uw1sFiVK>iWT8^6~cq7soImSEDDkClYc#IqdwJ;%>Dtp&@FH zLt&cpCKm?pIhp~BZ&dh)btzt)^fSQw+vPJt0R;zYoG&*COwn-^Ypij-d`avHcfdV{ hs4MnS2YLA!7$zjvip=11t^qop!PC{xWt~$(696BDR$~AF literal 0 HcmV?d00001 diff --git a/images/115_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.png b/images/115_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.png new file mode 100644 index 0000000000000000000000000000000000000000..5d29f58afcdfc21fd3d49c19eb12f3da5e32b043 GIT binary patch literal 389 zcmV;00eb$4P)0zR=b}5cWQ?9UQD64DvC}EG)fx0>yX8 z!3vV2s)Zl}2?1g)WuS&-q*%&8tYx4$JO1t^h9w{|0P z;ssesHw$4kKV2+Dwty}cf>J1q4=c1uXbissHH3H3ts%T?Nf(2}wz;D6yOyp1HBxEV j%zv)1Ye_G|s(Lm6`yF*+Q3zpW00000NkvXXu0mjfHYcdk literal 0 HcmV?d00001 diff --git a/images/116_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.png b/images/116_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.png new file mode 100644 index 0000000000000000000000000000000000000000..2d5f7433c4e5c542ac3ec8a83278d40302412ea1 GIT binary patch literal 465 zcmV;?0WSWDP)kscK1Mh=!y$mK2BsFs8c>{Y(8`*w>m@uFR@6 zN^}o@MlSNC_ZKik#89h-(mNOK;M;@Qfgus1xFWYF}+B*K?630}&!!5&g)W zUfO_;g*y<*l$Tkc7K%0HeOFw-3L1&bM5jvu5(Uqi^dI)(LX>gSFmoJiT_n*ki3UZ5 zw_)nknx5=M44*cf#>Pn6Hfwz|-)6bJ5Ghkl4b12`uKzGruw6z8g%N_g)0aR=Ke~(% zelx6rEFcP{etTqCb7w3D6DRj4#$vA>K)!m^J1{UX@Gg7-@FFxk%$4SP00000NkvXX Hu0mjfU5djD literal 0 HcmV?d00001 diff --git a/images/117_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.png b/images/117_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ffdea260a2cd1dfef81e10abdf1f74962e802f GIT binary patch literal 277 zcmV+w0qXvVP)7bu9lX10!mYw(v%)c_p1%D(=(#9KuNdJcyD#6PA`bkvDZh3(W`Vo zl$NcYV5C(&LP)of_^5h7k4NGjw9k&ceb>SGG#L zK=AK!TBmVcC$WHmNJom|B%ja4=RdXDU%yx*T3|uksRuj}*7tTVQyA{?OsuuoRy6Mv zh#wPZmeqr}TX_TUQ1|mj7^UrlrZn8=;e5b+?v;XK=jzV@d5$*HkDI0Rv%Q$H_v>Z3 z*4#VIY(T)n(olGm#OpcOGKL^bebyCNRV%g=t!M?pb<50#nGXyiF&=S>Xs}hg)P;HEwFrf(#mJ9~Rw+jzAwp(p z^!Yt~aIt@+9d!y10=DxPgj@BzNU-*$wk#YN?(uB$J!3K14u90u>;`(?*PhpE8;EQe|Ltgv4?N)9VWDsN~kU20vSN*(A5YXVzhS&h4c;u zKpr;|=>%mla>5qs;GN$Lm6{sn+pBn>E-pwq)MT{Y_SHhW3$gUBa3SMZxP9d-ZG2Zz zH3^8!_Ab#LCr}>2J}hUXX0zvPm^38d5z^#>lsxU-T+mHTtYc6*M%Od4)2Dc<3w#3h zq(Tnc%!HcfSW)O)39K1Jr3G)}= zPi5z2q>*3Geq9Ay?GaUp3Ih`eBet{1!ImGS&=0->!+Bg63ep^U_mX^VxnZqq_BQLY sYI3y6(|(;x%Eo|KGxg2vy8YjH0OD>meb}W8!2kdN07*qoM6N<$g8Ub+=>Px# literal 0 HcmV?d00001 diff --git a/images/121_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.png b/images/121_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.png new file mode 100644 index 0000000000000000000000000000000000000000..eee5654144810b074cc00715793cb30e94c624b2 GIT binary patch literal 318 zcmV-E0m1%>P)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C7au zLUeJL%}cNv3KA#Qj8O~eYvIJpCs7O}WMT4w&0v1h*+b;}@WPuH|KI=o{$F%KFJ22( zmQMkzJMioQWkG7Pb`IPid=|nS2C|sqI0RV+0>#I6W3><_4vGSb6HV~0)o{b``EcRQ zizx9)mW8l*0Ro;;v(a079(l*NHPqX(eG2sFyzcmu{S}b?Rsjt ztN<8F+t^sUtzEz$$j(V} z!`>WX9~m1`h1pnLB6ZK2EZo&Z0a$CwS;O;n+I3NeCGC?9iPVY1au}CBm<%u^m3Q zf78CVOa$WAz7z$&nA`W(+acWbmav()?I^!xgs}|Rv-x0@+Jv8ZXhrCFD0P9<=-*Tn z3(IB1e#aP>ATC>vV$>|8%$f4ZH?3O_@Vr;8R}<&OqD?IP7L+*8(fmUF&x$sxY^vzK z>m|eEfe|76;9n*+F2 ziJOI6XnlQt^EP-n-)n`K?8=u15z7QP2<#u;b}8{^xS7sBo!RBYc4(>NU7OafQ4}28)B>jZDRV$;Lav}O#VN2Ye^#oBkAM4NX6FVrbrRiN5R(A!L^Ag zR6GJI$iX;H+s-qh$p662r2MWe=p@ov0&>_JYFP>{C#2&R$lRw!+%Mky^A zH8ko0yAcxOMFMRNQXm$Pg7n8YZ?oG{-0lA8%p@uM zAuwCi-(in)A4ozSwD#9NWFG6!StkZ=>jHDcMz7(gTc8Do=SJq|Pf#=KLZ(39Zfkh( zo;Jsye0IeV&Tj!nKA5gvGm)A5k)uLY6?EJRp7mYslMOiIo`4PZJC@ zO#)j={}PN(r4<3OU;a4hb2TwSP>yp;v^DJ@m}Kw<<>2t=FJN)*WW?;EOjFb3z`%O= zPl~>04Gp+)G~iq`HSMthFi}>%FpziAf_s!q7y=V_?J5I_Aq}vHym2rwV&nlXt+vpu zxf#^)KCBt+!Pf*z{mdE$6E{T>;MVIcbT|19?Ust@`*uzf;Qjdo%C6@c0u%MFT=&gM zU{X^91hAdmzm0<(cyo$AH=WI(!%YbgzzU@j%B-w43|95II=l7a+i^6zv7!nHV8wD7 z{myL@0jus-6`fN9l)(1)3url01#|JA4TDv5PD_MP0$k2-3t-SzRyT-&RU(Ae*s25w zZR<~-C|D)7>d8tj$N(0LrHZDJ0ISJL^yYJi0oOKiM8RtEIU|{{1eg~!jTo3*CTygJ zI6pIn_;dz!&CL=6ldU0)R9}Z{Pa?jiRDJ2GTZP(FL$RVWBGjo{byWQIYEMJbp{3&2 za#qsz>M3C`9cLx=PMPd67A7P2DUF;mDV@(rwI`8X8T2fu`k2;}O8yh1_;(2iFkuASgrDUFs4;XeEi{h)s(R_bW~03f($Pq>GdS^xk507*qoM6N<$f}S16hX4Qo literal 0 HcmV?d00001 diff --git a/images/125_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.png b/images/125_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.png new file mode 100644 index 0000000000000000000000000000000000000000..997d3948148310ea9d0c3998269728738e53ef79 GIT binary patch literal 525 zcmV+o0`mQdP)ltwZ(iY1LxXm^c7_+{+zpAV#cL-pz_Z}Vw@R|jv=@95T zGI>8Wa9mFM4*I+e0Hu;-vz$6aCY~8>%iftyOr(W6ps%Q&@_48vhfIwN!Lo}pc3{;j=Tce7Y1<|C;h{)mR3LS|D)DXQG(`9!Jw81yas1;4 z0eg)+OS@y0Ep~dO44#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C7au zLP~;;suqea=>6}qc?nibbqhh3U3l|?U=UKpLY3uH{y+Hifv7m6NgO60*i2muo6a7> zi6>q@30H?4#1vUb3;2=Xm93+Q6u!kZWAXCbm>bg_^sCC#XXBg4X>Spn0% zO*3pP1U3_20UN?CyXa*h^UUTh28M~1qCiVmfEuYZ^x1RfnJv8x_4RB33H@OR(QQu} P00000NkvXXu0mjf!f$Px literal 0 HcmV?d00001 diff --git a/images/127_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.png b/images/127_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.png new file mode 100644 index 0000000000000000000000000000000000000000..3cabd8cc98d293a1237c62065d9ebf2a5b7ad2ad GIT binary patch literal 344 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 literal 0 HcmV?d00001 diff --git a/images/129_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.png b/images/129_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.png new file mode 100644 index 0000000000000000000000000000000000000000..06ff9f7215a1e23fe6267ac758e1c13c745b79ad GIT binary patch literal 314 zcmV-A0mc4_P)05KFcy~^H_+W;kl6cDx7zK=!zJUuMlPfAo!&0ih%5dN!@U_X z{}<+jfH5|;@5}WSVDccGl9&zGOOeGO>=#?KAB1tKhsmSs8+83K08lX&2%`crd;kCd M07*qoM6N<$f&h?*>Hq)$ literal 0 HcmV?d00001 diff --git a/images/130_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.png b/images/130_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.png new file mode 100644 index 0000000000000000000000000000000000000000..edad455fa21a682d5a9df990e74b87f1526b7d07 GIT binary patch literal 270 zcmV+p0rCEcP)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q?cf>?Ax z@Ba&LUeL!vmE}{wmVp4xEi_p>=l}bk-~Yn^O)YfUyadHEnp&8AVDo=$fF>3eAKU#O z7ofU@3vXWhj}K7QLPC}eeGBOxq{LWCvuuIOQkrIbY?jizXhXM@E`>L;rF5&FV3yLg z0tQ(++Qb+T3xUnVSHOmF%Px9Z$UL*Ti-BQcr6|zS6`)2c4Sn{Ud1gy5Lw!9P0KUK& U2iDj5M*si-07*qoM6N<$g3FV2zyJUM literal 0 HcmV?d00001 diff --git a/images/131_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.png b/images/131_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.png new file mode 100644 index 0000000000000000000000000000000000000000..8dbfe67d24a15e83e4dd893d8d26491b701ae655 GIT binary patch literal 335 zcmV-V0kHmwP)Df(gWvc{4jhNZ7ZZ z$0o}X5)u-A1#!w(ZCN~Cm(5$7T;E&1-V4sQ>bWe0vG>H@EK)cyorV~K6^DEgOxkdE zokB>+YgEjyv|ah?xum8c31{{#XBGMtlaORDnzFcwGusV>LFR75Qb}1C+(H85T%*dt@__OvLBrb*e{2~aZuZVE?Il9#>`!L!k2nBtT z*=p;{Ix0x`{r>;PR<#eQ?oljqZ_-#pWK5VL1LYY;$f`->(i(si6ul4z7lXbyViCGD hpcL&phZ7S10v}e@o0-Ro#5@21002ovPDHLkV1m|Pjzs_f literal 0 HcmV?d00001 diff --git a/images/132_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.png b/images/132_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6d884328953a937ac558ab329d5643a7432c27 GIT binary patch literal 343 zcmV-d0jU0oP)hXW?6WejBp_+xIS5N%^`1>c^z~-B0X=mZwhd1DIAm4#} z2?8LRCKiIkCfvP@A_npy$j200c=gk}|B+|*py2cihcLuI7!=ItVuL@Gj#@bMEyR{e zv86^324xkBQz@=|xccec|N8safcYRARv6GEepdt-q zAqap<7*JtA)504Tl%RNn1ua!99NyW2?roZ3VKBE9_d*%do1R4FHQb2}436%3lBg002ovPDHLkV1hR8o4f!3 literal 0 HcmV?d00001 diff --git a/images/133_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.png b/images/133_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.png new file mode 100644 index 0000000000000000000000000000000000000000..82bf047f748bfd2de57d1d83cc88dc69d99a0a25 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%Qnj8gjv*Ddk`pAX7TCo%tljv) zCbBB>^=Dp(SvO~M{hz%0r>%$aNj3&k^#dl8au~9c>zH??E#hUcsW}El955I#sYWUn>T0FFkj%2 foWaz(jDbOl;iSsqM_=234q@bP0l+XkKSn@r% literal 0 HcmV?d00001 diff --git a/images/134_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.png b/images/134_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.png new file mode 100644 index 0000000000000000000000000000000000000000..1a546b28b513cbe361af2ef22a82dbb5c7ece93f GIT binary patch literal 352 zcmV-m0iXVfP)CQNm;-wB!V+#_d?Xj>a(xrBAA{ssdE3H< zfyH96SS;3$1OT%e+6{FFSYfT*;9CoI;3vd2QiWdNT8bjDgtT;Go$9g^nJ5GLykJe+ z-H0S#GSV2??lvlbo=?zgVy>hDEl%_I#9TuHI^t)j`N+FKPu;6W#2y<3XjKDI04-ZU ze_A-gcp!Zom=L%&(j;4c3fjGU_2`b1A1aJ^MIxG(uyaWpN55w3v~C^Y;w?v?`!%=| zYhanNCA7F*a(Qr*gZ33>_mN%P^AW2s-Otr0Pxo!#R|y#=8v6NY7PY?b6?IvftYk01 y8ECSXUvW{R^*~wPHYPZy(Ep*sVzF4P|I-^EP|Sg&^%Bhh0000OB} zj6Z7OsD&fPLSP&C6{sP+i*60!T}!$cB(}{JmEW~=1*nlqL!UiY*tMjWVO2dF0PHpw U8BqAC$p8QV07*qoM6N<$f{Oxh3jhEB literal 0 HcmV?d00001 diff --git a/images/136_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.png b/images/136_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.png new file mode 100644 index 0000000000000000000000000000000000000000..54bcdd7ecac50c1aca3f9ecc3080997d20e7de17 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!3HFCgzU0`RGFuXV@SoVHO>`?sV9tHI#}i4*hvCpMmF3p^Sy!F*-DM!@G43m3QbNp#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q@{Q42>c z#BQPJg5Liwo0nirdCUUF&2y6fBh!|gUO zFfj0O7-N>>I5sO!dvEM@w-;rFU6QaPYw}pGW?_lQtyVb50@n6mSF-X0NXf+ap1As? zWhX}v;`g+qyN9(<9_X13LTTx3+1<3k+O0yMmrAG(-imh=&sf4|G}1BkOga@wLSB%l z9M-bGp&~86k@WgCq#-5^RD`L9w3Qisp1YB52u2+myfNX^W0a&d8iZJ)oRyS37akl9 zR`(u5k;o-kNg~3!%C-MimX5vnKcxM-?m>EPN!odkitt&cN(dE_<~~QrD@U--{B)P9 z0`3n(mCz+RTap&7T?x&Jl=Msd6>PCm(7EI$o9=-0v$CP=5gnYeM$6E(rL8y?!(J~* zg9(+_CQ(>6Lt{{FUU@L>ZIyaNY}6&~hHzBy_6|D|W^@fEjNe+fhOL{Fw0A2^cpRT~ zBqqC*tVoYQ)k9HOS{Nb#aYof(oTYT)K&DDAeLy)dFfcIiJNN^!56*@OypjO`0000< KMNUMnLSTaHP|i01 literal 0 HcmV?d00001 diff --git a/images/139_anifire.skins.ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.png b/images/139_anifire.skins.ColorInputPanelSkin__embed_mxml__styles_images_colorpalette_color_input_panel_gradient_png_1209506624.png new file mode 100644 index 0000000000000000000000000000000000000000..2c949e9432c954185ae5dda740836ea318e58eac GIT binary patch literal 80197 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 literal 0 HcmV?d00001 diff --git a/images/141_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.png b/images/141_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb9174f5e0a5060b941923fe0e0ffa5a9ff953e GIT binary patch literal 251 zcmV#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q@{Q42>c zB;LXcZ(jVT1c3CDWTEJSUa~C(=>zE}IY`N|^!?B8I4vV84oR^TWSPm@Ig}?FVk{-b zGLlj$Axo1FY^Hv;z-1}1mXVbY(JgH{dx-WKA7<&on-@omwowa*nT5b+;wxZ7xMdf; zEM%V9+{M5!u~HOh=?YLIm4-fh&OEcFm!ZC%4FH*08)xjzSa|>d002ovPDHLkV1j+u BY61WN literal 0 HcmV?d00001 diff --git a/images/142_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.png b/images/142_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf425a83a7a8f25a304b42200a038af223d70cc GIT binary patch literal 386 zcmV-|0e$|7P)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSs-}fEFaC#t;$yo>_2mbW zEL2%OQ3t`0^T`UCA$ZVQh2r5}%8J#W`Hk~~L#&oj~RGNVD9^EViRlFce z>1H9U=BJB=$QIDWLQo2Y@nMBF3C+Y;z=m+kE_yYDnP)b4F)&Q56a`wk0@O&QVKe_Z g^URiBhWdIo0GdjPU2$#CDF6Tf07*qoM6N<$f=A4p`v3p{ literal 0 HcmV?d00001 diff --git a/images/143_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.png b/images/143_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.png new file mode 100644 index 0000000000000000000000000000000000000000..bd3b619c6e879ccff2e05d1b3febe6c6c751f8c5 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhQJyZ2Ar-fh6Bw9&Pc9dd@xND{ zU;k+tBeM|0N5x0wLJ|pFbN%lA=Rb5pDuFApD1r9`69=!r>FAnl#kV(jjqy zW&Z$SJ)SjdXG5B-^fyjC-@H7tjmG#eN36)nAj+(sT4h+)JSV%Up>kt^>#j^KHAd-;W>VXBLv=c zf^*QT-N*{$1P7Xlbcc&IIY*&4d#lbsQ_rXK6yD*X+9O(1L~0s)Ih$3TbWz|)9m+Bw5S@T}EnOji}baoB*Y zQPYNkm+-m{kcxIX8m$keL&7z!uA=q~aQP_otv;BUxwqctyzU=oaP2v3IrxU%zww3GiF!+F!$q5qM8n)WmH?H0I zz;=S!f>{gCeErGy#<%sqqeRA!%C=uMj9ELbFgyvGaj@X<%3O^}4?nNW)8N@`_RM@j zT2}2oCPn9mZOqD3Bb-?s5FVdQ&MBb@0JyV1KL7v# literal 0 HcmV?d00001 diff --git a/images/147_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.png b/images/147_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.png new file mode 100644 index 0000000000000000000000000000000000000000..a5553ba0c4816b777574f0fab1e7f578482e4a1c GIT binary patch literal 295 zcmV+?0oeYDP)2T_(GAlG+h@R3JhL-k@$S;Y tFcNzV!NPM^a@z{q+2uL3OvBp8XF3S3kW&5yuPy zu=gPmfF5SV0Bm6jjwn!!p-YluAP9rZVgMxrbO~gy;len=asdM# zprA~zuSBb$4C4%!%p_maAcFvtS$Fy`+C|-JPWAUQ81! vKMekz-W|8G>Z9}O+aGVgRSGOty~S|(?KF$phTTd)uP}JJ`njxgN@xNAmD692 literal 0 HcmV?d00001 diff --git a/images/150_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.png b/images/150_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd3caef4dc781b91051788cb2c89a222269237c GIT binary patch literal 565 zcmV-50?Pe~P)aN00-EuKhNgS9+KX|G%`q|O=u zHZ^z>nR>gE$H;0rC3%eZc^+fUtjByWBbYiCwp}8DE9;5VDWPhI-^> zWGf-(i-7C>3xk_`K2NeCL>vl7+;5j!77nNSwn>j~vt7?P6x`tBQOOPRKb`F+Jsr=y zTRA0@>*bHSn%jk54UP3$?f_xmbO^k|x5AhBzx@3G6B3e*z7+*M00000NkvXXu0mjf D%Ul4J literal 0 HcmV?d00001 diff --git a/images/151_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.png b/images/151_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.png new file mode 100644 index 0000000000000000000000000000000000000000..f871bf3ffb6cd1d7ad8600db216755ce9b661b9f GIT binary patch literal 375 zcmV--0f_#IP)k)3qz@={&L^xVQCQ6Bp2c>3LPN~da57R)h!+MHa% zZE7DP%P>uEPG*_evH*xL0`X@k2C)}_evtkkgSBxNKem$Hm8X{|A8!Z(g8?qZ1wB7RbPh=n^W+r~Gd^dk81SW8g)Q zfuFIt5FY>;io?LqG%@fZ6%D+IGg8PjZ~@k2L#~0~WP>eXlVcz}VdKhrq#B6GdbB7U iXi^yL7C400000F!$q5qM9{m6RpY#8} zzt#LpcvobuI9#v6AXO*l!5MHkfO&=Ye`RUEQs;>WYN8~#n0c2-t#W8tXfVNH%|fON z97?Pb7Y<$cUoly6XPb~u+Y||}ttl2<9!w0mcb4-V%jezzw1~me)z4*}Q$iB}s@F2W literal 0 HcmV?d00001 diff --git a/images/155_anifire.managers.NativeCursorManager_imgCursor4.png b/images/155_anifire.managers.NativeCursorManager_imgCursor4.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9b1b2325eb8f46ae43bcdc69952342da4d5027 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj7M?DSAr-fh6C}(IJbu;q|Hy+4 z&&4|rEf(vEGRQjU5RtGg`(}Mo!MW+bT^FVdQ&MBb@0JrZa{{R30 literal 0 HcmV?d00001 diff --git a/images/156_anifire.managers.NativeCursorManager_imgCursor3.png b/images/156_anifire.managers.NativeCursorManager_imgCursor3.png new file mode 100644 index 0000000000000000000000000000000000000000..4081023f87a3070728e39c906280cb06d7dda561 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj7M?DSAr-fh6C}(O-uyiJ|Hy+m z`rkVbEf(vEGRQjU5b>b!>w)^D4L8@Nx;zZzcGH#EnxLQ~v5A4fI(+KdD^+esfo3px My85}Sb4q9e0Im%uN&o-= literal 0 HcmV?d00001 diff --git a/images/157_anifire.managers.NativeCursorManager_imgCursor2.png b/images/157_anifire.managers.NativeCursorManager_imgCursor2.png new file mode 100644 index 0000000000000000000000000000000000000000..90e0e77c0927f7c43ba9814862f24955add177a7 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj7M?DSAr-fh6C}(Oo}d2v|472- z*wY<{7K`;n8Dt%Fh!FVp=TUvqhT~V6T^YP)RO1-N4HFW{~Fp^2=gtn zW%%NqA`5X@Ml%a>Sw>R}L2)a&vA1R8nH z&9Q85y2xnvQ!zzhC)q literal 0 HcmV?d00001 diff --git a/images/18_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.png b/images/18_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.png new file mode 100644 index 0000000000000000000000000000000000000000..058656aacc13b7a00a7e897627b5b150f1223476 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIg`O^sAr-fh6Bejf{P^&&-s@vC zJO91=`|IyFESshfImIE^J3(T#>y>RRS%D0;I++q%Q?3YwcsEGCvh!eEDX}8oUUS+T z_2n5%l3trs7ZhBptqZ@@* T=8DZg%Naaf{an^LB{Ts5yNW!P literal 0 HcmV?d00001 diff --git a/images/19_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.png b/images/19_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.png new file mode 100644 index 0000000000000000000000000000000000000000..e5df9ae3d699c6b20ce41b82ec7b573a8a8c26cf GIT binary patch literal 383 zcmV-_0f7FAP)P000>X1^@s6#OZ}&0003-Nkl8IyW2Ma)}t-8O=(+^=ls6HFm&Zcq7NS)r{*%h zHO14ylvQnBUOxe>Nn6sUw5@}qQKHQ?@dZJ!C3U9JVBcJg?-&+ffrOZ9d(L(@_ILIM zW;}ghFn~q*&CHj5U!0B3G6n+JUzTPXU_H4n7zkiLz`6-=zIbOKfMw5BT{TNk0t7a+ z1l5l)EJ1;d1n4)%5GSYSDFXp)#`n=4L$n9+eK()X5(WcUdGjS@S-OAzh`G3)da^Mb s$^(yL$*_Qb32v!PXZZE6W268x&YcyZ`_I07*qoM6N<$f=y15eEE|l3WO%eo{J@+ew;`29n1zou#cR zkw_$h5D~T3+BdP*>)FjgL$8nv?Zk66YLz=WmqLXeE}%zLYs_cF&LWTtknYu@Rr%!s ztGD#egE|Pm`Mj5I2ojj5 zl4AS%u3Cp}-t>6;_y!$j$ET8f;e4{r-zUq?tKgYypY>vcdCB!hOi?L;uR<4_tbCDq fNks8V1QUZ()%DmJ21~XA-NE4L>gTe~DWM4fvdum} literal 0 HcmV?d00001 diff --git a/images/22_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.png b/images/22_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4d2aab5119757b00469a3e1d6085bc982c3577 GIT binary patch literal 885 zcmV-*1B(2KP)qW z@Hq<8dk!z222uVlh_h*}CZ0tf=&N&p>Fn%*8|AP3I3L#rSZU}BeWLHy0VdJu-RUfU z5hTTlEr7Kq`o*9%A_iX{JG>nBYtpOZ{>5b{^*YmCbRvX5K4UHfir?}-*650;9jX_Mtv9iu%$MHlN7J@s#ARM zlEpJG`FX$U77ZotizF!ap8Rx<1$J+^@-Z*7@Tdqze8CE*O>97>(OBxjGYx%+^D08nZM zo7bXPDgcBmUPy9ZFw)l$f##*CS%%_-v-{Uin8IK)+Ju1(l+%Rme{Q7miHq5|v~Ce< z^Z-N63T*$I*%7f56?XIi16!!rOlF!$IZH2!piZeM0!C>4M-!Owcz(@FDj{qtpOtKf zQH}=@s#YF5hJj7xn?BoPCuvS5&^AZM{!c?7gC5Wx1)dh@lY1!E9 zUBM_fdsF$L`ZQ>AZ!oU~lV3ZEAZivzcj50*26EwC7gJ84_MjJF%4da{U z;dNoOVSJUusxKJh#L6VqwGD%m*aQYysd1{SD?XqA&=-s>JP=NMt@xlT2caZ`(oA14 zmC8Z70v(EFwyPseV8{ZUNy!wBXA@wwB~z0kHfE;pWoCRNr#n`_o@qk>CSm%>i?YvF zjui%V&@-5$w?Q3-4(fP%P%jJ&?iG$fy;QUM`R`wIA}bs{zIgThJvX{2Y-4{k^sXErka4(MRT_Ujc4$5^>bP0l+XkK7>O*K literal 0 HcmV?d00001 diff --git a/images/24_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.png b/images/24_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd22ced8c255a39c19b9ea8b3e0d4ad2f484fa2 GIT binary patch literal 331 zcmV-R0kr;!P)am0NSr1XA_pPNQuH7u+d_~}KtYEKgW?mP{NPWeqZST*3kjuC zP}ZPoD#e!%VVNGJ#`efY>f}Rg7J^(3E6P?sy$depKsf!vA=;ItprD2oWynPxO)LcY z1Y1!CDs?EfaCm16y0>YDjfKEA@GDS5co*Fo!n>AqF-UBiD=NQh=?YLIm4-fhuCQxK dFT<*OHUR2K2|JgsEUf?l002ovPDHLkV1nd?i&Fpq literal 0 HcmV?d00001 diff --git a/images/25_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.png b/images/25_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a7a767c6ea3ad250f680b46bce19e6442bacce GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^x**KK1|+Sd9?fE4U}W%gaSW-r^>*4r-WCO(R@p{D z2_QNsD05Ko&H*svp<4lqdBbD9ua_jAdVTFb`CG`zXF;t){DIoB{BFM{mmqSnC z$+^iNk9B{1c4y|KgxPrwLO<_(e<|nWxh0+1{nxZ@(~itD3_14t#g%=t6-4i9d1Y&L zlx_X!vPkn|{&G>zuvylDI>*a*6)~@=$n*Onw02#A*Zin^`YwX&h38xCe=8ny-00$F zqqu~RXZ9b|m42h`m3&WU{RWBkE1oZ1HO=g`kk#=-$v1lC6Rg@#yz2{F`Q^pGwD<3q ze0^ea=zN_1r#qpF6<2ItZhK^C;M6W?`X_)9zopr E04_&`AOHXW literal 0 HcmV?d00001 diff --git a/images/26_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.png b/images/26_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.png new file mode 100644 index 0000000000000000000000000000000000000000..39f0201e9252374d2655f3771f1516455899f632 GIT binary patch literal 275 zcmV+u0qp*XP)wI|-0Nh^f7H$S|4|oP{k?7mdAe8%vg~0O+kQCi;8+jC z4>~!{gTz1%qq##s7J+?_h97isya&mF90Ov5F^~;%IBh}%iz84R1PT>k=wOI}JOFeQ z3{xD11RVkl36MoV%llzb2NuJkj%>#~>SVEh(8)F*o59#HII3`{1%(p%4gvd=?LOEs zKp%rJa&Qxi?{%}rgUkTYA(g Z0058H9^lGU0+0Xz002ovPDHLkV1jO8WNQEb literal 0 HcmV?d00001 diff --git a/images/27_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.png b/images/27_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.png new file mode 100644 index 0000000000000000000000000000000000000000..378381d4a5511ad4c33d142419e8c91b7764dc2e GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QZ=3~jv*Ddk`p9K8dB3fSGN7D zV%)@=F!$;&`J59|#F#hnHb`9hG*8Dlf$f07ywc4=kZ-YBKo<*FKfOyo3z03Oi-lAvX+|v^85R!B z3YhL~nqgxhunqhQ)DYf9w}$YpC0z^>+vbYO?^?P7)JUbF&z>vnTGGp~s-6u1KSClQ Td7BVa00000NkvXXu0mjfD#vfV literal 0 HcmV?d00001 diff --git a/images/29_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.png b/images/29_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c9e3ebfdbb776be56b835e9fdb14227f9480e0 GIT binary patch literal 437 zcmV;m0ZRUfP)3!pDkLNIQiixp;QLJSLg8p zbe&42QmNjNb8hh46h>S>&-3L+=f~X-eKWuw=m4-I1@pfb_g7OZ&^D#=;E%Wuy4yZ< z=RzKB9Y4JU-fJ_q&8c{XuqBBM=Mc(|mA z%e_dVd;lGe+i>@ptUrn_I820DqBb%$s%~?^_25%WJk4DScRuDeRnOLC?8nq|?w&T{ zoc|&)_k+>z1#Ut+BL4EOj*R!X3*XgR;-*_%Sq&widm>NU?eaw~=g?I8c_XV$(v`6! zbZ(o-ygTNyiAa|V*kqQ5{>mm*-dZx)#B{a9Eb(o2`AhJ*YeDc`?-3G#@;ZF)Sj0aW fs8lMIs)~L9pz%JdfX~~H00000NkvXXu0mjf&QHvc literal 0 HcmV?d00001 diff --git a/images/2_anifire.creator.components.CCPreloader_imgBarFill.png b/images/2_anifire.creator.components.CCPreloader_imgBarFill.png new file mode 100644 index 0000000000000000000000000000000000000000..567bcdd4f994a19deb12e862870b0793b41d04ac GIT binary patch literal 257 zcmV+c0sj7pP)1AgDLRo*;|K9aV+LtdyAFOqT)ZC=aE(OejYf438ghwhc+nHp1b`1#=Kk2eGa!}hE@Ryn(1 zT9;10a0m#7?VIQ7O1|GAjFd3kp67Y&k+T;i0)gRn+}*A{GhQMP7`DDtsmDu}s?leW zf`DMyYT+uDCNs0a?8(6W{xY~DAQ=AZ*7Dg8g=CqUG<|ymkU^+kO|`_t00000NkvXX Hu0mjf$=Xs0PSlnqSL_NO{gPAi3$l(>O~}VGF%Gz&r>mWYDq~a%EHh5tPJ9MpC(_Ph$7MhsiqT~@XJn0+D4**BbdNWVsY?H;!YbS`Egv*L1T#f(gUL(sYF3? zW6)*4h}z%LsmallI?CmyQX11*rt)zmuLpNk{MlPcPj*uLA(L>EK1dU;qM{gYRp+Fm TO2#VN00000NkvXXu0mjfRSJva literal 0 HcmV?d00001 diff --git a/images/31_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.png b/images/31_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.png new file mode 100644 index 0000000000000000000000000000000000000000..34b2185924e9d2c194c3ee8fdb7aad6b2968bca0 GIT binary patch literal 328 zcmV-O0k{5%P)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C7aq z!UNA9V2BqV+x=g3K`)9Jh(Gc2Nt}+R$U>0V`=8(cyKG(p=9{dY^Z&u84_FPRiiIEx zF1&dGmfv{)CYT0U2ok4>g~&k&vlKmu$+i&W6Hw6M!l3xXCqMX8>8OQ6-$FvE6qGfn zno9BILs+HxswVHNiDJZC6MHzBYM-vM{KEYO$ zfl3{UEgat2g6?gaVPhe%nfMCW5N_E;FAJGxHg_>FOso_ITDk(%NTs3Ao-@yE>1C*| aX9EE0O+ozconx*50000P(zPw)QY0;`|irJjYLV8dq_EKWgcKn|nW zLSzF$!G{jgFC2n92t-qC;m%i&!G<;8Jc~73M4s6LmIDEhTB^h$%s^~G3-UE66o@GR z7)Z?y$i*6Rf&t0Vt)u}3DP4=U;b|dqT++otP(p#FSh`pUqG7(Ii-jOdV5JUSECiLW z$d=RGLJ%8NhSJ4CSOE>Ph!hKfZQxg+hVU-BHH3F9>0*%BHdj=B*U}ZBMk)=P`Og)0 fE$L-gRnG- literal 0 HcmV?d00001 diff --git a/images/34_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.png b/images/34_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.png new file mode 100644 index 0000000000000000000000000000000000000000..75c4351a25f5c525c7ee69da67fccd46b0183604 GIT binary patch literal 339 zcmV-Z0j&OsP)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C7aq z!UNA9;0zX(vECc~i z2?Ht&Xj*u~f)W&Ou%M-ig~K~r(7jDFY%Bye6JG%v!Y#Y#Wg+v-<}LXy$tpBYye}PLHtE3pHBb)002ovPDHLkV1j>hjko{+ literal 0 HcmV?d00001 diff --git a/images/35_anifire.skins.EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.png b/images/35_anifire.skins.EyeDropperButtonSkin__embed_mxml__styles_images_icons_icon_colorpicker_active_png_574257180.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1552c784ea817544267c4e2dc694b1d9b90f08 GIT binary patch literal 527 zcmV+q0`UEbP)?kQF(p4c;7swViN zrNz9m95S_vA#C-hx(w`Xt%(#FYk1&@HwasXGP|yWP2bRoN?P{EiCq?`8E0WrzwxR|Ppu)6Iaz zxI4C0Yj?|c0Gzpw!cBC@u&Geqwm&08PXqX*^TP96p7uBPjnOg2lD#@e!uTW79xyULts468+6ollOHIS@+Lu zLh+2PdNEF~`)|CIA6lyaa>JS9*JIuZ=Sd#Ah5_fJsxeY?rfoj(P5+&gc6|e(H|SC_ St!&Z&0000P000>X1^@s6#OZ}&0003wNkl;(BncCLci_IcC^;D(v?61kr(+#p@baO}ky zZGdT>hYWyom4ibR8w|rfZOA^z=X?-Q4nY3RAni9|6|4Y}V-3b{fcaKx_yF#{USVwT z8mnmqfm6(FkJ-ctla+k`n8R8LDZclDumah{p3V@Y>qCj6UN9$=aIxxDIORTPQr(*% z2^g#efdbXzv&w4LJynS7)2jALH5VYE2vLjl#V5aoto&`YtC}GkKp`T9vD&({ZUtyE z1kevqw0Tw3tWK)~*8#W>-S@->TdTI-1o+H9-?sr}*DX@?amU{P{D;oC0oBwyfumK{ Q>Hq)$07*qoM6N<$g4a~3`Tzg` literal 0 HcmV?d00001 diff --git a/images/39_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.png b/images/39_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.png new file mode 100644 index 0000000000000000000000000000000000000000..259875b5f11cc584a260efa8e3b9959b1eb164ce GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gw!3HFS-u9~jsWML&$B>F!$q5qM8ZxWAnNFXX z_MIm_n)bP}?Ozq+DPPuI0#AZw94t7zGFM~L!_O=8GTJZTI)g{ka7xw50+9(! Z44P+dU9a%H{}1Q_22WQ%mvv4FO#pWLK}`Sv literal 0 HcmV?d00001 diff --git a/images/3_anifire.creator.components.CCPreloader_imgLogo.png b/images/3_anifire.creator.components.CCPreloader_imgLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0a7ab4d3e75c94252d04d732063fa9f1ea407c GIT binary patch literal 5494 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 literal 0 HcmV?d00001 diff --git a/images/44_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.png b/images/44_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.png new file mode 100644 index 0000000000000000000000000000000000000000..31c4ecfa54a7a0717763148e4173955bd7266918 GIT binary patch literal 382 zcmV-^0fGLBP)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L6~FTZn8R zDEQDp@UGQx2Z3mcE!=qjCfKmzW4p0t3zyAHz;Yk}QcIOMgc*n}XhFUPg#s}J00XJn z0l8R1PB0)jx|KAbAf;>3Hasmvj!U{&2udih6iXKiK{U*lbg>X*39Qtii-n-_71?r{ zTL@x<%22vk2rHmL7Lj5hu$lM@*br{nMXx3z^UUTh28M~1qCiVmfEuYZYydxJp4rmN cP+!jm0M+(YWEB`tlmGw#07*qoM6N<$f(Xi@AOHXW literal 0 HcmV?d00001 diff --git a/images/45_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.png b/images/45_anifire.creator.components.facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.png new file mode 100644 index 0000000000000000000000000000000000000000..489f89de128da58cbfdee433b88c3ab621846bec GIT binary patch literal 360 zcmV-u0hj)XP)P000>X1^@s6#OZ}&0003mNklf3H=a<3#{}bFmjbF2L;Mc`Z)>0000#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6Ln4E}NHtvFL(c zlJyd0p~~_p|0iBP`TxPE5C72tNNnNFi(oZWv9Rgvq5s4JkfX@95ENVoo;~T^>X(760?|*&=`_^Rb9F(92iGk$MEhWi9^k4)TfG>_fKH7NyCW;=A8AMqK(v0k4 ze6B^u=$2x0B!-2>$95CcgwLnQj>VRU81Tg%D7hoc;R2vMi7h%nS%#p6$Sy=Sh*%3j zi3%Cuv=HPQ^ppvTKadzKWfEf{x;mT|f(%7Z-stf_RSU5N2RU&_bdbVu@`24*Eh8t< zV9QbrxM~A@wFEkb6=h^)3ra9q8J`>s@);-!$ST@M!Jq^JDw)vhNl;dzr~)P?;ZR&X zkz*l66)>(K#MZ^bwy emR^SXdNu&8E#PZD`8mx10000 zLUmSsRGjEjEffk1e7p;he}S`_>$+Y4MEQJv z3c{x$l3>eJ*O5vL?|H^_DURzRsUX!^U9_|*MMapvPRl>L+AIPE%70@O)) zi02H%lTe*$Q)AA+e#qG&wr9Dk*=)97*O*E1$~Bt^Y!C+!zGIu$ihR!%yq<<^o7k?{ zwwO{J_Am3Cl0i4`HL%?1GVg%PP_%VWO{G$8T2V5YY(?}!gvG!nWNi0f!x$}-$#h7| znTD7$hf9(sXVzmB(ydxb#jfoo8xHLva1@eka1~|rHXOs}WcVXLhpZ`PJ zle!~+Mx=HQ`Ag0V2M=-#RtIcYD0PEh($07*qoM6N<$f=j#A AaR2}S literal 0 HcmV?d00001 diff --git a/images/48_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.png b/images/48_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.png new file mode 100644 index 0000000000000000000000000000000000000000..785767868e3048913698ea42dd3f853d38c8b6ea GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!3HFCgzU0`RHdhjV@SoVs$^BGb&yFF)asa(G3O#);V><|0cfuUrUpcIS0HBqFM@gGcrJ zmVZ@@3mTsr?!EhIURGP9!3rB$hrmdKI;Vst0MP000>X1^@s6#OZ}&0004iNkl7AWjo>;}}ZnHa;dShg9YAFl;+I~Rul6<#FA0wjwrg3Q6^1Bxs_wg|&V z&^Xvk4GWNi4keC2kw&cM(9^sBtL#}$tVQLBWJ+WzGCR2L|NCD*|JPhUO{^v7z{wkw z&WZKKzSmFxg8;}P!vkxGvj}KD11LigqqzL)$^Xb;$>UqZSpqa4WXW+t3hj<;`v3LM zZxl=Z{QLLc`^0u)EIAH}^p}Jb9(()ZKQ?gs{VQVP(T`wJi4{J-qUZK5%*xB=%AQgS>Q<<~iQg+@x*MWQ9;^eu(yQlHSR jW~5skPq)?zE!tfG?zwC5ynp#J00000NkvXXu0mjft4!4j literal 0 HcmV?d00001 diff --git a/images/50_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.png b/images/50_anifire.creator.components.DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.png new file mode 100644 index 0000000000000000000000000000000000000000..59ce2e71778a4989ea93eedc26ef96d93ff90059 GIT binary patch literal 909 zcmV;819JR{P)7B&&9SP9hel z@sHHIhh+g~fy5zXLbh{&#dzgr7^m;4(IZ;`5}+frfwo*Qw5hk2sgWI501}`bv}tV( zEj@g7i5BO(x&UT?sBP#_3F7{v{dmiEVyQd0UU~YG z49FsxBh|>5OtZGmnxIAxZbyT&HZ4lf6N{wmXVsd~G61j?29{;(PW0luRTJM6SI9|z zP)xIBwVyCFu`Xab$@6mvV~R|3p`U>xDrxiGz!Z!ObY;U1&STU6KYUFyZp}bfX*h#8 zhp8|M7I zvk7zTXLcDKSO5AAWbo4H>>{KLggT-f0Q2D)&uS-#W6mXlFp zqe$>E%)SoH-6*|aWk*UnNoNi*v^d9u2vsGxZW!pqge_~J97>0a!fhSlb;3X=M)nXO z89VPZuPIErr;%vbs{&K7o-<6Xv3%b3=S&)@0|q)VQ)`S7naCbuS7+LgYZ&OnjL5_) z2rek73j=U_AeN?99Wbh?Re7=31yj7(E1F+5jJ%`Dz!aO`3J%dOjM!Jf6gtGRA&L)} z!VslQ(C8TEKn9}>8coCaDiP6LcGWvY|J#>hCF zW?C@HB)0Cc0@jQR13;bBrSjd%v4X)t&*-!t^fc$_tx<=ejXIug)CU7i`-G!eAJxp* j{r~+lC)pbE{o&bf84U%7^5N}1CrGd^W)L?p^GoLK z(A~OxC#$33(S0V{8Cw1>^1kYLL)mJ2zna*B%(*J)@ikubM(Bt^Z;g#pMmI!W* zO&S`j96Ck36F$0b%6FK^%~hV#yvNB~#i1?nv!;jc%|c;`*c>inj!3?g!~~yC_D!xL zOHBf_m?S+kA~gLj+1X{r+^F#i_2yXWl4G}2>O;TgCMNfqkWR+4U9vOuH?XRg)-aaX uo?u!vHTA^-^FmLjC<~$hH)u52T;uASK7rkH3H7w2Y`YB*jvYW!@*YQ=Vvu zv6L9gNJ^!IEG@lyg8JD4m!-s7MpiyVw{*hY%e2qP000>X1^@s6#OZ}&0004mNkl8up2g!rfF^~+Vw@9wiKR zqzm``fv$4{YT8VU;aDu&4API^g6T~mK!q2{u>i@Uiy(9G`G6t|P%Ogm5hxDG z3?h6%hZ0AiNTa3&aEm~R0hUaOO+{q*<{UVAgVH&=q~QGS|5LA={y+QrIihjwz71F{ z0_P)8hQcPj$@PLnBDgO)T^gNS<-p_7|tLAna=1#f?R`!Bw*k0?Fhd_qc&mt8UeY(dVE?WE;+Qp+xfO^d*Jh_tecUZpU7 n>Jxg^jC8Bx>DF4IMY{_Cgg3zUO{QTl00000NkvXXu0mjfl{wUC literal 0 HcmV?d00001 diff --git a/images/54_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.png b/images/54_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.png new file mode 100644 index 0000000000000000000000000000000000000000..94929ddfcb2e39209ca36125a69bd3774aa1f41c GIT binary patch literal 309 zcmV-50m}Y~P)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C7au zLUeJL%}cNv3KA#Qj8O{*#=-;79{hj*^ZWng1Dmm02oqm;^CIOIHk~~LW(V(Djn{`T zbs)>hwh(5)#``yk3epR2UVuZwWbGXCECgAEY#<>EL7@NwFyE4Fq3D8Mu!})1CuAYA zS`eG;IE1-+;^mWgErf*zC^#ujrJ#fW3MQE4*itD>el+8ca0`cT1x)ug&9Jc$*i3u{ zYzVjPqL+otGn=~@7$#PV0xewuYNXQ8XU~~uw)8U8*Ruft%e+M+zf-TD00000NkvXX Hu0mjffvJNm literal 0 HcmV?d00001 diff --git a/images/55_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.png b/images/55_anifire.creator.components.ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.png new file mode 100644 index 0000000000000000000000000000000000000000..8a969ae3dc5733db716f08314694314ed75d92a4 GIT binary patch literal 449 zcmV;y0Y3hTP)P000>X1^@s6#OZ}&0004qNkl7AWjo>;}}ZnHa;dShg9YAFl;+I~Rul6<#FA0wjwrg3Q6^1Bxs_wg|&V z&^Xvk4GWNi4keC2kw#4mkSr=kBvT?&5gC@811E1#I!Bk(-nZ)i!bdm%FMD#EXq9Gj%dp5^~9e0)QcCDZR;#T{fo z^FfjR5|;w!qg(!e|N9581HpV1zfmms^Y7n(?-SbzTLO*~9H|Q(mtQ@JV#$)nw}{It z;M9dBpWwp#UOxp}@c!4&|Aq(F5N8P}pOBK{%?_>uTTpZTG-)}W)Uqq|^loq-BB|`6 rTPaMJ`h;#ZBi-tFy0unl(e45O8jx%7^exiW00000NkvXXu0mjf_N~oQ literal 0 HcmV?d00001 diff --git a/images/56_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.png b/images/56_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.png new file mode 100644 index 0000000000000000000000000000000000000000..16a6952a0f467880dc3f2654af70a80015d6e9ca GIT binary patch literal 442 zcmV;r0Y(0aP)c=x85hVqXacb3?zqcDM=Qh2P4P;d~pQw(au+oQS^Y!Aj(3J zW@H!Rb1gbXw-lQrF)VDpd6u9id_F~XEVe|%fG_Sq$sJh^7Xal+Y|#PAG6XF|b|JDs z#99bSRLB6Qg&^Ocr%X`%fy7`blNbxp)#0=dWGH&_Mvn)oT8J$;$caOugA|5Kub#ka z899jtTb5$LRU6=|CD1XfC?hLdP=d+I_~c-a&p=T?R?$WZ1|<+s$%I}{g0d1t6)-Ug zhvMpq91AI`fN=#Owk8J1BC0hpsEz5{Ox(5f6{sP+i*60!T}!$cB(}{JmEW~=1*nlq kL!UiY*tMjWVO2dF05Sc$3weqFMF0Q*07*qoM6N<$f?`6yT>t<8 literal 0 HcmV?d00001 diff --git a/images/57_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.png b/images/57_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.png new file mode 100644 index 0000000000000000000000000000000000000000..a947f0010839e4e9d230b11011606395903edfca GIT binary patch literal 264 zcmV+j0r&oiP)z3%@vj3wR8ojkxE0KJy+PZq?ch;JsSWtY#MgqILu`L O0000Bu=auqZST~g~#8${QvRy&;O-YPhhnWCcgUVUCJ$-aQ8BpoqpjE zULV5Lfh;H6LYM_RUp*!&NUwf+2M!7E6WhtN5M&XufrKmsg#rk`d`q&0`uo>_T?}$L zAq$b!g4kroA}1CrGd^ZU_+&h|bE- znRCo5*t;pIt2Q%fqI-$n{P>cURvgVb3s<@Rd+569-^Hcp44N+*x{5WLH1QlrwKys^ zF^O@Lt4d^(%sZFIE0|O-J!15hX^7$4bVqxO3sa=b60s>7C%hIJ$Vdb~VlM*jhpD{Pl z<#0SHBy-Rq{^FJ`tUsBinAa$CZE@G$@sN?h{lpYS<3xcaK<_Yky85}Sb4q9e0OD?1 Ah5!Hn literal 0 HcmV?d00001 diff --git a/images/60_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.png b/images/60_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.png new file mode 100644 index 0000000000000000000000000000000000000000..c3599e79b91e3f97f2cbe4b3f4b8367685fb2c4b GIT binary patch literal 341 zcmV-b0jmCqP)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q?c6l}6~ z&i@0?9{fiJ3vXWhFS?+Y`WAvL!v!w9c|o+LL|cgNGjss*DOD{b1`KTr-~arM*D{bi zRV{2fdkC+E!Mj#dKU++^d=jhAk`HXAUB*{gJ_YRCjrVVYX%L@g86RXgD9@3T9mvY~ zxDpO2mJ)3tCypJG)pufOOXLh6AiZfNb~w| zz$}CXEnO@GB^;Q=bg>XrH-fSO-7Eyg(A6tq)8d$iOHf00000NkvXXu0mjfpJI<4 literal 0 HcmV?d00001 diff --git a/images/61_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.png b/images/61_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.png new file mode 100644 index 0000000000000000000000000000000000000000..2b934db25d3959ec285e2195bf6542d2de350c0c GIT binary patch literal 428 zcmV;d0aN~oP)AZH z0}Z_oa=`m?V+W80c+{OI*>YTlk%~#OoLZKWWI44hCCYMIS&G+kT3d?Ma(Y>cY&j&a zLh~OM1@Fl*_(i$p|K_xW|N9Eu&tsDZc@!h_qXbE*aR8~7UMX?>pOTpUKOnC7zkhVT z1A1tJ3L|_a&wEfjfC>mwEM1)&0Jac@K^7xNCC-!$wfsJa2J?xu7#6h1mLgjWDSCk= z9kB%oF&3XHa{V8bkdI+0NNj#~umf3TH6e=^=7eBa2*Q=ADd125>8Gm2AVWchW3v?G z7??V$T8uAfL2}4ysb(>uphb5i#TMTyv;Ci!oK7%kscP~5LJzD#3o0Z)g$2IEN4CY~ z$;l4bd7u|Z4KINqA?Lw3DOw#B1>ng9T} WvZM^~SdeT00000%^_y~j$9jC>E@OiW1?OUOUqJIzL#G{CCG#c0 z8Q)FJL1d>+J68HF^U3OXFgm+$Oh#uHnJLq}*I-FrDvqX2Qz*wEI#nu2i8eFeTfpk} g?PMz|Dk{DUKSpN71}NGL&j0`b07*qoM6N<$g0eZ-@Bjb+ literal 0 HcmV?d00001 diff --git a/images/63_anifire.creator.components.ConfirmPopUp_imgError.png b/images/63_anifire.creator.components.ConfirmPopUp_imgError.png new file mode 100644 index 0000000000000000000000000000000000000000..97d6c92b4499aa31d57edf492cfcebf45da2df95 GIT binary patch literal 985 zcmV;~119{5P)dfG2yW`S6{UqvfHVg(G^M<9S@b+B6jY5E;mumr~7O7>#wBbNcE#@8%OXWGbFT5}m-SXIf~ zTtvuq7_T|e-D8)Bu{8%6?mlVQfhb@qwsNTwBd0qsOpvQQXGcPSNmat7=L{s1-q=#GvrItKdX7s8 zXNXOFrq}cuN&*%Xo0&>j=nOFuCa9vylA|?sh7dV@>HaQT!SbHIc+Rc(LVwDq*=G69 ztvn}w-BWMxbecKwo4G5&J*VsiZ0H-J~uV(u}1CrGd^P7vv73UuJB zh|iMwuI`p)WS~RpZ;2#L3D4s z=At8vFT|8)ewBM-*|PNKFD8eBpI>lYGzopr E01jzkGynhq literal 0 HcmV?d00001 diff --git a/images/65_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.png b/images/65_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.png new file mode 100644 index 0000000000000000000000000000000000000000..97220b417a99410d1407ebd4b7fbc27ccf2ce200 GIT binary patch literal 477 zcmV<30V4j1P)Iadqj6I-$Fi3I>id4#jfe2zl!W5P3RdC9$vp= zo^cR9p7Z+UgdsfK2^)?fuScB5Z}wh=14cr8((p2!q!+N+6Pul=q!Htz#)gK?`4A6_ z{9PgJyr@GMFSiPz=S00t^mta>(t8^bnt?1?6Lcu~3h-R`y9b)zm68X}V6{?IG*qgs4>kafE?h+N znB>xtiROyV#qU&+b1mtC3lWld!iP2a6WtGDB`Q-exk4@69wZ&8N3kuj%!|VSCe2=c z(YEWP8vWbCnNUnx;ame7ev#jAV-d&&Cbk1zgjN-{x4{-h8G4Q|1NkblMlB9N?+iqV zxc;GyF!5_nnNXar70D%Nc0%tuoAC^J7(0rpM8yI+R4}cWBrcZhVBBCZ7*62_7?;#) T@4Cb#00000NkvXXu0mjftm)8{ literal 0 HcmV?d00001 diff --git a/images/66_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.png b/images/66_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.png new file mode 100644 index 0000000000000000000000000000000000000000..590df23245689e57353efccd20a8090f12c7bad0 GIT binary patch literal 522 zcmV+l0`>igP)>bABCTBqE)Z z*ztGY{rV=8M}Ndi_#`&bZncSXl4J1pafaX>YqYl&&*99eLI5j8L$caL+06uCVLNy% zOUog$ZC|Y8z)C5Y*T8ZDdlw>{HVBf1*yAC9V9i?TSoVmum2&*3DWw=&=0z2PK@7M| z9k5keVZDY+X28MN#c~B?;b(HQK{JP8G|Yv+$i$nS5`PCU4sIeigR{UGOkBpQDs))Y08HmOCsTgs zb%Hpn+Hh|ewL+&pdv&unQ_M}C;(r!vtuZlN?SgRKGIcliG$uacSWggLZMd&YYgd`P zWp?7NvcPJYTy(3~@ejX82M?GG0;b-BLXB-(Qglx+0apq`#@?fcF=Ojxdb!+i{EX!# zt^+Ce!wMuzG2qjCoureVUyiNPe4vkyV?tv{Ali2g@Yr)vf_H!Z0pb>QLd(RA4gdfE M07*qoM6N<$f{ZNei~s-t literal 0 HcmV?d00001 diff --git a/images/67_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.png b/images/67_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.png new file mode 100644 index 0000000000000000000000000000000000000000..cb075af40bb49a0ec3a34390b7efefcd07befb17 GIT binary patch literal 268 zcmV+n0rUQeP)c}xO0S;4kc&LChcXMX0hpo3-@U|;16fMYLhlpX!J6kjya9GK zj7_eEFf%|jG8=9o$N&%kNq{uK*yLIWGXtFsw-6L3FqeT0gR#lA5M~C5MrIFO9FAuE zQ42>c961&O+rY0t4dGpMYY6XJ(#0ULZLX;NuB9tLjZ_-??770OCA|!*>e&Fb5fyZ< SC*9Zp0000}1CrGd^W)T1I{k%9w zm#(dUF?ZABQ~xgCVG`i$(amK@{J%noc~(S2Ut`ht<|Hqnj5Nkssm~o>d2VZo;MUlr zVX$pUgNS#+N7t$ejLPC7?=hHBDhO;g>Q{JycDGsE5-sA<%-SjptDjy>98?Is@M nqf@^%b9)zcO$ju3z`zh|clDB);Jap^4;VaM{an^LB{Ts5)l6Bc literal 0 HcmV?d00001 diff --git a/images/69_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.png b/images/69_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.png new file mode 100644 index 0000000000000000000000000000000000000000..381c5c4fe5fde8446316c3947ef0c186eb4a078e GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!3HFCgzU0`RH>(nV@SoV|ed*fYl@nvt?w+Q7AbFr YB}zM7MZTSW3UmO2r>mdKI;Vst0B6cU5&!@I literal 0 HcmV?d00001 diff --git a/images/70_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.png b/images/70_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.png new file mode 100644 index 0000000000000000000000000000000000000000..de9ca324a3a954beedf2eaa00eb58c006457754b GIT binary patch literal 287 zcmV+)0pR|LP)P)q;PdTFoS!}Elf?(oa%5LZF!$q5pyCCvZ-{k8r- z--*G9`EbI59So{%&R@9_N=iAB+~RYXw}UHxffMTr?G8px6<4(rqAn8m z9KyU56MocmO;R*FyirZth__rpD{^9H1ykV3tP@NORYA-7B8&X)0F!$q5pyCCoa;v(Iln zm-W}5lWk^WW>NiK2GzD^Ue;NScW_&%FdXfx*+&&t;ucLK6UP7(dhi literal 0 HcmV?d00001 diff --git a/images/73_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.png b/images/73_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.png new file mode 100644 index 0000000000000000000000000000000000000000..9d570cd4171058f359d0f6f7560479bc88383eaf GIT binary patch literal 274 zcmV+t0qy>YP)}M;{Aqk8A{61_Cs<(EG&p{~v$<{0{>(wJ`F`9u&)HYGLWs6aTRRnpoI; z^Xz|Ifa(^metP#mK0s9q30XGuEu?#p5@RXNvIQa6JtOu1h#=+ff~ZQ=++S4wWNzdV%uC%`CUs_fEuYZ^x1QTT}yfyR@Jis Y0HmH8cFjgfkN^Mx07*qoM6N<$f>-%>%m4rY literal 0 HcmV?d00001 diff --git a/images/74_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.png b/images/74_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.png new file mode 100644 index 0000000000000000000000000000000000000000..e4fe08ecfb257b27f5a8779f05489df09533178d GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%Qn{Wkjv*Ddk`p9K9^Btw|NQ^| z|N0Kw7#+_3U)UxwA(!FGgzqVmpX7yA0^H-gzA*n-& z`NJ_D#o3Khm?IM%N)9dZFg9cM@VgYT$fxnn8JDTqID}dOf=mpsYw-_XFrNr_7!kiF- zcx%27%<}Uf3}Wvu^dL$v$PSQt6pL5q2K*0*D<+7W(-JUz0TLrdFUSrQi$TE!at$e( z-Sn`4|ZVsCPd| z3?zq7Z*N8n%;EyL#jqeFl)&H#tK7H&ZZVJz5(CK*ldwQ`p=2poa1)i4fY}Jy(Zpsc ll&mxgM!_f;1*3pi002I&^;$P9p=baJK*e literal 0 HcmV?d00001 diff --git a/images/76_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.png b/images/76_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ba90a1d51fbfb5f726285bd82963bb0a8e528b GIT binary patch literal 578 zcmV-I0=@l-P)ISEBXoDL3$tC_F8TuX ze%g!Y_Md{p!6qkZ?$7zo&v(u}rP5#jl(t?~y2hy0H61RVdeZkH_{SRG>nVr&#!3O9 zSO8^7t7}Y_HUJ*RD>qr-IfTXSD;-lU1PaST${emtQxv@%F_3$RJ(>at)(V3zYCUpY z2pk6`P@dz0yqKpTQwKsOE))fw>pIpO!~r*Vh!L`-D}sXqWRqAm`UPMokvspuYXeRr0JAC^@56eJ zi_OLPxZCon@HK|@nN=IJL8ZD7afww@p+iv^C`;H)O{Hx(HJVbP^FAxq;bq{J2d^^3 z3(h*Rjfvv*}6idd%b^d)+a|;==Xmx&LNuM;UBwYQg}JPw+s< zbkOwMnog$>HE-Ry;t~`*n|rw#?HKzKC>&Yz9d+sK^l;JfUvGC30kL;~rbR~Gf{*z3 zQ%MEkf4n^MpRNwR1pinIpIf>E24gGBKhT?AY`rdLfMF*M@YpLn#IN)F1gjY0JlD={ Q5dZ)H07*qoM6N<$f+ev8@&Et; literal 0 HcmV?d00001 diff --git a/images/77_anifire.creator.components.ConfirmPopUp_imgAlert.png b/images/77_anifire.creator.components.ConfirmPopUp_imgAlert.png new file mode 100644 index 0000000000000000000000000000000000000000..7f39f3b90f9088dc2c82d969a5a787bc655b9b57 GIT binary patch literal 1067 zcmV+`1l0S9P)Nklcu`~G%|t_d+>OQqH%(9v zCJimGLZ$L(3jul92hRZIQM$X`9lvkrgR%v>JHsYlb~~N@_LpyF{@*uaFlfBS%r*N3 z*Q1QE+f*&NO|RkJ4CVmyfXzkj_`5mse>L{U_YAvrEja4ZBzJwK#9`0$c5^JtVmsK7hjj3se%w0Qwc| z6`8ug1Xq17IBDStl>pd#lZb7Fi$Z7l4NYL8v#t=p`gaRVcGnZJHJ6Aj=|r&RtqENh z@1zznrzr=(T)PGaCfP4hu&4>v+z-*JusSgYm_4nHNzQZG?t2~2?JK4^QEd^iX0 z0npI|IBKm00kP{sK~gZY*|-;U>AjvvD2v@hQItdr^dyg3dyyI}Y8@qgV`igT52;+Z zOiQ}p*1T#sXj4V4r)q039Nv~pMd&PhnE*EHzIyhvGMdlor)hdrSlKI6YGVYlo z!9Nd};pl4RqH~y{2A_}#?-Yd-+KSoXB09&OA*iO6P_Tc#DR!`EhTxG~qnZ}#I75VX zBZtKh$*s&)iK~`~)@&}(QdK3a^_*lo#}{m4J;zcBhx=+G%lV;hm<>Yu%Np4`(Vn{#4FN!j5ZP zSEr`4l5J0!cx#%TQ>LxX=OkMxpJ>6V6gy7$?>NU&J=v6cZ(Bu6CZoV+QXNCN7-&l0 z$L;tv*i~^Dl^asas9?>Jw9PB%kMF_z!M5@vyLWI6IS-RERt;jO(T;T&7KT{4Vrfn9 l@EhClf9!|-W4Thp^&fr)dE`4rCYJyJ002ovPDHLkV1f>3^ico+ literal 0 HcmV?d00001 diff --git a/images/78_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.png b/images/78_anifire.creator.components.CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.png new file mode 100644 index 0000000000000000000000000000000000000000..660427b237a1426567aac70b77bf68a6e892d598 GIT binary patch literal 320 zcmV-G0l)rF!>Glh77tB}{bCE(4~WJ7v4stEw-_YmA5#=C02UXn2U$RO zi$THc@1HL~e~W>^43eY2#ZmbNP`UGTwHU9XXk{_TmvFh5qJDZ>ydNfqEico|VvuEU zi?QTo+F2Y^lmNFFOJ1g(#YhHY%gZ#g7+sz&76aM$vB;mNhsFCzi3;jj49vF}@@RRP zCKdy;QUSU=dS0fD#aIkQ&&w29{JvaY;eENW1Bgbk7?^!9EJn-AEh#YxFuf#O{HfCP zKMZfp_xZmtCj^YKsr3)fSAfZb@VzoyxL%4Z2H}qtCi_7cmwK2yy1qfz9|Hgf@s2{# S_vp|70000}1CrI=t7;G!43&?p{ zS^vL=aaN>&O!znXmdqrA%k z#cZ=!M9=CRd|I2Nqp0=5L6Fm^C&qihN0a#pT8C0Q>nrv()t78!mJt4+8`gcn=vH0C zsm8>bk1ahDgB7}5e|%!(dAzA*g53_+1xig}(;CjSwU}<;aoW}qb+9#XU!z5f(!42q zTDCJRbrWJcDX6nBbDm^-_)Svzopr0Ojsv-~a#s literal 0 HcmV?d00001 diff --git a/images/80_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.png b/images/80_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.png new file mode 100644 index 0000000000000000000000000000000000000000..db594d29e63db43415b9fe07497a919701387e9a GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!3HFCgzU0`RKBN+V@SoV+f;mb z@b_>#|9|F}b!=XYXAC6RK0OakQP`9iVkq*&H%h{){>p_wXLnv#(=GE~wM|Nu*f2ww zL8?NooBMw7SpxyKsmqzuB~0#o3%7YVYy+UfNeEtm z9>*y<0w1^2dHBNy9jT{;1d&p706C^BRry8e7M(Ypq~h%Dvrh~ji?r?%0@a>-D_tjC z8164Mz9*q2O}KxW3%6(|uxTT;Xe+R7J*lTJA-XX=IP4Lqr$-cM#6)_Ujg1(Ht86$n zVrz~XLeY+;D2-d5C$z@O(&#(Yo(Kfbl{FIUSSnl0bmX(FUoLxH{;lwQN)n^=z0+g) oCn=SexD({?gQ6&kq9_M>0(le!zZ(mkjQ{`u07*qoM6N<$f+UZHHvj+t literal 0 HcmV?d00001 diff --git a/images/82_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.png b/images/82_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae11a82662bd20eadcfc5b478fbda3a8634455c GIT binary patch literal 270 zcmV+p0rCEcP)#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=K^Uur)C8jz zj#@}t3z5Z=4{XLzXR>zA|Mx$?Q{O_6W$2obExYjM1$8Y%=c8LDx}cYK7Q%dsY#F|I zr^rHFmeI^YT$a()LQvc_ojrttRhCbotq+j_D4409XbwDkfEB~?rpx9f)X(_%@X)nz z_!i!DZ_^AL3xUnVSHOmF%Px9Z$UL*Ti-BQcr6|zS6`)2c4Sn{Ud1gy5Lw!9P0Gwr& UsV_#3aR2}S07*qoM6N<$f}QVpd;kCd literal 0 HcmV?d00001 diff --git a/images/83_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.png b/images/83_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ec8377b2af339a6060c7b647c278d72cd48c7f GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAI4W2HJAr-fh6Beld2+904Kj_cK zLr?zx7OG{Q6~(mqMe@!-CSTpg=(e*;SbP0l+XkKiBCwB literal 0 HcmV?d00001 diff --git a/images/84_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.png b/images/84_anifire.creator.components.DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.png new file mode 100644 index 0000000000000000000000000000000000000000..2b128220f4ee354550699cc730ce79991641892f GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QWc&qjv*Ddk`p9K8rE)nVB=i7 zkKrcU26NGW?2?C~=I1+XV+?S}1CrGd^P7vv73UuK5 z(5*X1ULgF>{D?Q=(Ixlq+s7ZUw~1#wqUM|bux7_mg~mNkzWnDdcH($+uSa6W)8~#7 zNAmo<6}0X}h`saU0rkB8b{VxYTuzK`J>{YN1&|za0KViBg<6HkJbB4qq z8Qx9IDdI&k>)9n8`qCmy1TU4ZKO-h~{Pjbz-^azo8d&^AcRsrMXVD!YFVdQ&MBb@0Bb^RmH+?% literal 0 HcmV?d00001 diff --git a/images/86_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.png b/images/86_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb644e1c67b97b1d4f46219d7f3d8f1df7e3202 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^x**KK1|+Sd9?b$$w>(`OLn>~)y&A}SSV4g8f!B%_ zPX{I;wS_?BH=%(=CFGFG8OH6(mXn@cDhoHeHvPZ%uaF(T8!zxN19dYnG`P74+Z)>_ zKet=_W#&HJCmv7c#M>Uaz9DG;x5BkY^R`~Nwf@lS4brxEUN+ejE@b}m?`GAM>cr5$ zPp=&N@W8`O=wIGmd82z#x5ehLvt}LOy%bl$IeUfghL&$dH7_py)(DKc~q~+ZFihhurHNQXZ$QtLvONp|aR+i$moYt0NwVYm-B3ll%7?S_6D0okf!BGkM z|MwSq{BKN+JCEJm!ugQQAC+%_ZV5O@Vu}JtwX`xd<^R1h+y9>`P5-|yH+Db|O;BNk zTJj)S4x&Nv04g9zv2j2Tv04Vwis*{sH7vd zAR)$LP|&_8x5Tg%Bz8RC*@3(Yf`G;7K?}nm--AK{q@Su5;|f|31~~?%j;a>p3R+M~ z2FW3-rJBX7a|5vY5|n2_p@8m4iY-n_%>I9+#1X5d)3YLQrU8m9Zca3CB- z*%pJc11UjEHH$$704YIB6N`xnTB=*THQ$G*prvXY_h!V9UGI`@@hG4s008$J|984T R!?6GW002ovPDHLkV1n6Yv)%vz literal 0 HcmV?d00001 diff --git a/images/88_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.png b/images/88_anifire.creator.components.ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.png new file mode 100644 index 0000000000000000000000000000000000000000..e91789dd5ab13e9d2cacf53283c89001dee07249 GIT binary patch literal 253 zcmV#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q@{Q48r~ zq3D9%{}Z0TsxHfrIhg@eyRU^DR*up!*C zi(VEo&us2uV3=4b3bb?usF6xTpFL-u+0x5UU(W^rXm=ZDceJ^z00000NkvXXu0mjf Db7^w| literal 0 HcmV?d00001 diff --git a/images/89_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.png b/images/89_anifire.creator.components.TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.png new file mode 100644 index 0000000000000000000000000000000000000000..55cfacd0d2b9995a503bed05e0a636c9e906bfbb GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz1!3HFCgzU0`RK2H*V@SoV(&t|N zH9s}&boH{Ax|}>y7^clU``NMWpuvfNRg!FnLri&|)B+ho@}@agHaKQV=qwICY9O#+ zRieQAZF`OP000>X1^@s6#OZ}&0009hNklzb$KqwRn#@0pp00RbHBvBG;Ufz?Q2}AIabl@<2Gv}N;bLY-{CesD2QmMEF0l`MO zTuw^=m;DCE-KPI-A|4W~3(A%ATbaC}rUDcSg;^1$E6ueubd3ghCg~_@;?m*a;d(qC zUszsVz9AGFdVJ?{IqaZR+mh&@KR3YM-kwvq2TCM@L?jZKktv5@@Dw;O51zKDgZ=&e z(X(Q-6pO`AT7W-Zuh*>^4hZZT1~`5VJmLRVTKK@PK7g^avoofrC>#zyp$QE81-*i9 z!DaTn9LM}1_XWosk?c*3teE%1S#ekN_K0=LKGS(N7?rv>^Y2YC0q05X3E3(}sWJbd7% zS63_R`MTi2>gwt%y_}hXHNjJXU0@Mh<@cJNBIuxp5B+NQ#L!Z9TQCy}go?xS%Y>-7ANK{b^YinIlH1RX1ON|w=%^o|pSixy+Xa0B{0k;2nDhC3FSob1 z-^l|Sm!~4bCnJMzjAI@=@+Yb9qn~lwt?l5G0^&Hg4ui*nX~84GL-x}gpCfOax_S5XbuneFWd2g(_H~5)ltxn&L(2hg8#AshG5z+Sps~B0YM{19->-c*s%k5`>;S zSiOk1P+wr(Nt?2!yG=I~QOLj$lI+ZH_CNcPNW>P~U$lG$IfY{#=PPaVSHS?CfRX+G zz#tbSkt^-~GUMfvCW(OMGO9A$;wSNbmeF99U?1u`bH={IVEVt=JgB~1WzCmPZuDtn z@mFtS=J5WkOYTtLwqTqrYe^oIxe!@!0&0D9H(eSO<}m(2-5-#)wL+m@b)-^%i_}go z@Dtj@BEX;zJ3C&UX*(QR2_{@u6elQWREIoBsgD*y!Q4(NJ-%L_lNP=ax5q}NPo6E; z$Vk4!`}DibiUs(iwkz?WS}I8gzIJo?u6cyj(=#`;V#;nBrT+b80n@5M-yuIUfIux6 z1ikImYdGow;cvBKRl~REsCxt;s_q literal 0 HcmV?d00001 diff --git a/images/92_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.png b/images/92_anifire.creator.components.TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.png new file mode 100644 index 0000000000000000000000000000000000000000..1b43d156ac905e169963bb88cd33290f9e643753 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAI3q4&NLn>}1CrGd^W)R;||9{_s zW_JE_m+v&S^UMERzLQmf=ZU$)Mn+#9hvN>G3nu;MG}+8>cGG8tuPV__Ygk1hS*`>) zbg6Fmp`?C-$KhdLS^&cdgB&~7l}lCft{vuan#|2`YOnjYj!RRfF&Iq<*bt=bsh#jy zGgMb`iqOWNQ)W$j(;j6sKkX>r8SxuUlcV;{;NN$hP7}-5$v`hx^8QH(wTA~tjDB*zFkH>!}snw*uJasR-n+a$N5PabHY-28? zy!OHGxOtybPbON(+~@z&|9HhFHEmAMqAkq(=f9Yt7k)_1V4*_E=hRaz(OwN=2bZmQ z=h1m_bN+j-waeKrFm*=wo_YM>%iXXYU*jic-`(^5_gv-R*tOptL~hvo+JRl_=bgws z-*&c!U6~iSKg55MZNUPwHi6uRUvt-6?JCT)xG!LMtYpHw9`20vH~Kr=C2#+VaXRjC zJw?bAXtTDw^3RQ$MH?foO|?uZoO}FO@Z2A>bnWj8%P000>X1^@s6#OZ}&0004gNkl8up2g!rfF^~+Vw@9wiKR zqzm``fv$4{YT8VU;aDu&4API^g6T~mK!q2{u>i@Uiy(9G`G6t|P%Ogm5hxDG z3?h6%hZ0AiNF!FW!=^?5IcB#JXAvkdz>+DksYrIog#T}UeEXksWIM6GIR{SOpma{G zFSb6s{T~EC7KtzHBT5fAAAvFyF^ba;ZuyT4W?Vf>lqDeZL6#gRq)>JF)c>D<{Y0_k z&%b~FP1epK#**U!j?}!-k*Bq^#9q{&k>Dr#SJ*0kdoucD8J6ZD>PEdE|M&PmtFKKh3QkD(5q&o hTOCig)(S1!T>!@O!1kWeu_XWi002ovPDHLkV1iE5&aMCe literal 0 HcmV?d00001 diff --git a/images/96_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.png b/images/96_anifire.creator.components.CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.png new file mode 100644 index 0000000000000000000000000000000000000000..90e6940aa99e42f4961bf52867e551113cc22671 GIT binary patch literal 436 zcmV;l0ZaagP)D_-) z!SQ!5!Foxy5Z$tmzkh;#fE;w*C$@vdKyv7ol4K#s5M;3P)nmM_1~~%Vfw+Q~0h?xY z%ZN>Z$d-b9jm?n^_!0>&P569@44QAAC2S#b(nk&!P`<+jkoAMI55Bm>un-x55(TLi zBC7+15J?u|G6T?`W2=8DSiTDk(%NTs3Ao-6EH e(#x=_o(%wDxVsCkV8)mL0000}1CrI=hxTIQWCouo| z_I~jNGg-s(JpVh+P!m&(X4rnhw9wvH*WuH}nl4>~(q40hT{{@NzAOKHWalHZq^-)1 zNy=mLf<-e`ckJ=+QFURJwUB4vRlY7%VDr$MXG2KKX`$lZ6|BY2E7%3po6AiB_X>%a6;GwFDD4sS z_li3d-4LY8$^4XK+69yIJ%?Ank(#h*-m|G0n=raaS LS3j3^P6 zLZMJ76q4b+H(||TEx6#?h$Vbo*C#CJX>4JQ(iC1j1K~&Q;iH#8c=CmSU1@EL^MTk2 z3D*bH;#WxQw8TI=wlnnB3o)?FY(7tG%ixyIXj#NSFUz35{6JR=L3q?c6nx>$ zi~phvdg*5&2!JeASw4k+7J|V0pWpwRterzY3t^VJY+gb?3t=Gnz-Ibd2m-~&cGK5F z5LkHgB7H3+*3zMCAzg!%Sj(tlAt{zoY$2(ZQDh-GmXU2Cxt5V-AtjcPY$2tVjW#i8 z(M)^=YzVjPqL+otGn=~@7$#PV0xewuYNXQ8XU~~uw)8U8*Ruftu=W@SQ; + + private var _allowInsecureDomainParameters:Vector.; + + public function _creator_mx_managers_SystemManager() + { + super(); + } + + override public function callInContext(param1:Function, param2:Object, param3:Array, param4:Boolean = true) : * + { + if(param4) + { + return param1.apply(param2,param3); + } + param1.apply(param2,param3); + } + + override public function create(... rest) : Object + { + if(rest.length > 0 && !(rest[0] is String)) + { + return super.create.apply(this,rest); + } + var _loc2_:String = rest.length == 0?"creator":String(rest[0]); + var _loc3_:Class = Class(getDefinitionByName(_loc2_)); + if(!_loc3_) + { + return null; + } + var _loc4_:Object = new _loc3_(); + if(_loc4_ is IFlexModule) + { + IFlexModule(_loc4_).moduleFactory = this; + } + if(rest.length == 0) + { + Singleton.registerClass("mx.core::IEmbeddedFontRegistry",Class(getDefinitionByName("mx.core::EmbeddedFontRegistry"))); + EmbeddedFontRegistry.registerFonts(this.info()["fonts"],this); + } + return _loc4_; + } + + override public function info() : Object + { + if(!this._info) + { + this._info = { + "applicationComplete":"onApplicationComplete()", + "backgroundAlpha":"0", + "backgroundColor":"0xFDFDFD", + "cdRsls":[[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/framework_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437","SHA-256",true,true,"default"),new RSLData("framework_4.6.0.23201.swz","","abd49354324081cebb8f60184cf5fee81f0f9298e64dbec968c96d68fe16c437","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","8f903698240fe799f61eeda8595181137b996156bb176da70ad6f41645c64c74","SHA-256",true,true,"default"),new RSLData("textLayout_2.0.0.232.swz","","8f903698240fe799f61eeda8595181137b996156bb176da70ad6f41645c64c74","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/spark_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","4bae91dbaef0ceec0fce5505d96ddea865edbfc14dd96e89fb54de12f58432eb","SHA-256",true,true,"default"),new RSLData("spark_4.6.0.23201.swz","","4bae91dbaef0ceec0fce5505d96ddea865edbfc14dd96e89fb54de12f58432eb","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/sparkskins_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","84d36bdf5e2577bfb0b8ce6a12a8646bb1aadddd24c92e5c12d157d44ad7ce61","SHA-256",true,true,"default"),new RSLData("sparkskins_4.6.0.23201.swz","","84d36bdf5e2577bfb0b8ce6a12a8646bb1aadddd24c92e5c12d157d44ad7ce61","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/rpc_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","98eeca3e014a0fa3c4c613006bdcea12da3beace6a8c9eccdde2e07cb486bab5","SHA-256",true,true,"default"),new RSLData("rpc_4.6.0.23201.swz","","98eeca3e014a0fa3c4c613006bdcea12da3beace6a8c9eccdde2e07cb486bab5","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/mx_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","d888aee0ce49f58a35c32eb138edd00f0d6b9fae68b78d7eb83932c09ef0b6f1","SHA-256",true,true,"default"),new RSLData("mx_4.6.0.23201.swz","","d888aee0ce49f58a35c32eb138edd00f0d6b9fae68b78d7eb83932c09ef0b6f1","SHA-256",true,true,"default")]], + "compiledLocales":["en_US"], + "compiledResourceBundleNames":["SharedResources","collections","components","containers","controls","core","effects","formatters","layout","skins","sparkEffects","styles","textLayout"], + "creationPolicy":"auto", + "currentDomain":ApplicationDomain.currentDomain, + "fonts":{"StudioSparkMain":{ + "regular":true, + "bold":true, + "italic":true, + "boldItalic":false + }}, + "frameRate":"24", + "height":"600", + "mainClassName":"creator", + "mixins":["_creator_FlexInit","_creator_Styles","mx.managers.systemClasses.ActiveWindowManager","mx.messaging.config.LoaderConfig"], + "placeholderRsls":[[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/charts_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","b07e6a4389510e372fc066449e5bcca0f689a3c5e51b5aae55e4a0eeae7f80a6","SHA-256",true,true,"default"),new RSLData("charts_4.6.0.23201.swz","","b07e6a4389510e372fc066449e5bcca0f689a3c5e51b5aae55e4a0eeae7f80a6","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/spark_dmv_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","d38dbc462676d679b79eb7d46887d34b5b33dfe9065751946ea104fd387ec69c","SHA-256",true,true,"default"),new RSLData("spark_dmv_4.6.0.23201.swz","","d38dbc462676d679b79eb7d46887d34b5b33dfe9065751946ea104fd387ec69c","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/osmf_1.0.0.16316.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","b63185fca5d2bdbb568593f2bf232e87e5a20a7ea2ce2e26671d159838d598ed","SHA-256",true,true,"default"),new RSLData("osmf_1.0.0.16316.swz","","b63185fca5d2bdbb568593f2bf232e87e5a20a7ea2ce2e26671d159838d598ed","SHA-256",true,true,"default")],[new RSLData("http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/advancedgrids_4.6.0.23201.swz","http://fpdownload.adobe.com/pub/swz/crossdomain.xml","529c81ac00092e51dcd0016be8ba25f6d54c55dd9a3a94f9a67d25a3d1ea6015","SHA-256",true,true,"default"),new RSLData("advancedgrids_4.6.0.23201.swz","","529c81ac00092e51dcd0016be8ba25f6d54c55dd9a3a94f9a67d25a3d1ea6015","SHA-256",true,true,"default")]], + "preinitialize":"initApp()", + "preloader":CCPreloader, + "usePreloader":true, + "width":"960" + }; + } + return this._info; + } + + override public function get preloadedRSLs() : Dictionary + { + if(this._preloadedRSLs == null) + { + this._preloadedRSLs = new Dictionary(true); + } + return this._preloadedRSLs; + } + + override public function allowDomain(... rest) : void + { + var _loc2_:* = null; + Security.allowDomain.apply(null,rest); + for(_loc2_ in this._preloadedRSLs) + { + if(_loc2_.content && "allowDomainInRSL" in _loc2_.content) + { + _loc2_.content["allowDomainInRSL"].apply(null,rest); + } + } + if(!this._allowDomainParameters) + { + this._allowDomainParameters = new Vector.(); + } + this._allowDomainParameters.push(rest); + addEventListener(RSLEvent.RSL_ADD_PRELOADED,this.addPreloadedRSLHandler,false,50); + } + + override public function allowInsecureDomain(... rest) : void + { + var _loc2_:* = null; + Security.allowInsecureDomain.apply(null,rest); + for(_loc2_ in this._preloadedRSLs) + { + if(_loc2_.content && "allowInsecureDomainInRSL" in _loc2_.content) + { + _loc2_.content["allowInsecureDomainInRSL"].apply(null,rest); + } + } + if(!this._allowInsecureDomainParameters) + { + this._allowInsecureDomainParameters = new Vector.(); + } + this._allowInsecureDomainParameters.push(rest); + addEventListener(RSLEvent.RSL_ADD_PRELOADED,this.addPreloadedRSLHandler,false,50); + } + + private function addPreloadedRSLHandler(param1:RSLEvent) : void + { + var _loc3_:Array = null; + var _loc2_:LoaderInfo = param1.loaderInfo; + if(!_loc2_ || !_loc2_.content) + { + return; + } + if(allowDomainsInNewRSLs && this._allowDomainParameters) + { + for each(_loc3_ in this._allowDomainParameters) + { + if("allowDomainInRSL" in _loc2_.content) + { + _loc2_.content["allowDomainInRSL"].apply(null,_loc3_); + } + } + } + if(allowInsecureDomainsInNewRSLs && this._allowInsecureDomainParameters) + { + for each(_loc3_ in this._allowInsecureDomainParameters) + { + if("allowInsecureDomainInRSL" in _loc2_.content) + { + _loc2_.content["allowInsecureDomainInRSL"].apply(null,_loc3_); + } + } + } + } + } +} diff --git a/scripts/anifire/assets/AssetImageLibrary.as b/scripts/anifire/assets/AssetImageLibrary.as new file mode 100644 index 0000000..8f20400 --- /dev/null +++ b/scripts/anifire/assets/AssetImageLibrary.as @@ -0,0 +1,97 @@ +package anifire.assets +{ + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import flash.display.DisplayObject; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + + public class AssetImageLibrary extends EventDispatcher + { + + private static var _instance:AssetImageLibrary; + + + private var _imageShelfArray:UtilHashArray; + + private var _requesters:UtilHashArray; + + private var enabled:Boolean = true; + + private var _timeStamp:String = ""; + + public function AssetImageLibrary(param1:IEventDispatcher = null) + { + super(param1); + this._imageShelfArray = new UtilHashArray(); + this._requesters = new UtilHashArray(); + } + + public static function get instance() : AssetImageLibrary + { + if(!_instance) + { + _instance = new AssetImageLibrary(); + } + return _instance; + } + + public function updateTimeStamp() : void + { + var _loc1_:Date = new Date(); + this._timeStamp = _loc1_.time.toString(); + } + + public function requestImage(param1:String, param2:String, param3:DisplayObject) : Number + { + var _loc4_:UtilHashArray = null; + var _loc5_:Number = NaN; + var _loc6_:AssetImageShelf = null; + if(!this.enabled) + { + return 0; + } + if(param1 && param2 && param3) + { + _loc4_ = this._requesters.getValueByKey(param2); + if(_loc4_ == null) + { + _loc4_ = new UtilHashArray(); + this._requesters.push(param2,_loc4_); + } + _loc5_ = _loc4_.getValueByKey(param1); + _loc5_++; + _loc4_.push(param1,_loc5_); + _loc6_ = this._imageShelfArray.getValueByKey(param1); + if(_loc6_ == null) + { + _loc6_ = new AssetImageShelf(); + this._imageShelfArray.push(param1,_loc6_); + } + if(_loc6_.length < _loc5_) + { + _loc6_.addImage(param3); + return -_loc5_; + } + return _loc5_; + } + throw new Error("Error, fail to request image: " + param1); + } + + public function borrowImage(param1:String, param2:Number, param3:String) : AssetImageLibraryObject + { + if(!this.enabled) + { + return null; + } + param3 = param3 + this._timeStamp; + var _loc4_:AssetImageShelf = this._imageShelfArray.getValueByKey(param1); + if(_loc4_) + { + return _loc4_.getImage(param2,param3); + } + UtilErrorLogger.getInstance().error("no image shelf found on library: " + param1); + throw new Error("Error, no image shelf found on library: " + param1); + } + } +} diff --git a/scripts/anifire/assets/AssetImageLibraryObject.as b/scripts/anifire/assets/AssetImageLibraryObject.as new file mode 100644 index 0000000..8796aeb --- /dev/null +++ b/scripts/anifire/assets/AssetImageLibraryObject.as @@ -0,0 +1,42 @@ +package anifire.assets +{ + import flash.display.DisplayObject; + + public class AssetImageLibraryObject + { + + + private var _image:DisplayObject; + + private var _borrowerId:String; + + private var _imageId:Number; + + public function AssetImageLibraryObject(param1:DisplayObject, param2:Number) + { + super(); + this._image = param1; + this._imageId = param2; + } + + public function get imageId() : Number + { + return this._imageId; + } + + public function get borrowerId() : String + { + return this._borrowerId; + } + + public function set borrowerId(param1:String) : void + { + this._borrowerId = param1; + } + + public function get image() : DisplayObject + { + return this._image; + } + } +} diff --git a/scripts/anifire/assets/AssetImageShelf.as b/scripts/anifire/assets/AssetImageShelf.as new file mode 100644 index 0000000..4f4960e --- /dev/null +++ b/scripts/anifire/assets/AssetImageShelf.as @@ -0,0 +1,70 @@ +package anifire.assets +{ + import anifire.util.UtilErrorLogger; + import flash.display.DisplayObject; + + public class AssetImageShelf + { + + + private var _index:Number = 0; + + private var _images:Array; + + public function AssetImageShelf() + { + super(); + this._images = new Array(); + } + + public function addImage(param1:DisplayObject) : void + { + this._images.push(new AssetImageLibraryObject(param1,this._images.length + 1)); + } + + public function get length() : Number + { + return this._images.length; + } + + public function getImage(param1:Number, param2:String) : AssetImageLibraryObject + { + var _loc3_:Number = NaN; + var _loc4_:Number = NaN; + var _loc5_:AssetImageLibraryObject = null; + if(this._images.length > 0) + { + _loc3_ = 0; + _loc4_ = 0; + if(param1 > 0 && param1 <= this._images.length) + { + _loc5_ = AssetImageLibraryObject(this._images[param1 - 1]); + if(_loc5_.borrowerId != param2) + { + _loc5_.borrowerId = param2; + return _loc5_; + } + } + _loc4_ = 0; + while(_loc4_ < this._images.length) + { + _loc3_ = this._index + _loc4_; + if(_loc3_ >= this._images.length) + { + _loc3_ = _loc3_ - this._images.length; + } + _loc5_ = AssetImageLibraryObject(this._images[_loc3_]); + if(_loc5_.borrowerId != param2) + { + this._index = _loc3_ + 1; + _loc5_.borrowerId = param2; + return _loc5_; + } + _loc4_++; + } + } + UtilErrorLogger.getInstance().error("no image found on shelf: " + param1); + throw new Error("Error, no image found on shelf: " + param1); + } + } +} diff --git a/scripts/anifire/cc/interfaces/ICcComponent.as b/scripts/anifire/cc/interfaces/ICcComponent.as new file mode 100644 index 0000000..f40141a --- /dev/null +++ b/scripts/anifire/cc/interfaces/ICcComponent.as @@ -0,0 +1,37 @@ +package anifire.cc.interfaces +{ + public interface ICcComponent + { + + + function get themeId() : String; + + function get type() : String; + + function get url() : String; + + function get x() : Number; + + function get y() : Number; + + function get xscale() : Number; + + function get yscale() : Number; + + function get rotation() : Number; + + function get id() : String; + + function get colors() : Array; + + function set x(param1:Number) : void; + + function set y(param1:Number) : void; + + function set xscale(param1:Number) : void; + + function set yscale(param1:Number) : void; + + function set rotation(param1:Number) : void; + } +} diff --git a/scripts/anifire/cc/interfaces/ICcPairComponent.as b/scripts/anifire/cc/interfaces/ICcPairComponent.as new file mode 100644 index 0000000..1ac4d68 --- /dev/null +++ b/scripts/anifire/cc/interfaces/ICcPairComponent.as @@ -0,0 +1,15 @@ +package anifire.cc.interfaces +{ + public interface ICcPairComponent + { + + + function get offset() : Number; + + function get split() : Boolean; + + function set offset(param1:Number) : void; + + function set split(param1:Boolean) : void; + } +} diff --git a/scripts/anifire/cc/model/CcComponentModel.as b/scripts/anifire/cc/model/CcComponentModel.as new file mode 100644 index 0000000..0a0ce8c --- /dev/null +++ b/scripts/anifire/cc/model/CcComponentModel.as @@ -0,0 +1,243 @@ +package anifire.cc.model +{ + import anifire.cc.interfaces.ICcComponent; + import anifire.cc.interfaces.ICcPairComponent; + import anifire.component.CcActionLoader; + import anifire.models.creator.CCCharActionComponentModel; + import anifire.models.creator.CCCharacterActionModel; + import flash.events.Event; + import flash.events.EventDispatcher; + + public class CcComponentModel extends EventDispatcher implements ICcComponent, ICcPairComponent + { + + + private var _themeId:String; + + private var _type:String; + + private var _url:String; + + private var _x:Number = 0; + + private var _y:Number = 0; + + private var _xscale:Number = 1; + + private var _yscale:Number = 1; + + private var _rotation:Number = 0; + + private var _offset:Number = 0; + + private var _id:String; + + private var _split:Boolean = true; + + private var _colors:Array; + + public function CcComponentModel() + { + this._colors = new Array(); + super(); + } + + public static function createModelByType(param1:String) : CcComponentModel + { + if(param1 == "mouth") + { + return new CcMouthModel(); + } + return new CcComponentModel(); + } + + public function initByXml(param1:XML) : void + { + this._themeId = param1.@theme_id; + this._type = param1.@type; + this._x = Number(param1.@x); + this._y = Number(param1.@y); + this._xscale = Number(param1.@xscale); + this._yscale = Number(param1.@yscale); + this._rotation = Number(param1.@rotation); + this._offset = Number(param1.@offset); + if(param1.hasOwnProperty("@split") && String(param1.@split) == "N") + { + this._split = false; + } + if(param1.hasOwnProperty("@id")) + { + this._id = String(param1.@id); + } + this._url = CcActionLoader.getStoreUrl(param1.@theme_id + "/" + param1.@type + "/" + param1.@path + ".swf"); + var _loc2_:* = param1.@theme_id + "." + param1.@type + "." + param1.@path + ".swf"; + if(param1.hasOwnProperty("@file")) + { + this._url = CcActionLoader.getStoreUrl(param1.@theme_id + "/" + param1.@type + "/" + param1.@path + "/" + param1.@file); + } + else if(param1.@type == "freeaction" && param1.@path != "default") + { + this._url = CcActionLoader.getStoreUrl(param1.@theme_id + "/" + param1.@type + "/default/" + param1.@path + ".swf"); + } + else + { + this._url = CcActionLoader.getStoreUrl(param1.@theme_id + "/" + param1.@type + "/" + param1.@path + "/" + "default.swf"); + } + } + + public function initByCACam(param1:CCCharActionComponentModel) : void + { + this._themeId = param1.theme_id; + this._type = param1.type; + this._x = param1.x; + this._y = param1.y; + this._xscale = param1.xscale; + this._yscale = param1.yscale; + this._rotation = param1.rotation; + this._offset = param1.offset; + this._split = param1.split; + if(param1.id) + { + this._id = param1.id; + } + if(param1.file) + { + this._url = CcActionLoader.getStoreUrl(param1.theme_id + "/" + param1.type + "/" + param1.folder + "/" + param1.file); + } + else if(param1.type == "freeaction" && param1.folder != "default") + { + this._url = CcActionLoader.getStoreUrl(param1.theme_id + "/" + param1.type + "/default/" + param1.folder + ".swf"); + } + else + { + this._url = CcActionLoader.getStoreUrl(param1.path); + } + } + + public function initByCam(param1:CCCharacterActionModel, param2:String) : void + { + var _loc3_:CCCharActionComponentModel = param1.getComponentByType(param2) as CCCharActionComponentModel; + this.initByCACam(_loc3_); + } + + public function initProperties(param1:String, param2:String, param3:Number, param4:Number, param5:Number, param6:Number, param7:Number, param8:Number, param9:Boolean) : void + { + this._id = param1; + this._type = param2; + this._x = param3; + this._y = param4; + this._xscale = param5; + this._yscale = param6; + this._rotation = param7; + this._offset = param8; + this._split = param9; + } + + public function initColors(param1:Array) : void + { + this._colors = param1; + } + + public function get x() : Number + { + return this._x; + } + + public function get y() : Number + { + return this._y; + } + + public function get xscale() : Number + { + return this._xscale; + } + + public function get yscale() : Number + { + return this._yscale; + } + + public function get rotation() : Number + { + return this._rotation; + } + + public function get offset() : Number + { + return this._offset; + } + + public function get split() : Boolean + { + return this._split; + } + + public function get id() : String + { + return this._id; + } + + public function get themeId() : String + { + return this._themeId; + } + + public function get type() : String + { + return this._type; + } + + public function get url() : String + { + return this._url; + } + + public function get colors() : Array + { + return this._colors; + } + + public function set x(param1:Number) : void + { + this._x = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set y(param1:Number) : void + { + this._y = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set xscale(param1:Number) : void + { + this._xscale = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set yscale(param1:Number) : void + { + this._yscale = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set rotation(param1:Number) : void + { + this._rotation = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set split(param1:Boolean) : void + { + this._split = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + + public function set offset(param1:Number) : void + { + this._offset = param1; + this.dispatchEvent(new Event(Event.CHANGE)); + } + } +} diff --git a/scripts/anifire/cc/model/CcMouthModel.as b/scripts/anifire/cc/model/CcMouthModel.as new file mode 100644 index 0000000..35128cd --- /dev/null +++ b/scripts/anifire/cc/model/CcMouthModel.as @@ -0,0 +1,43 @@ +package anifire.cc.model +{ + import anifire.core.CCLipSyncController; + import anifire.models.creator.CCCharacterActionModel; + + public class CcMouthModel extends CcComponentModel + { + + + private var _lipsyncMouthUrl:String; + + private var _talkMouthUrl:String; + + public function CcMouthModel() + { + super(); + } + + override public function initByXml(param1:XML) : void + { + super.initByXml(param1); + this._lipsyncMouthUrl = CCLipSyncController.getLipSyncMouthUrl(param1); + this._talkMouthUrl = CCLipSyncController.getDemoLipSyncMouthUrl(param1); + } + + override public function initByCam(param1:CCCharacterActionModel, param2:String) : void + { + super.initByCam(param1,param2); + this._lipsyncMouthUrl = CCLipSyncController.getLipSyncMouthUrlByCam(param1,param2); + this._talkMouthUrl = CCLipSyncController.getDemoLipSyncMouthUrlByCam(param1,param2); + } + + public function get lipsyncMouthUrl() : String + { + return this._lipsyncMouthUrl; + } + + public function get talkMouthUrl() : String + { + return this._talkMouthUrl; + } + } +} diff --git a/scripts/anifire/cc/view/CCHeadView.as b/scripts/anifire/cc/view/CCHeadView.as new file mode 100644 index 0000000..6f43c0c --- /dev/null +++ b/scripts/anifire/cc/view/CCHeadView.as @@ -0,0 +1,410 @@ +package anifire.cc.view +{ + import anifire.assets.AssetImageLibraryObject; + import anifire.cc.model.CcComponentModel; + import anifire.color.SelectedColor; + import anifire.component.ProcessRegulator; + import anifire.constant.CcLibConstant; + import anifire.interfaces.IRegulatedProcess; + import anifire.models.creator.CCBodyComponentModel; + import anifire.models.creator.CCCharActionComponentModel; + import anifire.models.creator.CCCharacterActionModel; + import anifire.models.creator.CCColor; + import anifire.util.UtilColor; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.IEventDispatcher; + + public class CCHeadView extends CcHeadComponent + { + + + private const STATE_LOADING:String = "STATE_LOADING"; + + private const STATE_LOADED:String = "STATE_LOADED"; + + private var _myActionModel:CCCharacterActionModel; + + private var _sceneId:String; + + private var _assetImageIdArray:UtilHashArray; + + private var _useImageLibrary:Boolean = false; + + private var _state:String; + + private var _containers:UtilHashArray; + + public function CCHeadView() + { + this._assetImageIdArray = new UtilHashArray(); + this._containers = new UtilHashArray(); + super(); + this.createComponentContainers(); + } + + private function createComponentContainers() : void + { + var _loc3_:Sprite = null; + var _loc1_:Array = CcLibConstant.GET_COMPONENT_ORDER_IN_HEAD; + this._containers = new UtilHashArray(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.length) + { + _loc3_ = new Sprite(); + _loc3_.name = _loc1_[_loc2_] + CcLibConstant.MC_NAME_EXT; + this.addChild(_loc3_); + this._containers.push(_loc3_.name,_loc3_); + _loc2_++; + } + } + + private function createFaceDecorationContainers() : void + { + var _loc1_:Sprite = null; + var _loc2_:* = null; + var _loc3_:Object = null; + var _loc4_:* = null; + var _loc5_:CCBodyComponentModel = null; + var _loc6_:Sprite = null; + if(this._myActionModel) + { + _loc1_ = this._containers.getValueByKey("facedecorationMC"); + if(_loc1_) + { + for(_loc2_ in this._myActionModel.components) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc2_) > -1) + { + _loc3_ = this._myActionModel.getComponentByType(_loc2_); + if(_loc3_) + { + for(_loc4_ in _loc3_) + { + _loc5_ = _loc3_[_loc4_] as CCBodyComponentModel; + if(_loc5_.id) + { + _loc6_ = new Sprite(); + _loc6_.name = _loc5_.id + CcLibConstant.MC_NAME_EXT; + _loc1_.addChild(_loc6_); + } + } + } + } + } + } + } + } + + public function initByCam(param1:CCCharacterActionModel, param2:String = null, param3:Boolean = false) : void + { + this._myActionModel = param1; + this._sceneId = param2; + this._useImageLibrary = param3; + } + + private function createAllComponents(param1:Boolean = false) : void + { + var _loc2_:CcComponent = null; + var _loc3_:* = null; + var _loc4_:ProcessRegulator = null; + var _loc5_:String = null; + var _loc6_:Object = null; + var _loc7_:* = null; + if(this._myActionModel) + { + _loc4_ = new ProcessRegulator(); + if(!param1) + { + _componentList.removeAll(); + } + for(_loc3_ in this._myActionModel.components) + { + _loc2_ = null; + _loc5_ = _loc3_; + if(CcLibConstant.ALL_HEAD_COMPONENT_TYPES.indexOf(_loc3_) >= 0) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc3_) > -1) + { + _loc6_ = this._myActionModel.getComponentByType(_loc3_); + for(_loc7_ in _loc6_) + { + if(_loc3_ == CcLibConstant.COMPONENT_TYPE_FACIAL_DECORATION && _loc6_[_loc7_].id) + { + _loc5_ = _loc6_[_loc7_].id; + } + _loc2_ = this.createComponentFromCam(_loc3_,_loc7_); + if(_loc2_) + { + _loc4_.addProcess(_loc2_ as IRegulatedProcess,Event.COMPLETE); + if(!param1) + { + _componentList.push(_loc5_,_loc2_); + } + } + } + } + else + { + _loc2_ = this.createComponentFromCam(_loc3_); + if(_loc2_) + { + _loc4_.addProcess(_loc2_ as IRegulatedProcess,Event.COMPLETE); + if(!param1) + { + _componentList.push(_loc5_,_loc2_); + } + } + } + } + } + _loc4_.addEventListener(Event.COMPLETE,this.onAllCcComponentCreated); + _loc4_.startProcess(); + } + } + + private function onAllCcComponentCreated(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onAllCcComponentCreated); + if(!this._useImageLibrary) + { + this.prepareImage(this._sceneId); + } + this._state = this.STATE_LOADED; + this.dispatchEvent(new Event(Event.COMPLETE)); + } + + override public function prepareImage(param1:String, param2:Boolean = true) : void + { + var i:uint = 0; + var sceneId:String = param1; + var isFirstBehaviour:Boolean = param2; + try + { + this._sceneId = sceneId; + this.borrowAllComponents(isFirstBehaviour); + i = 0; + while(i < _componentList.length) + { + this.addComponent(_componentList.getValueByIndex(i) as CcComponent); + i++; + } + this.setColors(); + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:prepareImage:" + sceneId,e); + return; + } + } + + private function createComponentFromCam(param1:String, param2:String = "") : CcComponent + { + var _loc4_:Object = null; + var _loc5_:String = null; + var _loc6_:Number = NaN; + var _loc7_:CcComponentModel = null; + var _loc3_:CcComponent = CcComponentFactory.create(param1); + if(this._useImageLibrary) + { + if(this._myActionModel) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + _loc4_ = this._myActionModel.getComponentByType(param1); + _loc5_ = _loc4_[param2].path; + } + else + { + _loc5_ = this._myActionModel.getComponentByType(param1).path; + } + _loc6_ = 0; + _loc6_ = CcImageLibrary.library.requestImage(_loc5_,this._sceneId,_loc3_); + if(_loc6_ > 0) + { + return null; + } + } + } + if(_loc3_) + { + _loc7_ = CcComponentModel.createModelByType(param1); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + _loc4_ = this._myActionModel.getComponentByType(param1); + _loc7_.initByCACam(_loc4_[param2] as CCCharActionComponentModel); + } + else + { + _loc7_.initByCam(this._myActionModel,param1); + } + _loc3_.init(_loc7_); + } + return _loc3_; + } + + override public function requestImage(param1:String) : void + { + var sceneId:String = param1; + try + { + if(this._useImageLibrary) + { + this._sceneId = sceneId; + this.createAllComponents(true); + } + else + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + return; + } + catch(e:Error) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:requestImage:" + sceneId,e); + return; + } + } + + override public function load() : void + { + if(this._state == this.STATE_LOADING) + { + if(this._useImageLibrary) + { + this.requestImage(this._sceneId); + } + return; + } + if(this._state == this.STATE_LOADED) + { + if(this._useImageLibrary) + { + this.requestImage(this._sceneId); + } + else + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + return; + } + this._state = this.STATE_LOADING; + this.createFaceDecorationContainers(); + this.createAllComponents(); + } + + private function borrowAllComponents(param1:Boolean = true) : void + { + var _loc2_:* = null; + var _loc3_:CcComponent = null; + var _loc4_:* = null; + var _loc5_:Object = null; + var _loc6_:String = null; + if(this._useImageLibrary) + { + if(this._myActionModel) + { + _componentList.removeAll(); + for(_loc2_ in this._myActionModel.components) + { + _loc3_ = null; + _loc4_ = _loc2_ = String(_loc2_); + if(CcLibConstant.ALL_HEAD_COMPONENT_TYPES.indexOf(_loc2_) >= 0) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc2_) > -1) + { + _loc5_ = this._myActionModel.components[_loc2_]; + for(_loc4_ in _loc5_) + { + _loc3_ = this.borrowComponentByCam(_loc2_,param1,_loc4_); + if(_loc3_) + { + _componentList.push(_loc4_,_loc3_); + } + } + } + else + { + _loc3_ = this.borrowComponentByCam(_loc2_,param1,this._myActionModel.getComponentByType(_loc2_).path); + if(_loc3_) + { + _componentList.push(_loc4_,_loc3_); + } + } + } + } + } + } + } + + private function borrowComponentByCam(param1:String, param2:Boolean, param3:String) : CcComponent + { + var _loc4_:CcComponent = null; + var _loc5_:Object = null; + var _loc6_:String = null; + var _loc7_:Object = null; + var _loc8_:AssetImageLibraryObject = null; + var _loc10_:CcComponentModel = null; + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + _loc7_ = this._myActionModel.getComponentByType(param1); + _loc6_ = _loc7_[param3].path; + } + else + { + _loc6_ = this._myActionModel.getComponentByType(param1).path; + } + var _loc9_:Number = 0; + if(!param2) + { + _loc9_ = this._assetImageIdArray.getValueByKey(_loc6_); + } + _loc8_ = CcImageLibrary.library.borrowImage(_loc6_,_loc9_,this._sceneId); + if(_loc8_) + { + this._assetImageIdArray.push(_loc6_,_loc8_.imageId); + _loc4_ = _loc8_.image as CcComponent; + if(_loc4_) + { + _loc10_ = CcComponentModel.createModelByType(param1); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + _loc10_.initByCACam(_loc7_[param3]); + } + else + { + _loc10_.initByCam(this._myActionModel,param1); + } + _loc4_.reset(_loc10_); + } + } + return _loc4_; + } + + public function restoreColors() : void + { + this.setColors(); + } + + override protected function setColors() : void + { + var _loc1_:* = null; + var _loc2_:CCColor = null; + var _loc3_:SelectedColor = null; + UtilColor.resetAssetPartsColor(this); + if(this._myActionModel) + { + for(_loc1_ in this._myActionModel.colorCodes) + { + _loc2_ = this._myActionModel.getColor(_loc1_); + _loc3_ = new SelectedColor(_loc2_.type,_loc2_.oc,_loc2_.dest); + changeColor(_loc3_,!!_loc2_.targetComponent?_loc2_.targetComponent:""); + } + } + } + } +} diff --git a/scripts/anifire/cc/view/CcComponent.as b/scripts/anifire/cc/view/CcComponent.as new file mode 100644 index 0000000..eafdf3e --- /dev/null +++ b/scripts/anifire/cc/view/CcComponent.as @@ -0,0 +1,310 @@ +package anifire.cc.view +{ + import anifire.cc.interfaces.ICcComponent; + import anifire.color.SelectedColor; + import anifire.component.CcComponentLoader; + import anifire.interfaces.IRegulatedProcess; + import anifire.util.UtilColor; + import anifire.util.UtilCrypto; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import anifire.util.UtilPlain; + import flash.display.BlendMode; + import flash.display.DisplayObject; + import flash.display.Loader; + import flash.display.MovieClip; + import flash.display.Shader; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.system.LoaderContext; + import flash.utils.ByteArray; + + public class CcComponent extends MovieClip implements IRegulatedProcess + { + + + private var GoColorMapShaderClass:Class; + + private var _loader:Loader; + + private var _model:ICcComponent; + + private var _customColor:UtilHashArray; + + public function CcComponent() + { + this.GoColorMapShaderClass = CcComponent_GoColorMapShaderClass; + this._customColor = new UtilHashArray(); + super(); + } + + public function startProcess(param1:Boolean = false, param2:Number = 0) : void + { + this.loadComponent(); + } + + public function get model() : ICcComponent + { + return this._model; + } + + protected function get loader() : Loader + { + return this._loader; + } + + public function init(param1:ICcComponent) : void + { + if(this._model is IEventDispatcher) + { + IEventDispatcher(this._model).removeEventListener(Event.CHANGE,this.onModelChange); + } + this._model = param1; + if(this._model is IEventDispatcher) + { + IEventDispatcher(this._model).addEventListener(Event.CHANGE,this.onModelChange); + } + } + + private function onModelChange(param1:Event) : void + { + this.setProperties(); + } + + public function loadComponent() : void + { + var _loc1_:CcComponentLoader = this.getComponentLoader(); + if(_loc1_) + { + _loc1_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc1_.load(); + } + } + + public function destroy(param1:Boolean = true) : void + { + if(this.loader) + { + this.loader.unloadAndStop(param1); + } + } + + protected function getComponentLoader() : CcComponentLoader + { + var _loc1_:CcComponentLoader = null; + if(this.model) + { + _loc1_ = CcComponentLoader.getComponentLoader(this.model.url,this.model.url); + } + return _loc1_; + } + + private function onCcComponentLoaded(param1:Event) : void + { + var componentLoader:CcComponentLoader = null; + var e:Event = param1; + try + { + componentLoader = CcComponentLoader(e.target); + if(componentLoader) + { + componentLoader.removeEventListener(e.type,this.onCcComponentLoaded); + this.loadFromBytes(componentLoader.swfBytes); + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcComponent:onCcComponentLoaded",e); + return; + } + } + + public function loadFromBytes(param1:ByteArray, param2:Boolean = false) : void + { + var _loc3_:ByteArray = null; + var _loc4_:LoaderContext = null; + var _loc5_:UtilCrypto = null; + if(param1) + { + _loc3_ = param1; + if(param2) + { + _loc3_ = new ByteArray(); + param1.readBytes(_loc3_); + _loc3_.position = 0; + param1.position = 0; + _loc5_ = new UtilCrypto(); + _loc5_.decrypt(_loc3_); + } + _loc4_ = new LoaderContext(); + _loc4_.allowCodeImport = true; + this._loader = new Loader(); + this._loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onImageLoaded); + this._loader.loadBytes(_loc3_,_loc4_); + } + } + + private function onImageLoaded(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onImageLoaded); + this.addLoader(); + this.setProperties(); + this.setColors(); + this.onReady(); + } + + public function reset(param1:ICcComponent) : void + { + this._model = param1; + this.setProperties(); + this.setColors(); + } + + protected function addLoader() : void + { + addChild(this._loader); + } + + protected function setProperties() : void + { + if(this._loader && this._model) + { + this._loader.x = this._model.x; + this._loader.y = this._model.y; + this._loader.getChildAt(0).scaleX = this._model.xscale; + this._loader.getChildAt(0).scaleY = this._model.yscale; + this._loader.getChildAt(0).rotation = this._model.rotation; + } + } + + protected function setColors() : void + { + var _loc1_:int = 0; + var _loc2_:Object = null; + if(this._model && this._model.colors) + { + _loc1_ = 0; + while(_loc1_ < this._model.colors.length) + { + _loc2_ = this._model.colors[_loc1_] as Object; + this.updateColor(_loc2_); + _loc1_++; + } + } + } + + private function updateColor(param1:Object) : void + { + var _loc2_:UtilHashArray = new UtilHashArray(); + var _loc3_:SelectedColor = new SelectedColor(param1["colorReference"],param1["originalColor"],param1["colorValue"]); + this.changeColor(_loc3_,param1["targetComponentId"]); + if(param1["originalColor"] != uint.MAX_VALUE) + { + this._customColor.push(_loc3_.areaName,_loc3_); + _loc2_.push("0x" + _loc3_.orgColor.toString(16),"0x" + _loc3_.dstColor.toString(16)); + } + if(_loc2_.length > 0) + { + this.changeColorForShader(_loc2_); + } + this.addColor(_loc3_.areaName,_loc3_.orgColor,_loc3_.dstColor); + } + + private function addColor(param1:String, param2:uint, param3:uint) : void + { + var _loc4_:SelectedColor = new SelectedColor(param1,param2,param3); + this._customColor.push(_loc4_.areaName,_loc4_); + } + + private function changeColor(param1:SelectedColor, param2:String = "") : Number + { + var _loc3_:DisplayObject = null; + if(param2 == "") + { + _loc3_ = this; + } + else + { + _loc3_ = UtilPlain.getInstance(this,param2); + } + var _loc4_:uint = UtilColor.setAssetPartColor(_loc3_,param1.areaName,param1.dstColor); + return _loc4_; + } + + private function changeColorForShader(param1:UtilHashArray) : Number + { + var _loc2_:Number = NaN; + var _loc8_:int = 0; + var _loc9_:int = 0; + var _loc12_:Number = NaN; + var _loc13_:Number = NaN; + var _loc14_:Number = NaN; + var _loc3_:Shader = new Shader(); + _loc3_.byteCode = new this.GoColorMapShaderClass(); + var _loc4_:Array = new Array(); + var _loc5_:Array = new Array(); + var _loc6_:Array = new Array(); + var _loc7_:UtilHashArray = new UtilHashArray(); + _loc8_ = 0; + while(_loc8_ < this._customColor.length) + { + if(SelectedColor(this._customColor.getValueByIndex(_loc8_)).orgColor != uint.MAX_VALUE) + { + _loc7_.push("0x" + SelectedColor(this._customColor.getValueByIndex(_loc8_)).orgColor.toString(16),SelectedColor(this._customColor.getValueByIndex(_loc8_)).dstColor); + } + _loc8_++; + } + _loc7_.insert(0,param1,true); + _loc9_ = 0; + while(_loc9_ < _loc7_.length) + { + if(uint(_loc7_.getKey(_loc9_)) == 0) + { + _loc7_.remove(_loc9_,1); + } + _loc9_++; + } + _loc9_ = 0; + while(_loc9_ < _loc7_.length) + { + _loc6_.push(uint(_loc7_.getKey(_loc9_))); + _loc12_ = uint(_loc7_.getValueByIndex(_loc9_)) >> 16 & 255; + _loc13_ = uint(_loc7_.getValueByIndex(_loc9_)) >> 8 & 255; + _loc14_ = uint(_loc7_.getValueByIndex(_loc9_)) & 255; + if(_loc9_ / 4 < 1) + { + _loc4_[_loc9_ * 4 + 0] = _loc12_ / 255; + _loc4_[_loc9_ * 4 + 1] = _loc13_ / 255; + _loc4_[_loc9_ * 4 + 2] = _loc14_ / 255; + } + else + { + _loc5_[_loc9_ % 4 * 4 + 0] = _loc12_ / 255; + _loc5_[_loc9_ % 4 * 4 + 1] = _loc13_ / 255; + _loc5_[_loc9_ % 4 * 4 + 2] = _loc14_ / 255; + } + _loc9_++; + } + _loc3_.data["colorValue0"].value = _loc4_; + _loc3_.data["colorValue1"].value = _loc5_; + _loc3_.data["colorKey"].value = _loc6_; + var _loc10_:Array = UtilPlain.getAllShaderObj(this); + var _loc11_:int = 0; + while(_loc11_ < _loc10_.length) + { + DisplayObject(_loc10_[_loc11_]).blendMode = BlendMode.NORMAL; + DisplayObject(_loc10_[_loc11_]).blendMode = BlendMode.SHADER; + DisplayObject(_loc10_[_loc11_]).visible = true; + DisplayObject(_loc10_[_loc11_]).blendShader = _loc3_; + _loc11_++; + } + return _loc2_; + } + + protected function onReady() : void + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + } +} diff --git a/scripts/anifire/cc/view/CcComponentFactory.as b/scripts/anifire/cc/view/CcComponentFactory.as new file mode 100644 index 0000000..b590dbd --- /dev/null +++ b/scripts/anifire/cc/view/CcComponentFactory.as @@ -0,0 +1,67 @@ +package anifire.cc.view +{ + import anifire.constant.CcLibConstant; + + public class CcComponentFactory + { + + + public function CcComponentFactory() + { + super(); + } + + public static function create(param1:String) : CcComponent + { + var _loc2_:CcComponent = null; + if(param1) + { + if(param1 == CcLibConstant.COMPONENT_TYPE_EYEBROW || param1 == CcLibConstant.COMPONENT_TYPE_GLASSES) + { + _loc2_ = new CcPairComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_EYEBROW + "Left" || param1 == CcLibConstant.COMPONENT_TYPE_GLASSES + "Left") + { + _loc2_ = new CcPairComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_EYEBROW + "Right" || param1 == CcLibConstant.COMPONENT_TYPE_GLASSES + "Right") + { + _loc2_ = new CcPairComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_HAIR) + { + _loc2_ = new CcHairComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_FRONT_HAIR || param1 == CcLibConstant.COMPONENT_TYPE_BACK_HAIR) + { + _loc2_ = new CcHairComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_FACIAL_DECORATION) + { + _loc2_ = new CcDecorationComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_EYE) + { + _loc2_ = new CcEyeComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_EYE + "Left" || param1 == CcLibConstant.COMPONENT_TYPE_EYE + "Right") + { + _loc2_ = new CcEyeComponent(); + } + else if(param1 == CcLibConstant.COMPONENT_TYPE_MOUTH) + { + _loc2_ = new CcMouthComponent(); + } + else + { + _loc2_ = new CcComponent(); + } + } + if(_loc2_) + { + _loc2_.name = param1; + } + return _loc2_; + } + } +} diff --git a/scripts/anifire/cc/view/CcComponent_GoColorMapShaderClass.as b/scripts/anifire/cc/view/CcComponent_GoColorMapShaderClass.as new file mode 100644 index 0000000..a945df3 --- /dev/null +++ b/scripts/anifire/cc/view/CcComponent_GoColorMapShaderClass.as @@ -0,0 +1,14 @@ +package anifire.cc.view +{ + import mx.core.ByteArrayAsset; + + public class CcComponent_GoColorMapShaderClass extends ByteArrayAsset + { + + + public function CcComponent_GoColorMapShaderClass() + { + super(); + } + } +} diff --git a/scripts/anifire/cc/view/CcDecorationComponent.as b/scripts/anifire/cc/view/CcDecorationComponent.as new file mode 100644 index 0000000..db18259 --- /dev/null +++ b/scripts/anifire/cc/view/CcDecorationComponent.as @@ -0,0 +1,21 @@ +package anifire.cc.view +{ + public class CcDecorationComponent extends CcComponent + { + + + public function CcDecorationComponent() + { + super(); + } + + override protected function setProperties() : void + { + super.setProperties(); + if(loader && this.model && this.model.id) + { + loader.name = this.model.id; + } + } + } +} diff --git a/scripts/anifire/cc/view/CcEyeComponent.as b/scripts/anifire/cc/view/CcEyeComponent.as new file mode 100644 index 0000000..0ca97b3 --- /dev/null +++ b/scripts/anifire/cc/view/CcEyeComponent.as @@ -0,0 +1,142 @@ +package anifire.cc.view +{ + import anifire.cc.interfaces.ICcPairComponent; + import anifire.constant.CcLibConstant; + import flash.display.DisplayObjectContainer; + + public class CcEyeComponent extends CcPairComponent + { + + + private var _leftSide:DisplayObjectContainer; + + private var _rightSide:DisplayObjectContainer; + + private var _lookAtCamera:Boolean = false; + + private var _supportLookAtCamera:Boolean = false; + + public function CcEyeComponent() + { + super(); + } + + override public function get leftSide() : DisplayObjectContainer + { + if(this._lookAtCamera && this._leftSide) + { + return this._leftSide; + } + return super.leftSide; + } + + override public function get rightSide() : DisplayObjectContainer + { + if(this._lookAtCamera && this._rightSide) + { + return this._rightSide; + } + return super.rightSide; + } + + public function get supportLookAtCamera() : Boolean + { + return this._supportLookAtCamera; + } + + public function get lookAtCamera() : Boolean + { + return this._lookAtCamera; + } + + public function set lookAtCamera(param1:Boolean) : void + { + if(this._lookAtCamera != param1) + { + this._lookAtCamera = param1; + } + } + + override protected function addLoader() : void + { + super.addLoader(); + if(this.model is ICcPairComponent) + { + if(ICcPairComponent(model).split) + { + this._leftSide = addDefinition(loader.contentLoaderInfo,this.name + CcLibConstant.LIB_LEFT + "_Cam"); + this._rightSide = addDefinition(loader.contentLoaderInfo,this.name + CcLibConstant.LIB_RIGHT + "_Cam"); + } + else + { + this._leftSide = this._rightSide = addDefinition(loader.contentLoaderInfo,this.name + "_Cam"); + } + this._supportLookAtCamera = this._leftSide != null; + } + if(this._leftSide && this._rightSide) + { + this.addChild(this._leftSide); + this.addChild(this._rightSide); + } + } + + override protected function setProperties() : void + { + var _loc1_:int = 0; + super.setProperties(); + if(this.model) + { + if(this.model is ICcPairComponent) + { + if(!ICcPairComponent(model).split) + { + if(!CcLibConstant.ALLOW_SHOW_DETAIL_FOR_PAIR(this.model.themeId)) + { + if(this.model.themeId) + { + return; + } + } + } + } + if(this._leftSide) + { + this._leftSide.x = this.model.x; + this._leftSide.y = this.model.y; + _loc1_ = 0; + while(_loc1_ < this._leftSide.numChildren) + { + this._leftSide.getChildAt(_loc1_).scaleX = this.model.xscale; + this._leftSide.getChildAt(_loc1_).scaleY = this.model.yscale; + this._leftSide.getChildAt(_loc1_).rotation = -this.model.rotation; + _loc1_++; + } + } + if(this._rightSide) + { + this._rightSide.x = this.model.x; + this._rightSide.y = this.model.y; + _loc1_ = 0; + while(_loc1_ < this._rightSide.numChildren) + { + this._rightSide.getChildAt(_loc1_).scaleX = this.model.xscale; + this._rightSide.getChildAt(_loc1_).scaleY = this.model.yscale; + this._rightSide.getChildAt(_loc1_).rotation = this.model.rotation; + _loc1_++; + } + } + if(this.model is ICcPairComponent) + { + if(this._leftSide) + { + this._leftSide.x = this._leftSide.x + ICcPairComponent(model).offset / 2; + } + if(this._rightSide) + { + this._rightSide.x = this._rightSide.x - ICcPairComponent(model).offset / 2; + } + } + } + } + } +} diff --git a/scripts/anifire/cc/view/CcHairComponent.as b/scripts/anifire/cc/view/CcHairComponent.as new file mode 100644 index 0000000..95e7e4a --- /dev/null +++ b/scripts/anifire/cc/view/CcHairComponent.as @@ -0,0 +1,96 @@ +package anifire.cc.view +{ + import anifire.constant.CcLibConstant; + import anifire.util.UtilErrorLogger; + import flash.display.DisplayObjectContainer; + import flash.display.LoaderInfo; + + public class CcHairComponent extends CcComponent + { + + + private var _frontHair:DisplayObjectContainer; + + private var _backHair:DisplayObjectContainer; + + public function CcHairComponent() + { + super(); + } + + public function get frontHair() : DisplayObjectContainer + { + return this._frontHair; + } + + public function get backHair() : DisplayObjectContainer + { + return this._backHair; + } + + override protected function addLoader() : void + { + super.addLoader(); + this._frontHair = this.addDefinitionFromParent(loader.contentLoaderInfo,CcLibConstant.COMPONENT_TYPE_FRONT_HAIR); + this._backHair = this.addDefinitionFromParent(loader.contentLoaderInfo,CcLibConstant.COMPONENT_TYPE_BACK_HAIR); + if(this._backHair) + { + this.addChild(this._backHair); + } + if(this._frontHair) + { + this.addChild(this._frontHair); + } + } + + override protected function setProperties() : void + { + super.setProperties(); + if(this.model) + { + if(this._frontHair) + { + this._frontHair.x = this.model.x; + this._frontHair.y = this.model.y; + this._frontHair.scaleX = this.model.xscale; + this._frontHair.scaleY = this.model.yscale; + this._frontHair.rotation = this.model.rotation; + } + if(this._backHair) + { + this._backHair.x = this.model.x; + this._backHair.y = this.model.y; + this._backHair.scaleX = this.model.xscale; + this._backHair.scaleY = this.model.yscale; + this._backHair.rotation = this.model.rotation; + } + } + } + + private function addDefinitionFromParent(param1:LoaderInfo, param2:String) : DisplayObjectContainer + { + var definition:Class = null; + var hair:DisplayObjectContainer = null; + var loaderinfo:LoaderInfo = param1; + var className:String = param2; + try + { + definition = loaderinfo.applicationDomain.getDefinition(className) as Class; + if(definition) + { + hair = new definition(); + hair.name = className; + return hair; + } + } + catch(e:ReferenceError) + { + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcHairComponent:addDefinitonFromParent",e); + } + return null; + } + } +} diff --git a/scripts/anifire/cc/view/CcHeadComponent.as b/scripts/anifire/cc/view/CcHeadComponent.as new file mode 100644 index 0000000..1d9bdbb --- /dev/null +++ b/scripts/anifire/cc/view/CcHeadComponent.as @@ -0,0 +1,642 @@ +package anifire.cc.view +{ + import anifire.assets.AssetImageLibraryObject; + import anifire.cc.interfaces.ICcComponent; + import anifire.cc.interfaces.ICcPairComponent; + import anifire.cc.model.CcComponentModel; + import anifire.color.SelectedColor; + import anifire.component.ProcessRegulator; + import anifire.constant.CcLibConstant; + import anifire.interfaces.IRegulatedProcess; + import anifire.interfaces.ISpeak; + import anifire.util.UtilColor; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import anifire.util.UtilPlain; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.MovieClip; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.utils.ByteArray; + + public class CcHeadComponent extends MovieClip + { + + + private const STATE_LOADING:String = "STATE_LOADING"; + + private const STATE_LOADED:String = "STATE_LOADED"; + + protected var _componentList:UtilHashArray; + + private var _charXml:XML; + + private var _sceneId:String; + + private var _assetImageIdArray:UtilHashArray; + + private var _useImageLibrary:Boolean = false; + + private var _state:String; + + private var _containers:UtilHashArray; + + public function CcHeadComponent() + { + this._componentList = new UtilHashArray(); + this._assetImageIdArray = new UtilHashArray(); + this._containers = new UtilHashArray(); + super(); + this.createComponentContainers(); + } + + private function createComponentContainers() : void + { + var _loc3_:Sprite = null; + var _loc1_:Array = CcLibConstant.GET_COMPONENT_ORDER_IN_HEAD; + this._containers = new UtilHashArray(); + var _loc2_:int = 0; + while(_loc2_ < _loc1_.length) + { + _loc3_ = new Sprite(); + _loc3_.name = _loc1_[_loc2_] + CcLibConstant.MC_NAME_EXT; + this.addChild(_loc3_); + this._containers.push(_loc3_.name,_loc3_); + _loc2_++; + } + } + + private function createFaceDecorationContainers() : void + { + var sprite:Sprite = null; + var node:XML = null; + var deco:Sprite = null; + if(this._charXml) + { + sprite = this._containers.getValueByKey("facedecorationMC"); + if(sprite) + { + for each(node in this._charXml..component.(@type == CcLibConstant.COMPONENT_TYPE_FACIAL_DECORATION)) + { + deco = new Sprite(); + deco.name = node.@id + CcLibConstant.MC_NAME_EXT; + sprite.addChild(deco); + } + } + } + } + + public function init(param1:XML, param2:String = null, param3:Boolean = false) : void + { + this._charXml = param1; + this._sceneId = param2; + this._useImageLibrary = param3; + } + + public function load() : void + { + try + { + if(this._state == this.STATE_LOADING) + { + if(this._useImageLibrary) + { + this.requestImage(this._sceneId); + } + return; + } + if(this._state == this.STATE_LOADED) + { + if(this._useImageLibrary) + { + this.requestImage(this._sceneId); + } + else + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + return; + } + this._state = this.STATE_LOADING; + this.createFaceDecorationContainers(); + this.createAllComponents(); + return; + } + catch(e:Error) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:load",e); + return; + } + } + + private function createAllComponents(param1:Boolean = false) : void + { + var _loc2_:XML = null; + var _loc3_:CcComponent = null; + var _loc4_:String = null; + var _loc5_:ProcessRegulator = null; + var _loc6_:String = null; + if(this._charXml) + { + _loc5_ = new ProcessRegulator(); + if(!param1) + { + this._componentList.removeAll(); + } + for each(_loc2_ in this._charXml..component) + { + _loc3_ = null; + _loc6_ = _loc4_ = String(_loc2_.@type); + if(CcLibConstant.ALL_HEAD_COMPONENT_TYPES.indexOf(_loc4_) >= 0) + { + if(_loc4_ == CcLibConstant.COMPONENT_TYPE_FACIAL_DECORATION) + { + _loc6_ = _loc6_ + _loc2_.@id; + } + _loc3_ = this.createComponentFromXml(_loc2_,_loc4_); + if(_loc3_) + { + _loc5_.addProcess(_loc3_ as IRegulatedProcess,Event.COMPLETE); + if(!param1) + { + this._componentList.push(_loc6_,_loc3_); + } + } + } + } + _loc5_.addEventListener(Event.COMPLETE,this.onAllCcComponentCreated); + _loc5_.startProcess(); + } + } + + private function onAllCcComponentCreated(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onAllCcComponentCreated); + if(!this._useImageLibrary) + { + this.prepareImage(this._sceneId); + } + this._state = this.STATE_LOADED; + this.dispatchEvent(new Event(Event.COMPLETE)); + } + + protected function addComponent(param1:CcComponent) : void + { + if(param1) + { + if(param1 is CcHairComponent) + { + this.addHairComponent(param1 as CcHairComponent); + } + else if(param1 is CcPairComponent) + { + this.addPairComponent(param1 as CcPairComponent); + } + else if(param1 is CcDecorationComponent) + { + this.addFaceDecoration(param1 as CcDecorationComponent); + } + else + { + this.addImage(param1,param1.name + CcLibConstant.MC_NAME_EXT); + } + } + } + + private function addFaceDecoration(param1:CcComponent) : void + { + var _loc2_:String = param1.model.id + CcLibConstant.MC_NAME_EXT; + this.addImage(param1,_loc2_); + } + + private function addHairComponent(param1:CcHairComponent) : void + { + var _loc2_:String = null; + var _loc3_:DisplayObjectContainer = null; + if(param1) + { + _loc2_ = CcLibConstant.COMPONENT_TYPE_HAIR + CcLibConstant.MC_NAME_EXT; + this.removeImage(_loc2_); + this.addImage(param1,_loc2_); + _loc2_ = CcLibConstant.COMPONENT_TYPE_FRONT_HAIR + CcLibConstant.MC_NAME_EXT; + this.removeImage(_loc2_); + _loc3_ = param1.frontHair; + if(_loc3_) + { + this.addImage(_loc3_,_loc2_); + } + _loc2_ = CcLibConstant.COMPONENT_TYPE_BACK_HAIR + CcLibConstant.MC_NAME_EXT; + this.removeImage(_loc2_); + _loc3_ = param1.backHair; + if(_loc3_) + { + this.addImage(_loc3_,_loc2_); + } + } + } + + private function addImage(param1:DisplayObject, param2:String) : void + { + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(this,param2); + if(_loc3_ && param1) + { + this.removeImage(param2); + _loc3_.addChild(param1); + return; + } + } + + private function removeImage(param1:String) : void + { + var _loc3_:Number = NaN; + var _loc4_:uint = 0; + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,param1); + if(_loc2_) + { + _loc3_ = _loc2_.numChildren; + _loc4_ = _loc3_; + while(_loc4_ > 0) + { + _loc2_.removeChildAt(_loc4_ - 1); + _loc4_--; + } + } + } + + private function addPairComponent(param1:CcPairComponent) : void + { + var _loc2_:String = null; + var _loc3_:DisplayObjectContainer = null; + var _loc4_:DisplayObjectContainer = null; + var _loc5_:String = null; + var _loc6_:String = null; + if(param1) + { + if(param1.name == CcLibConstant.COMPONENT_TYPE_GLASSES) + { + _loc3_ = param1.rightSide; + _loc5_ = "Right"; + _loc4_ = param1.leftSide; + _loc6_ = "Left"; + } + else + { + _loc3_ = param1.leftSide; + _loc5_ = "Left"; + _loc4_ = param1.rightSide; + _loc6_ = "Right"; + } + if(param1.model is ICcPairComponent && ICcPairComponent(param1.model).split) + { + if(_loc3_) + { + _loc2_ = param1.name + _loc5_ + CcLibConstant.MC_NAME_EXT; + this.addImage(_loc3_,_loc2_); + } + } + if(_loc4_) + { + _loc2_ = param1.name + _loc6_ + CcLibConstant.MC_NAME_EXT; + this.addImage(_loc4_,_loc2_); + } + } + } + + public function getComponent(param1:String) : CcComponent + { + var _loc2_:CcComponent = null; + if(this._componentList) + { + _loc2_ = this._componentList.getValueByKey(param1) as CcComponent; + } + return _loc2_; + } + + private function borrowComponent(param1:XML, param2:String, param3:Boolean) : CcComponent + { + var _loc4_:CcComponent = null; + var _loc5_:Object = null; + var _loc6_:String = null; + var _loc7_:AssetImageLibraryObject = null; + var _loc9_:CcComponentModel = null; + _loc6_ = param1.@theme_id + "." + param2 + "." + param1.@path + "." + param1.@file; + var _loc8_:Number = 0; + if(!param3) + { + _loc8_ = this._assetImageIdArray.getValueByKey(_loc6_); + } + _loc7_ = CcImageLibrary.library.borrowImage(_loc6_,_loc8_,this._sceneId); + if(_loc7_) + { + this._assetImageIdArray.push(_loc6_,_loc7_.imageId); + _loc4_ = _loc7_.image as CcComponent; + if(_loc4_) + { + _loc9_ = CcComponentModel.createModelByType(param1.@type); + _loc9_.initByXml(param1); + _loc4_.reset(_loc9_); + } + } + return _loc4_; + } + + private function createComponentFromXml(param1:XML, param2:String) : CcComponent + { + var _loc4_:String = null; + var _loc5_:Number = NaN; + var _loc6_:CcComponentModel = null; + var _loc3_:CcComponent = CcComponentFactory.create(param2); + if(this._useImageLibrary) + { + if(param1) + { + _loc4_ = param1.@theme_id + "." + param2 + "." + param1.@path + "." + param1.@file; + _loc5_ = 0; + _loc5_ = CcImageLibrary.library.requestImage(_loc4_,this._sceneId,_loc3_); + if(_loc5_ > 0) + { + return null; + } + } + } + if(_loc3_) + { + _loc6_ = CcComponentModel.createModelByType(param1.@type); + _loc6_.initByXml(param1); + _loc3_.init(_loc6_); + } + return _loc3_; + } + + public function get supportLookAtCamera() : Boolean + { + var _loc1_:CcEyeComponent = null; + if(this._componentList) + { + _loc1_ = this._componentList.getValueByKey("eye") as CcEyeComponent; + if(_loc1_) + { + return _loc1_.supportLookAtCamera; + } + } + return false; + } + + public function set useTalkMouth(param1:Boolean) : void + { + var _loc2_:CcMouthComponent = null; + if(this._componentList) + { + _loc2_ = this._componentList.getValueByKey("mouth") as CcMouthComponent; + if(_loc2_) + { + _loc2_.useTalkMouth = param1; + } + } + } + + public function get lookAtCamera() : Boolean + { + var _loc1_:CcEyeComponent = null; + if(this._componentList) + { + _loc1_ = this._componentList.getValueByKey("eye") as CcEyeComponent; + if(_loc1_) + { + return _loc1_.lookAtCamera; + } + } + return false; + } + + public function set lookAtCamera(param1:Boolean) : void + { + var _loc2_:CcEyeComponent = null; + if(this._componentList) + { + _loc2_ = this._componentList.getValueByKey("eye") as CcEyeComponent; + if(_loc2_) + { + _loc2_.lookAtCamera = param1; + this.addPairComponent(_loc2_); + this.setColors(); + UtilPlain.playFamily(_loc2_.leftSide); + UtilPlain.playFamily(_loc2_.rightSide); + } + } + } + + public function speak(param1:Number) : void + { + var _loc2_:ISpeak = null; + if(this._componentList) + { + _loc2_ = this._componentList.getValueByKey("mouth") as ISpeak; + if(_loc2_) + { + _loc2_.speak(param1); + } + } + } + + public function requestImage(param1:String) : void + { + var sceneId:String = param1; + try + { + if(this._useImageLibrary) + { + this._sceneId = sceneId; + this.createAllComponents(true); + } + else + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + return; + } + catch(e:Error) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:requestImage:" + sceneId,e); + return; + } + } + + private function borrowAllComponents(param1:Boolean = true) : void + { + var _loc2_:XML = null; + var _loc3_:CcComponent = null; + var _loc4_:String = null; + var _loc5_:String = null; + if(this._useImageLibrary) + { + if(this._charXml) + { + this._componentList.removeAll(); + for each(_loc2_ in this._charXml..component) + { + _loc3_ = null; + _loc5_ = _loc4_ = String(_loc2_.@type); + if(CcLibConstant.ALL_HEAD_COMPONENT_TYPES.indexOf(_loc4_) >= 0) + { + if(_loc4_ == CcLibConstant.COMPONENT_TYPE_FACIAL_DECORATION) + { + _loc5_ = _loc5_ + _loc2_.@id; + } + _loc3_ = this.borrowComponent(_loc2_,_loc4_,param1); + if(_loc3_) + { + this._componentList.push(_loc5_,_loc3_); + } + } + } + } + } + } + + public function setComponent(param1:ICcComponent, param2:ByteArray) : Boolean + { + var _loc4_:String = null; + var _loc5_:String = null; + var _loc6_:DisplayObjectContainer = null; + var _loc7_:Sprite = null; + var _loc8_:Sprite = null; + var _loc3_:CcComponent = CcComponentFactory.create(param1.type); + if(_loc3_) + { + _loc3_.init(param1); + _loc4_ = param1.type; + if(_loc4_ == "facedecoration") + { + _loc4_ = param1.id; + _loc5_ = param1.id + CcLibConstant.MC_NAME_EXT; + _loc6_ = UtilPlain.getInstance(this,_loc5_); + if(!_loc6_) + { + _loc7_ = this._containers.getValueByKey("facedecorationMC"); + if(_loc7_) + { + _loc8_ = new Sprite(); + _loc8_.name = _loc5_; + _loc7_.addChild(_loc8_); + } + } + } + this._componentList.push(_loc4_,_loc3_); + _loc3_.addEventListener(Event.COMPLETE,this.onComponentLoaded); + _loc3_.loadFromBytes(param2,true); + return true; + } + return false; + } + + private function onComponentLoaded(param1:Event) : void + { + var _loc2_:CcComponent = param1.target as CcComponent; + if(_loc2_) + { + _loc2_.removeEventListener(Event.COMPLETE,this.onComponentLoaded); + this.addComponent(_loc2_); + } + this.dispatchEvent(new Event(Event.COMPLETE)); + } + + public function prepareImage(param1:String, param2:Boolean = true) : void + { + var i:uint = 0; + var sceneId:String = param1; + var isFirstBehaviour:Boolean = param2; + try + { + this._sceneId = sceneId; + this.borrowAllComponents(isFirstBehaviour); + i = 0; + while(i < this._componentList.length) + { + this.addComponent(this._componentList.getValueByIndex(i) as CcComponent); + i++; + } + this.setColors(); + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:prepareImage:" + sceneId,e); + return; + } + } + + public function destroy(param1:Boolean = true) : void + { + var i:int = 0; + var max:Number = NaN; + var component:CcComponent = null; + var gc:Boolean = param1; + try + { + if(!this._useImageLibrary) + { + max = this.numChildren; + i = max; + while(i > 0) + { + this.removeChildAt(i - 1); + i--; + } + this.createComponentContainers(); + i = 0; + while(i < this._componentList.length) + { + component = this._componentList.getValueByIndex(i) as CcComponent; + if(component) + { + component.destroy(gc); + } + i++; + } + this._state = null; + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcHeadComponent:destroy",e); + return; + } + } + + protected function setColors() : void + { + var _loc1_:XML = null; + var _loc2_:SelectedColor = null; + UtilColor.resetAssetPartsColor(this); + if(this._charXml) + { + for each(_loc1_ in this._charXml.child(CcLibConstant.NODE_COLOR)) + { + _loc2_ = new SelectedColor(_loc1_.@r,String(_loc1_.@oc).length == 0?uint(uint.MAX_VALUE):uint(_loc1_.@oc),uint(_loc1_)); + this.changeColor(_loc2_,_loc1_.@targetComponent == null?"":_loc1_.@targetComponent); + } + } + } + + protected function changeColor(param1:SelectedColor, param2:String = "") : Number + { + var _loc3_:DisplayObject = null; + if(param2 == "") + { + _loc3_ = this; + } + else + { + _loc3_ = UtilPlain.getInstance(this,param2); + } + var _loc4_:uint = UtilColor.setAssetPartColor(_loc3_,param1.areaName,param1.dstColor); + return _loc4_; + } + } +} diff --git a/scripts/anifire/cc/view/CcImageLibrary.as b/scripts/anifire/cc/view/CcImageLibrary.as new file mode 100644 index 0000000..8ca77e1 --- /dev/null +++ b/scripts/anifire/cc/view/CcImageLibrary.as @@ -0,0 +1,25 @@ +package anifire.cc.view +{ + import anifire.assets.AssetImageLibrary; + + public class CcImageLibrary + { + + private static var _library:AssetImageLibrary; + + + public function CcImageLibrary() + { + super(); + } + + public static function get library() : AssetImageLibrary + { + if(!_library) + { + _library = new AssetImageLibrary(); + } + return _library; + } + } +} diff --git a/scripts/anifire/cc/view/CcLipSyncMouth.as b/scripts/anifire/cc/view/CcLipSyncMouth.as new file mode 100644 index 0000000..4a64c39 --- /dev/null +++ b/scripts/anifire/cc/view/CcLipSyncMouth.as @@ -0,0 +1,46 @@ +package anifire.cc.view +{ + import anifire.cc.model.CcMouthModel; + import anifire.component.CcComponentLoader; + import anifire.event.SpeechPitchEvent; + import flash.display.MovieClip; + + public class CcLipSyncMouth extends CcComponent + { + + + private var _pitchEvent:SpeechPitchEvent; + + public function CcLipSyncMouth() + { + this._pitchEvent = new SpeechPitchEvent(SpeechPitchEvent.PITCH); + super(); + } + + override protected function getComponentLoader() : CcComponentLoader + { + var _loc1_:CcComponentLoader = null; + var _loc2_:String = null; + if(this.model) + { + _loc2_ = this.model.url; + if(this.model is CcMouthModel) + { + _loc2_ = CcMouthModel(this.model).lipsyncMouthUrl; + } + _loc1_ = CcComponentLoader.getComponentLoader(_loc2_,_loc2_); + } + return _loc1_; + } + + public function speak(param1:Number) : void + { + if(loader && MovieClip(loader.content)) + { + this._pitchEvent = new SpeechPitchEvent(SpeechPitchEvent.PITCH); + this._pitchEvent.value = param1; + MovieClip(loader.content).dispatchEvent(this._pitchEvent); + } + } + } +} diff --git a/scripts/anifire/cc/view/CcMouthComponent.as b/scripts/anifire/cc/view/CcMouthComponent.as new file mode 100644 index 0000000..0a659f6 --- /dev/null +++ b/scripts/anifire/cc/view/CcMouthComponent.as @@ -0,0 +1,110 @@ +package anifire.cc.view +{ + import anifire.cc.interfaces.ICcComponent; + import anifire.interfaces.ISpeak; + import flash.events.Event; + + public class CcMouthComponent extends CcComponent implements ISpeak + { + + + private var _lipSync:Boolean = false; + + private var _lipSyncMouth:CcLipSyncMouth; + + private var _talkMouth:CcTalkMouth; + + public function CcMouthComponent() + { + super(); + } + + override public function loadComponent() : void + { + this._lipSyncMouth = new CcLipSyncMouth(); + this._lipSyncMouth.visible = false; + this._lipSyncMouth.init(this.model); + this._lipSyncMouth.addEventListener(Event.COMPLETE,this.onLipSyncMouthLoaded); + this._lipSyncMouth.loadComponent(); + addChild(this._lipSyncMouth); + this._talkMouth = new CcTalkMouth(); + this._talkMouth.visible = false; + this._talkMouth.init(this.model); + this._talkMouth.loadComponent(); + addChild(this._talkMouth); + } + + private function hideAllMouths() : void + { + if(this._lipSyncMouth) + { + this._lipSyncMouth.visible = false; + } + if(this._talkMouth) + { + this._talkMouth.visible = false; + } + if(loader) + { + loader.visible = false; + } + } + + public function set useTalkMouth(param1:Boolean) : void + { + if(this._lipSyncMouth && this._talkMouth) + { + this.hideAllMouths(); + this._talkMouth.visible = param1; + loader.visible = !param1; + } + } + + private function onLipSyncMouthLoaded(param1:Event) : void + { + this.lipSync = this._lipSync; + super.loadComponent(); + } + + private function set lipSync(param1:Boolean) : void + { + if(this._lipSync != param1) + { + this._lipSync = param1; + if(this._lipSyncMouth == null) + { + this._lipSyncMouth = new CcLipSyncMouth(); + this._lipSyncMouth.init(this.model); + this._lipSyncMouth.loadComponent(); + addChild(this._lipSyncMouth); + } + this.hideAllMouths(); + this._lipSyncMouth.visible = param1; + loader.visible = !param1; + } + } + + override public function reset(param1:ICcComponent) : void + { + super.reset(param1); + if(this._lipSyncMouth) + { + this._lipSyncMouth.reset(param1); + } + if(this._talkMouth) + { + this._talkMouth.reset(param1); + } + this.lipSync = false; + } + + public function speak(param1:Number) : void + { + this.lipSync = param1 != -1; + if(this._lipSync && this._lipSyncMouth) + { + this._lipSyncMouth.speak(param1); + } + } + } +} diff --git a/scripts/anifire/cc/view/CcPairComponent.as b/scripts/anifire/cc/view/CcPairComponent.as new file mode 100644 index 0000000..6256494 --- /dev/null +++ b/scripts/anifire/cc/view/CcPairComponent.as @@ -0,0 +1,137 @@ +package anifire.cc.view +{ + import anifire.cc.interfaces.ICcPairComponent; + import anifire.constant.CcLibConstant; + import anifire.util.UtilErrorLogger; + import flash.display.DisplayObjectContainer; + import flash.display.LoaderInfo; + + public class CcPairComponent extends CcComponent + { + + + private var _leftSide:DisplayObjectContainer; + + private var _rightSide:DisplayObjectContainer; + + public function CcPairComponent() + { + super(); + } + + public function get leftSide() : DisplayObjectContainer + { + return this._leftSide; + } + + public function get rightSide() : DisplayObjectContainer + { + return this._rightSide; + } + + override protected function addLoader() : void + { + if(this.model is ICcPairComponent) + { + if(ICcPairComponent(model).split) + { + this._leftSide = this.addDefinition(loader.contentLoaderInfo,this.name + CcLibConstant.LIB_LEFT); + this._rightSide = this.addDefinition(loader.contentLoaderInfo,this.name + CcLibConstant.LIB_RIGHT); + } + else + { + this._leftSide = this._rightSide = this.addDefinition(loader.contentLoaderInfo,this.name); + } + } + if(this._leftSide && this._rightSide) + { + this.addChild(this._leftSide); + this.addChild(this._rightSide); + } + } + + override protected function setProperties() : void + { + var _loc1_:int = 0; + if(this.model) + { + if(this.model is ICcPairComponent) + { + if(!ICcPairComponent(model).split) + { + if(!CcLibConstant.ALLOW_SHOW_DETAIL_FOR_PAIR(this.model.themeId)) + { + if(this.model.themeId) + { + return; + } + } + } + } + if(this._leftSide) + { + this._leftSide.x = this.model.x; + this._leftSide.y = this.model.y; + _loc1_ = 0; + while(_loc1_ < this._leftSide.numChildren) + { + this._leftSide.getChildAt(_loc1_).scaleX = this.model.xscale; + this._leftSide.getChildAt(_loc1_).scaleY = this.model.yscale; + this._leftSide.getChildAt(_loc1_).rotation = -this.model.rotation; + _loc1_++; + } + } + if(this._rightSide) + { + this._rightSide.x = this.model.x; + this._rightSide.y = this.model.y; + _loc1_ = 0; + while(_loc1_ < this._rightSide.numChildren) + { + this._rightSide.getChildAt(_loc1_).scaleX = this.model.xscale; + this._rightSide.getChildAt(_loc1_).scaleY = this.model.yscale; + this._rightSide.getChildAt(_loc1_).rotation = this.model.rotation; + _loc1_++; + } + } + if(this.model is ICcPairComponent) + { + if(this._leftSide) + { + this._leftSide.x = this._leftSide.x + ICcPairComponent(model).offset / 2; + } + if(this._rightSide) + { + this._rightSide.x = this._rightSide.x - ICcPairComponent(model).offset / 2; + } + } + } + } + + protected function addDefinition(param1:LoaderInfo, param2:String) : DisplayObjectContainer + { + var definition:Class = null; + var mc:DisplayObjectContainer = null; + var loaderinfo:LoaderInfo = param1; + var className:String = param2; + try + { + definition = loaderinfo.applicationDomain.getDefinition(className) as Class; + if(definition) + { + mc = new definition(); + mc.name = className; + return mc; + } + } + catch(e:ReferenceError) + { + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcPairComponent:addDefinition",e); + } + return null; + } + } +} diff --git a/scripts/anifire/cc/view/CcTalkMouth.as b/scripts/anifire/cc/view/CcTalkMouth.as new file mode 100644 index 0000000..51e90c8 --- /dev/null +++ b/scripts/anifire/cc/view/CcTalkMouth.as @@ -0,0 +1,31 @@ +package anifire.cc.view +{ + import anifire.cc.model.CcMouthModel; + import anifire.component.CcComponentLoader; + + public class CcTalkMouth extends CcComponent + { + + + public function CcTalkMouth() + { + super(); + } + + override protected function getComponentLoader() : CcComponentLoader + { + var _loc1_:CcComponentLoader = null; + var _loc2_:String = null; + if(this.model) + { + _loc2_ = this.model.url; + if(this.model is CcMouthModel) + { + _loc2_ = CcMouthModel(this.model).talkMouthUrl; + } + _loc1_ = CcComponentLoader.getComponentLoader(_loc2_,_loc2_); + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/color/SelectedColor.as b/scripts/anifire/color/SelectedColor.as new file mode 100644 index 0000000..8d4c348 --- /dev/null +++ b/scripts/anifire/color/SelectedColor.as @@ -0,0 +1,36 @@ +package anifire.color +{ + public class SelectedColor + { + + + private var _areaName:String = ""; + + private var _orgColor:uint; + + private var _dstColor:uint; + + public function SelectedColor(param1:String, param2:uint = 4.294967295E9, param3:uint = 4.294967295E9) + { + super(); + this._areaName = param1; + this._orgColor = param2; + this._dstColor = param3; + } + + public function get areaName() : String + { + return this._areaName; + } + + public function get orgColor() : uint + { + return this._orgColor; + } + + public function get dstColor() : uint + { + return this._dstColor; + } + } +} diff --git a/scripts/anifire/component/CCThumb.as b/scripts/anifire/component/CCThumb.as new file mode 100644 index 0000000..d60880d --- /dev/null +++ b/scripts/anifire/component/CCThumb.as @@ -0,0 +1,172 @@ +package anifire.component +{ + import anifire.constant.AnimeConstants; + import anifire.constant.RaceConstants; + import anifire.event.LoadEmbedMovieEvent; + import anifire.interfaces.ICharacter; + import anifire.models.creator.CCCharacterActionModel; + import anifire.util.UtilHashBytes; + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Sprite; + import flash.events.Event; + import flash.geom.Matrix; + import flash.geom.Rectangle; + import flash.utils.ByteArray; + import flash.utils.setTimeout; + + public class CCThumb extends Sprite + { + + + private var _width:int; + + private var _height:int; + + private var _cellWidth:int; + + private var _cellHeight:int; + + public var cacheId:String; + + public var captureTarget:DisplayObject; + + public function CCThumb() + { + super(); + this.cellWidth = AnimeConstants.TILE_CHAR_WIDTH - AnimeConstants.TILE_INSETS * 2; + this.cellHeight = AnimeConstants.TILE_CHAR_HEIGHT - AnimeConstants.TILE_INSETS * 2; + } + + public function get thumbWidth() : int + { + return this._width; + } + + public function get thumbHeight() : int + { + return this._height; + } + + public function get cellWidth() : int + { + return this._cellWidth; + } + + public function get cellHeight() : int + { + return this._cellHeight; + } + + public function set cellWidth(param1:int) : void + { + this._cellWidth = param1; + } + + public function set cellHeight(param1:int) : void + { + this._cellHeight = param1; + } + + public function init(param1:XML, param2:UtilHashBytes, param3:UtilHashBytes = null, param4:int = 1, param5:ByteArray = null) : void + { + var _loc6_:CustomCharacterMaker = null; + var _loc7_:SkinnedCharacterMaker = null; + switch(param4) + { + case RaceConstants.CUSTOM_CHARACTER: + _loc6_ = new CustomCharacterMaker(); + _loc6_.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.initCCMakerComplete); + _loc6_.initBySwfs(param1,param2,param3); + break; + case RaceConstants.SKINNED_SWF: + _loc7_ = new SkinnedCharacterMaker(); + _loc7_.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.initCCMakerComplete); + _loc7_.init(param1,param5,param2); + } + } + + public function initByXml(param1:XML) : void + { + var _loc2_:CustomCharacterMaker = null; + if(param1) + { + _loc2_ = new CustomCharacterMaker(); + _loc2_.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.initCCMakerComplete); + _loc2_.initByXml(param1); + } + } + + public function initByCCCharacterActionModel(param1:CCCharacterActionModel) : void + { + var _loc2_:CustomCharacterMaker = null; + if(param1) + { + _loc2_ = new CustomCharacterMaker(); + _loc2_.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.initCCMakerComplete); + _loc2_.initByCam(param1); + } + } + + private function initCCMakerComplete(param1:Event) : void + { + var _loc2_:ICharacter = ICharacter(param1.currentTarget); + _loc2_.reloadSkin(); + if(this.cacheId) + { + this.captureTarget = param1.currentTarget as DisplayObject; + dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + return; + } + setTimeout(this.photoCap,1000,param1); + } + + private function photoCap(param1:LoadEmbedMovieEvent) : void + { + var _loc11_:SkinnedCharacterMaker = null; + var _loc2_:Sprite = Sprite(param1.currentTarget); + var _loc3_:Number = _loc2_.width; + var _loc4_:Number = _loc2_.height; + var _loc5_:Number = 1; + if(_loc3_ == 0 || _loc4_ == 0) + { + return; + } + _loc5_ = this.cellWidth / _loc3_; + if(_loc4_ * _loc5_ > this.cellHeight) + { + _loc5_ = this.cellHeight / _loc4_; + } + var _loc6_:BitmapData = new BitmapData(_loc2_.width * _loc5_,_loc2_.height * _loc5_,true,16711680); + var _loc7_:Matrix = new Matrix(); + _loc2_.x = _loc2_.y = 0; + this.addChild(_loc2_); + var _loc8_:Rectangle = _loc2_.getBounds(this); + _loc7_.translate(-_loc8_.x,-_loc8_.y); + _loc7_.scale(_loc5_,_loc5_); + _loc6_.draw(_loc2_,_loc7_,null,null,null,true); + var _loc9_:Bitmap = new Bitmap(); + _loc9_.bitmapData = _loc6_; + _loc9_.x = _loc9_.y = 0; + this._width = _loc9_.width; + this._height = _loc9_.height; + this.addChild(_loc9_); + var _loc10_:CustomCharacterMaker = _loc2_ as CustomCharacterMaker; + if(_loc10_) + { + _loc10_.destroy(); + } + else + { + _loc11_ = _loc2_ as SkinnedCharacterMaker; + if(_loc11_) + { + _loc11_.destroy(); + } + } + this.removeChild(_loc2_); + this.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + } + } +} diff --git a/scripts/anifire/component/CcActionLoader.as b/scripts/anifire/component/CcActionLoader.as new file mode 100644 index 0000000..39b89cf --- /dev/null +++ b/scripts/anifire/component/CcActionLoader.as @@ -0,0 +1,476 @@ +package anifire.component +{ + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.core.CCLipSyncController; + import anifire.managers.AppConfigManager; + import anifire.models.creator.CCCharacterActionModel; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashActionLoader; + import anifire.util.UtilHashArray; + import anifire.util.UtilHashBytes; + import anifire.util.UtilNetwork; + import anifire.util.UtilURLStream; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.utils.ByteArray; + + public class CcActionLoader extends EventDispatcher + { + + private static var _loaders:UtilHashActionLoader = new UtilHashActionLoader(); + + private static var _configManager:AppConfigManager; + + + private const STATE_NULL:String = "STATE_NULL"; + + private const STATE_LOADING:String = "STATE_LOADING"; + + private const STATE_LOADED:String = "STATE_LOADED"; + + private var _imageData:Object; + + private var _regulator:ProcessRegulator; + + private var _state:String = "STATE_NULL"; + + public function CcActionLoader() + { + super(); + _configManager = AppConfigManager.instance; + } + + public static function getActionLoader(param1:String) : CcActionLoader + { + var _loc2_:CcActionLoader = null; + if(param1 && param1 != "") + { + _loc2_ = _loaders.getValueByKey(param1) as CcActionLoader; + if(!_loc2_) + { + _loc2_ = new CcActionLoader(); + _loaders.push(param1,_loc2_); + } + return _loc2_; + } + return new CcActionLoader(); + } + + public static function getStoreUrl(param1:String, param2:String = "", param3:Number = 1) : String + { + var _loc4_:String = null; + var _loc6_:RegExp = null; + switch(param3) + { + case 3: + _loc4_ = ""; + break; + default: + _loc4_ = "cc_store/"; + } + var _loc5_:String = _configManager.getValue(ServerConstants.FLASHVAR_STORE_PATH); + if(_loc5_ == "" || _loc5_ == null) + { + _loc5_ = _configManager.getValue(ServerConstants.FLASHVAR_APISERVER); + _loc5_ = _loc5_ + ("static/store/" + _loc4_ + param1); + } + else + { + _loc6_ = new RegExp(ServerConstants.FLASHVAR_STORE_PLACEHOLDER,"g"); + _loc5_ = _loc5_.replace(_loc6_,_loc4_ + param1); + } + return _loc5_; + } + + public function get imageData() : Object + { + return this._imageData; + } + + public function load(param1:String, param2:String = "", param3:String = "", param4:Boolean = false) : void + { + var request:URLRequest = null; + var stream:UtilURLStream = null; + var aid:String = param1; + var actionId:String = param2; + var facialId:String = param3; + var isDefault:Boolean = param4; + try + { + if(aid) + { + stream = new UtilURLStream(); + request = UtilNetwork.getGetCcActionRequest(aid,actionId,facialId,isDefault); + stream.addEventListener(Event.COMPLETE,this.onXmlLoaded); + stream.addEventListener(IOErrorEvent.IO_ERROR,this.ioErrorHandler); + stream.addEventListener(UtilURLStream.TIME_OUT,this.timeoutHandler); + stream.load(request); + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcActionLoader:load",e); + return; + } + } + + private function onXmlLoaded(param1:Event) : void + { + var stream:URLStream = null; + var bytes:ByteArray = null; + var xmlCC:XML = null; + var e:Event = param1; + try + { + IEventDispatcher(e.target).removeEventListener(e.type,this.onXmlLoaded); + stream = URLStream(e.target); + bytes = new ByteArray(); + stream.readBytes(bytes); + xmlCC = XML(bytes); + this.loadCcComponents(xmlCC); + return; + } + catch(e:Error) + { + dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR)); + UtilErrorLogger.getInstance().appendCustomError("CcActionLoader:onXmlLoaded:",e); + return; + } + } + + public function loadCcComponents(param1:XML, param2:Number = 0, param3:Number = 0, param4:UtilHashBytes = null, param5:Number = 1, param6:Boolean = false, param7:String = "", param8:String = "", param9:Boolean = false) : void + { + var _loc10_:URLStream = null; + var _loc11_:String = null; + var _loc12_:XML = null; + var _loc13_:CcComponentLoader = null; + var _loc14_:String = null; + var _loc15_:* = null; + var _loc16_:String = null; + var _loc17_:String = null; + var _loc18_:String = null; + if(this._state == this.STATE_LOADED) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + else if(this._state == this.STATE_LOADING) + { + return; + } + this._state = this.STATE_LOADING; + try + { + if(param1) + { + _loc14_ = _configManager.getValue(ServerConstants.FLASHVAR_IS_VIDEO_RECORD_MODE); + this._imageData = new Object(); + this._imageData["imageData"] = !!param4?param4:new UtilHashBytes(); + this._imageData["xml"] = param1; + this._regulator = new ProcessRegulator(); + for each(_loc12_ in param1..library) + { + _loc17_ = _loc12_.@theme_id; + _loc18_ = _loc12_.@type; + if(param5 == 3) + { + if(_loc12_.@type == CcLibConstant.COMPONENT_TYPE_MOUTH) + { + this.doLoadExtraComponent(_loc12_,param8,param5); + continue; + } + _loc11_ = getStoreUrl(_loc17_ + "/charparts" + "/" + _loc18_ + "/" + _loc12_.@path + ".swf",_loc17_,param5); + _loc18_ = CcLibConstant.LIBRARY_TYPE_GOHANDS; + } + else + { + _loc11_ = getStoreUrl(_loc17_ + "/" + _loc18_ + "/" + _loc12_.@path + ".swf",_loc17_); + } + _loc15_ = _loc17_ + "." + _loc18_ + "." + _loc12_.@path + ".swf"; + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc15_) == null) + { + _loc13_ = CcComponentLoader.getComponentLoader(_loc15_,_loc11_); + _loc13_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc13_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc13_,Event.COMPLETE); + } + } + _loc16_ = "default"; + for each(_loc12_ in param1..component) + { + if(_loc12_.@type == "bodyshape") + { + _loc16_ = _loc12_.@path; + } + } + for each(_loc12_ in param1..component) + { + if(_loc12_.hasOwnProperty("@file")) + { + _loc11_ = getStoreUrl(_loc12_.@theme_id + "/" + _loc12_.@type + "/" + _loc12_.@path + "/" + _loc12_.@file); + } + else if(_loc12_.@type == "freeaction" && _loc12_.@path != "default" && !param9) + { + if(_loc16_ != _loc12_.@path) + { + _loc11_ = getStoreUrl(_loc12_.@theme_id + "/" + _loc12_.@type + "/" + _loc16_ + "/" + _loc12_.@path + ".swf"); + } + else + { + continue; + } + } + else + { + continue; + } + _loc15_ = _loc12_.@theme_id + "." + _loc12_.@type + "." + _loc12_.@path + ".swf"; + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc15_) == null) + { + _loc13_ = CcComponentLoader.getComponentLoader(_loc15_,_loc11_); + _loc13_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc13_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc13_,Event.COMPLETE); + } + this.doLoadExtraComponent(_loc12_); + } + this._regulator.startProcess(); + if(this._regulator.numProcess == 0) + { + this._state = this.STATE_LOADED; + this.dispatchEvent(new Event(Event.COMPLETE)); + } + } + return; + } + catch(e:Error) + { + return; + } + } + + public function loadCcComponentsByCam(param1:CCCharacterActionModel, param2:UtilHashBytes = null, param3:Number = 1) : void + { + var _loc4_:URLStream = null; + var _loc5_:String = null; + var _loc6_:CcComponentLoader = null; + var _loc7_:String = null; + var _loc8_:String = null; + var _loc9_:* = null; + var _loc10_:String = null; + var _loc11_:Object = null; + var _loc12_:* = null; + if(param1) + { + if(!this._imageData) + { + this._imageData = new Object(); + } + if(!this._imageData["imageData"]) + { + if(param2) + { + this._imageData["imageData"] = param2; + } + else + { + this._imageData["imageData"] = new UtilHashBytes(); + } + } + this._imageData["cam"] = param1; + } + if(this._state == this.STATE_LOADED) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + return; + } + if(this._state == this.STATE_LOADING) + { + return; + } + this._state = this.STATE_LOADING; + if(param1) + { + _loc7_ = _configManager.getValue(ServerConstants.FLASHVAR_IS_VIDEO_RECORD_MODE); + this._regulator = new ProcessRegulator(); + for(_loc9_ in param1.libraryPaths) + { + _loc10_ = param1.libraryPaths[_loc9_] as String; + _loc5_ = getStoreUrl(_loc10_); + _loc8_ = _loc10_; + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc8_) == null) + { + _loc6_ = CcComponentLoader.getComponentLoader(_loc8_,_loc5_); + _loc6_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc6_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc6_,Event.COMPLETE); + } + } + for(_loc9_ in param1.components) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc9_) > -1) + { + _loc11_ = param1.components[_loc9_]; + for(_loc12_ in _loc11_) + { + _loc10_ = _loc11_[_loc12_].path; + _loc5_ = getStoreUrl(_loc10_); + _loc8_ = _loc10_; + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc8_) == null) + { + _loc6_ = CcComponentLoader.getComponentLoader(_loc8_,_loc5_); + _loc6_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc6_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc6_,Event.COMPLETE); + } + } + } + else + { + _loc10_ = param1.getComponentByType(_loc9_).path; + _loc5_ = getStoreUrl(_loc10_); + _loc8_ = _loc10_; + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc8_) == null) + { + _loc6_ = CcComponentLoader.getComponentLoader(_loc8_,_loc5_); + _loc6_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc6_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc6_,Event.COMPLETE); + } + this.doLoadExtraComponentByCam(param1,_loc9_); + } + } + this._regulator.startProcess(); + if(this._regulator.numProcess == 0) + { + this._state = this.STATE_LOADED; + this.dispatchEvent(new Event(Event.COMPLETE)); + } + } + } + + private function onCcComponentLoaded(param1:Event) : void + { + var loader:CcComponentLoader = null; + var e:Event = param1; + try + { + loader = CcComponentLoader(e.target); + if(loader) + { + loader.removeEventListener(e.type,this.onCcComponentLoaded); + this.addComponent(loader.componentId,loader.swfBytes); + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcActionLoader:onCcComponentLoaded:",e); + return; + } + } + + private function addComponent(param1:String, param2:ByteArray) : void + { + UtilHashBytes(this._imageData["imageData"]).push(param1,param2); + this.progress(); + } + + private function progress() : void + { + var _loc1_:ProgressEvent = new ProgressEvent(ProgressEvent.PROGRESS); + _loc1_.bytesLoaded = UtilHashBytes(this._imageData["imageData"]).length; + _loc1_.bytesTotal = this._regulator.numProcess; + this.dispatchEvent(_loc1_); + if(UtilHashBytes(this._imageData["imageData"]).length == this._regulator.numProcess) + { + this._state = this.STATE_LOADED; + this.dispatchEvent(new Event(Event.COMPLETE)); + } + } + + public function doLoadExtraComponentByCam(param1:CCCharacterActionModel, param2:String, param3:String = "", param4:Number = 1) : void + { + var _loc5_:CcComponentLoader = null; + var _loc6_:Object = null; + var _loc7_:UtilHashBytes = null; + var _loc8_:* = null; + var _loc9_:String = null; + if(param2 == CcLibConstant.COMPONENT_TYPE_MOUTH) + { + _loc6_ = CCLipSyncController.getLipSyncComponentItemsByCam(param1,param2,param3,param4); + _loc7_ = this._imageData["imageData"] as UtilHashBytes; + for(_loc8_ in _loc6_) + { + _loc9_ = _loc6_[_loc8_]; + if(_loc7_.getValueByKey(_loc9_) == null) + { + _loc5_ = CcComponentLoader.getComponentLoader(_loc9_,_loc8_); + _loc5_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc5_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc5_,Event.COMPLETE); + } + } + } + } + + public function doLoadExtraComponent(param1:XML, param2:String = "", param3:Number = 1) : void + { + var _loc4_:CcComponentLoader = null; + var _loc7_:UtilHashArray = null; + var _loc8_:String = null; + var _loc9_:String = null; + var _loc5_:UtilHashArray = new UtilHashArray(); + if(param1.@type == CcLibConstant.COMPONENT_TYPE_MOUTH) + { + _loc7_ = CCLipSyncController.getLipSyncComponentItems(param1,param2,param3); + _loc5_.insert(0,_loc7_); + } + var _loc6_:int = 0; + while(_loc6_ < _loc5_.length) + { + _loc8_ = _loc5_.getKey(_loc6_); + _loc9_ = _loc5_.getValueByIndex(_loc6_); + if(UtilHashBytes(this._imageData["imageData"]).getValueByKey(_loc9_) == null) + { + _loc4_ = CcComponentLoader.getComponentLoader(_loc9_,_loc8_); + _loc4_.addEventListener(Event.COMPLETE,this.onCcComponentLoaded); + _loc4_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcComponentFailed); + this._regulator.addProcess(_loc4_,Event.COMPLETE); + } + _loc6_++; + } + } + + private function onCcComponentFailed(param1:IOErrorEvent) : void + { + var _loc2_:CcComponentLoader = CcComponentLoader(param1.target); + if(_loc2_) + { + _loc2_.removeEventListener(param1.type,this.onCcComponentFailed); + this.addComponent(_loc2_.componentId,_loc2_.swfBytes); + } + } + + private function ioErrorHandler(param1:IOErrorEvent) : void + { + this.dispatchEvent(param1); + } + + private function timeoutHandler(param1:Event) : void + { + this.dispatchEvent(param1); + } + + public function clearImageData() : void + { + this._imageData = null; + } + } +} diff --git a/scripts/anifire/component/CcComponentLoader.as b/scripts/anifire/component/CcComponentLoader.as new file mode 100644 index 0000000..d69aec2 --- /dev/null +++ b/scripts/anifire/component/CcComponentLoader.as @@ -0,0 +1,177 @@ +package anifire.component +{ + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.interfaces.IRegulatedProcess; + import anifire.managers.AppConfigManager; + import anifire.util.UtilCrypto; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.utils.ByteArray; + + public class CcComponentLoader extends EventDispatcher implements IRegulatedProcess + { + + private static var _loaders:UtilHashArray = new UtilHashArray(); + + private static var _configManager:AppConfigManager; + + + private const NUM_TRY:Number = 3; + + private var _stream:URLStream; + + private var _swfBytes:ByteArray; + + private var _url:String; + + private var _numTry:int; + + private var _key:String; + + public function CcComponentLoader(param1:String, param2:String) + { + super(); + this._key = param1; + this._url = param2; + _configManager = AppConfigManager.instance; + } + + public static function getComponentLoader(param1:String, param2:String) : CcComponentLoader + { + var _loc3_:CcComponentLoader = _loaders.getValueByKey(param1 + param2); + if(!_loc3_) + { + _loc3_ = new CcComponentLoader(param1,param2); + _loaders.push(param1 + param2,_loc3_); + } + return _loc3_; + } + + public function get url() : String + { + return this._url; + } + + public function get swfBytes() : ByteArray + { + return this._swfBytes; + } + + public function get componentId() : String + { + return this._key; + } + + public function startProcess(param1:Boolean = false, param2:Number = 0) : void + { + this.load(); + } + + public function load() : void + { + if(this._swfBytes) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + else if(!this._stream) + { + this._numTry = 0; + this.reload(); + } + } + + private function reload() : void + { + try + { + if(this._url) + { + this.removeListeners(); + this._stream = new URLStream(); + this._stream.addEventListener(Event.COMPLETE,this.onSwfLoaded); + this._stream.addEventListener(ProgressEvent.PROGRESS,this.onProgress); + this._stream.addEventListener(IOErrorEvent.IO_ERROR,this.ioErrorHandler); + this._stream.load(new URLRequest(this._url)); + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcComponenetLoader:reload:",e); + return; + } + } + + private function onProgress(param1:ProgressEvent) : void + { + this.dispatchEvent(param1); + } + + private function ioErrorHandler(param1:IOErrorEvent) : void + { + this._numTry++; + if(this._numTry < this.NUM_TRY) + { + this.reload(); + } + else + { + this.removeListeners(); + this._stream = null; + this.dispatchEvent(param1); + } + } + + private function removeListeners() : void + { + if(this._stream) + { + this._stream.removeEventListener(Event.COMPLETE,this.onSwfLoaded); + this._stream.removeEventListener(ProgressEvent.PROGRESS,this.onProgress); + this._stream.removeEventListener(IOErrorEvent.IO_ERROR,this.ioErrorHandler); + } + } + + private function onSwfLoaded(param1:Event) : void + { + var cType:String = null; + var decryptEngine:UtilCrypto = null; + var e:Event = param1; + try + { + this.removeListeners(); + this._swfBytes = new ByteArray(); + this._stream.readBytes(this._swfBytes); + this._stream = null; + cType = this._key.split(".")[1]; + if(cType == "swf") + { + cType = this._key.split("/")[1]; + } + if(_configManager.getValue(ServerConstants.PARAM_ISOFFLINE) != "1") + { + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(cType) == -1) + { + decryptEngine = new UtilCrypto(); + decryptEngine.decrypt(this._swfBytes); + decryptEngine = null; + } + } + this.dispatchEvent(new Event(Event.COMPLETE)); + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CcComponentLoader:onSwfLoaded",e); + return; + } + } + } +} diff --git a/scripts/anifire/component/ColorInputPanel.as b/scripts/anifire/component/ColorInputPanel.as new file mode 100644 index 0000000..4fd4091 --- /dev/null +++ b/scripts/anifire/component/ColorInputPanel.as @@ -0,0 +1,699 @@ +package anifire.component +{ + import anifire.event.ColorPaletteEvent; + import anifire.event.EyeDropperEvent; + import anifire.managers.ColorUtils; + import anifire.skins.ColorInputPanelSkin; + import flash.events.Event; + import flash.events.FocusEvent; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.ui.Keyboard; + import mx.collections.ArrayCollection; + import mx.events.FlexEvent; + import mx.graphics.SolidColor; + import mx.utils.HSBColor; + import spark.components.Button; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.TextInput; + import spark.components.VSlider; + import spark.components.supportClasses.SkinnableComponent; + import spark.events.IndexChangeEvent; + import spark.events.RendererExistenceEvent; + import spark.events.TrackBaseEvent; + + public class ColorInputPanel extends SkinnableComponent + { + + public static const COLOR_SPACE_HEX:String = "HEX"; + + public static const COLOR_SPACE_RGB:String = "RGB"; + + public static const COLOR_SPACE_HSB:String = "HSB"; + + private static const COLOR_FIELD_SIZE:int = 200; + + private static const HUE_MIN_VALUE:Number = 0; + + private static const HUE_MAX_VALUE:Number = 359; + + private static const SATURATION_MIN_VALUE:Number = 0; + + private static const SATURATION_MAX_VALUE:Number = 1; + + private static const BRIGHTNESS_MIN_VALUE:Number = 0; + + private static const BRIGHTNESS_MAX_VALUE:Number = 1; + + + protected var _draggingColorField:Boolean; + + protected var _selectedColorSpace:String = "HEX"; + + [SkinPart(required="true")] + public var colorFieldGroup:Group; + + [SkinPart(required="true")] + public var colorFieldCursor:Group; + + [SkinPart(required="true")] + public var hueSlider:VSlider; + + [SkinPart(required="true")] + public var colorSpaceTypeDropDownList:DropDownList; + + [SkinPart(required="true")] + public var colorFieldBaseColor:SolidColor; + + [SkinPart(required="true")] + public var hexInputArea:Group; + + [SkinPart(required="true")] + public var hexInput:TextInput; + + [SkinPart(required="true")] + public var rgbInputArea:Group; + + [SkinPart(required="true")] + public var redInput:TextInput; + + [SkinPart(required="true")] + public var greenInput:TextInput; + + [SkinPart(required="true")] + public var blueInput:TextInput; + + [SkinPart(required="true")] + public var hsbInputArea:Group; + + [SkinPart(required="true")] + public var hueInput:TextInput; + + [SkinPart(required="true")] + public var saturationInput:TextInput; + + [SkinPart(required="true")] + public var brightnessInput:TextInput; + + [SkinPart(required="false")] + public var eyeDropperButton:Button; + + protected var _currentColor:uint; + + protected var _hue:Number = 0; + + protected var _saturation:Number = 0; + + protected var _brightness:Number = 0; + + public function ColorInputPanel() + { + super(); + setStyle("skinClass",ColorInputPanelSkin); + } + + public function get currentColor() : uint + { + return this._currentColor; + } + + public function set currentColor(param1:uint) : void + { + if(this._currentColor != param1) + { + this._currentColor = param1; + this.updateHsbColorSpace(); + this.updateUIComponents(); + this.notifyColorPreview(); + } + } + + private function updateHexColorSpace() : void + { + this._currentColor = HSBColor.convertHSBtoRGB(this._hue,this._saturation,this._brightness); + this.updateUIComponents(); + this.notifyColorPreview(); + } + + private function updateHsbColorSpace() : void + { + var _loc1_:HSBColor = HSBColor.convertRGBtoHSB(this._currentColor); + if(!isNaN(_loc1_.hue)) + { + this.hue = _loc1_.hue; + } + this.saturation = _loc1_.saturation; + this.brightness = _loc1_.brightness; + } + + override protected function partAdded(param1:String, param2:Object) : void + { + super.partAdded(param1,param2); + switch(param2) + { + case this.colorSpaceTypeDropDownList: + this.colorSpaceTypeDropDownList.dataProvider = new ArrayCollection([COLOR_SPACE_HEX,COLOR_SPACE_RGB,COLOR_SPACE_HSB]); + this.colorSpaceTypeDropDownList.selectedItem = this._selectedColorSpace; + this.colorSpaceTypeDropDownList.addEventListener(IndexChangeEvent.CHANGE,this.colorSpaceTypeDropDownList_changeHandler); + this.colorSpaceTypeDropDownList.addEventListener(RendererExistenceEvent.RENDERER_ADD,this.colorSpaceTypeDropDownList_renderedAddHandler); + this.colorSpaceTypeDropDownList.addEventListener(RendererExistenceEvent.RENDERER_REMOVE,this.colorSpaceTypeDropDownList_renderedRemoveHandler); + break; + case this.hueSlider: + this.hueSlider.value = this._hue; + this.hueSlider.addEventListener(Event.CHANGE,this.hueSlider_changeHandler); + this.hueSlider.addEventListener(TrackBaseEvent.THUMB_RELEASE,this.hueSlider_thumbReleaseHandler); + break; + case this.colorFieldGroup: + this.colorFieldGroup.addEventListener(MouseEvent.MOUSE_DOWN,this.colorFieldGroup_mouseDownHandler); + this.colorFieldGroup.addEventListener(MouseEvent.MOUSE_MOVE,this.colorFieldGroup_mouseMoveHandler); + this.colorFieldGroup.addEventListener(MouseEvent.MOUSE_UP,this.colorFieldGroup_mouseUpHandler); + break; + case this.colorFieldCursor: + this.colorFieldCursor.mouseEnabled = false; + this.colorFieldCursor.mouseChildren = false; + this.colorFieldCursor.move(this._saturation * COLOR_FIELD_SIZE,(1 - this._brightness) * COLOR_FIELD_SIZE); + break; + case this.colorFieldBaseColor: + this.colorFieldBaseColor.color = HSBColor.convertHSBtoRGB(this._hue,1,1); + break; + case this.hexInput: + this.updateHexText(); + this.hexInput.addEventListener(FocusEvent.FOCUS_OUT,this.hexInput_focusOutHandler); + this.hexInput.addEventListener(FlexEvent.ENTER,this.hexInput_enterHandler); + break; + case this.redInput: + this.updateRgbText(); + this.redInput.addEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.redInput.addEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.redInput.addEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.greenInput: + this.updateRgbText(); + this.greenInput.addEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.greenInput.addEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.greenInput.addEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.blueInput: + this.updateRgbText(); + this.blueInput.addEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.blueInput.addEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.blueInput.addEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.hueInput: + this.updateHsbText(); + this.hueInput.addEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.hueInput.addEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.hueInput.addEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.saturationInput: + this.updateHsbText(); + this.saturationInput.addEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.saturationInput.addEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.saturationInput.addEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.brightnessInput: + this.updateHsbText(); + this.brightnessInput.addEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.brightnessInput.addEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.brightnessInput.addEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.eyeDropperButton: + this.eyeDropperButton.addEventListener(MouseEvent.CLICK,this.eyeDropperButton_clickHandler); + } + } + + override protected function partRemoved(param1:String, param2:Object) : void + { + super.partRemoved(param1,param2); + switch(param2) + { + case this.colorSpaceTypeDropDownList: + this.colorSpaceTypeDropDownList.dataProvider = null; + this.colorSpaceTypeDropDownList.removeEventListener(IndexChangeEvent.CHANGE,this.colorSpaceTypeDropDownList_changeHandler); + this.colorSpaceTypeDropDownList.removeEventListener(RendererExistenceEvent.RENDERER_ADD,this.colorSpaceTypeDropDownList_renderedAddHandler); + this.colorSpaceTypeDropDownList.removeEventListener(RendererExistenceEvent.RENDERER_REMOVE,this.colorSpaceTypeDropDownList_renderedRemoveHandler); + break; + case this.hueSlider: + this.hueSlider.removeEventListener(Event.CHANGE,this.hueSlider_changeHandler); + this.hueSlider.removeEventListener(TrackBaseEvent.THUMB_RELEASE,this.hueSlider_thumbReleaseHandler); + break; + case this.colorFieldGroup: + this.colorFieldGroup.removeEventListener(MouseEvent.MOUSE_DOWN,this.colorFieldGroup_mouseDownHandler); + this.colorFieldGroup.removeEventListener(MouseEvent.MOUSE_MOVE,this.colorFieldGroup_mouseMoveHandler); + this.colorFieldGroup.removeEventListener(MouseEvent.MOUSE_UP,this.colorFieldGroup_mouseUpHandler); + break; + case this.hexInput: + this.hexInput.removeEventListener(FocusEvent.FOCUS_OUT,this.hexInput_focusOutHandler); + this.hexInput.removeEventListener(FlexEvent.ENTER,this.hexInput_enterHandler); + break; + case this.redInput: + this.redInput.removeEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.redInput.removeEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.redInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.greenInput: + this.greenInput.removeEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.greenInput.removeEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.greenInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.blueInput: + this.blueInput.removeEventListener(FocusEvent.FOCUS_OUT,this.rgbInput_focusOutHandler); + this.blueInput.removeEventListener(FlexEvent.ENTER,this.rgbInput_enterHandler); + this.blueInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.rgbInput_keyDownHandler); + break; + case this.hueInput: + this.hueInput.removeEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.hueInput.removeEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.hueInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.saturationInput: + this.saturationInput.removeEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.saturationInput.removeEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.saturationInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.brightnessInput: + this.brightnessInput.removeEventListener(FocusEvent.FOCUS_OUT,this.hsbInput_focusOutHandler); + this.brightnessInput.removeEventListener(FlexEvent.ENTER,this.hsbInput_enterHandler); + this.brightnessInput.removeEventListener(KeyboardEvent.KEY_DOWN,this.hsbInput_keyDownHandler); + break; + case this.eyeDropperButton: + this.eyeDropperButton.removeEventListener(MouseEvent.CLICK,this.eyeDropperButton_clickHandler); + } + } + + protected function updateHexText() : void + { + if(this.hexInput) + { + this.hexInput.text = ColorUtils.colorToHex(this.currentColor); + } + } + + protected function updateRgbText() : void + { + var _loc1_:Array = ColorUtils.colorToRgb(this.currentColor); + if(this.redInput) + { + this.redInput.text = _loc1_[0].toString(); + } + if(this.greenInput) + { + this.greenInput.text = _loc1_[1].toString(); + } + if(this.blueInput) + { + this.blueInput.text = _loc1_[2].toString(); + } + } + + protected function updateHsbText() : void + { + if(this.hueInput) + { + this.hueInput.text = Math.round(this._hue).toString(); + } + if(this.saturationInput) + { + this.saturationInput.text = Math.round(this._saturation * 100).toString(); + } + if(this.brightnessInput) + { + this.brightnessInput.text = Math.round(this._brightness * 100).toString(); + } + } + + protected function updateSlider() : void + { + if(this.hueSlider) + { + this.hueSlider.value = this._hue; + } + } + + protected function updateColorField() : void + { + if(this.colorFieldBaseColor) + { + this.colorFieldBaseColor.color = HSBColor.convertHSBtoRGB(this._hue,1,1); + } + if(this.colorFieldCursor) + { + this.colorFieldCursor.move(this._saturation * COLOR_FIELD_SIZE,(1 - this._brightness) * COLOR_FIELD_SIZE); + } + } + + protected function updateUIComponents() : void + { + switch(this._selectedColorSpace) + { + case COLOR_SPACE_HEX: + this.updateHexText(); + this.updateSlider(); + this.updateColorField(); + break; + case COLOR_SPACE_RGB: + this.updateRgbText(); + this.updateSlider(); + this.updateColorField(); + break; + case COLOR_SPACE_HSB: + this.updateHsbText(); + this.updateSlider(); + this.updateColorField(); + } + } + + protected function hueSlider_changeHandler(param1:Event) : void + { + this.hue = this.hueSlider.value; + this.updateHexColorSpace(); + } + + protected function hueSlider_thumbReleaseHandler(param1:TrackBaseEvent) : void + { + this.notifyColorChange(); + } + + protected function set selectedColorSpace(param1:String) : void + { + if(this._selectedColorSpace != param1) + { + this._selectedColorSpace = param1; + this.hexInputArea.visible = this._selectedColorSpace == COLOR_SPACE_HEX; + this.hexInputArea.includeInLayout = this._selectedColorSpace == COLOR_SPACE_HEX; + this.rgbInputArea.visible = this._selectedColorSpace == COLOR_SPACE_RGB; + this.rgbInputArea.includeInLayout = this._selectedColorSpace == COLOR_SPACE_RGB; + this.hsbInputArea.visible = this._selectedColorSpace == COLOR_SPACE_HSB; + this.hsbInputArea.includeInLayout = this._selectedColorSpace == COLOR_SPACE_HSB; + this.updateUIComponents(); + } + } + + protected function colorSpaceTypeDropDownList_changeHandler(param1:IndexChangeEvent) : void + { + this.selectedColorSpace = this.colorSpaceTypeDropDownList.selectedItem; + } + + protected function colorSpaceTypeDropDownList_renderedAddHandler(param1:RendererExistenceEvent) : void + { + param1.renderer.addEventListener(MouseEvent.MOUSE_DOWN,this.colorSpaceTypeDropDownListRenderer_mouseDownHandler); + param1.renderer.addEventListener(MouseEvent.MOUSE_UP,this.colorSpaceTypeDropDownListRenderer_mouseUpHandler); + } + + protected function colorSpaceTypeDropDownList_renderedRemoveHandler(param1:RendererExistenceEvent) : void + { + param1.renderer.removeEventListener(MouseEvent.MOUSE_DOWN,this.colorSpaceTypeDropDownListRenderer_mouseDownHandler); + param1.renderer.removeEventListener(MouseEvent.MOUSE_UP,this.colorSpaceTypeDropDownListRenderer_mouseUpHandler); + } + + protected function colorSpaceTypeDropDownListRenderer_mouseDownHandler(param1:MouseEvent) : void + { + param1.stopImmediatePropagation(); + } + + protected function colorSpaceTypeDropDownListRenderer_mouseUpHandler(param1:MouseEvent) : void + { + param1.stopImmediatePropagation(); + this.colorSpaceTypeDropDownList.selectedItem = param1.currentTarget.data; + this.colorSpaceTypeDropDownList.dispatchEvent(new IndexChangeEvent(IndexChangeEvent.CHANGE)); + this.colorSpaceTypeDropDownList.closeDropDown(true); + } + + protected function colorFieldGroup_mouseDownHandler(param1:MouseEvent) : void + { + this._draggingColorField = true; + this.handleMousePosition(this.colorFieldGroup.mouseX,this.colorFieldGroup.mouseY); + } + + protected function colorFieldGroup_mouseMoveHandler(param1:MouseEvent) : void + { + if(this._draggingColorField) + { + this.handleMousePosition(this.colorFieldGroup.mouseX,this.colorFieldGroup.mouseY); + } + } + + protected function colorFieldGroup_mouseUpHandler(param1:MouseEvent) : void + { + if(this._draggingColorField) + { + this.notifyColorChange(); + this._draggingColorField = false; + } + } + + protected function handleMousePosition(param1:int, param2:int) : void + { + if(param1 < 0) + { + param1 = 0; + } + else if(param1 > COLOR_FIELD_SIZE) + { + param1 = COLOR_FIELD_SIZE; + } + if(param2 < 0) + { + param2 = 0; + } + else if(param2 > COLOR_FIELD_SIZE) + { + param2 = COLOR_FIELD_SIZE; + } + this.saturation = param1 / COLOR_FIELD_SIZE; + this.brightness = 1 - param2 / COLOR_FIELD_SIZE; + this.updateHexColorSpace(); + } + + protected function hexInput_focusOutHandler(param1:FocusEvent) : void + { + this.updateColorByHexInput(); + } + + protected function hexInput_enterHandler(param1:FlexEvent) : void + { + this.updateColorByHexInput(); + } + + protected function updateColorByHexInput() : void + { + this.currentColor = uint("0x" + this.hexInput.text); + this.notifyColorChange(); + } + + protected function rgbInput_enterHandler(param1:FlexEvent) : void + { + this.updateColorByRgbInput(); + } + + protected function rgbInput_focusOutHandler(param1:FocusEvent) : void + { + this.updateColorByRgbInput(); + } + + protected function rgbInput_keyDownHandler(param1:KeyboardEvent) : void + { + if(param1.charCode == Keyboard.TAB) + { + callLater(this.tabToNextRgbInput,[param1.currentTarget]); + } + } + + protected function hsbInput_keyDownHandler(param1:KeyboardEvent) : void + { + if(param1.charCode == Keyboard.TAB) + { + callLater(this.tabToNextHsbInput,[param1.currentTarget]); + } + } + + private function tabToNextRgbInput(param1:Object) : void + { + switch(param1) + { + case this.redInput: + this.greenInput.setFocus(); + break; + case this.greenInput: + this.blueInput.setFocus(); + break; + case this.blueInput: + this.redInput.setFocus(); + } + } + + private function tabToNextHsbInput(param1:Object) : void + { + switch(param1) + { + case this.hueInput: + this.saturationInput.setFocus(); + break; + case this.saturationInput: + this.brightnessInput.setFocus(); + break; + case this.brightnessInput: + this.hueInput.setFocus(); + } + } + + protected function updateColorByRgbInput() : void + { + this.currentColor = ColorUtils.rgbToColor(this.getRgbInputValue(this.redInput.text),this.getRgbInputValue(this.greenInput.text),this.getRgbInputValue(this.blueInput.text)); + this.notifyColorChange(); + } + + private function getRgbInputValue(param1:String) : int + { + var _loc2_:Number = parseInt(param1); + if(isNaN(_loc2_) || _loc2_ < 0) + { + _loc2_ = 0; + } + else if(_loc2_ > 255) + { + _loc2_ = 255; + } + return int(_loc2_); + } + + protected function hsbInput_focusOutHandler(param1:FocusEvent) : void + { + this.updateColorByHsbInput(); + } + + protected function hsbInput_enterHandler(param1:FlexEvent) : void + { + this.updateColorByHsbInput(); + } + + private function get hue() : Number + { + return this._hue; + } + + private function set hue(param1:Number) : void + { + if(this._hue == param1 || isNaN(param1)) + { + return; + } + if(param1 < HUE_MIN_VALUE) + { + param1 = HUE_MIN_VALUE; + } + else if(param1 > HUE_MAX_VALUE) + { + param1 = HUE_MAX_VALUE; + } + this._hue = param1; + } + + private function get saturation() : Number + { + return this._saturation; + } + + private function set saturation(param1:Number) : void + { + if(this._saturation == param1 || isNaN(param1)) + { + return; + } + if(param1 < SATURATION_MIN_VALUE) + { + param1 = SATURATION_MIN_VALUE; + } + else if(param1 > SATURATION_MAX_VALUE) + { + param1 = SATURATION_MAX_VALUE; + } + this._saturation = param1; + } + + private function get brightness() : Number + { + return this._brightness; + } + + private function set brightness(param1:Number) : void + { + if(this._brightness == param1 || isNaN(param1)) + { + return; + } + if(param1 < BRIGHTNESS_MIN_VALUE) + { + param1 = BRIGHTNESS_MIN_VALUE; + } + else if(param1 > BRIGHTNESS_MAX_VALUE) + { + param1 = BRIGHTNESS_MAX_VALUE; + } + this._brightness = param1; + } + + protected function updateColorByHsbInput() : void + { + this.hue = parseInt(this.hueInput.text); + this.saturation = parseInt(this.saturationInput.text) / 100; + this.brightness = parseInt(this.brightnessInput.text) / 100; + this.updateHexColorSpace(); + this.notifyColorChange(); + } + + protected function eyeDropperButton_clickHandler(param1:MouseEvent) : void + { + var _loc2_:EyeDropperScreenOverlay = EyeDropperScreenOverlay.instance; + if(!_loc2_) + { + return; + } + _loc2_.addEventListener(EyeDropperEvent.EYE_DROPPER_COMPLETE,this.eyeDropperScreenCap_eyeDropperCompletedHandler); + _loc2_.addEventListener(EyeDropperEvent.EYE_DROPPER_CANCEL,this.eyeDropperScreenCap_eyeDropperCancelHandler); + _loc2_.createScreenshotOverlay(); + dispatchEvent(new EyeDropperEvent(EyeDropperEvent.EYE_DROPPER_ACTIVATE)); + this.visible = false; + } + + protected function eyeDropperScreenCap_eyeDropperCompletedHandler(param1:EyeDropperEvent) : void + { + var _loc2_:EyeDropperScreenOverlay = EyeDropperScreenOverlay.instance; + if(!_loc2_) + { + return; + } + _loc2_.removeEventListener(EyeDropperEvent.EYE_DROPPER_COMPLETE,this.eyeDropperScreenCap_eyeDropperCompletedHandler); + _loc2_.removeEventListener(EyeDropperEvent.EYE_DROPPER_CANCEL,this.eyeDropperScreenCap_eyeDropperCancelHandler); + this.currentColor = param1.color; + this.notifyColorChange(); + dispatchEvent(param1.clone()); + } + + protected function eyeDropperScreenCap_eyeDropperCancelHandler(param1:EyeDropperEvent) : void + { + var _loc2_:EyeDropperScreenOverlay = EyeDropperScreenOverlay.instance; + if(!_loc2_) + { + return; + } + _loc2_.removeEventListener(EyeDropperEvent.EYE_DROPPER_COMPLETE,this.eyeDropperScreenCap_eyeDropperCompletedHandler); + _loc2_.removeEventListener(EyeDropperEvent.EYE_DROPPER_CANCEL,this.eyeDropperScreenCap_eyeDropperCancelHandler); + } + + protected function notifyColorChange() : void + { + var _loc1_:ColorPaletteEvent = new ColorPaletteEvent(ColorPaletteEvent.COLOR_CHANGE); + _loc1_.colorCode = this.currentColor; + dispatchEvent(_loc1_); + } + + protected function notifyColorPreview() : void + { + var _loc1_:ColorPaletteEvent = new ColorPaletteEvent(ColorPaletteEvent.COLOR_PREVIEW); + _loc1_.colorCode = this.currentColor; + dispatchEvent(_loc1_); + } + } +} diff --git a/scripts/anifire/component/CustomCharacterMaker.as b/scripts/anifire/component/CustomCharacterMaker.as new file mode 100644 index 0000000..bad9f21 --- /dev/null +++ b/scripts/anifire/component/CustomCharacterMaker.as @@ -0,0 +1,2354 @@ +package anifire.component +{ + import anifire.assets.AssetImageLibraryObject; + import anifire.cc.interfaces.ICcPairComponent; + import anifire.cc.model.CcComponentModel; + import anifire.cc.view.CCHeadView; + import anifire.cc.view.CcComponent; + import anifire.cc.view.CcHeadComponent; + import anifire.cc.view.CcImageLibrary; + import anifire.color.SelectedColor; + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.core.CCManager; + import anifire.core.GoBaseWorkerImp; + import anifire.event.LoadEmbedMovieEvent; + import anifire.event.LoadMgrEvent; + import anifire.interfaces.ICharacter; + import anifire.models.creator.CCCharActionComponentModel; + import anifire.models.creator.CCCharacterActionModel; + import anifire.models.creator.CCColor; + import anifire.util.ExtraDataLoader; + import anifire.util.UtilColor; + import anifire.util.UtilCrypto; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import anifire.util.UtilHashBytes; + import anifire.util.UtilHashNumber; + import anifire.util.UtilHashSelectedColor; + import anifire.util.UtilHashUint; + import anifire.util.UtilLoadMgr; + import anifire.util.UtilPlain; + import flash.display.BitmapData; + import flash.display.BlendMode; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.display.LoaderInfo; + import flash.display.Shader; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.filters.GlowFilter; + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.net.URLStream; + import flash.system.LoaderContext; + import flash.utils.ByteArray; + import flash.utils.setTimeout; + import nochump.util.zip.ZipEntry; + import nochump.util.zip.ZipFile; + + public class CustomCharacterMaker extends Sprite implements ICharacter + { + + public static const LOOK_AT_CAMERA_CHANGED:String = "CcLookAtCamera"; + + public static const SPEECH_PITCH_CHANGED:String = "CcPitchChanged"; + + public static const STATE_NULL:String = "null"; + + public static const STATE_LOADING:String = "loading"; + + public static const STATE_FINISH_LOAD:String = "finish_load"; + + public static const CC2_INIT_DELAY:Number = 200; + + private static var _numTotalLoadBytes:Number = 0; + + + private var GoColorMapShaderClass:Class; + + private const BODYSHAPE:String = "bodyshape"; + + private const XML_DESC:String = "desc.xml"; + + private const UPPERBODY:String = "upper_body"; + + private const CLIPUPPER:String = "theUpper"; + + private const LOWERBODY:String = "lower_body"; + + private const CLIPLOWER:String = "theLower"; + + private const DEFAULTHEAD:String = "defaultHead"; + + private const LIB_LEFT:String = "Left"; + + private const LIB_RIGHT:String = "Right"; + + private const NODE_COMPONENT:String = "component"; + + private const SWF_EXT:String = ".swf"; + + private const SKELETON:String = "skeleton"; + + private var _eventDispatcher:EventDispatcher; + + private var _myActionModel:CCCharacterActionModel; + + private var _charXML:XML; + + private var _charSwfs:UtilHashBytes; + + private var _charZip:ZipFile; + + private const MC:String = "MC"; + + private var _componentOrder:Array; + + private var _componentQueue:Array; + + private var should_decrypt:Boolean = true; + + private var _customColor:UtilHashSelectedColor; + + private var _shouldPauseOnLoadByteComplete:Boolean; + + private var _state:String; + + private var _waiting:Array; + + private var _decoArray:Array; + + private var _lookAtCameraSupported:Boolean = false; + + private var _prop:DisplayObjectContainer = null; + + private var _hasProp:Boolean = false; + + private var _sceneId:String; + + private var _head:CcHeadComponent; + + private var _head2:CCHeadView; + + private var _loadHead:Boolean = true; + + private var _useImageLibrary:Boolean = false; + + private var _headRect:Rectangle; + + private var _tempworker:GoBaseWorkerImp; + + private var _ccm:CCManager; + + private var _ver:Number; + + private var _libraries:UtilHashArray; + + private var _sDate:Date; + + private var _isLoadingLipSyncMouth:Boolean = false; + + private var _assetImageIdArray:UtilHashNumber; + + public function CustomCharacterMaker() + { + this.GoColorMapShaderClass = CustomCharacterMaker_GoColorMapShaderClass; + this._charXML = ; + this._componentOrder = CcLibConstant.ALL_BODY_COMPONENT_TYPES.concat(CcLibConstant.GET_COMPONENT_ORDER_IN_HEAD); + this._componentQueue = new Array(); + this._waiting = new Array(); + this._headRect = new Rectangle(); + this._libraries = new UtilHashArray(); + this._assetImageIdArray = new UtilHashNumber(); + super(); + this._customColor = new UtilHashSelectedColor(); + this._ccm = new CCManager(); + this.state = STATE_NULL; + this._eventDispatcher = new EventDispatcher(); + this._ver = 1; + } + + public function set useImageLibrary(param1:Boolean) : void + { + this._useImageLibrary = param1; + } + + public function set loadHead(param1:Boolean) : void + { + this._loadHead = param1; + } + + public function get demoSpeech() : Boolean + { + return false; + } + + public function set demoSpeech(param1:Boolean) : void + { + if(this._head) + { + this._head.useTalkMouth = param1; + } + if(this._head2) + { + this._head2.useTalkMouth = param1; + } + } + + public function set sceneId(param1:String) : void + { + this._sceneId = param1; + } + + public function get prop() : DisplayObjectContainer + { + return this._prop; + } + + public function set prop(param1:DisplayObjectContainer) : void + { + this._prop = param1; + } + + public function get head() : DisplayObjectContainer + { + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc1_ != null) + { + return _loc1_; + } + return null; + } + + public function get headRect() : Rectangle + { + return this._headRect; + } + + private function getSkeletonContainer(param1:Number = 0) : DisplayObjectContainer + { + var _loc2_:DisplayObjectContainer = null; + switch(param1) + { + case 2: + _loc2_ = UtilPlain.getInstance(this,CcLibConstant.COMPONENT_TYPE_FREEACTION); + break; + default: + _loc2_ = UtilPlain.getInstance(this,CcLibConstant.COMPONENT_TYPE_SKELETON); + } + return _loc2_; + } + + public function get CCM() : CCManager + { + return this._ccm; + } + + public function get lookAtCameraSupported() : Boolean + { + return this._lookAtCameraSupported; + } + + public function get shouldPauseOnLoadBytesComplete() : Boolean + { + return this._shouldPauseOnLoadByteComplete; + } + + public function set shouldPauseOnLoadBytesComplete(param1:Boolean) : void + { + this._shouldPauseOnLoadByteComplete = param1; + } + + private function get charXML() : XML + { + return this._charXML; + } + + private function set charXML(param1:XML) : void + { + this._charXML = param1; + } + + private function get charSwfs() : UtilHashBytes + { + return this._charSwfs; + } + + private function set charSwfs(param1:UtilHashBytes) : void + { + this._charSwfs = param1; + } + + private function get charZip() : ZipFile + { + return this._charZip; + } + + private function set charZip(param1:ZipFile) : void + { + this._charZip = param1; + } + + public function get eventDispatcher() : EventDispatcher + { + return this._eventDispatcher; + } + + private function get state() : String + { + return this._state; + } + + private function set state(param1:String) : void + { + this._state = param1; + } + + private function get waiting() : Array + { + return this._waiting; + } + + public function get ver() : Number + { + return this._ver; + } + + public function set ver(param1:Number) : void + { + this._ver = param1; + } + + private function doUpdateState(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doUpdateState); + this.state = STATE_FINISH_LOAD; + } + + public function prepareDataByCam() : void + { + var _loc1_:* = null; + var _loc2_:String = null; + var _loc3_:CCColor = null; + this._ver = this._myActionModel.version; + for(_loc1_ in this._myActionModel.libraryPaths) + { + _loc2_ = this._myActionModel.libraryPaths[_loc1_] as String; + this.addLibrary(_loc1_,_loc2_,this._myActionModel.themeId); + } + for(_loc1_ in this._myActionModel.colorCodes) + { + _loc3_ = this._myActionModel.colorCodes[_loc1_]; + this.addColor(_loc3_.type,_loc3_.oc,_loc3_.dest); + } + } + + private function prepareXML(param1:XML) : void + { + var _loc2_:XMLList = null; + var _loc3_:int = 0; + _loc2_ = param1.library; + this._ver = String(param1.@version).length > 0?Number(Number(param1.@version)):Number(1); + _loc3_ = 0; + while(_loc3_ < _loc2_.length()) + { + this.addLibrary(_loc2_[_loc3_].@type,_loc2_[_loc3_].@component_id,_loc2_[_loc3_].@theme_id); + _loc3_++; + } + _loc2_ = param1.color; + _loc3_ = 0; + while(_loc3_ < _loc2_.length()) + { + this.addColor(_loc2_[_loc3_].@r,uint(_loc2_[_loc3_].@oc.length() > 0?_loc2_[_loc3_].@oc:uint.MAX_VALUE),uint(_loc2_[_loc3_].text())); + _loc3_++; + } + } + + public function removeLibrary(param1:String) : void + { + this._libraries.removeByKey(param1); + } + + public function addLibrary(param1:String, param2:String, param3:String) : void + { + var _loc4_:Library = new Library(); + _loc4_.type = param1; + _loc4_.component_id = param2; + _loc4_.theme_id = param3; + this._libraries.push(_loc4_.type,_loc4_); + } + + public function insertColor(param1:UtilHashSelectedColor) : void + { + if(param1) + { + this._customColor.insert(0,param1); + this.CCM.colors.insert(0,param1); + } + } + + public function addColor(param1:String, param2:uint, param3:uint) : void + { + var _loc4_:SelectedColor = new SelectedColor(param1,param2,param3); + this._customColor.push(_loc4_.areaName,_loc4_); + this.CCM.addColor(_loc4_.areaName,_loc4_); + } + + public function getColorByName(param1:String) : uint + { + return SelectedColor(this._customColor.getValueByKey(param1)).dstColor; + } + + public function loadZip(param1:String, param2:String, param3:String = "") : void + { + this.initByActionId(param1,param2,param3); + } + + private function doLoadZipComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doLoadZipComplete); + var _loc2_:URLStream = URLStream(param1.target); + var _loc3_:ByteArray = new ByteArray(); + _loc2_.readBytes(_loc3_,0,_loc2_.bytesAvailable); + var _loc4_:ZipFile = new ZipFile(_loc3_); + this.charZip = _loc4_; + this.initByZip(_loc4_); + } + + public function updateByZip(param1:ByteArray) : void + { + var _loc2_:ZipFile = new ZipFile(param1); + this.charZip = _loc2_; + this.initByZip(_loc2_); + } + + public function initByZip(param1:ZipFile) : void + { + this.destroy(); + this.charXML = new XML(param1.getInput(param1.getEntry(this.XML_DESC))); + this.prepareXML(this.charXML); + this.prepareSkin(); + } + + private function prepareSkinByCam() : void + { + var _loc2_:String = null; + var _loc3_:ByteArray = null; + var _loc5_:* = null; + var _loc6_:ExtraDataLoader = null; + var _loc7_:LoaderContext = null; + var _loc8_:Object = null; + var _loc1_:Date = new Date(); + var _loc4_:UtilLoadMgr = new UtilLoadMgr(); + _loc4_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.doPrepareFinishedByCam); + for(_loc5_ in this._myActionModel.libraryPaths) + { + _loc6_ = new ExtraDataLoader(); + _loc2_ = this._myActionModel.libraryPaths[_loc5_]; + if(this._useImageLibrary) + { + if(CcImageLibrary.library.requestImage(_loc2_,this._sceneId,_loc6_) > 0) + { + continue; + } + } + _loc3_ = this.charSwfs.getValueByKey(_loc2_); + _loc7_ = new LoaderContext(); + _loc7_.allowCodeImport = true; + if(_loc3_ != null) + { + _loc8_ = new Object(); + _loc8_["part"] = _loc5_; + _loc6_.extraData = _loc8_; + _loc4_.addEventDispatcher(_loc6_.contentLoaderInfo,Event.COMPLETE); + _loc6_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadStyleDone); + _loc6_.loadBytes(_loc3_,_loc7_); + _numTotalLoadBytes++; + } + } + _loc4_.commit(); + } + + private function prepareSkin(param1:UtilHashBytes = null) : void + { + var _loc3_:XML = null; + var _loc4_:String = null; + var _loc5_:ByteArray = null; + var _loc7_:ExtraDataLoader = null; + var _loc8_:ZipEntry = null; + var _loc9_:Object = null; + var _loc2_:Date = new Date(); + var _loc6_:UtilLoadMgr = new UtilLoadMgr(); + _loc6_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.doPrepareFinished); + for each(_loc3_ in this.charXML.child(CcLibConstant.NODE_LIBRARY)) + { + _loc7_ = new ExtraDataLoader(); + _loc4_ = _loc3_.@theme_id + "." + _loc3_.@type + "." + _loc3_.@component_id + this.SWF_EXT; + if(this._useImageLibrary) + { + if(CcImageLibrary.library.requestImage(_loc4_,this._sceneId,_loc7_) > 0) + { + continue; + } + } + if(param1 == null || param1.length == 0) + { + if(this.charZip != null) + { + _loc8_ = this.charZip.getEntry(_loc4_); + if(_loc8_ != null) + { + _loc5_ = this.charZip.getInput(_loc8_); + } + } + else if(this.charSwfs != null) + { + _loc5_ = this.charSwfs.getValueByKey(_loc4_); + } + } + else + { + _loc5_ = param1.getValueByKey(_loc4_); + } + if(_loc5_ != null) + { + _loc9_ = new Object(); + _loc9_["part"] = String(_loc3_.@type); + _loc7_.extraData = _loc9_; + _loc6_.addEventDispatcher(_loc7_.contentLoaderInfo,Event.COMPLETE); + _loc7_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadStyleDone); + _loc7_.loadBytes(_loc5_); + _numTotalLoadBytes++; + } + } + _loc6_.commit(); + } + + private function onLoadStyleDone(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadStyleDone); + var _loc2_:LoaderInfo = LoaderInfo(param1.currentTarget); + var _loc3_:Object = ExtraDataLoader(_loc2_.loader).extraData; + var _loc4_:Date = new Date(); + this.CCM.addStyle(_loc3_["part"],_loc2_); + } + + private function doPrepareFinishedByCam(param1:Event) : void + { + var _loc2_:Date = new Date(); + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doPrepareFinishedByCam); + this.loadAllComponentsByCam(null); + } + + private function doPrepareFinished(param1:Event) : void + { + var _loc2_:Date = new Date(); + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doPrepareFinished); + this.loadAllComponents(null); + } + + public function get lookAtCamera() : Boolean + { + if(this._head) + { + return this._head.lookAtCamera; + } + if(this._head2) + { + return this._head2.lookAtCamera; + } + return false; + } + + public function set lookAtCamera(param1:Boolean) : void + { + if(this._head) + { + this._head.lookAtCamera = param1; + } + if(this._head2) + { + this._head2.lookAtCamera = param1; + } + } + + private function onBodyImageRequested(param1:Event) : void + { + var _loc2_:DisplayObjectContainer = null; + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onBodyImageRequested); + if(this._loadHead) + { + if(this._head) + { + this._head.addEventListener(Event.COMPLETE,this.onHeadImageRequested); + this._head.requestImage(this._sceneId); + } + else if(this._head2) + { + this._head2.addEventListener(Event.COMPLETE,this.onHeadImageRequested); + this._head2.requestImage(this._sceneId); + } + else if(this._myActionModel) + { + this._head2 = new CCHeadView(); + this._head2.initByCam(this._myActionModel,this._sceneId,this._useImageLibrary); + this._head2.addEventListener(Event.COMPLETE,this.onHeadImageRequested); + this._head2.load(); + _loc2_ = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc2_) + { + _loc2_.addChild(this._head2); + } + } + else if(this.charXML) + { + this._head = new CcHeadComponent(); + this._head.init(this.charXML,this._sceneId,this._useImageLibrary); + this._head.addEventListener(Event.COMPLETE,this.onHeadImageRequested); + this._head.load(); + _loc2_ = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc2_) + { + _loc2_.addChild(this._head); + } + } + } + else + { + this.dispatchComplete(); + } + } + + private function onHeadImageRequested(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onHeadImageRequested); + this.dispatchComplete(); + } + + private function requestImage() : void + { + var _loc2_:ExtraDataLoader = null; + var _loc3_:XML = null; + var _loc4_:Object = null; + var _loc5_:String = null; + var _loc6_:AssetImageLibraryObject = null; + var _loc7_:String = null; + var _loc8_:ByteArray = null; + var _loc9_:Number = NaN; + var _loc10_:ZipEntry = null; + var _loc11_:Object = null; + var _loc12_:* = null; + var _loc1_:UtilLoadMgr = new UtilLoadMgr(); + _loc1_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onBodyImageRequested); + if(this._useImageLibrary) + { + if(this.charXML) + { + for each(_loc3_ in this.charXML.child(CcLibConstant.NODE_LIBRARY)) + { + _loc2_ = new ExtraDataLoader(); + _loc7_ = _loc3_.@theme_id + "." + _loc3_.@type + "." + _loc3_.@component_id + this.SWF_EXT; + _loc9_ = 0; + _loc9_ = CcImageLibrary.library.requestImage(_loc7_,this._sceneId,_loc2_); + if(_loc9_ <= 0) + { + if(this.charZip != null) + { + _loc10_ = this.charZip.getEntry(_loc7_); + if(_loc10_ != null) + { + _loc8_ = this.charZip.getInput(_loc10_); + } + } + else if(this.charSwfs != null) + { + _loc8_ = this.charSwfs.getValueByKey(_loc7_); + } + if(_loc8_ != null) + { + _loc11_ = new Object(); + _loc11_["part"] = String(_loc3_.@type); + _loc2_.extraData = _loc11_; + _loc1_.addEventDispatcher(_loc2_.contentLoaderInfo,Event.COMPLETE); + _loc2_.loadBytes(_loc8_); + _numTotalLoadBytes++; + } + } + } + for each(_loc3_ in this.charXML.child(this.NODE_COMPONENT)) + { + if(this.shouldComponentBeBorrowed(_loc3_.@type) && CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(String(_loc3_.@type)) >= 0) + { + this.updateComponentImageData(_loc3_.@type,null,null,_loc1_,null,_loc3_.@id,_loc3_); + } + } + } + if(this._myActionModel) + { + for(_loc12_ in this._myActionModel.libraryPaths) + { + _loc2_ = new ExtraDataLoader(); + _loc7_ = this._myActionModel.libraryPaths[_loc12_]; + _loc9_ = 0; + _loc9_ = CcImageLibrary.library.requestImage(_loc7_,this._sceneId,_loc2_); + if(_loc9_ <= 0) + { + if(this.charZip != null) + { + _loc10_ = this.charZip.getEntry(_loc7_); + if(_loc10_ != null) + { + _loc8_ = this.charZip.getInput(_loc10_); + } + } + else if(this.charSwfs != null) + { + _loc8_ = this.charSwfs.getValueByKey(_loc7_); + } + if(_loc8_ != null) + { + _loc11_ = new Object(); + _loc11_["part"] = String(_loc12_); + _loc2_.extraData = _loc11_; + _loc1_.addEventDispatcher(_loc2_.contentLoaderInfo,Event.COMPLETE); + _loc2_.loadBytes(_loc8_); + _numTotalLoadBytes++; + } + } + } + for(_loc12_ in this._myActionModel.components) + { + if(this.shouldComponentBeBorrowed(_loc12_) && CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(_loc12_) >= 0) + { + this.updateComponentImageData(_loc12_,null,null,_loc1_,null,_loc12_); + } + } + } + } + _loc1_.commit(); + } + + private function shouldComponentBeBorrowed(param1:String) : Boolean + { + if(param1 == this.SKELETON || param1 == CcLibConstant.COMPONENT_TYPE_FREEACTION || param1 == this.BODYSHAPE) + { + return false; + } + return true; + } + + public function initBySwfs(param1:XML, param2:UtilHashBytes, param3:UtilHashBytes = null) : void + { + var _loc4_:Date = new Date(); + if(this.state == STATE_NULL) + { + this.state = STATE_LOADING; + } + else + { + if(this.state == STATE_LOADING) + { + if(this._useImageLibrary) + { + this.requestImage(); + } + return; + } + if(this.state == STATE_FINISH_LOAD) + { + if(this._useImageLibrary) + { + this.requestImage(); + } + else + { + setTimeout(this.dispatchComplete,100); + } + return; + } + } + this.should_decrypt = false; + this.charXML = param1; + this.charSwfs = param2.clone(); + this._waiting = new Array(); + this.visible = false; + this.destroy(); + this.prepareXML(this.charXML); + this.prepareSkin(param3); + } + + public function initBySwfCam(param1:CCCharacterActionModel, param2:UtilHashBytes, param3:UtilHashBytes = null) : void + { + var _loc4_:Date = new Date(); + if(this.state == STATE_NULL) + { + this.state = STATE_LOADING; + } + else + { + if(this.state == STATE_LOADING) + { + if(this._useImageLibrary) + { + this.requestImage(); + } + return; + } + if(this.state == STATE_FINISH_LOAD) + { + if(this._useImageLibrary) + { + this.requestImage(); + } + else + { + setTimeout(this.dispatchComplete,100); + } + return; + } + } + this.should_decrypt = false; + this._myActionModel = param1; + this.charSwfs = param2.clone(); + this._waiting = new Array(); + this.visible = false; + this.destroy(); + this.prepareDataByCam(); + this.prepareSkinByCam(); + } + + public function initByActionId(param1:String, param2:String = "", param3:String = "", param4:Boolean = false) : void + { + var loader:CcActionLoader = null; + var aid:String = param1; + var actionId:String = param2; + var facialId:String = param3; + var isDefault:Boolean = param4; + try + { + if(aid) + { + loader = CcActionLoader.getActionLoader(aid + actionId); + loader.addEventListener(Event.COMPLETE,this.onCcActionLoaded); + loader.addEventListener(IOErrorEvent.IO_ERROR,this.onCcActionFailed); + loader.load(aid,actionId,facialId,isDefault); + } + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CCM:initByActionId",e); + return; + } + } + + public function initByCamWithData(param1:CCCharacterActionModel, param2:Number = 0, param3:Number = 0, param4:UtilHashBytes = null, param5:Boolean = false, param6:Boolean = false, param7:String = "") : void + { + if(!param1) + { + return; + } + this._sDate = new Date(); + var _loc8_:CcActionLoader = CcActionLoader.getActionLoader(param7); + _loc8_.addEventListener(Event.COMPLETE,this.onCcActionLoadedByCam); + _loc8_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcActionFailed); + _loc8_.loadCcComponentsByCam(param1,param4,this.ver); + } + + public function initByXMLWithData(param1:XML, param2:Number = 0, param3:Number = 0, param4:UtilHashBytes = null, param5:Boolean = false, param6:Boolean = false, param7:String = "") : void + { + if(!param1) + { + return; + } + this._sDate = new Date(); + var _loc8_:CcActionLoader = CcActionLoader.getActionLoader(param7); + _loc8_.addEventListener(Event.COMPLETE,this.onCcActionLoaded); + _loc8_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcActionFailed); + _loc8_.loadCcComponents(param1,param2,param3,param4,this.ver,param6); + } + + public function initByXml(param1:XML, param2:Number = 0, param3:Number = 0, param4:Boolean = false) : void + { + if(!param1) + { + return; + } + var _loc5_:CcActionLoader = new CcActionLoader(); + _loc5_.addEventListener(Event.COMPLETE,this.onCcActionLoaded); + _loc5_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcActionFailed); + _loc5_.loadCcComponents(param1,param2,param3,null,this.ver); + } + + public function initByCam(param1:CCCharacterActionModel) : void + { + if(!param1) + { + return; + } + this._myActionModel = param1; + var _loc2_:CcActionLoader = new CcActionLoader(); + _loc2_.addEventListener(Event.COMPLETE,this.onCcActionLoadedByCam); + _loc2_.addEventListener(IOErrorEvent.IO_ERROR,this.onCcActionFailed); + _loc2_.loadCcComponentsByCam(param1); + } + + private function onCcActionFailed(param1:IOErrorEvent) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onCcActionFailed); + dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR)); + } + + private function onCcActionLoadedByCam(param1:Event) : void + { + var loader:CcActionLoader = null; + var e:Event = param1; + (e.target as IEventDispatcher).removeEventListener(e.type,this.onCcActionLoadedByCam); + var cDate:Date = new Date(); + try + { + loader = CcActionLoader(e.target); + if(loader.imageData) + { + this.initBySwfCam(loader.imageData["cam"] as CCCharacterActionModel,loader.imageData["imageData"] as UtilHashBytes); + } + loader = null; + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CCM:onCcActionLoaded:",e); + return; + } + } + + private function onCcActionLoaded(param1:Event) : void + { + var loader:CcActionLoader = null; + var e:Event = param1; + (e.target as IEventDispatcher).removeEventListener(e.type,this.onCcActionLoaded); + var cDate:Date = new Date(); + try + { + loader = CcActionLoader(e.target); + loader.removeEventListener(e.type,this.onCcActionLoaded); + if(loader.imageData) + { + this.initBySwfs(loader.imageData["xml"] as XML,loader.imageData["imageData"] as UtilHashBytes); + } + loader = null; + return; + } + catch(e:Error) + { + UtilErrorLogger.getInstance().appendCustomError("CCM:onCcActionLoaded:",e); + return; + } + } + + private function loadAllComponentsByCam(param1:Event) : void + { + var _loc3_:XML = null; + var _loc5_:* = null; + var _loc6_:ExtraDataLoader = null; + if(!this._myActionModel) + { + return; + } + var _loc2_:Date = new Date(); + this._decoArray = new Array(); + var _loc4_:UtilLoadMgr = new UtilLoadMgr(); + _loc4_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onBodyLoadedByCam); + for(_loc5_ in this._myActionModel.components) + { + if(CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(_loc5_) > -1) + { + _loc6_ = this.updateComponentImageData(_loc5_,null,null,_loc4_,null,this._myActionModel.getComponentByType(_loc5_).path); + } + } + _loc4_.commit(); + } + + private function loadAllComponents(param1:Event) : void + { + var _loc3_:XML = null; + var _loc5_:ExtraDataLoader = null; + var _loc2_:Date = new Date(); + this._decoArray = new Array(); + var _loc4_:UtilLoadMgr = new UtilLoadMgr(); + _loc4_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onBodyLoaded); + for each(_loc3_ in this.charXML.child(this.NODE_COMPONENT)) + { + if(CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(String(_loc3_.@type)) >= 0) + { + _loc5_ = this.updateComponentImageData(_loc3_.@type,null,null,_loc4_,null,_loc3_.@id,_loc3_); + } + } + _loc4_.commit(); + } + + public function updateComponentImageData(param1:String, param2:ByteArray, param3:Object, param4:UtilLoadMgr, param5:Array = null, param6:String = "", param7:XML = null) : ExtraDataLoader + { + var clipName:String = null; + var key:String = null; + var model:CcComponentModel = null; + var cacm:CCCharActionComponentModel = null; + var colorNames:Object = null; + var swfkey:String = null; + var tmpByteArray:ByteArray = null; + var decryptEngine:UtilCrypto = null; + var loaderContext:LoaderContext = null; + var componentType:String = param1; + var swfByteArray:ByteArray = param2; + var properties:Object = param3; + var loadMgr:UtilLoadMgr = param4; + var colors:Array = param5; + var id:String = param6; + var node:XML = param7; + if(CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(componentType) < 0) + { + if(!this._head) + { + this._head = new CcHeadComponent(); + } + model = CcComponentModel.createModelByType(componentType); + model.initProperties(id,componentType,properties.x,properties.y,properties.xscale,properties.yscale,properties.rotation,properties.offset,properties.split); + model.initColors(colors); + this._head.addEventListener(Event.COMPLETE,this.onHeadLoaded); + this._head.setComponent(model,swfByteArray); + return null; + } + var loader:ExtraDataLoader = new ExtraDataLoader(); + var assetImageId:Number = 0; + if(this._useImageLibrary) + { + if(node) + { + key = node.@theme_id + "." + node.@type + "." + node.@path + "." + node.@file; + if(this.shouldComponentBeBorrowed(node.@type)) + { + assetImageId = CcImageLibrary.library.requestImage(key,this._sceneId,loader); + if(assetImageId > 0) + { + return null; + } + } + } + if(this._myActionModel) + { + key = this._myActionModel.getComponentByType(componentType).path; + if(this.shouldComponentBeBorrowed(componentType)) + { + assetImageId = CcImageLibrary.library.requestImage(key,this._sceneId,loader); + if(assetImageId > 0) + { + return null; + } + } + } + } + switch(componentType) + { + case this.SKELETON: + case CcLibConstant.COMPONENT_TYPE_FREEACTION: + clipName = ""; + properties = { + "x":0, + "y":0, + "xscale":1, + "yscale":1, + "offset":0 + }; + break; + case this.UPPERBODY: + clipName = this.CLIPUPPER; + break; + case this.LOWERBODY: + clipName = this.CLIPLOWER; + break; + default: + clipName = this.DEFAULTHEAD; + } + var decoIndex:Number = -1; + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(componentType) == -1) + { + loader.name = componentType; + } + else + { + loader.name = id; + decoIndex = this._decoArray.push(id) - 1; + } + if(properties == null) + { + if(node) + { + properties = { + "x":String(node.@x), + "y":String(node.@y), + "xscale":String(node.@xscale), + "yscale":String(node.@yscale), + "offset":String(node.@offset), + "rotation":String(node.@rotation), + "split":(!!Boolean(String(node.@split) == "N")?false:true) + }; + } + if(this._myActionModel) + { + cacm = this._myActionModel.getComponentByType(componentType) as CCCharActionComponentModel; + properties = { + "x":cacm.x, + "y":cacm.y, + "xscale":cacm.xscale, + "yscale":cacm.yscale, + "offset":cacm.offset, + "rotation":cacm.rotation, + "split":cacm.split + }; + } + } + if(colors == null) + { + if(node) + { + colorNames = CcLibConstant.COLORS_BY_COMPONENT(node.@type); + if(colorNames) + { + colors = (colorNames as Array).map(function(param1:String, param2:int, param3:Array):Object + { + var colorXMLNode:* = undefined; + var colorObj:* = undefined; + var item:String = param1; + var index:int = param2; + var array:Array = param3; + colorXMLNode = charXML.color.(@r == item); + colorObj = { + "colorReference":String(colorXMLNode.@r), + "originalColor":(String(colorXMLNode.@oc).length == 0?uint.MAX_VALUE:uint(colorXMLNode.@oc)), + "colorValue":uint(colorXMLNode.text()), + "targetComponentId":"" + }; + return colorObj; + }); + } + } + if(this._myActionModel) + { + colorNames = CcLibConstant.COLORS_BY_COMPONENT(componentType); + if(colorNames) + { + colors = (colorNames as Array).map(function(param1:String, param2:int, param3:Array):Object + { + var _loc4_:* = _myActionModel.getColor(componentType); + var _loc5_:* = { + "colorReference":_loc4_.type, + "originalColor":_loc4_.oc, + "colorValue":_loc4_.dest, + "targetComponentId":"" + }; + return _loc5_; + }); + } + } + } + loader.extraData = { + "componentType":componentType, + "properties":properties, + "colors":colors, + "clipName":clipName, + "index":decoIndex + }; + if(swfByteArray == null) + { + if(node) + { + if(node.@type != CcLibConstant.COMPONENT_TYPE_MOUTH) + { + swfkey = node.@theme_id + "." + node.@type + "." + node.@component_id + this.SWF_EXT; + } + } + else + { + swfkey = this._myActionModel.getComponentByType(componentType).path; + } + if(this.charZip != null) + { + swfByteArray = this.charZip.getInput(this.charZip.getEntry(swfkey)); + } + else if(this.charSwfs != null) + { + swfByteArray = this.charSwfs.getValueByKey(swfkey); + } + } + this._isLoadingLipSyncMouth = false; + loadMgr.addEventDispatcher(loader,Event.INIT); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadImageData); + if(swfByteArray) + { + if(this.should_decrypt) + { + tmpByteArray = new ByteArray(); + swfByteArray.readBytes(tmpByteArray); + tmpByteArray.position = 0; + swfByteArray.position = 0; + decryptEngine = new UtilCrypto(); + decryptEngine.decrypt(tmpByteArray); + loader.loadBytes(tmpByteArray); + } + else + { + loaderContext = new LoaderContext(); + loaderContext.allowCodeImport = true; + swfByteArray.position = 0; + loader.loadBytes(swfByteArray,loaderContext); + } + _numTotalLoadBytes++; + } + return loader; + } + + public function speak(param1:Number) : void + { + if(this._head) + { + this._head.speak(param1); + } + if(this._head2) + { + this._head2.speak(param1); + } + } + + private function onLoadImageData(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadImageData); + var _loc2_:ExtraDataLoader = ExtraDataLoader(LoaderInfo(param1.currentTarget).loader); + var _loc3_:Object = _loc2_.extraData; + var _loc4_:String = _loc3_["componentType"]; + if(this._useImageLibrary && this.shouldComponentBeBorrowed(_loc4_) && _loc4_ != "mouth") + { + _loc2_.dispatchEvent(new Event(Event.INIT)); + } + else + { + this.doLoadImageData(_loc2_); + } + } + + private function doLoadImageData(param1:ExtraDataLoader) : void + { + var _loc8_:DisplayObjectContainer = null; + var _loc9_:int = 0; + var _loc2_:Object = param1.extraData; + var _loc3_:String = _loc2_["componentType"]; + var _loc4_:Object = _loc2_["properties"]; + var _loc5_:Array = _loc2_["colors"]; + var _loc6_:String = _loc2_["clipName"]; + var _loc7_:Number = Number(_loc2_["index"]); + if(_loc6_ != "") + { + _loc8_ = UtilPlain.getInstance(this,_loc6_); + } + else + { + _loc8_ = this; + } + if(_loc8_ != null) + { + if(this._componentOrder.indexOf(_loc3_) == -1) + { + this.doLoadedComponent(param1); + } + else if(_loc6_ != this.DEFAULTHEAD) + { + _loc9_ = _loc8_.numChildren; + while(_loc9_ > 0) + { + _loc8_.removeChildAt(_loc9_ - 1); + _loc9_--; + } + param1.addEventListener(Event.ADDED,this.loadedComponent); + _loc8_.addChild(param1); + if(_loc8_ == this) + { + this.redoWaitingImageData(); + } + if(this.ver == 2) + { + this.reloadSkin(); + } + } + } + else + { + this.waiting.push(param1); + } + } + + private function coNumber() : Number + { + return this._decoArray.length >= 0?Number(this._decoArray.length):Number(100); + } + + private function redoWaitingImageData() : void + { + var _loc2_:int = 0; + var _loc3_:ExtraDataLoader = null; + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + _loc2_ = 0; + while(_loc2_ < this.waiting.length) + { + _loc3_ = this.waiting[_loc2_] as ExtraDataLoader; + this.doLoadImageData(_loc3_); + _loc2_++; + } + } + + private function loadedComponent(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.loadedComponent); + var _loc2_:ExtraDataLoader = ExtraDataLoader(param1.currentTarget); + this.doLoadedComponent(_loc2_); + } + + private function doLoadedComponent(param1:ExtraDataLoader) : void + { + var _loc7_:int = 0; + var _loc8_:Object = null; + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + var _loc3_:Object = param1.extraData; + var _loc4_:String = _loc3_["componentType"]; + var _loc5_:Object = _loc3_["properties"]; + var _loc6_:Array = _loc3_["colors"]; + if(this._componentOrder.indexOf(_loc4_) != -1) + { + if(_loc6_ != null) + { + _loc7_ = 0; + while(_loc7_ < _loc6_.length) + { + _loc8_ = _loc6_[_loc7_] as Object; + this.updateColor(_loc8_); + _loc7_++; + } + } + param1.dispatchEvent(new Event(Event.INIT)); + } + } + + public function updateColor(param1:Object) : void + { + var _loc2_:UtilHashUint = new UtilHashUint(); + var _loc3_:SelectedColor = new SelectedColor(param1["colorReference"],param1["originalColor"],param1["colorValue"]); + this.changeColor(_loc3_,param1["targetComponentId"]); + if(param1["originalColor"] != uint.MAX_VALUE) + { + this._customColor.push(_loc3_.areaName,_loc3_); + _loc2_.push("0x" + _loc3_.orgColor.toString(16),_loc3_.dstColor); + } + if(_loc2_.length > 0) + { + this.changeColorForShader(_loc2_); + } + this.addColor(_loc3_.areaName,_loc3_.orgColor,_loc3_.dstColor); + } + + public function deleteColorByArea(param1:String) : void + { + this._customColor.removeByKey(param1); + this.CCM.deleteColor(param1); + } + + public function changeColor(param1:SelectedColor, param2:String = "") : Number + { + var _loc3_:DisplayObject = null; + if(param2 == "") + { + _loc3_ = this; + } + else + { + _loc3_ = UtilPlain.getInstance(this,param2); + } + var _loc4_:uint = UtilColor.setAssetPartColor(_loc3_,param1.areaName,param1.dstColor); + return _loc4_; + } + + public function changeColorForShader(param1:UtilHashUint) : Number + { + var _loc2_:Number = NaN; + var _loc8_:int = 0; + var _loc9_:int = 0; + var _loc12_:Number = NaN; + var _loc13_:Number = NaN; + var _loc14_:Number = NaN; + var _loc3_:Shader = new Shader(); + _loc3_.byteCode = new this.GoColorMapShaderClass(); + var _loc4_:Array = new Array(); + var _loc5_:Array = new Array(); + var _loc6_:Array = new Array(); + var _loc7_:UtilHashUint = new UtilHashUint(); + _loc8_ = 0; + while(_loc8_ < this._customColor.length) + { + if(SelectedColor(this._customColor.getValueByIndex(_loc8_)).orgColor != uint.MAX_VALUE) + { + _loc7_.push("0x" + SelectedColor(this._customColor.getValueByIndex(_loc8_)).orgColor.toString(16),SelectedColor(this._customColor.getValueByIndex(_loc8_)).dstColor); + } + _loc8_++; + } + _loc7_.insert(0,param1,true); + _loc9_ = 0; + while(_loc9_ < _loc7_.length) + { + if(uint(_loc7_.getKey(_loc9_)) == 0) + { + _loc7_.remove(_loc9_,1); + } + _loc9_++; + } + _loc9_ = 0; + while(_loc9_ < _loc7_.length) + { + _loc6_.push(uint(_loc7_.getKey(_loc9_))); + _loc12_ = uint(_loc7_.getValueByIndex(_loc9_)) >> 16 & 255; + _loc13_ = uint(_loc7_.getValueByIndex(_loc9_)) >> 8 & 255; + _loc14_ = uint(_loc7_.getValueByIndex(_loc9_)) & 255; + if(_loc9_ / 4 < 1) + { + _loc4_[_loc9_ * 4 + 0] = _loc12_ / 255; + _loc4_[_loc9_ * 4 + 1] = _loc13_ / 255; + _loc4_[_loc9_ * 4 + 2] = _loc14_ / 255; + } + else + { + _loc5_[_loc9_ % 4 * 4 + 0] = _loc12_ / 255; + _loc5_[_loc9_ % 4 * 4 + 1] = _loc13_ / 255; + _loc5_[_loc9_ % 4 * 4 + 2] = _loc14_ / 255; + } + _loc9_++; + } + _loc3_.data["colorValue0"].value = _loc4_; + _loc3_.data["colorValue1"].value = _loc5_; + _loc3_.data["colorKey"].value = _loc6_; + var _loc10_:Array = UtilPlain.getAllShaderObj(this); + var _loc11_:int = 0; + while(_loc11_ < _loc10_.length) + { + DisplayObject(_loc10_[_loc11_]).blendMode = BlendMode.NORMAL; + DisplayObject(_loc10_[_loc11_]).blendMode = BlendMode.SHADER; + DisplayObject(_loc10_[_loc11_]).visible = true; + DisplayObject(_loc10_[_loc11_]).blendShader = _loc3_; + _loc11_++; + } + return _loc2_; + } + + private function hideColorItems(param1:Array) : void + { + var _loc2_:int = 0; + while(_loc2_ < param1.length) + { + DisplayObject(param1[_loc2_]).alpha = 0; + _loc2_++; + } + } + + private function onBodyLoaded(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onBodyLoaded); + var _loc2_:Date = new Date(); + if(this._loadHead) + { + this._head = new CcHeadComponent(); + this._head.init(this.charXML,this._sceneId,this._useImageLibrary); + this._head.addEventListener(Event.COMPLETE,this.onHeadLoaded); + this._head.load(); + } + else + { + this.onReady(); + } + } + + private function onBodyLoadedByCam(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onBodyLoadedByCam); + var _loc2_:Date = new Date(); + if(this._loadHead) + { + this._head2 = new CCHeadView(); + this._head2.initByCam(this._myActionModel,this._sceneId,this._useImageLibrary); + this._head2.addEventListener(Event.COMPLETE,this.onHeadLoaded); + this._head2.load(); + } + else + { + this.onReady(); + } + } + + private function onHeadLoaded(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onHeadLoaded); + if(this._head) + { + this._lookAtCameraSupported = this._head.supportLookAtCamera; + } + if(this._head2) + { + this._lookAtCameraSupported = this._head2.supportLookAtCamera; + } + this.onReady(); + } + + public function onReady(param1:Event = null) : void + { + var _loc3_:SelectedColor = null; + var _loc4_:XML = null; + var _loc7_:* = null; + var _loc8_:CCColor = null; + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onReady); + } + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc2_) + { + if(this._head) + { + _loc2_.addChild(this._head); + } + if(this._head2) + { + _loc2_.addChild(this._head2); + } + } + var _loc5_:UtilHashUint = new UtilHashUint(); + if(this.charXML) + { + for each(_loc4_ in this.charXML.child(CcLibConstant.NODE_COLOR)) + { + _loc3_ = new SelectedColor(_loc4_.@r,String(_loc4_.@oc).length == 0?uint(uint.MAX_VALUE):uint(uint(_loc4_.@oc)),uint(_loc4_)); + this.changeColor(_loc3_,_loc4_.@targetComponent == null?"":_loc4_.@targetComponent); + if(_loc3_.orgColor != uint.MAX_VALUE) + { + this._customColor.push(_loc3_.areaName,_loc3_); + _loc5_.push("0x" + _loc3_.orgColor.toString(16),_loc3_.dstColor); + } + } + } + if(this._myActionModel) + { + for(_loc7_ in this._myActionModel.colorCodes) + { + _loc8_ = this._myActionModel.colorCodes[_loc7_]; + _loc3_ = new SelectedColor(_loc8_.type,_loc8_.oc,_loc8_.dest); + this.changeColor(_loc3_,!!_loc8_.targetComponent?_loc8_.targetComponent:""); + if(_loc3_.orgColor != uint.MAX_VALUE) + { + this._customColor.push(_loc3_.areaName,_loc3_); + _loc5_.push("0x" + _loc3_.orgColor.toString(16),_loc3_.dstColor); + } + } + } + if(_loc5_.length > 0) + { + this.changeColorForShader(_loc5_); + } + this.refreshScale(); + this.pause(); + if(!this.shouldPauseOnLoadBytesComplete) + { + this.resume(); + } + this.state = STATE_FINISH_LOAD; + this.updateHeadRect(); + if(this.ver == 2) + { + setTimeout(this.dispatchComplete,CC2_INIT_DELAY); + } + else + { + this.dispatchComplete(); + } + var _loc6_:Date = new Date(); + } + + public function resume() : void + { + UtilPlain.playFamily(this); + } + + public function pause() : void + { + UtilPlain.gotoAndStopFamilyAt1(this); + } + + private function shiftHead() : void + { + if(this.charXML.@headdx != 0 || this.charXML.@headdy != 0) + { + this.updateHeadPos(Number(this.charXML.@headdx),Number(this.charXML.@headdy)); + } + } + + public function refreshScale() : void + { + if(this.charXML) + { + if(this.charXML.@xscale > 0 && this.charXML.@yscale > 0) + { + this.updateBodyScale(Number(this.charXML.@xscale),Number(this.charXML.@yscale)); + } + if(this.charXML.@hxscale > 0 && this.charXML.@hyscale > 0) + { + this.updateHeadScale(Number(this.charXML.@hxscale),Number(this.charXML.@hyscale)); + } + if(this.charXML.@headdx.length() > 0 && this.charXML.@headdy.length() > 0 && (this.charXML.@headdx as Number != 0 || this.charXML.@headdy as Number != 0)) + { + this.resetHeadPos(); + this.updateHeadPos(Number(this.charXML.@headdx),Number(this.charXML.@headdy)); + } + } + if(this._myActionModel) + { + if(this._myActionModel.bodyScale.scalex > 0 && this._myActionModel.bodyScale.scaley > 0) + { + this.updateBodyScale(this._myActionModel.bodyScale.scalex,this._myActionModel.bodyScale.scaley); + } + if(this._myActionModel.headScale.scalex > 0 && this._myActionModel.headScale.scaley > 0) + { + this.updateHeadScale(this._myActionModel.headScale.scalex,this._myActionModel.headScale.scaley); + } + if(this._myActionModel.headPos.dx != 0 || this._myActionModel.headPos.dy != 0) + { + this.resetHeadPos(); + this.updateHeadPos(this._myActionModel.headPos.dx,this._myActionModel.headPos.dy); + } + } + } + + private function dispatchComplete() : void + { + this.visible = true; + this.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + this.eventDispatcher.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + } + + private function updateHeadRect() : void + { + var _loc2_:Rectangle = null; + var _loc3_:Point = null; + var _loc4_:Number = NaN; + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc1_) + { + _loc2_ = _loc1_.getBounds(this); + _loc3_ = new Point(_loc2_.x + _loc2_.width / 2,_loc2_.y + _loc2_.height / 2); + _loc4_ = CcLibConstant.PHOTO_SIZE; + this._headRect = new Rectangle(_loc3_.x - _loc4_ * 0.4,_loc3_.y - _loc4_ * 1 / 2,_loc4_,_loc4_); + } + this.updateEyesRect(); + } + + private function updateEyesRect() : void + { + var _loc3_:DisplayObjectContainer = null; + var _loc4_:DisplayObjectContainer = null; + var _loc5_:Rectangle = null; + var _loc6_:Rectangle = null; + var _loc7_:DisplayObjectContainer = null; + var _loc8_:Rectangle = null; + var _loc9_:Point = null; + var _loc10_:Number = NaN; + var _loc11_:Number = NaN; + var _loc12_:Number = NaN; + var _loc13_:Number = NaN; + var _loc14_:Point = null; + var _loc15_:Number = NaN; + var _loc1_:Boolean = false; + var _loc2_:DisplayObjectContainer = this._head; + if(!_loc2_) + { + _loc2_ = this._head2; + } + if(_loc2_) + { + _loc3_ = UtilPlain.getInstance(_loc2_,CcLibConstant.COMPONENT_TYPE_EYE + CcLibConstant.LEFT + this.MC); + _loc4_ = UtilPlain.getInstance(_loc2_,CcLibConstant.COMPONENT_TYPE_EYE + CcLibConstant.RIGHT + this.MC); + _loc5_ = _loc3_.getBounds(this); + _loc6_ = _loc4_.getBounds(this); + _loc7_ = UtilPlain.getInstance(_loc2_,CcLibConstant.COMPONENT_TYPE_NOSE + this.MC); + _loc8_ = _loc7_.getBounds(this); + if(_loc5_.width != 0 && _loc6_.width != 0) + { + _loc9_ = new Point((_loc5_.x + _loc6_.x + _loc5_.width) / 2,(_loc5_.y + _loc6_.y) / 2); + _loc10_ = 100; + _loc11_ = 100; + _loc12_ = 2 / 5; + _loc13_ = 2 / 5; + this._headRect = new Rectangle(_loc9_.x - _loc10_ * _loc12_,_loc9_.y - _loc11_ * _loc13_,_loc10_,_loc11_); + } + else if(_loc8_.width != 0) + { + _loc14_ = new Point(_loc8_.x,_loc8_.y); + _loc15_ = CcLibConstant.PHOTO_SIZE; + this._headRect = new Rectangle(_loc14_.x - _loc15_ * 0.4,_loc14_.y - _loc15_ * 1 / 2,_loc15_,_loc15_); + } + } + } + + public function reloadSkin() : void + { + this.eventDispatcher.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.RELOAD_MOVIE_EVENT)); + } + + public function restoreHeadColor() : void + { + if(this._head2) + { + this._head2.restoreColors(); + } + } + + public function updateLocation(param1:String, param2:Object, param3:String = "") : void + { + var _loc5_:DisplayObjectContainer = null; + var _loc6_:DisplayObjectContainer = null; + var _loc7_:String = null; + var _loc8_:CcComponent = null; + if(this._head) + { + _loc7_ = param3 == ""?param1:param3; + _loc8_ = this._head.getComponent(_loc7_); + if(_loc8_ && _loc8_.model) + { + _loc8_.model.x = Number(param2["x"]); + _loc8_.model.y = Number(param2["y"]); + _loc8_.model.xscale = Number(param2["xscale"]); + _loc8_.model.yscale = Number(param2["yscale"]); + _loc8_.model.rotation = Number(param2["rotation"]); + if(_loc8_.model is ICcPairComponent) + { + ICcPairComponent(_loc8_.model).offset = Number(param2["offset"]); + } + return; + } + } + var _loc4_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + if(_loc4_ != null) + { + if(this._componentOrder.indexOf(param1) == -1) + { + _loc5_ = UtilPlain.getInstance(_loc4_,param1 + this.LIB_RIGHT); + _loc6_ = _loc5_.getChildAt(0) as DisplayObjectContainer; + _loc5_.x = Number(param2["x"]); + _loc5_.y = Number(param2["y"]); + _loc6_.scaleX = Number(param2["xscale"]); + _loc6_.scaleY = Number(param2["yscale"]); + _loc5_.x = _loc5_.x - Number(param2["offset"]) / 2; + _loc6_.rotation = Number(param2["rotation"]); + _loc5_ = UtilPlain.getInstance(_loc4_,param1 + this.LIB_LEFT); + _loc6_ = _loc5_.getChildAt(0) as DisplayObjectContainer; + _loc5_.x = Number(param2["x"]); + _loc5_.y = Number(param2["y"]); + _loc6_.scaleX = Number(param2["xscale"]); + _loc6_.scaleY = Number(param2["yscale"]); + _loc5_.x = _loc5_.x + Number(param2["offset"]) / 2; + _loc6_.rotation = -Number(param2["rotation"]); + } + else + { + _loc5_ = UtilPlain.getInstance(_loc4_,param1 + this.MC); + if(param3 != "") + { + _loc6_ = _loc5_.getChildByName(param3) as DisplayObjectContainer; + } + else if(_loc5_.numChildren > 0) + { + _loc6_ = _loc5_.getChildAt(0) as DisplayObjectContainer; + } + if(_loc6_ != null) + { + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + _loc6_.x = Number(param2["x"]); + _loc6_.y = Number(param2["y"]); + } + else + { + _loc5_.x = Number(param2["x"]); + _loc5_.y = Number(param2["y"]); + } + _loc6_.scaleX = Number(param2["xscale"]); + _loc6_.scaleY = Number(param2["yscale"]); + _loc6_.rotation = Number(param2["rotation"]); + } + } + } + this.updateHeadRect(); + } + + public function highlightComponent(param1:String) : void + { + var _loc3_:DisplayObjectContainer = null; + var _loc4_:GlowFilter = null; + var _loc5_:Array = null; + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + _loc3_ = UtilPlain.getInstance(_loc2_,param1); + if(_loc3_) + { + _loc4_ = new GlowFilter(16777215); + _loc5_ = new Array(); + _loc5_.push(_loc4_); + _loc3_.filters = _loc5_; + } + } + + public function removeHighlight(param1:String) : void + { + var _loc3_:DisplayObjectContainer = null; + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + _loc3_ = UtilPlain.getInstance(_loc2_,param1); + if(_loc3_ != null) + { + _loc3_.filters = new Array(); + } + } + + public function removeComponentById(param1:String) : void + { + var _loc3_:DisplayObjectContainer = null; + var _loc4_:DisplayObjectContainer = null; + var _loc5_:int = 0; + var _loc2_:DisplayObjectContainer = UtilPlain.getInstance(this,this.DEFAULTHEAD); + _loc3_ = UtilPlain.getInstance(_loc2_,param1); + if(_loc3_) + { + _loc4_ = _loc3_.parent; + _loc5_ = _loc4_.numChildren - 1; + while(_loc5_ >= 0) + { + if(_loc4_.getChildAt(_loc5_).name == param1) + { + _loc4_.removeChildAt(_loc5_); + } + _loc5_--; + } + } + } + + public function refreshProp() : void + { + var _loc1_:DisplayObjectContainer = null; + var _loc2_:DisplayObjectContainer = null; + if(this._hasProp) + { + _loc1_ = UtilPlain.getInstance(this,UtilPlain.THE_CHAR); + _loc2_ = UtilPlain.getProp(_loc1_); + UtilPlain.removeAllSon(_loc2_); + this._hasProp = false; + } + if(this._prop) + { + this.addPropClipToPropContainer(this._prop,this); + this._hasProp = true; + } + } + + private function addPropClipToPropContainer(param1:DisplayObjectContainer, param2:DisplayObjectContainer) : void + { + var _loc4_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(param2,UtilPlain.THE_CHAR); + if(_loc3_ != null) + { + _loc4_ = UtilPlain.getProp(_loc3_); + if(_loc4_ != null) + { + UtilPlain.removeAllSon(_loc4_); + _loc4_.addChild(param1); + this.updatePropSize(param1,_loc4_); + } + } + } + + private function updatePropSize(param1:DisplayObjectContainer, param2:DisplayObjectContainer) : void + { + if(param1 != null) + { + try + { + param1.scaleX = Math.abs(1 / UtilPlain.getRelativeProperty(param2,param1,UtilPlain.PROPERTY_SCALEX)); + param1.scaleY = Math.abs(1 / UtilPlain.getRelativeProperty(param2,param1,UtilPlain.PROPERTY_SCALEY)); + return; + } + catch(e:Error) + { + return; + } + } + } + + public function destroy(param1:Boolean = true) : void + { + var _loc2_:int = 0; + var _loc3_:Array = UtilPlain.getLoaderItemExcludeTheHeadTheHand(this); + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + Loader(_loc3_[_loc2_]).unloadAndStop(param1); + Loader(_loc3_[_loc2_]).parent.removeChild(Loader(_loc3_[_loc2_])); + _loc2_++; + } + _loc2_ = this.numChildren; + while(_loc2_ > 0) + { + this.removeChildAt(_loc2_ - 1); + _loc2_--; + } + if(this._head) + { + this._head.destroy(); + } + if(this._head2) + { + this._head2.destroy(); + } + this._ccm.destroy(); + this._ccm = new CCManager(); + this._libraries.removeAll(); + this._componentQueue = new Array(); + this._decoArray = new Array(); + this._customColor = new UtilHashSelectedColor(); + this.state = STATE_NULL; + this._eventDispatcher = new EventDispatcher(); + this.eventDispatcher.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.MOVIE_FINISH_EVENT)); + } + + public function unloadAssetImage(param1:Boolean = true) : void + { + this.destroy(param1); + } + + public function get headPos() : Point + { + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_DEFAULT_HEAD); + return new Point(_loc1_.x,_loc1_.y); + } + + public function resetHeadPos() : void + { + var _loc2_:int = 0; + var _loc3_:DisplayObject = null; + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc1_ != null) + { + _loc2_ = 0; + while(_loc2_ < _loc1_.numChildren) + { + _loc3_ = _loc1_.getChildAt(_loc2_); + _loc3_.x = 0; + _loc3_.y = 0; + _loc2_++; + } + } + } + + public function updateHeadPos(param1:Number, param2:Number) : void + { + var _loc4_:int = 0; + var _loc5_:DisplayObject = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc3_ != null) + { + _loc4_ = 0; + while(_loc4_ < _loc3_.numChildren) + { + _loc5_ = _loc3_.getChildAt(_loc4_); + _loc5_.x = _loc5_.x + param1; + _loc5_.y = _loc5_.y + param2; + _loc4_++; + } + } + } + + public function updateHeadScale(param1:Number, param2:Number) : void + { + var _loc4_:int = 0; + var _loc5_:DisplayObject = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc3_ != null) + { + _loc4_ = 0; + while(_loc4_ < _loc3_.numChildren) + { + _loc5_ = _loc3_.getChildAt(_loc4_); + _loc5_.scaleX = param1; + _loc5_.scaleY = param2; + _loc4_++; + } + } + } + + public function updateBodyScale(param1:Number, param2:Number) : void + { + var _loc3_:DisplayObjectContainer = this.getSkeletonContainer(this.ver); + if(_loc3_ != null) + { + _loc3_.scaleX = param1; + _loc3_.scaleY = param2; + } + } + + public function get bodyScale() : Number + { + var _loc1_:DisplayObjectContainer = this.getSkeletonContainer(this.ver); + if(_loc1_ == null) + { + return 1; + } + return _loc1_.scaleX; + } + + public function getHeadBitmap() : BitmapData + { + var _loc1_:BitmapData = null; + this.updateHeadRect(); + var _loc2_:Matrix = new Matrix(); + _loc1_ = new BitmapData(100,100,true,255); + _loc2_.translate(-this.headRect.x,-this.headRect.y); + _loc2_.scale(100 / this.headRect.width,100 / this.headRect.height); + _loc1_.draw(this,_loc2_); + return _loc1_; + } + + public function getBitmap() : BitmapData + { + var _loc1_:BitmapData = null; + var _loc2_:Matrix = new Matrix(); + var _loc3_:Rectangle = this.getBounds(this); + var _loc4_:Number = _loc3_.width; + var _loc5_:Number = _loc3_.height; + _loc1_ = new BitmapData(_loc4_,_loc5_,true,0); + _loc2_.translate(-_loc3_.x,-_loc3_.y); + _loc2_.scale(1,1); + _loc1_.draw(this,_loc2_); + return _loc1_; + } + + private function resetComponent(param1:ExtraDataLoader, param2:XML) : void + { + var colorArray:Array = null; + var colorNames:Object = null; + var decoIndex:Number = NaN; + var loader:ExtraDataLoader = param1; + var node:XML = param2; + if(loader && node) + { + colorNames = CcLibConstant.COLORS_BY_COMPONENT(node.@type); + if(colorNames) + { + colorArray = (colorNames as Array).map(function(param1:String, param2:int, param3:Array):Object + { + var colorXMLNode:* = undefined; + var colorObj:* = undefined; + var item:String = param1; + var index:int = param2; + var array:Array = param3; + colorXMLNode = charXML.color.(@r == item); + colorObj = { + "colorReference":String(colorXMLNode.@r), + "originalColor":(String(colorXMLNode.@oc).length == 0?uint.MAX_VALUE:uint(colorXMLNode.@oc)), + "colorValue":uint(colorXMLNode.text()), + "targetComponentId":"" + }; + return colorObj; + }); + } + loader.extraData["colors"] = colorArray; + loader.extraData["properties"] = { + "x":String(node.@x), + "y":String(node.@y), + "xscale":String(node.@xscale), + "yscale":String(node.@yscale), + "offset":String(node.@offset), + "rotation":String(node.@rotation), + "split":(!!Boolean(String(node.@split) == "N")?false:true) + }; + decoIndex = -1; + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(String(node.@type)) == -1) + { + loader.name = String(node.@type); + } + else + { + loader.name = String(node.@id); + decoIndex = this._decoArray.push(String(node.@id)) - 1; + } + loader.extraData["index"] = decoIndex; + this.doLoadImageData(loader); + } + } + + private function resetComponentByCAM(param1:ExtraDataLoader, param2:String) : void + { + var colorArray:Array = null; + var colorNames:Object = null; + var cacm:CCCharActionComponentModel = null; + var decoIndex:Number = NaN; + var loader:ExtraDataLoader = param1; + var type:String = param2; + if(loader && type) + { + colorNames = CcLibConstant.COLORS_BY_COMPONENT(type); + if(colorNames) + { + colorArray = (colorNames as Array).map(function(param1:String, param2:int, param3:Array):Object + { + var _loc4_:* = _myActionModel.getColor(param1); + var _loc5_:* = { + "colorReference":_loc4_.type, + "originalColor":_loc4_.oc, + "colorValue":_loc4_.dest, + "targetComponentId":"" + }; + return _loc5_; + }); + } + loader.extraData["colors"] = colorArray; + cacm = this._myActionModel.getComponentByType(type) as CCCharActionComponentModel; + loader.extraData["properties"] = { + "x":cacm.x, + "y":cacm.y, + "xscale":cacm.xscale, + "yscale":cacm.yscale, + "offset":cacm.offset, + "rotation":cacm.rotation, + "split":cacm.split + }; + decoIndex = -1; + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(type) == -1) + { + loader.name = String(type); + } + else + { + loader.name = String(cacm.id); + decoIndex = this._decoArray.push(cacm.id) - 1; + } + loader.extraData["index"] = decoIndex; + this.doLoadImageData(loader); + } + } + + public function prepareImage(param1:String, param2:Boolean = true, param3:Boolean = true) : void + { + var _loc4_:ExtraDataLoader = null; + var _loc5_:XML = null; + var _loc6_:Object = null; + var _loc7_:String = null; + var _loc8_:AssetImageLibraryObject = null; + var _loc9_:* = null; + var _loc10_:Object = null; + var _loc11_:Number = NaN; + var _loc12_:UtilHashUint = null; + var _loc13_:SelectedColor = null; + var _loc14_:CCColor = null; + if(this._useImageLibrary) + { + this._sceneId = param1; + if(this.charXML) + { + for each(_loc5_ in this.charXML.child(CcLibConstant.NODE_LIBRARY)) + { + _loc7_ = _loc5_.@theme_id + "." + _loc5_.@type + "." + _loc5_.@component_id + this.SWF_EXT; + _loc8_ = CcImageLibrary.library.borrowImage(_loc7_,0,this._sceneId); + _loc4_ = null; + if(_loc8_) + { + _loc4_ = _loc8_.image as ExtraDataLoader; + } + if(_loc4_) + { + _loc10_ = _loc4_.extraData; + this.CCM.addStyle(_loc10_["part"],_loc4_.contentLoaderInfo); + } + } + } + if(this._myActionModel) + { + for(_loc9_ in this._myActionModel.libraryPaths) + { + _loc7_ = this._myActionModel.getLibraryFilename(_loc9_); + _loc8_ = CcImageLibrary.library.borrowImage(_loc7_,0,this._sceneId); + _loc4_ = null; + if(_loc8_) + { + _loc4_ = _loc8_.image as ExtraDataLoader; + } + if(_loc4_) + { + _loc10_ = _loc4_.extraData; + this.CCM.addStyle(_loc10_["part"],_loc4_.contentLoaderInfo); + } + } + } + this.reloadSkin(); + _loc11_ = 0; + if(this.charXML) + { + for each(_loc5_ in this.charXML.child(this.NODE_COMPONENT)) + { + if(this.shouldComponentBeBorrowed(_loc5_.@type) && CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(String(_loc5_.@type)) >= 0) + { + _loc7_ = _loc5_.@theme_id + "." + _loc5_.@type + "." + _loc5_.@path + "." + _loc5_.@file; + if(!param2) + { + _loc11_ = this._assetImageIdArray.getValueByKey(_loc7_); + } + _loc8_ = CcImageLibrary.library.borrowImage(_loc7_,_loc11_,this._sceneId); + _loc4_ = null; + if(_loc8_) + { + this._assetImageIdArray.push(_loc7_,_loc8_.imageId); + _loc4_ = _loc8_.image as ExtraDataLoader; + } + if(_loc4_) + { + this.resetComponent(_loc4_,_loc5_); + } + } + } + } + if(this._myActionModel) + { + for(_loc9_ in this._myActionModel.components) + { + if(this.shouldComponentBeBorrowed(_loc9_) && CcLibConstant.ALL_BODY_COMPONENT_TYPES.indexOf(_loc9_) >= 0) + { + _loc7_ = this._myActionModel.getComponentByType(_loc9_).path; + if(!param2) + { + _loc11_ = this._assetImageIdArray.getValueByKey(_loc7_); + } + _loc8_ = CcImageLibrary.library.borrowImage(_loc7_,_loc11_,this._sceneId); + _loc4_ = null; + if(_loc8_) + { + this._assetImageIdArray.push(_loc7_,_loc8_.imageId); + _loc4_ = _loc8_.image as ExtraDataLoader; + } + if(_loc4_) + { + this.resetComponentByCAM(_loc4_,_loc9_); + } + } + } + } + if(param3) + { + if(this._head) + { + this._head.prepareImage(this._sceneId,param2); + } + if(this._head2) + { + this._head2.prepareImage(this._sceneId,param2); + } + } + UtilColor.resetAssetPartsColor(this); + _loc12_ = new UtilHashUint(); + if(this.charXML) + { + for each(_loc5_ in this.charXML.child(CcLibConstant.NODE_COLOR)) + { + _loc13_ = new SelectedColor(_loc5_.@r,String(_loc5_.@oc).length == 0?uint(uint.MAX_VALUE):uint(uint(_loc5_.@oc)),uint(_loc5_)); + this.changeColor(_loc13_,_loc5_.@targetComponent == null?"":_loc5_.@targetComponent); + if(_loc13_.orgColor != uint.MAX_VALUE) + { + this._customColor.push(_loc13_.areaName,_loc13_); + _loc12_.push("0x" + _loc13_.orgColor.toString(16),_loc13_.dstColor); + } + } + } + if(this._myActionModel) + { + for(_loc9_ in this._myActionModel.colorCodes) + { + _loc14_ = this._myActionModel.getColor(_loc9_); + _loc13_ = new SelectedColor(_loc14_.type,_loc14_.oc,_loc14_.dest); + this.changeColor(_loc13_,_loc14_.targetComponent); + if(_loc13_.orgColor != uint.MAX_VALUE) + { + this._customColor.push(_loc13_.areaName,_loc13_); + _loc12_.push("0x" + _loc13_.orgColor.toString(16),_loc13_.dstColor); + } + } + } + if(_loc12_.length > 0) + { + this.changeColorForShader(_loc12_); + } + this.refreshScale(); + this.updateHeadRect(); + if(param2) + { + UtilPlain.gotoAndStopFamilyAt1(this); + } + } + } + } +} + +class Library +{ + + + private var _type:String; + + private var _component_id:String; + + private var _theme_id:String; + + function Library() + { + super(); + } + + public function get type() : String + { + return this._type; + } + + public function get component_id() : String + { + return this._component_id; + } + + public function get theme_id() : String + { + return this._theme_id; + } + + public function set type(param1:String) : void + { + this._type = param1; + } + + public function set component_id(param1:String) : void + { + this._component_id = param1; + } + + public function set theme_id(param1:String) : void + { + this._theme_id = param1; + } +} diff --git a/scripts/anifire/component/CustomCharacterMaker_GoColorMapShaderClass.as b/scripts/anifire/component/CustomCharacterMaker_GoColorMapShaderClass.as new file mode 100644 index 0000000..1dd6c6d --- /dev/null +++ b/scripts/anifire/component/CustomCharacterMaker_GoColorMapShaderClass.as @@ -0,0 +1,14 @@ +package anifire.component +{ + import mx.core.ByteArrayAsset; + + public class CustomCharacterMaker_GoColorMapShaderClass extends ByteArrayAsset + { + + + public function CustomCharacterMaker_GoColorMapShaderClass() + { + super(); + } + } +} diff --git a/scripts/anifire/component/EyeDropperScreenOverlay.as b/scripts/anifire/component/EyeDropperScreenOverlay.as new file mode 100644 index 0000000..4d1b35c --- /dev/null +++ b/scripts/anifire/component/EyeDropperScreenOverlay.as @@ -0,0 +1,365 @@ +package anifire.component +{ + import anifire.event.EyeDropperEvent; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.geom.Matrix; + import flash.ui.Keyboard; + import flash.ui.Mouse; + import flash.utils.clearInterval; + import flash.utils.setInterval; + import mx.binding.BindingManager; + import mx.core.FlexGlobals; + import mx.core.IFlexModuleFactory; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.events.ResizeEvent; + import mx.graphics.BitmapFill; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import spark.components.Group; + import spark.primitives.Ellipse; + import spark.primitives.Rect; + + public class EyeDropperScreenOverlay extends Group + { + + protected static const CURSOR_REFRESH_INTERVAL:int = 50; + + public static const MAGNIFICATION_RATE:Number = 10; + + public static const MAGNIFIED_SIZE:Number = 90; + + public static const MAGNIFIED_OFFSET:Number = MAGNIFIED_SIZE * 0.5; + + public static const DRAW_AREA_OFFSET:Number = 4; + + public static var instance:EyeDropperScreenOverlay; + + + private var _1188667384currentColorDisplay:SolidColor; + + private var _1405136365eyeDropperCursor:Group; + + private var _205743947magnifiedImage:BitmapFill; + + private var __moduleFactoryInitialized:Boolean = false; + + protected var _requiresUpdate:Boolean; + + protected var _screenBitmapData:BitmapData; + + protected var _magnifiedBitmapData:BitmapData; + + protected var _magnifiedMatrix:Matrix; + + public var isPickingColor:Boolean = false; + + protected var _timer:uint; + + private var _excludedDisplayObject:DisplayObject; + + public function EyeDropperScreenOverlay() + { + super(); + mx_internal::_document = this; + this.autoLayout = false; + this.mouseEnabled = true; + this.mouseChildren = false; + this.mouseEnabledWhereTransparent = true; + this.percentWidth = 100; + this.percentHeight = 100; + this.mxmlContent = [this._EyeDropperScreenOverlay_Group2_i()]; + this.addEventListener("creationComplete",this.___EyeDropperScreenOverlay_Group1_creationComplete); + this.addEventListener("resize",this.___EyeDropperScreenOverlay_Group1_resize); + this.addEventListener("mouseUp",this.___EyeDropperScreenOverlay_Group1_mouseUp); + this.addEventListener("mouseDown",this.___EyeDropperScreenOverlay_Group1_mouseDown); + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function init() : void + { + instance = this; + visible = false; + this._requiresUpdate = true; + this._magnifiedBitmapData = new BitmapData(MAGNIFIED_SIZE,MAGNIFIED_SIZE); + this._magnifiedMatrix = new Matrix(); + this.magnifiedImage.source = this._magnifiedBitmapData; + } + + protected function clearScreenImage() : void + { + if(this._screenBitmapData) + { + this._screenBitmapData.dispose(); + this._screenBitmapData = null; + } + } + + protected function createScreenImage() : void + { + this.clearScreenImage(); + this._screenBitmapData = new BitmapData(getLayoutBoundsWidth(),getLayoutBoundsHeight(),false); + this._screenBitmapData.draw(FlexGlobals.topLevelApplication as DisplayObject); + this._requiresUpdate = false; + } + + public function createScreenshotOverlay() : void + { + if(this._excludedDisplayObject) + { + this._excludedDisplayObject.visible = false; + } + this.createScreenImage(); + visible = true; + this.eyeDropperCursor.visible = true; + Mouse.hide(); + this.isPickingColor = true; + stage.addEventListener(KeyboardEvent.KEY_DOWN,this.stage_keyDownHandler); + this._timer = setInterval(this.updateCursor,CURSOR_REFRESH_INTERVAL); + } + + protected function mouseUpHandler(param1:MouseEvent) : void + { + var _loc2_:EyeDropperEvent = null; + param1.stopImmediatePropagation(); + if(this.isPickingColor) + { + _loc2_ = new EyeDropperEvent(EyeDropperEvent.EYE_DROPPER_COMPLETE); + _loc2_.color = this.getCurrentColor(); + this.closeScreenshotOverlay(); + dispatchEvent(_loc2_); + } + } + + protected function mouseDownHandler(param1:MouseEvent) : void + { + param1.stopImmediatePropagation(); + } + + protected function updateCursor() : void + { + if(this.isPickingColor) + { + this.eyeDropperCursor.x = mouseX; + this.eyeDropperCursor.y = mouseY; + this._magnifiedMatrix.identity(); + this._magnifiedMatrix.translate(DRAW_AREA_OFFSET - int(mouseX),DRAW_AREA_OFFSET - int(mouseY)); + this._magnifiedMatrix.scale(MAGNIFICATION_RATE,MAGNIFICATION_RATE); + this._magnifiedBitmapData.draw(this._screenBitmapData,this._magnifiedMatrix); + this.currentColorDisplay.color = this.getCurrentColor(); + } + } + + protected function getCurrentColor() : uint + { + if(this._requiresUpdate) + { + this.createScreenImage(); + } + return this._screenBitmapData.getPixel(mouseX,mouseY); + } + + protected function stage_keyDownHandler(param1:KeyboardEvent) : void + { + var _loc2_:EyeDropperEvent = null; + if(param1.keyCode == Keyboard.ESCAPE) + { + stage.removeEventListener(KeyboardEvent.KEY_DOWN,this.stage_keyDownHandler); + _loc2_ = new EyeDropperEvent(EyeDropperEvent.EYE_DROPPER_CANCEL); + this.dispatchEvent(_loc2_); + this.closeScreenshotOverlay(); + } + } + + protected function closeScreenshotOverlay() : void + { + this.isPickingColor = false; + this.clearScreenImage(); + this.eyeDropperCursor.visible = false; + visible = false; + clearInterval(this._timer); + Mouse.show(); + if(this._excludedDisplayObject) + { + this._excludedDisplayObject.visible = true; + } + } + + public function excludedFromCapture(param1:DisplayObject) : void + { + this._excludedDisplayObject = param1; + } + + protected function resizeHandler(param1:ResizeEvent) : void + { + this._requiresUpdate = true; + } + + private function _EyeDropperScreenOverlay_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.visible = false; + _loc1_.mxmlContent = [this._EyeDropperScreenOverlay_Ellipse1_c(),this._EyeDropperScreenOverlay_Rect1_c()]; + _loc1_.id = "eyeDropperCursor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.eyeDropperCursor = _loc1_; + BindingManager.executeBindings(this,"eyeDropperCursor",this.eyeDropperCursor); + return _loc1_; + } + + private function _EyeDropperScreenOverlay_Ellipse1_c() : Ellipse + { + var _loc1_:Ellipse = new Ellipse(); + _loc1_.width = 90; + _loc1_.height = 90; + _loc1_.x = -45; + _loc1_.y = -45; + _loc1_.fill = this._EyeDropperScreenOverlay_BitmapFill1_i(); + _loc1_.stroke = this._EyeDropperScreenOverlay_SolidColorStroke1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _EyeDropperScreenOverlay_BitmapFill1_i() : BitmapFill + { + var _loc1_:BitmapFill = new BitmapFill(); + this.magnifiedImage = _loc1_; + BindingManager.executeBindings(this,"magnifiedImage",this.magnifiedImage); + return _loc1_; + } + + private function _EyeDropperScreenOverlay_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + _loc1_.weight = 2; + return _loc1_; + } + + private function _EyeDropperScreenOverlay_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 16; + _loc1_.height = 16; + _loc1_.x = -8; + _loc1_.y = -8; + _loc1_.stroke = this._EyeDropperScreenOverlay_SolidColorStroke2_c(); + _loc1_.fill = this._EyeDropperScreenOverlay_SolidColor1_i(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _EyeDropperScreenOverlay_SolidColorStroke2_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + _loc1_.weight = 2; + return _loc1_; + } + + private function _EyeDropperScreenOverlay_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + this.currentColorDisplay = _loc1_; + BindingManager.executeBindings(this,"currentColorDisplay",this.currentColorDisplay); + return _loc1_; + } + + public function ___EyeDropperScreenOverlay_Group1_creationComplete(param1:FlexEvent) : void + { + this.init(); + } + + public function ___EyeDropperScreenOverlay_Group1_resize(param1:ResizeEvent) : void + { + this.resizeHandler(param1); + } + + public function ___EyeDropperScreenOverlay_Group1_mouseUp(param1:MouseEvent) : void + { + this.mouseUpHandler(param1); + } + + public function ___EyeDropperScreenOverlay_Group1_mouseDown(param1:MouseEvent) : void + { + this.mouseDownHandler(param1); + } + + [Bindable(event="propertyChange")] + public function get currentColorDisplay() : SolidColor + { + return this._1188667384currentColorDisplay; + } + + public function set currentColorDisplay(param1:SolidColor) : void + { + var _loc2_:Object = this._1188667384currentColorDisplay; + if(_loc2_ !== param1) + { + this._1188667384currentColorDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"currentColorDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get eyeDropperCursor() : Group + { + return this._1405136365eyeDropperCursor; + } + + public function set eyeDropperCursor(param1:Group) : void + { + var _loc2_:Object = this._1405136365eyeDropperCursor; + if(_loc2_ !== param1) + { + this._1405136365eyeDropperCursor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"eyeDropperCursor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get magnifiedImage() : BitmapFill + { + return this._205743947magnifiedImage; + } + + public function set magnifiedImage(param1:BitmapFill) : void + { + var _loc2_:Object = this._205743947magnifiedImage; + if(_loc2_ !== param1) + { + this._205743947magnifiedImage = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"magnifiedImage",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/component/ProcessRegulator.as b/scripts/anifire/component/ProcessRegulator.as new file mode 100644 index 0000000..04cb12c --- /dev/null +++ b/scripts/anifire/component/ProcessRegulator.as @@ -0,0 +1,186 @@ +package anifire.component +{ + import anifire.interfaces.IRegulatedProcess; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.events.ProgressEvent; + import flash.utils.setTimeout; + + public class ProcessRegulator extends EventDispatcher implements IRegulatedProcess + { + + + private const STATE_IDLE:String = "STATE_IDLE"; + + private const STATE_IN_PROGRESS:String = "STATE_IN_PROGRESS"; + + private const STATE_HOLD:String = "STATE_HOLD"; + + private const STATE_COMPLETE:String = "STATE_COMPLETE"; + + private var _processes:Vector.; + + private var _step:Number = 0; + + private var _oneByOne:Boolean = false; + + private var _interval:Number = 0; + + private var _state:String; + + private var _numComplete:Number = 0; + + public function ProcessRegulator(param1:IEventDispatcher = null) + { + super(param1); + this.reset(); + } + + public function addProcess(param1:IRegulatedProcess, param2:String) : void + { + var _loc3_:Boolean = false; + var _loc4_:ProcessData = null; + if(param1 && param2) + { + _loc3_ = false; + for each(_loc4_ in this._processes) + { + if(_loc4_.process == param1) + { + _loc3_ = true; + break; + } + } + if(!_loc3_) + { + this._processes.push(new ProcessData(param1,param2)); + } + } + } + + public function get numProcess() : Number + { + return this._processes.length; + } + + public function get progress() : Number + { + return this._numComplete; + } + + public function startProcess(param1:Boolean = false, param2:Number = 0) : void + { + var _loc3_:ProcessData = null; + this._oneByOne = param1; + this._interval = param2; + if(0 == this._processes.length || this._state == this.STATE_COMPLETE) + { + this.dispatchEvent(new Event(Event.COMPLETE)); + return; + } + if(this._state != this.STATE_IDLE) + { + return; + } + this._state = this.STATE_IN_PROGRESS; + if(param1) + { + this.startNext(); + } + else + { + for each(_loc3_ in this._processes) + { + _loc3_.process.addEventListener(_loc3_.eventType,this.onProcessComplete); + _loc3_.process.startProcess(param1,param2); + } + } + } + + public function reset() : void + { + var _loc1_:ProcessData = null; + for each(_loc1_ in this._processes) + { + _loc1_.process.removeEventListener(_loc1_.eventType,this.onProcessComplete); + } + this._processes = new Vector.(); + this._step = 0; + this._oneByOne = false; + this._interval = 0; + this._state = this.STATE_IDLE; + this._numComplete = 0; + } + + private function startNext() : void + { + if(this._step < this._processes.length) + { + this._step++; + this._processes[this._step - 1].process.addEventListener(this._processes[this._step - 1].eventType,this.onProcessComplete); + this._processes[this._step - 1].process.startProcess(this._oneByOne,this._interval); + } + } + + private function onProcessComplete(param1:Event) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onProcessComplete); + this._numComplete++; + var _loc2_:ProgressEvent = new ProgressEvent(ProgressEvent.PROGRESS); + _loc2_.bytesLoaded = this._numComplete; + _loc2_.bytesTotal = this._processes.length; + this.dispatchEvent(_loc2_); + if(this._numComplete == this._processes.length) + { + this._state = this.STATE_COMPLETE; + this.dispatchEvent(new Event(Event.COMPLETE)); + return; + } + if(this._oneByOne) + { + if(this._state == this.STATE_IN_PROGRESS) + { + if(this._interval > 0) + { + setTimeout(this.startNext,this._interval); + } + else + { + this.startNext(); + } + } + } + } + } +} + +import anifire.interfaces.IRegulatedProcess; + +class ProcessData +{ + + + private var _process:IRegulatedProcess; + + private var _eventType:String; + + public var completed:Boolean = false; + + function ProcessData(param1:IRegulatedProcess, param2:String) + { + super(); + this._process = param1; + this._eventType = param2; + } + + public function get process() : IRegulatedProcess + { + return this._process; + } + + public function get eventType() : String + { + return this._eventType; + } +} diff --git a/scripts/anifire/component/SkinnedAssetMaker.as b/scripts/anifire/component/SkinnedAssetMaker.as new file mode 100644 index 0000000..3bb0d70 --- /dev/null +++ b/scripts/anifire/component/SkinnedAssetMaker.as @@ -0,0 +1,422 @@ +package anifire.component +{ + import anifire.color.SelectedColor; + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.core.CCLipSyncController; + import anifire.core.CCManager; + import anifire.event.LoadEmbedMovieEvent; + import anifire.event.SpeechPitchEvent; + import anifire.interfaces.ICharacter; + import anifire.util.ExtraDataLoader; + import anifire.util.UtilColor; + import anifire.util.UtilHashBytes; + import anifire.util.UtilHashSelectedColor; + import anifire.util.UtilPlain; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.display.MovieClip; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.utils.ByteArray; + import flash.utils.setTimeout; + + public class SkinnedAssetMaker extends Sprite implements ICharacter + { + + public static const STATE_NULL:String = "null"; + + public static const STATE_LOADING:String = "loading"; + + public static const STATE_FINISH_LOAD:String = "finish_load"; + + + private var _shouldPauseOnLoadBytesComplete:Boolean = false; + + private var _ccm:CCManager; + + private var _charXML:XML; + + private var _charSwfs:UtilHashBytes; + + private var _figure:ByteArray; + + private var _ver:Number = 3; + + public var _lipSync:Boolean = false; + + private var _demoSpeech:Boolean = false; + + private var _themeId:String; + + private var _state:String; + + private var _mouthLoader:ExtraDataLoader; + + private var _lipSyncMouthLoader:ExtraDataLoader; + + public function SkinnedAssetMaker() + { + super(); + this.state = STATE_NULL; + } + + public function get state() : String + { + return this._state; + } + + public function set state(param1:String) : void + { + this._state = param1; + } + + public function get themeId() : String + { + return this._themeId; + } + + public function set themeId(param1:String) : void + { + this._themeId = param1; + } + + public function get figure() : ByteArray + { + return this._figure; + } + + public function set figure(param1:ByteArray) : void + { + this._figure = param1; + } + + public function get charSwfs() : UtilHashBytes + { + return this._charSwfs; + } + + public function set charSwfs(param1:UtilHashBytes) : void + { + this._charSwfs = param1; + } + + public function set charXML(param1:XML) : void + { + this._charXML = param1; + } + + public function get ver() : Number + { + return this._ver; + } + + public function set ver(param1:Number) : void + { + this._ver = param1; + } + + public function get demoSpeech() : Boolean + { + return this._demoSpeech; + } + + public function set demoSpeech(param1:Boolean) : void + { + var _loc2_:* = this._demoSpeech != param1; + this._demoSpeech = param1; + } + + public function get charXML() : XML + { + return this._charXML; + } + + public function get CCM() : CCManager + { + return this._ccm; + } + + public function set CCM(param1:CCManager) : void + { + this._ccm = param1; + } + + public function get eventDispatcher() : EventDispatcher + { + return this; + } + + public function set lipSync(param1:Boolean) : void + { + if(this._lipSync != param1) + { + this._lipSync = param1; + if(param1) + { + this.addMouthClipToHeadContainer(this.updateComponentImageData("mouth",null),this); + } + else + { + this.removeMouthClipToHeadContainer(this); + } + } + } + + public function prepareXML(param1:XML) : void + { + var _loc2_:XMLList = null; + var _loc3_:int = 0; + _loc2_ = param1..color; + _loc3_ = 0; + while(_loc3_ < _loc2_.length()) + { + this.addColor(_loc2_[_loc3_].@r,uint(_loc2_[_loc3_].@oc.length() > 0?_loc2_[_loc3_].@oc:uint.MAX_VALUE),uint(_loc2_[_loc3_].text())); + _loc3_++; + } + } + + public function addColor(param1:String, param2:uint, param3:uint) : void + { + var _loc4_:SelectedColor = new SelectedColor(param1,param2,param3); + this.CCM.addColor(_loc4_.areaName,_loc4_); + } + + public function loadAssetImageComplete(param1:Event = null) : void + { + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.loadAssetImageComplete); + } + if(this.demoSpeech) + { + this.addMouthClipToHeadContainer(this.updateComponentImageData("mouth",null),this); + } + this.onReady(); + } + + public function updateComponentImageData(param1:String, param2:ByteArray, param3:String = "", param4:XML = null) : ExtraDataLoader + { + var _loc5_:String = null; + var _loc7_:String = null; + var _loc6_:ExtraDataLoader = new ExtraDataLoader(); + _loc6_.name = param3; + _loc6_.extraData = { + "componentType":param1, + "clipName":_loc5_ + }; + if(param2 == null) + { + if(this._lipSync) + { + _loc7_ = this.themeId + "." + "mouth" + "." + CCLipSyncController.LIPSYNC_LIB_ID; + this._lipSyncMouthLoader = _loc6_; + } + else if(this.demoSpeech) + { + _loc7_ = this.themeId + "." + "mouth" + "." + CCLipSyncController.DEMO_LIPSYNC_LIB_ID; + } + if(this._charSwfs != null) + { + param2 = this._charSwfs.getValueByKey(_loc7_); + } + } + if(param2) + { + param2.position = 0; + _loc6_.loadBytes(param2); + } + return _loc6_; + } + + public function addMouthClipToHeadContainer(param1:DisplayObject, param2:DisplayObjectContainer) : void + { + var _loc5_:DisplayObjectContainer = null; + var _loc7_:DisplayObjectContainer = null; + var _loc8_:DisplayObjectContainer = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(param2,UtilPlain.THE_CHAR_FLIP); + var _loc4_:DisplayObjectContainer = UtilPlain.getInstance(param2,UtilPlain.THE_CHAR); + if(_loc4_ != null) + { + if(_loc3_ != null && scaleX == -1) + { + _loc5_ = UtilPlain.getHead(_loc3_); + } + else + { + _loc5_ = UtilPlain.getHead(_loc4_); + } + } + else + { + _loc5_ = UtilPlain.getHead(param2); + } + var _loc6_:int = 0; + while(_loc6_ < _loc5_.numChildren) + { + _loc7_ = _loc5_.getChildAt(_loc6_) as DisplayObjectContainer; + if(_loc7_ != null) + { + _loc8_ = UtilPlain.getMouth(_loc7_); + if(_loc8_ != null) + { + _loc8_.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_MOUTH).alpha = 0; + while(_loc8_.numChildren > 1) + { + _loc8_.removeChildAt(1); + } + _loc8_.addChildAt(param1,1); + } + } + _loc6_++; + } + } + + private function removeMouthClipToHeadContainer(param1:DisplayObjectContainer) : void + { + var _loc4_:DisplayObjectContainer = null; + var _loc5_:DisplayObjectContainer = null; + var _loc2_:DisplayObjectContainer = UtilPlain.getHead(param1); + var _loc3_:DisplayObjectContainer = _loc2_.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_HEAD) as DisplayObjectContainer; + _loc4_ = _loc3_; + if(_loc3_ != null && _loc3_.alpha == 0) + { + _loc4_ = _loc2_.getChildAt(0) as DisplayObjectContainer; + } + if(_loc4_ != null) + { + _loc5_ = UtilPlain.getMouth(_loc4_); + if(_loc5_ != null) + { + _loc5_.getChildByName(AnimeConstants.MOVIECLIP_DEFAULT_MOUTH).alpha = 1; + _loc5_.removeChildAt(0); + } + } + } + + public function changeColor(param1:SelectedColor, param2:String = "") : Number + { + var _loc3_:DisplayObject = null; + if(param2 == "") + { + _loc3_ = this; + } + else + { + _loc3_ = UtilPlain.getInstance(this,param2); + } + var _loc4_:uint = UtilColor.setAssetPartColor(_loc3_,param1.areaName,param1.dstColor); + return _loc4_; + } + + public function onReady(param1:Event = null) : void + { + var _loc2_:XML = null; + var _loc3_:SelectedColor = null; + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onReady); + } + for each(_loc2_ in this._charXML.child(CcLibConstant.NODE_COLOR)) + { + _loc3_ = new SelectedColor(_loc2_.@r,String(_loc2_.@oc).length == 0?uint(uint.MAX_VALUE):uint(_loc2_.@oc),uint(_loc2_)); + this.changeColor(_loc3_,_loc2_.@targetComponent == null?"":_loc2_.@targetComponent); + } + UtilPlain.gotoAndStopFamilyAt1(this); + if(!this._shouldPauseOnLoadBytesComplete) + { + UtilPlain.playFamily(this); + } + this.state = STATE_FINISH_LOAD; + setTimeout(this.dispatchComplete,200); + } + + public function dispatchComplete() : void + { + this.visible = true; + this.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + } + + public function getColorByName(param1:String) : uint + { + return 0; + } + + public function doLoadMainImage(param1:Event) : void + { + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doLoadMainImage); + } + var _loc2_:Loader = new Loader(); + _loc2_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.loadAssetImageComplete); + _loc2_.loadBytes(this._figure); + _loc2_.name = AnimeConstants.IMAGE_OBJECT_NAME; + if(this.getChildByName(AnimeConstants.IMAGE_OBJECT_NAME)) + { + this.removeChild(this.getChildByName(AnimeConstants.IMAGE_OBJECT_NAME)); + } + this.addChild(_loc2_); + } + + public function unloadAssetImage(param1:Boolean = true) : void + { + this.destroy(param1); + } + + public function destroy(param1:Boolean = true) : void + { + var _loc2_:int = 0; + var _loc3_:Array = UtilPlain.getLoaderItemExcludeTheHeadTheHand(this); + _loc2_ = 0; + while(_loc2_ < _loc3_.length) + { + Loader(_loc3_[_loc2_]).unloadAndStop(param1); + Loader(_loc3_[_loc2_]).parent.removeChild(Loader(_loc3_[_loc2_])); + _loc2_++; + } + _loc2_ = this.numChildren; + while(_loc2_ > 0) + { + this.removeChildAt(_loc2_ - 1); + _loc2_--; + } + this._ccm = new CCManager(); + this.state = STATE_NULL; + dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.MOVIE_FINISH_EVENT)); + } + + public function insertColor(param1:UtilHashSelectedColor) : void + { + this.CCM.colors.insert(0,param1); + } + + public function addLibrary(param1:String, param2:String, param3:String) : void + { + } + + public function removeLibrary(param1:String) : void + { + } + + public function speak(param1:Number) : void + { + var _loc2_:SpeechPitchEvent = null; + this.lipSync = param1 != -1; + if(this._lipSync && this._lipSyncMouthLoader && MovieClip(this._lipSyncMouthLoader.content)) + { + _loc2_ = new SpeechPitchEvent(SpeechPitchEvent.PITCH); + _loc2_.value = param1; + MovieClip(this._lipSyncMouthLoader.content).dispatchEvent(_loc2_); + } + } + + public function reloadSkin() : void + { + dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.RELOAD_MOVIE_EVENT)); + } + } +} diff --git a/scripts/anifire/component/SkinnedCharacterMaker.as b/scripts/anifire/component/SkinnedCharacterMaker.as new file mode 100644 index 0000000..b792598 --- /dev/null +++ b/scripts/anifire/component/SkinnedCharacterMaker.as @@ -0,0 +1,229 @@ +package anifire.component +{ + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.core.CCManager; + import anifire.event.LoadEmbedMovieEvent; + import anifire.event.LoadMgrEvent; + import anifire.util.ExtraDataLoader; + import anifire.util.UtilHashArray; + import anifire.util.UtilHashBytes; + import anifire.util.UtilLoadMgr; + import anifire.util.UtilPlain; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.LoaderInfo; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.geom.Point; + import flash.utils.ByteArray; + import flash.utils.setTimeout; + + public class SkinnedCharacterMaker extends SkinnedAssetMaker + { + + + public function SkinnedCharacterMaker() + { + super(); + CCM = new CCManager(); + } + + public function init(param1:XML, param2:ByteArray, param3:UtilHashBytes, param4:Boolean = false, param5:Boolean = false, param6:String = "", param7:String = "default") : void + { + if(this.state == STATE_NULL) + { + this.state = STATE_LOADING; + } + else + { + if(this.state == STATE_LOADING) + { + return; + } + if(this.state == STATE_FINISH_LOAD) + { + setTimeout(loadAssetImageComplete,100); + return; + } + } + this.visible = false; + charXML = param1; + figure = param2; + var _loc8_:CcActionLoader = CcActionLoader.getActionLoader(param6); + _loc8_.addEventListener(Event.COMPLETE,this.onCcActionLoaded); + _loc8_.loadCcComponents(param1,0,0,param3,ver,param5,param6,param7); + } + + private function onCcActionLoaded(param1:Event) : void + { + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onCcActionLoaded); + } + var _loc2_:CcActionLoader = param1.target as CcActionLoader; + charSwfs = _loc2_.imageData["imageData"] as UtilHashBytes; + prepareXML(charXML); + this.prepareSkin(); + } + + private function prepareSkin(param1:UtilHashArray = null) : void + { + var _loc2_:XML = null; + var _loc3_:* = null; + var _loc4_:ByteArray = null; + var _loc6_:ExtraDataLoader = null; + var _loc7_:String = null; + var _loc8_:Object = null; + var _loc5_:UtilLoadMgr = new UtilLoadMgr(); + _loc5_.addEventListener(LoadMgrEvent.ALL_COMPLETE,doLoadMainImage); + for each(_loc2_ in charXML.child(CcLibConstant.NODE_LIBRARY)) + { + _loc6_ = new ExtraDataLoader(); + _loc7_ = _loc2_.@type; + if(_loc7_ == "hands") + { + _loc7_ = CcLibConstant.LIBRARY_TYPE_GOHANDS; + } + _loc3_ = _loc2_.@theme_id + "." + _loc7_ + "." + _loc2_.@path + ".swf"; + if(param1 == null || param1.length == 0) + { + if(charSwfs != null) + { + _loc4_ = charSwfs.getValueByKey(_loc3_); + } + } + else + { + _loc4_ = param1.getValueByKey(_loc3_); + } + if(_loc4_ != null) + { + _loc8_ = new Object(); + _loc8_["part"] = _loc7_; + _loc6_.extraData = _loc8_; + _loc5_.addEventDispatcher(_loc6_.contentLoaderInfo,Event.COMPLETE); + _loc6_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadStyleDone); + _loc6_.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.onError); + _loc6_.loadBytes(_loc4_); + } + } + _loc5_.commit(); + } + + private function onError(param1:Event) : void + { + } + + private function onLoadStyleDone(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadStyleDone); + var _loc2_:LoaderInfo = LoaderInfo(param1.currentTarget); + var _loc3_:Object = ExtraDataLoader(_loc2_.loader).extraData; + CCM.addStyle(_loc3_["part"],_loc2_); + } + + override public function reloadSkin() : void + { + dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.RELOAD_MOVIE_EVENT)); + } + + public function refreshScale() : void + { + if(charXML.@xscale > 0 && charXML.@yscale > 0) + { + this.updateBodyScale(Number(charXML.@xscale),Number(charXML.@yscale)); + } + if(charXML.@hxscale > 0 && charXML.@hyscale > 0) + { + this.updateHeadScale(Number(charXML.@hxscale),Number(charXML.@hyscale)); + } + if(charXML.@headdx.length() > 0 && charXML.@headdy.length() > 0 && (charXML.@headdx as Number != 0 || charXML.@headdy as Number != 0)) + { + this.resetHeadPos(); + this.updateHeadPos(Number(charXML.@headdx),Number(charXML.@headdy)); + } + } + + public function get headPos() : Point + { + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_DEFAULT_HEAD); + return new Point(_loc1_.x,_loc1_.y); + } + + public function resetHeadPos() : void + { + var _loc2_:int = 0; + var _loc3_:DisplayObject = null; + var _loc1_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc1_ != null) + { + _loc2_ = 0; + while(_loc2_ < _loc1_.numChildren) + { + _loc3_ = _loc1_.getChildAt(_loc2_); + _loc3_.x = 0; + _loc3_.y = 0; + _loc2_++; + } + } + } + + public function updateHeadPos(param1:Number, param2:Number) : void + { + var _loc4_:int = 0; + var _loc5_:DisplayObject = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc3_ != null) + { + _loc4_ = 0; + while(_loc4_ < _loc3_.numChildren) + { + _loc5_ = _loc3_.getChildAt(_loc4_); + _loc5_.x = _loc5_.x + param1; + _loc5_.y = _loc5_.y + param2; + _loc4_++; + } + } + } + + public function updateHeadScale(param1:Number, param2:Number) : void + { + var _loc4_:int = 0; + var _loc5_:DisplayObject = null; + var _loc3_:DisplayObjectContainer = UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + if(_loc3_ != null) + { + _loc4_ = 0; + while(_loc4_ < _loc3_.numChildren) + { + _loc5_ = _loc3_.getChildAt(_loc4_); + _loc5_.scaleX = param1; + _loc5_.scaleY = param2; + _loc4_++; + } + } + } + + public function updateBodyScale(param1:Number, param2:Number) : void + { + var _loc3_:DisplayObjectContainer = this.getSkeletonContainer(this.ver); + if(_loc3_ != null) + { + _loc3_.scaleX = param1; + _loc3_.scaleY = param2; + } + } + + private function getSkeletonContainer(param1:Number = 0) : DisplayObjectContainer + { + return this; + } + + public function get head() : DisplayObjectContainer + { + return UtilPlain.getInstance(this,AnimeConstants.MOVIECLIP_THE_HEAD); + } + } +} diff --git a/scripts/anifire/constant/AnimeConstants.as b/scripts/anifire/constant/AnimeConstants.as new file mode 100644 index 0000000..1bbbc1f --- /dev/null +++ b/scripts/anifire/constant/AnimeConstants.as @@ -0,0 +1,335 @@ +package anifire.constant +{ + import flash.geom.Point; + import flash.geom.Rectangle; + + public class AnimeConstants + { + + public static const MOVIE_VERSION:Number = 4; + + public static const SCREEN_X:Number = 47; + + public static const SCREEN_Y:Number = 24; + + public static const SCREEN_WIDTH:Number = 550; + + public static const SCREEN_HEIGHT:Number = 354; + + public static const WIDE_SCREEN_HEIGHT:Number = 310; + + public static const SCREEN_HEIGHT_DIFF:Number = SCREEN_HEIGHT - WIDE_SCREEN_HEIGHT; + + public static const WIDE_SCREEN_Y:Number = 46; + + public static const CONVERT_TO_AVI_HEIGHT:Number = 720; + + public static const CONVERT_TO_AVI_WIDTH:Number = 1280; + + public static const FACING_LEFT:String = "left"; + + public static const FACING_RIGHT:String = "right"; + + public static const FACING_UNKNOW:String = "unknown"; + + public static const MENU_ITEM_TYPE_MOVEMENT_TAG:String = "movement"; + + public static const MOVEMENT_SLIDE:String = "Slide"; + + public static const MOTION_FORWARD:String = "forward"; + + public static const MOTION_BACKWARD:String = "backward"; + + public static const FRAME_PER_SEC:Number = 24; + + public static const FRAME_PER_SEC_FAST:Number = 24; + + public static const FRAME_PER_PIXEL:Number = 1 / PIXEL_PER_FRAME; + + public static const PIXEL_PER_FRAME:Number = 2; + + public static const PIXEL_PER_SEC:Number = PIXEL_PER_FRAME * FRAME_PER_SEC; + + public static const PIXEL_PER_MILLISEC:Number = PIXEL_PER_SEC * 0.001; + + public static const FRAME_PER_BUBBLE_WORD:uint = 9; + + public static const MOTION_DURATION:Number = 2; + + public static const ASSET_MOVE_TOLERANCE:Number = 15; + + public static const DEFAULT_CAMERA_ZOOM_DURATION:int = 12; + + public static const AUTOSAVE_INTERVAL:int = 10 * 60; + + public static const DEFAULT_MOVIE_NAME:String = "Untitled"; + + public static const DEFAULT_VOLUME:Number = 1; + + public static const DEFAULT_INNER_VOLUME:Number = 1; + + public static const SCENE_DURATION_MINIMUM:Number = SCENE_FRAME_MINIMUM / FRAME_PER_SEC; + + public static const SCENE_LENGTH_MINIMUM:Number = SCENE_FRAME_MINIMUM * PIXEL_PER_FRAME; + + public static const SCENE_FRAME_MINIMUM:Number = 6; + + public static const SCENE_FRAME_MAXIMUM:Number = 5760; + + public static const SCENE_SNAP_INTERVAL:Number = SCENE_FRAME_INTERVAL * PIXEL_PER_FRAME; + + public static const SCENE_FRAME_INTERVAL:Number = 3; + + public static const SCENE_TIME_SNAP:Number = SCENE_FRAME_INTERVAL / FRAME_PER_SEC; + + public static const SOUND_FRAME_INTERVAL:int = 3; + + public static const SOUND_FADING_DURATION_SNAP_INTERVAL:int = 3; + + public static const SOUND_VOLUME_SNAP_INTERVAL:Number = 0.01; + + public static const SOUND_LENGTH_MINIMUM:int = SCENE_LENGTH_MINIMUM; + + public static const SOUND_FRAME_MINIMUM:int = 6; + + public static const SCENE_DURATION_DEFAULT:Number = SCENE_FRAME_DEFAULT / FRAME_PER_SEC; + + public static const SCENE_LENGTH_DEFAULT:Number = SCENE_FRAME_DEFAULT * PIXEL_PER_FRAME; + + public static const SCENE_FRAME_DEFAULT:Number = 60; + + public static const MOVIE_XML_FILENAME:String = "movie.xml"; + + public static const THEME_SEGMENT_ONE:int = 1; + + public static const THEME_SEGMENT_TWO:int = 2; + + public static const PLAYER_WIDTH:int = 550; + + public static const PLAYER_HEIGHT:int = 354; + + public static const STAGE_X:int = 0; + + public static const STAGE_Y:int = 68; + + public static const STAGE_WIDTH:int = 645; + + public static const STAGE_HEIGHT:int = 402; + + public static const STAGE_PADDING:int = 250; + + public static const STAGE_SCALEX:Number = 0.75; + + public static const STAGE_SCALEY:Number = 0.75; + + public static const MOVIE_THUMBNAIL_WIDTH:int = 160; + + public static const MOVIE_THUMBNAIL_HEIGHT:int = 90; + + public static const MOVIE_THUMBNAIL_LARGE_WIDTH:int = 640; + + public static const MOVIE_THUMBNAIL_LARGE_HEIGHT:int = 360; + + public static const STARTER_THUMBNAIL_WIDTH:int = 180; + + public static const STARTER_THUMBNAIL_HEIGHT:int = 120; + + public static const MAX_CONCURRENT_NETWORK_CONNECTION:int = 4; + + public static const MIN_TIME_TO_BUFFER:Number = 15000; + + public static const STUDIO_WIDTH_MIN:Number = 954; + + public static const STUDIO_HEIGHT_MIN:Number = 640; + + public static const STUDIO_WIDTH_DEFAULT:Number = STUDIO_WIDTH_MIN; + + public static const STUDIO_HEIGHT_DEFAULT:Number = STUDIO_HEIGHT_MIN; + + public static const TILE_CHAR_WIDTH:Number = 85; + + public static const TILE_CHAR_HEIGHT:Number = 85; + + public static const TILE_BUBBLE_WIDTH:Number = 60; + + public static const TILE_BUBBLE_HEIGHT:Number = 60; + + public static const TILE_PROP_WIDTH:Number = 60; + + public static const TILE_PROP_HEIGHT:Number = 60; + + public static const TILE_BACKGROUND_WIDTH:Number = 120; + + public static const TILE_BACKGROUND_HEIGHT:Number = 80; + + public static const TILE_INSETS:Number = 5; + + public static const TAB_DIVIDEND_CHAR:int = 2; + + public static const TAB_DIVIDEND_BACKGROUND:int = 5; + + public static const TAB_DIVIDENT_PROP:int = 2; + + public static const TAB_INDEX_CHAR:int = 0; + + public static const TAB_INDEX_BACKGROUND:int = 1; + + public static const TAB_INDEX_PROP:int = 4; + + public static const TAB_INDEX_SOUND:int = 3; + + public static const STAGE_DIVIDEN_CHAR:Number = 1.5; + + public static const STAGE_DIVIDEN_BACKGROUND:Number = 1.5; + + public static const LOADER_NAME:String = "imageLoader"; + + public static const IMAGE_OBJECT_NAME:String = "imageObject"; + + public static const SEARCH_ASSET_PAGE_SIZE:int = 1000; + + public static const ASSET_TYPE_UNKNOWN:String = "Unknown"; + + public static const ASSET_TYPE_BG:String = "bg"; + + public static const ASSET_TYPE_TEMPLATE:String = "movie"; + + public static const ASSET_TYPE_CHAR:String = "char"; + + public static const ASSET_TYPE_BUBBLE:String = "bubble"; + + public static const ASSET_TYPE_FX:String = "effect"; + + public static const ASSET_TYPE_PROP:String = "prop"; + + public static const ASSET_TYPE_PROP_HEAD:String = "Prop - used as a character\'s head"; + + public static const ASSET_TYPE_PROP_HELD_BY_CHAR:String = "Prop - held by a character"; + + public static const ASSET_TYPE_PROP_PLACEABLE:String = "Prop - place on stage"; + + public static const ASSET_TYPE_PROP_VIDEO:String = "video"; + + public static const DOWNLOAD_TYPE_FLV:String = "flv"; + + public static const ASSET_TYPE_SOUND:String = "sound"; + + public static const ASSET_TYPE_SOUND_SUBTYPE_BG_MUSIC:String = "bgmusic"; + + public static const ASSET_TYPE_SOUND_SUBTYPE_SOUND_EFFECT:String = "soundeffect"; + + public static const ASSET_TYPE_SOUND_SUBTYPE_VOICE_OVER:String = "voiceover"; + + public static const ASSET_TYPE_SOUND_SUBTYPE_TTS:String = "tts"; + + public static const ASSET_TYPE_SOUND_SUBTYPE_TRIBE_OF_NOISE:String = "tribeofnoise"; + + public static const DOWNLOAD_TYPE_EMBED:String = "embed"; + + public static const DOWNLOAD_TYPE_PROGRESSIVE:String = "progressive"; + + public static const DOWNLOAD_TYPE_STREAM:String = "stream"; + + public static const TIME_OUT:int = 30000; + + public static const MATH_DOT_NUM:int = 1; + + public static const DOUBLE_CLICK_DURATION:int = 500; + + public static const ERR_BLANK:String = "constant_warningtitle"; + + public static const ERR_BLANK_TAG:String = "constant_warningtag"; + + public static const ERR_BAD:String = "constant_warningbad"; + + public static const GA_ACTION__AUTO_SAVE:String = "/gostudio/autoSave"; + + public static const MAGIC_KEY:String = "n0t t0 sh0w"; + + public static const COMBO_REMINDER:String = "constant_combo"; + + public static const NETWORK_ERROR_MESSAGE:String = "constant_connecterr"; + + public static const SOUND_NON_UPLOADABLE_MSG:String = "constant_disabled"; + + public static const SOUND_UPLOADABLE_MSG:String = "constant_othertheme"; + + public static const LANGUAGE_CODE_ENGLISH:String = "en"; + + public static const MOVIECLIP_DEFAULT_HEAD:String = "defaultHead"; + + public static const MOVIECLIP_CUSTOM_HEAD:String = "customHead"; + + public static const MOVIECLIP_DEFAULT_MOUTH:String = "defaultMouth"; + + public static const MOVIECLIP_CUSTOM_MOUTH:String = "customMouth"; + + public static const MOVIECLIP_THE_MOUTH:String = "theMouth"; + + public static const MOVIECLIP_DEFAULT_TAIL:String = "defaultTail"; + + public static const MOVIECLIP_THE_HEAD:String = "theHead"; + + public static const MOVIECLIP_THE_PROP:String = "theProp"; + + public static const MOVIECLIP_THE_WEAR:String = "theWear"; + + public static const MOVIECLIP_THE_TAIL:String = "theTail"; + + public static const MOVIECLIP_CUSTOM_WEAR:String = "customWear"; + + public static const CLASS_GOPROP:String = "GoProp"; + + public static const CLASS_GOHAND:String = "GoHands"; + + public static const HAND:String = "Hand"; + + public static const RIGHT:String = "Right"; + + public static const CLASS_GOLEFTLOWERHAND:String = "GoLeftLowerHand"; + + public static const CLASS_GORIGHTLOWERHAND:String = "GoRightLowerHand"; + + public static const MESSAGE_NETWORK_FAIL:String = "Network connection failed"; + + public static const SCREEN_MODE_NORMAL:String = "normal_screen_node"; + + public static const SCREEN_MODE_WIDE:String = "wide_screen_mode"; + + public static const TAG_MY_FAV_THUMB:String = "__sys__myFAV_"; + + + public function AnimeConstants() + { + super(); + } + + public static function get screenY() : Number + { + if(LicenseConstants.isWideScreen()) + { + return WIDE_SCREEN_Y; + } + return SCREEN_Y; + } + + public static function get screenHeight() : Number + { + if(LicenseConstants.isWideScreen()) + { + return WIDE_SCREEN_HEIGHT; + } + return SCREEN_HEIGHT; + } + + public static function get screenCenter() : Point + { + return new Point(SCREEN_X + SCREEN_WIDTH / 2,screenY + screenHeight / 2); + } + + public static function get screenRect() : Rectangle + { + return new Rectangle(SCREEN_X,screenY,SCREEN_WIDTH,screenHeight); + } + } +} diff --git a/scripts/anifire/constant/CcLibConstant.as b/scripts/anifire/constant/CcLibConstant.as new file mode 100644 index 0000000..f99f2ee --- /dev/null +++ b/scripts/anifire/constant/CcLibConstant.as @@ -0,0 +1,782 @@ +package anifire.constant +{ + import anifire.managers.AppConfigManager; + import anifire.util.UtilHashArray; + import anifire.util.UtilLicense; + import anifire.util.UtilUser; + import flash.geom.Point; + + public class CcLibConstant + { + + public static const COMPONENT_GROUP_UPPER_LOWER:String = "componentGroupClothes"; + + public static const COMPONENT_TYPE_FACIAL_DECORATION:String = "facedecoration"; + + public static const COMPONENT_TYPE_EYE:String = "eye"; + + public static const COMPONENT_TYPE_GLASSES:String = "glasses"; + + public static const COMPONENT_TYPE_EAR:String = "ear"; + + public static const COMPONENT_TYPE_MOUTH:String = "mouth"; + + public static const COMPONENT_TYPE_NOSE:String = "nose"; + + public static const COMPONENT_TYPE_MUSTACHE:String = "mustache"; + + public static const COMPONENT_TYPE_BEARD:String = "beard"; + + public static const COMPONENT_TYPE_EYEBROW:String = "eyebrow"; + + public static const COMPONENT_TYPE_FACESHAPE:String = "faceshape"; + + public static const COMPONENT_TYPE_HAIR:String = "hair"; + + public static const COMPONENT_TYPE_FRONT_HAIR:String = "fronthair"; + + public static const COMPONENT_TYPE_BACK_HAIR:String = "backhair"; + + public static const COMPONENT_TYPE_UPPER_BODY:String = "upper_body"; + + public static const COMPONENT_TYPE_LOWER_BODY:String = "lower_body"; + + public static const COMPONENT_TYPE_SKELETON:String = "skeleton"; + + public static const COMPONENT_TYPE_BODYSHAPE:String = "bodyshape"; + + public static const COMPONENT_TYPE_FREEACTION:String = "freeaction"; + + public static const LIBRARY_TYPE_GOUPPER:String = "GoUpper"; + + public static const LIBRARY_TYPE_GOLOWER:String = "GoLower"; + + public static const LIBRARY_TYPE_GOHANDS:String = "GoHands"; + + public static const LIBRARY_TYPE_GOBEHINDBODY:String = "GoBehindBody"; + + public static const LIBRARY_TYPE_GOPROP:String = "GoProp"; + + public static const LIBRARY_TYPE_GOFEET:String = "GoFeet"; + + public static const LIBRARY_TYPE_GOHAIR:String = "GoHair"; + + public static const COMPONENT_CAT_BODY:String = "body"; + + public static const COMPONENT_CAT_HEAD:String = "head"; + + public static const SWF_EXT:String = ".swf"; + + public static const NODE_COMPONENT:String = "component"; + + public static const NODE_COLOR:String = "color"; + + public static const XML_DESC:String = "desc.xml"; + + public static const CLIPUPPER:String = "theUpper"; + + public static const CLIPLOWER:String = "theLower"; + + public static const LIB_LEFT:String = "Left"; + + public static const LIB_RIGHT:String = "Right"; + + public static const MC_NAME_EXT:String = "MC"; + + public static const NODE_LIBRARY:String = "library"; + + public static const COMPONENT_THUMB_CHOOSER_THUMBNAIL_WIDTH:Number = 60; + + public static const COMPONENT_THUMB_CHOOSER_THUMBNAIL_HEIGHT:Number = 60; + + public static const COMPONENT_THUMB_CHOOSER_BIGGER_THUMBNAIL_ENLARGE_RATIO:Number = 1.2; + + public static const COMPONENT_THUMB_CHOOSER_DETAIL_PART_HEIGHT:Number = 25; + + public static const COMPONENT_THUMB_CHOOSER_TILE_PADDING_SIZE:Number = 0; + + public static const COMPONENT_THUMB_CHOOSER_TILE_GAP_SIZE:Number = 2; + + public static const SHOULD_DECRYPT:Boolean = true; + + public static const MONEY_MODE_NORMAL:int = 0; + + public static const MONEY_MODE_FREE:int = 1; + + public static const MONEY_MODE_DONT_NEED_MONEY:int = 2; + + public static const MONEY_MODE_SCHOOL:int = 3; + + public static const USER_LEVEL_NORMAL:int = 0; + + public static const USER_LEVEL_SUPER:int = 999; + + public static const PROBABILITY_OPTIONAL_COMPONENT_APPEAR_IN_RANDOMIZE:Number = 0.3; + + public static const PROBABILITY_RANDOM_FROM_PRE_MADE_CHAR:Number = 1; + + public static var COMPONENT_SCALE:Number = 1; + + public static const COMPONENT_SCALE_MALE:Number = 1; + + public static const COMPONENT_SCALE_FEMALE:Number = 0.9; + + public static const RIGHT:String = "Right"; + + public static const LEFT:String = "Left"; + + public static const COUPON_VALUE:Number = 100; + + public static const MODE_SAVE:int = 0; + + public static const MODE_ADDBUCKS:int = 1; + + public static const MODE_REFRESH:int = 2; + + public static const MODE_ADDPOINTS:int = 3; + + public static const MODE_NEEDLOGIN:int = 4; + + public static const MODE_NEEDSUBSCRIBE:int = 5; + + public static const TEMPLATE_CCTHUMB_WIDTH:int = 120; + + public static const TEMPLATE_CHAR_THUMB_WIDTH:int = 130; + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + private static var _themeId:String; + + protected static var __headRelatedLibrary:Array; + + protected static var __allHeadComponentTypes:Array; + + protected static var __allLibraryTypes:Array; + + protected static var __allBodyComponentTypes:Array; + + protected static var __componentOrderInHead:Array; + + protected static var __allMultipleComponentTypes:Array; + + protected static var __allNonLipSyncThemes:Array; + + + public function CcLibConstant() + { + super(); + } + + private static function get themeId() : String + { + if(!_themeId) + { + _themeId = _configManager.getValue(ServerConstants.PARAM_THEME_ID); + } + return _themeId; + } + + public static function get DEFAULT_HEADSCALES() : Array + { + if(themeId == "cc2") + { + return [0.83,1,1.49,1.18]; + } + if(themeId == ThemeConstants.CHIBI_THEME_ID) + { + return [1,0.9,1.1,1.25]; + } + if(themeId == ThemeConstants.NINJA_THEME_ID) + { + return [1,0.9,1.1,1.25]; + } + if(themeId == ThemeConstants.BUSINESS_THEME_ID) + { + return [1.4]; + } + return [0.8,1,1.2,1.6]; + } + + public static function get DEFAULT_BODYSCALES() : Array + { + if(themeId == "cc2") + { + return [1.35,1,0.74,1]; + } + if(themeId == ThemeConstants.CHIBI_THEME_ID) + { + return [1,1.1,0.9,0.8]; + } + if(themeId == ThemeConstants.NINJA_THEME_ID) + { + return [1,1.1,0.9,0.8]; + } + if(themeId == ThemeConstants.BUSINESS_THEME_ID) + { + return [0.7]; + } + return [1.2,1,0.8,0.8]; + } + + public static function get DEFAULT_HEADPOS() : Array + { + var _loc1_:Array = new Array(); + if(themeId == "cc2") + { + _loc1_.push(new Point(0,4)); + _loc1_.push(new Point(0,0)); + _loc1_.push(new Point(0,-6)); + _loc1_.push(new Point(-13,20)); + } + else + { + _loc1_.push(new Point(0,0)); + _loc1_.push(new Point(0,0)); + _loc1_.push(new Point(0,0)); + _loc1_.push(new Point(0,0)); + } + return _loc1_; + } + + public static function get RANDOM_CHAR() : Boolean + { + return true; + } + + public static function get CHANGE_CHAR_SCALE() : Boolean + { + if(UtilUser.hasAdminFeatures) + { + return true; + } + if(THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(themeId)) + { + return false; + } + return true; + } + + public static function GET_COMPONENT_TYPE_OCCURANCE_PROBABILITY(param1:String) : Number + { + var _loc2_:UtilHashArray = new UtilHashArray(); + _loc2_.push(COMPONENT_TYPE_EYE,1); + _loc2_.push(COMPONENT_TYPE_GLASSES,0.3); + _loc2_.push(COMPONENT_TYPE_EAR,1); + _loc2_.push(COMPONENT_TYPE_MOUTH,1); + _loc2_.push(COMPONENT_TYPE_NOSE,1); + _loc2_.push(COMPONENT_TYPE_MUSTACHE,0.1); + _loc2_.push(COMPONENT_TYPE_BEARD,0.1); + _loc2_.push(COMPONENT_TYPE_EYEBROW,1); + _loc2_.push(COMPONENT_TYPE_FACESHAPE,1); + _loc2_.push(COMPONENT_TYPE_HAIR,0.95); + _loc2_.push(COMPONENT_TYPE_FACIAL_DECORATION,0); + _loc2_.push(COMPONENT_TYPE_UPPER_BODY,1); + _loc2_.push(COMPONENT_TYPE_LOWER_BODY,1); + _loc2_.push(COMPONENT_TYPE_SKELETON,1); + _loc2_.push(LIBRARY_TYPE_GOBEHINDBODY,0.3); + _loc2_.push(LIBRARY_TYPE_GOHANDS,1); + _loc2_.push(LIBRARY_TYPE_GOLOWER,1); + _loc2_.push(LIBRARY_TYPE_GOPROP,0); + _loc2_.push(LIBRARY_TYPE_GOUPPER,1); + _loc2_.push(LIBRARY_TYPE_GOFEET,1); + var _loc3_:Array = ALL_MULTIPLE_COMPONENT_TYPES; + var _loc4_:int = 0; + while(_loc4_ < _loc3_.length) + { + _loc2_.push(_loc3_[_loc4_],0); + _loc4_++; + } + if(_loc2_.containsKey(param1)) + { + return _loc2_.getValueByKey(param1) as Number; + } + return 1; + } + + public static function get OPTIONAL_COMPONENTS() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.push(COMPONENT_TYPE_GLASSES,COMPONENT_TYPE_GLASSES); + _loc1_.push(COMPONENT_TYPE_MUSTACHE,COMPONENT_TYPE_MUSTACHE); + _loc1_.push(COMPONENT_TYPE_BEARD,COMPONENT_TYPE_BEARD); + _loc1_.push(COMPONENT_TYPE_EYEBROW,COMPONENT_TYPE_EYEBROW); + _loc1_.push(COMPONENT_TYPE_HAIR,COMPONENT_TYPE_HAIR); + _loc1_.push(COMPONENT_TYPE_EAR,COMPONENT_TYPE_EAR); + _loc1_.push(COMPONENT_TYPE_FACESHAPE,COMPONENT_TYPE_FACESHAPE); + _loc1_.push(LIBRARY_TYPE_GOBEHINDBODY,LIBRARY_TYPE_GOBEHINDBODY); + if(themeId != ThemeConstants.BUSINESS_THEME_ID) + { + _loc1_.push(COMPONENT_TYPE_EYE,COMPONENT_TYPE_EYE); + _loc1_.push(COMPONENT_TYPE_MOUTH,COMPONENT_TYPE_MOUTH); + _loc1_.push(COMPONENT_TYPE_NOSE,COMPONENT_TYPE_NOSE); + } + return _loc1_; + } + + public static function get USER_CHOOSE_ABLE_HEAD_COMPONENT_TYPES() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(COMPONENT_TYPE_EYE); + _loc1_.push(COMPONENT_TYPE_GLASSES); + _loc1_.push(COMPONENT_TYPE_EAR); + _loc1_.push(COMPONENT_TYPE_NOSE); + _loc1_.push(COMPONENT_TYPE_MOUTH); + _loc1_.push(COMPONENT_TYPE_MUSTACHE); + _loc1_.push(COMPONENT_TYPE_BEARD); + _loc1_.push(COMPONENT_TYPE_EYEBROW); + _loc1_.push(COMPONENT_TYPE_FACESHAPE); + _loc1_.push(COMPONENT_TYPE_HAIR); + _loc1_.push(COMPONENT_TYPE_FACIAL_DECORATION); + return _loc1_; + } + + public static function get USER_CHOOSE_ABLE_BODY_COMPONENT_TYPES() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(COMPONENT_TYPE_BODYSHAPE); + _loc1_.push(COMPONENT_TYPE_UPPER_BODY); + _loc1_.push(COMPONENT_TYPE_LOWER_BODY); + _loc1_.push(LIBRARY_TYPE_GOUPPER); + _loc1_.push(LIBRARY_TYPE_GOLOWER); + _loc1_.push(LIBRARY_TYPE_GOHANDS); + _loc1_.push(LIBRARY_TYPE_GOBEHINDBODY); + _loc1_.push(LIBRARY_TYPE_GOFEET); + _loc1_.push(LIBRARY_TYPE_GOHAIR); + return _loc1_; + } + + public static function GET_COMPONENT_RELATED_LIBRARY(param1:String) : String + { + switch(param1) + { + case COMPONENT_TYPE_HAIR: + return LIBRARY_TYPE_GOHAIR; + case LIBRARY_TYPE_GOLOWER: + if(themeId == "anime") + { + } + } + return ""; + } + + public static function get HEAD_RELATED_LIBRARY() : Array + { + if(!__headRelatedLibrary) + { + __headRelatedLibrary = []; + __headRelatedLibrary.push(LIBRARY_TYPE_GOHAIR); + } + return __headRelatedLibrary; + } + + public static function get COMPONENT_TYPE_CHOOSER_COMPONENT_GROUP() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(COMPONENT_GROUP_UPPER_LOWER); + return _loc1_; + } + + public static function get BODYSHAPE_CHOOSABLE() : Boolean + { + if(themeId == ThemeConstants.ANIME_THEME_ID || themeId == ThemeConstants.NINJAANIME_THEME_ID) + { + if(UtilUser.hasAdminFeatures) + { + return true; + } + return false; + } + return true; + } + + public static function get COMPONENT_TYPE_CHOOSER_ORDERING_VER2() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(LIBRARY_TYPE_GOUPPER); + _loc1_.push(LIBRARY_TYPE_GOLOWER); + _loc1_.push(LIBRARY_TYPE_GOHANDS); + _loc1_.push(LIBRARY_TYPE_GOBEHINDBODY); + _loc1_.push(LIBRARY_TYPE_GOFEET); + _loc1_.push(COMPONENT_TYPE_FACESHAPE); + _loc1_.push(COMPONENT_TYPE_HAIR); + _loc1_.push(COMPONENT_TYPE_EYE); + _loc1_.push(COMPONENT_TYPE_EYEBROW); + _loc1_.push(COMPONENT_TYPE_NOSE); + _loc1_.push(COMPONENT_TYPE_MOUTH); + _loc1_.push(COMPONENT_TYPE_EAR); + _loc1_.push(COMPONENT_TYPE_GLASSES); + _loc1_.push(COMPONENT_TYPE_FACIAL_DECORATION); + return _loc1_; + } + + public static function get LOAD_DEFAULT_ON_SWITCH_SHAPE() : Boolean + { + if(themeId == ThemeConstants.BUSINESS_THEME_ID) + { + return true; + } + if(themeId == ThemeConstants.ANIME_THEME_ID) + { + return true; + } + return false; + } + + public static function get CHOOSE_TAG_TYPE_SEX() : Boolean + { + if(THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(themeId)) + { + return true; + } + return false; + } + + public static function get COMPONENT_TYPE_CHOOSER_ORDERING_VER1() : Array + { + var _loc1_:Array = new Array(); + if(UtilLicense.getCurrentLicenseId() == "8") + { + _loc1_.push(COMPONENT_GROUP_UPPER_LOWER); + } + else + { + _loc1_.push(COMPONENT_TYPE_UPPER_BODY); + _loc1_.push(COMPONENT_TYPE_LOWER_BODY); + } + _loc1_.push(COMPONENT_TYPE_FACESHAPE); + _loc1_.push(COMPONENT_TYPE_HAIR); + _loc1_.push(COMPONENT_TYPE_EYE); + _loc1_.push(COMPONENT_TYPE_EYEBROW); + _loc1_.push(COMPONENT_TYPE_NOSE); + _loc1_.push(COMPONENT_TYPE_MUSTACHE); + _loc1_.push(COMPONENT_TYPE_BEARD); + _loc1_.push(COMPONENT_TYPE_MOUTH); + _loc1_.push(COMPONENT_TYPE_EAR); + _loc1_.push(COMPONENT_TYPE_GLASSES); + _loc1_.push(COMPONENT_TYPE_FACIAL_DECORATION); + return _loc1_; + } + + public static function get ALL_HEAD_COMPONENT_TYPES() : Array + { + if(!__allHeadComponentTypes) + { + __allHeadComponentTypes = []; + __allHeadComponentTypes.push(COMPONENT_TYPE_EYE); + __allHeadComponentTypes.push(COMPONENT_TYPE_GLASSES); + __allHeadComponentTypes.push(COMPONENT_TYPE_EAR); + __allHeadComponentTypes.push(COMPONENT_TYPE_MOUTH); + __allHeadComponentTypes.push(COMPONENT_TYPE_NOSE); + __allHeadComponentTypes.push(COMPONENT_TYPE_MUSTACHE); + __allHeadComponentTypes.push(COMPONENT_TYPE_BEARD); + __allHeadComponentTypes.push(COMPONENT_TYPE_EYEBROW); + __allHeadComponentTypes.push(COMPONENT_TYPE_FACESHAPE); + __allHeadComponentTypes.push(COMPONENT_TYPE_HAIR); + __allHeadComponentTypes.push(COMPONENT_TYPE_FACIAL_DECORATION); + } + return __allHeadComponentTypes; + } + + public static function get ALL_LIBRARY_TYPES() : Array + { + if(!__allLibraryTypes) + { + __allLibraryTypes = []; + __allLibraryTypes.push(LIBRARY_TYPE_GOUPPER); + __allLibraryTypes.push(LIBRARY_TYPE_GOLOWER); + __allLibraryTypes.push(LIBRARY_TYPE_GOHANDS); + __allLibraryTypes.push(LIBRARY_TYPE_GOBEHINDBODY); + __allLibraryTypes.push(LIBRARY_TYPE_GOFEET); + __allLibraryTypes.push(LIBRARY_TYPE_GOHAIR); + } + return __allLibraryTypes; + } + + public static function get ALL_BODY_COMPONENT_TYPES() : Array + { + if(!__allBodyComponentTypes) + { + __allBodyComponentTypes = []; + __allBodyComponentTypes.push(COMPONENT_TYPE_UPPER_BODY); + __allBodyComponentTypes.push(COMPONENT_TYPE_LOWER_BODY); + __allBodyComponentTypes.push(COMPONENT_TYPE_SKELETON); + __allBodyComponentTypes.push(COMPONENT_TYPE_FREEACTION); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOUPPER); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOLOWER); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOHANDS); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOBEHINDBODY); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOFEET); + __allBodyComponentTypes.push(LIBRARY_TYPE_GOHAIR); + } + return __allBodyComponentTypes; + } + + public static function get ALL_OFFSETABLE_COMPONENT_TYPES() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push(COMPONENT_TYPE_EYE); + _loc1_.push(COMPONENT_TYPE_GLASSES); + _loc1_.push(COMPONENT_TYPE_EYEBROW); + return _loc1_; + } + + public static function get ALL_COMPONENT_TYPES() : Array + { + return ALL_HEAD_COMPONENT_TYPES.concat(ALL_BODY_COMPONENT_TYPES); + } + + public static function get GET_COMPONENT_ORDER_IN_HEAD() : Array + { + if(!__componentOrderInHead) + { + __componentOrderInHead = []; + __componentOrderInHead.push(COMPONENT_TYPE_BACK_HAIR); + __componentOrderInHead.push(COMPONENT_TYPE_FACESHAPE); + __componentOrderInHead.push(COMPONENT_TYPE_MOUTH); + __componentOrderInHead.push(COMPONENT_TYPE_BEARD); + __componentOrderInHead.push(COMPONENT_TYPE_MUSTACHE); + __componentOrderInHead.push(COMPONENT_TYPE_HAIR); + __componentOrderInHead.push(COMPONENT_TYPE_EAR); + __componentOrderInHead.push(COMPONENT_TYPE_EYE + RIGHT); + __componentOrderInHead.push(COMPONENT_TYPE_GLASSES + RIGHT); + __componentOrderInHead.push(COMPONENT_TYPE_EYEBROW + RIGHT); + __componentOrderInHead.push(COMPONENT_TYPE_NOSE); + __componentOrderInHead.push(COMPONENT_TYPE_EYE + LEFT); + __componentOrderInHead.push(COMPONENT_TYPE_GLASSES + LEFT); + __componentOrderInHead.push(COMPONENT_TYPE_EYEBROW + LEFT); + __componentOrderInHead.push(COMPONENT_TYPE_FRONT_HAIR); + __componentOrderInHead.push(COMPONENT_TYPE_FACIAL_DECORATION); + } + return __componentOrderInHead; + } + + public static function get ALL_MULTIPLE_COMPONENT_TYPES() : Array + { + if(!__allMultipleComponentTypes) + { + __allMultipleComponentTypes = []; + __allMultipleComponentTypes.push(COMPONENT_TYPE_FACIAL_DECORATION); + } + return __allMultipleComponentTypes; + } + + public static function COLORS_BY_COMPONENT(param1:String) : Array + { + if(param1 == COMPONENT_TYPE_EYE) + { + return ["ccEyeLib","ccEyeIris","ccSkinColor"]; + } + if(param1 == COMPONENT_TYPE_MOUTH) + { + return ["ccMouthLip","ccSkinColor"]; + } + return null; + } + + public static function IS_TAKE_ORIGINAL_COLOR(param1:String) : Boolean + { + if(ALL_LIBRARY_TYPES.indexOf(param1) > -1) + { + return true; + } + if(param1 == COMPONENT_TYPE_HAIR) + { + return true; + } + return false; + } + + public static function get ALL_COLOR_CODE_USED() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("ccSkinColor"); + _loc1_.push("ccFaceHairColor"); + _loc1_.push("ccUpperMain"); + _loc1_.push("ccUpperMinor"); + _loc1_.push("ccLowerMainA"); + _loc1_.push("ccLowerMain"); + _loc1_.push("ccLowerMinor"); + _loc1_.push("ccFeetMain"); + _loc1_.push("ccDecMajor"); + _loc1_.push("ccDecMinor"); + _loc1_.push("ccEyeLib"); + _loc1_.push("ccEyeIris"); + _loc1_.push("ccMouthLip"); + _loc1_.push("ccGlassesFrame"); + _loc1_.push("ccGlassesLens"); + _loc1_.push("ccHairMajor"); + _loc1_.push("ccHairMinor"); + _loc1_.push("ccEyebrow"); + _loc1_.push("ccHandMain"); + _loc1_.push("ccHandMinor"); + _loc1_.push("ccBackMajor"); + _loc1_.push("ccBackMinor"); + _loc1_.push("ccBeard"); + _loc1_.push("ccMustache"); + _loc1_.push("ccEarrings"); + return _loc1_; + } + + public static function get CC_PREVIEW_DY() : Number + { + if(themeId == ThemeConstants.CHIBI_THEME_ID) + { + return 45; + } + if(themeId == ThemeConstants.NINJA_THEME_ID) + { + return 45; + } + if(themeId == "cc2") + { + return 45; + } + return 35; + } + + public static function get DEFAULT_PREVIEW_SCALE() : Number + { + if(themeId == ThemeConstants.ANIME_THEME_ID) + { + return 1.2; + } + if(themeId == ThemeConstants.NINJAANIME_THEME_ID) + { + return 1.2; + } + if(THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(themeId)) + { + return 1.4; + } + return 1; + } + + public static function THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(param1:String) : Boolean + { + switch(param1) + { + case ThemeConstants.BUSINESS_THEME_ID: + case ThemeConstants.WHITEBOARD_THEME_ID: + return true; + default: + return false; + } + } + + public static function ALLOW_SHOW_DETAIL_FOR_PAIR(param1:String) : Boolean + { + return THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(param1); + } + + public static function get HAS_DETAIL_CONTROL() : Boolean + { + switch(themeId) + { + case ThemeConstants.CHIBI_THEME_ID: + case ThemeConstants.NINJA_THEME_ID: + case ThemeConstants.ANIME_THEME_ID: + case ThemeConstants.NINJAANIME_THEME_ID: + return false; + case ThemeConstants.BUSINESS_THEME_ID: + case ThemeConstants.WHITEBOARD_THEME_ID: + if(UtilUser.hasAdminFeatures) + { + return true; + } + return false; + default: + return true; + } + } + + public static function get IS_WHITEBOARD_THEME() : Boolean + { + switch(themeId) + { + case ThemeConstants.WHITEBOARD_THEME_ID: + return true; + default: + return false; + } + } + + public static function get IS_BUSINESS_THEME() : Boolean + { + switch(themeId) + { + case ThemeConstants.BUSINESS_THEME_ID: + return true; + default: + return false; + } + } + + public static function get PHOTO_SIZE() : Number + { + if(themeId == ThemeConstants.ANIME_THEME_ID) + { + return 50; + } + if(themeId == ThemeConstants.NINJAANIME_THEME_ID) + { + return 50; + } + return 100; + } + + public static function CHAR_TAG_MATCH_CURR_THEME(param1:Array) : Boolean + { + if(THEME_RUN_TAG_INSTEAD_OF_BODYSHAPE(themeId)) + { + if(param1.indexOf(_configManager.getValue("ft")) > -1) + { + return true; + } + return false; + } + return true; + } + + public static function CHAR_WITH_FREEACTION(param1:String) : Boolean + { + switch(param1) + { + case ThemeConstants.POLITIC_2_THEME_ID: + case ThemeConstants.COMEDY_WORLD_THEME_ID: + case ThemeConstants.FAMILY_THEME_ID: + case ThemeConstants.STICKLY_BIZ_THEME_ID: + case ThemeConstants.BIZ_MODEL_THEME_ID: + case ThemeConstants.BOTDF_THEME_ID: + case ThemeConstants.COMMON_CRAFT_THEME_ID: + return false; + default: + return true; + } + } + + public static function get ALL_NON_LIP_SYNC_THEMES() : Array + { + if(!__allNonLipSyncThemes) + { + __allNonLipSyncThemes = []; + __allNonLipSyncThemes.push(ThemeConstants.BOTDF_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.BIZ_MODEL_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.CHRISTMAS_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.COMMON_CRAFT_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.COMMON_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.COMMUNITY_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.INFOGRAPHICS_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.MONSTERMSH_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.POLITIC_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.POLITIC_2_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.RETRO_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.STARTREK_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.STICK_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.STICKLY_BIZ_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.TOON_ADVENTURE_THEME_ID); + __allNonLipSyncThemes.push(ThemeConstants.USER_THEME_ID); + } + return __allNonLipSyncThemes; + } + } +} diff --git a/scripts/anifire/constant/CcServerConstant.as b/scripts/anifire/constant/CcServerConstant.as new file mode 100644 index 0000000..ac0e204 --- /dev/null +++ b/scripts/anifire/constant/CcServerConstant.as @@ -0,0 +1,21 @@ +package anifire.constant +{ + public class CcServerConstant + { + + public static const ACTION_SAVE_CC_CHAR:String = ServerConstants.get_server_path() + "saveCCCharacter/"; + + public static const ACTION_SAVE_CC_CHAR_TEMPLATE:String = ServerConstants.get_server_path() + "saveCCCharacterTemplate/"; + + + public function CcServerConstant() + { + super(); + } + + public static function displayThumbnailId() : Boolean + { + return LicenseConstants.isThumbnailTestHost(); + } + } +} diff --git a/scripts/anifire/constant/LanguageConstants.as b/scripts/anifire/constant/LanguageConstants.as new file mode 100644 index 0000000..38fff7a --- /dev/null +++ b/scripts/anifire/constant/LanguageConstants.as @@ -0,0 +1,77 @@ +package anifire.constant +{ + import anifire.util.UtilHashArray; + + public class LanguageConstants + { + + + public function LanguageConstants() + { + super(); + } + + public static function get SHORT_LANG_CODES() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.push("de","Deutsch"); + _loc1_.push("en","English"); + _loc1_.push("es","Español"); + _loc1_.push("fr","Français"); + _loc1_.push("it","Italiano"); + _loc1_.push("jp","日本語 (Japanese)"); + _loc1_.push("kr","한국어 (Korean)"); + _loc1_.push("pt","Português"); + _loc1_.push("sc","简体中文 (Simplified Chinese)"); + _loc1_.push("th","ไทย (Thai)"); + _loc1_.push("tc","繁體中文 (Traditional Chinese)"); + return _loc1_; + } + + public static function get SHORT_TO_MEDIUM_LANG_CODES_MAPPING() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.push("sc","zh_CN"); + _loc1_.push("tc","zh_TW"); + _loc1_.push("en","en_US"); + _loc1_.push("th","th_TH"); + _loc1_.push("jp","ja_JP"); + _loc1_.push("kr","ko_KR"); + _loc1_.push("es","es_ES"); + _loc1_.push("de","de_DE"); + _loc1_.push("fr","fr_FR"); + _loc1_.push("it","it_IT"); + _loc1_.push("pt","pt_PT"); + return _loc1_; + } + + public static function get MEDIUM_LANG_CODES() : UtilHashArray + { + var _loc4_:String = null; + var _loc1_:UtilHashArray = SHORT_LANG_CODES; + var _loc2_:UtilHashArray = new UtilHashArray(); + var _loc3_:UtilHashArray = SHORT_TO_MEDIUM_LANG_CODES_MAPPING; + var _loc5_:int = 0; + while(_loc5_ < _loc1_.length) + { + _loc4_ = _loc1_.getKey(_loc5_); + _loc2_.push(_loc3_.getValueByKey(_loc4_),_loc1_.getValueByKey(_loc4_)); + _loc5_++; + } + return _loc2_; + } + + public static function get MEDIUM_TO_SHORT_LANG_CODES_MAPPING() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + var _loc2_:UtilHashArray = SHORT_TO_MEDIUM_LANG_CODES_MAPPING; + var _loc3_:int = 0; + while(_loc3_ < _loc2_.length) + { + _loc1_.push(_loc2_.getValueByIndex(_loc3_),_loc2_.getKey(_loc3_)); + _loc3_++; + } + return _loc1_; + } + } +} diff --git a/scripts/anifire/constant/LicenseConstants.as b/scripts/anifire/constant/LicenseConstants.as new file mode 100644 index 0000000..2f5dee4 --- /dev/null +++ b/scripts/anifire/constant/LicenseConstants.as @@ -0,0 +1,230 @@ +package anifire.constant +{ + import anifire.managers.AppConfigManager; + import anifire.managers.ExternalLinkManager; + import anifire.util.UtilHashArray; + import flash.external.ExternalInterface; + import flash.geom.Rectangle; + + public class LicenseConstants + { + + public static const PUBLISH_ALL:Number = 0; + + public static const PUBLISH_PRIVATE_ONLY:Number = 1; + + public static const PUBLISH_SHARING_MUST_ON:Number = 2; + + public static const PUBLISH_PRIVATE_OFF_ONLY:Number = 4; + + public static const PUBLISH_PRIVATE_ON_ONLY:Number = 5; + + public static const PUBLISH_PUBLIC_ONLY:Number = 6; + + public static var TEST_API_SERVERS:Array = ["alvin.goanimate.org","alvincn.goanimate.org"]; + + public static var THUMBNAIL_HINT_API_SERVERS:Array = ["staging.goanimate.org","bernard.goanimate.org","bernardcn.goanimate.org","alvin.goanimate.org","alvincn.goanimate.org"]; + + private static var _specialModes:Object = {}; + + + public function LicenseConstants() + { + super(); + } + + public static function isThumbnailTestHost() : Boolean + { + return isHostMatch(THUMBNAIL_HINT_API_SERVERS,"thumb"); + } + + public static function isTestHost() : Boolean + { + return isHostMatch(TEST_API_SERVERS,"default"); + } + + private static function isHostMatch(param1:Array, param2:String) : Boolean + { + var apiserver:String = null; + var list:Array = param1; + var cat:String = param2; + if(int(_specialModes[cat]) != 0) + { + return int(_specialModes[cat]) > 0; + } + var permittedHosts:Array = list; + apiserver = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_APISERVER); + var result:Boolean = permittedHosts.some(function(param1:*, param2:int, param3:Array):Boolean + { + return apiserver.indexOf(param1 as String) >= 0; + }); + _specialModes[cat] = !!result?1:-1; + return result; + } + + public static function visitStudioByTheme(param1:String) : void + { + var _loc2_:String = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_SITE_ID); + var _loc3_:String = ""; + if(_loc2_ == "ed") + { + _loc3_ = ServerConstants.STUDIO_PAGE_PATH_NEW; + _loc3_ = _loc3_ + ("full/" + param1); + } + else if(_loc2_ != "go") + { + _loc3_ = ServerConstants.STUDIO_PAGE_PATH; + _loc3_ = _loc3_ + ("theme/" + param1); + } + else + { + _loc3_ = ServerConstants.STUDIO_FULLSCREEN_PAGE_PATH; + _loc3_ = _loc3_ + ("theme/" + param1); + if(ExternalInterface.available) + { + ExternalInterface.call("fullscreenStudio",_loc3_); + } + return; + } + ExternalLinkManager.instance.navigateWithSession(_loc3_); + } + + public static function getScreenRatio() : Number + { + if(isWideScreen()) + { + return AnimeConstants.SCREEN_WIDTH / AnimeConstants.WIDE_SCREEN_HEIGHT; + } + return AnimeConstants.SCREEN_WIDTH / AnimeConstants.SCREEN_HEIGHT; + } + + public static function getStageRect() : Rectangle + { + var _loc1_:Rectangle = new Rectangle(AnimeConstants.SCREEN_X,AnimeConstants.SCREEN_Y,AnimeConstants.SCREEN_WIDTH,AnimeConstants.SCREEN_HEIGHT); + var _loc2_:Rectangle = new Rectangle(AnimeConstants.SCREEN_X,AnimeConstants.WIDE_SCREEN_Y,AnimeConstants.SCREEN_WIDTH,AnimeConstants.WIDE_SCREEN_HEIGHT); + return !!isWideScreen()?_loc2_:_loc1_; + } + + public static function isWideScreen() : Boolean + { + var _loc1_:String = AppConfigManager.instance.getValue(ServerConstants.FLASHVAR_IS_WIDE); + return _loc1_ == "true" || _loc1_ == "1"; + } + + public static function get BAN_SOUND_UPLOAD_LICENSE_IDS() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("3"); + _loc1_.push("5"); + return _loc1_; + } + + public static function get DONT_SHOW_COMMON_SOUND_THEME_IDS() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("akon"); + _loc1_.push("sf"); + _loc1_.push("underdog"); + _loc1_.push("willie"); + return _loc1_; + } + + public static function get DONT_SHOW_COMMON_PROP_THEME_IDS() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("ben10"); + _loc1_.push("chowder"); + _loc1_.push("toonadv"); + _loc1_.push(ThemeConstants.BUSINESS_THEME_ID); + _loc1_.push(ThemeConstants.ANIME_THEME_ID); + _loc1_.push(ThemeConstants.NINJAANIME_THEME_ID); + _loc1_.push(ThemeConstants.STICKLY_BIZ_THEME_ID); + _loc1_.push(ThemeConstants.COMMON_CRAFT_THEME_ID); + _loc1_.push(ThemeConstants.BIZ_MODEL_THEME_ID); + _loc1_.push(ThemeConstants.SPACE_CITIZEN_THEME_ID); + _loc1_.push(ThemeConstants.WHITEBOARD_THEME_ID); + return _loc1_; + } + + public static function get DONT_SHOW_COMMON_BG_THEME_IDS() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("ben10"); + _loc1_.push("chowder"); + _loc1_.push("toonadv"); + _loc1_.push(ThemeConstants.BUSINESS_THEME_ID); + _loc1_.push(ThemeConstants.ANIME_THEME_ID); + _loc1_.push(ThemeConstants.NINJAANIME_THEME_ID); + _loc1_.push(ThemeConstants.STICKLY_BIZ_THEME_ID); + _loc1_.push(ThemeConstants.COMMON_CRAFT_THEME_ID); + _loc1_.push(ThemeConstants.BIZ_MODEL_THEME_ID); + _loc1_.push(ThemeConstants.SPACE_CITIZEN_THEME_ID); + _loc1_.push(ThemeConstants.WHITEBOARD_THEME_ID); + return _loc1_; + } + + public static function get DONT_SHOW_HEAD_SECTION_IN_THUMBTRAY() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("7"); + _loc1_.push("8"); + _loc1_.push("10"); + return _loc1_; + } + + public static function get DONT_SHOW_HANDGEAR_SECTION_IN_THUMBTRAY_LICENSE_ID() : Array + { + var _loc1_:Array = new Array(); + return _loc1_; + } + + public static function get DONT_SHOW_HEADGEAR_SECTION_IN_THUMBTRAY_LICENSE_ID() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("10"); + return _loc1_; + } + + public static function get DONT_SHOW_HEADGEAR_SECTION_IN_THUMBTRAY_THEME_ID() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("0pBZ9UF7FrRU"); + return _loc1_; + } + + public static function get SHOULD_USE_EXTERNAL_PREVIEW_PLAYER() : Array + { + var _loc1_:Array = new Array(); + return _loc1_; + } + + public static function get DONT_ALLOW_TAKING_SCREENSHOT() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("8"); + return _loc1_; + } + + public static function get SHOULD_SHOW_EFFECT_CHANGED_TIP() : Array + { + var _loc1_:Array = new Array(); + _loc1_.push("0"); + _loc1_.push("1"); + _loc1_.push("2"); + _loc1_.push("3"); + _loc1_.push("4"); + _loc1_.push("5"); + _loc1_.push("6"); + _loc1_.push("9"); + _loc1_.push("10"); + return _loc1_; + } + + public static function get PUBLISH_LEVEL() : UtilHashArray + { + var _loc1_:UtilHashArray = new UtilHashArray(); + _loc1_.push("8",PUBLISH_SHARING_MUST_ON); + return _loc1_; + } + } +} diff --git a/scripts/anifire/constant/RaceConstants.as b/scripts/anifire/constant/RaceConstants.as new file mode 100644 index 0000000..bd1eb2a --- /dev/null +++ b/scripts/anifire/constant/RaceConstants.as @@ -0,0 +1,18 @@ +package anifire.constant +{ + public class RaceConstants + { + + public static var STATIC_SWF:int = 0; + + public static var CUSTOM_CHARACTER:int = 1; + + public static var SKINNED_SWF:int = 2; + + + public function RaceConstants() + { + super(); + } + } +} diff --git a/scripts/anifire/constant/ServerConstants.as b/scripts/anifire/constant/ServerConstants.as new file mode 100644 index 0000000..c2a6396 --- /dev/null +++ b/scripts/anifire/constant/ServerConstants.as @@ -0,0 +1,529 @@ +package anifire.constant +{ + import anifire.managers.AppConfigManager; + + public class ServerConstants + { + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + public static const ACTION_SEND_BUG_REPORT:String = SERVER_API_PATH + "clientbug/"; + + public static const ACTION_GET_CHAR:String = SERVER_API_PATH + "getCharacter/"; + + public static const ACTION_GET_UGC_CHAR_ACTION:String = SERVER_API_PATH + "getCharacterAction/"; + + public static const ACTION_GET_CC_CHAR_COMPOSITION_XML:String = SERVER_API_PATH + "getCcCharCompositionXml/"; + + public static const ACTION_GET_INIT_PARAMS:String = SERVER_API_PATH + "getInitParams/"; + + public static const ACTION_GET_CC_CHAR_COUNT:String = SERVER_API_PATH + "getCcCharacterCount/"; + + public static const ACTION_GET_THEMELIST:String = SERVER_API_PATH + "getThemeList/"; + + public static const MOVIE_PATH:String = HOST_PATH + "go/movie/"; + + public static const YOUTUBE_CREATE_MOVIE_PATH:String = HOST_PATH + "create"; + + public static const SKOLETUBE_CREATE_MOVIE_PATH:String = HOST_PATH + "create"; + + public static const USER_PATH:String = HOST_PATH + "go/user/"; + + public static const LOGIN_PAGE_PATH:String = HOST_PATH + "login"; + + public static const STUDIO_PAGE_PATH:String = HOST_PATH + "go/studio/"; + + public static const STUDIO_PAGE_PATH_NEW:String = HOST_PATH + "go/videomaker/"; + + public static const MY_VIDEOS_PATH:String = HOST_PATH + "myvideos/"; + + public static const SCHOOL_VIDEOS_PATH:String = HOST_PATH + "movies/"; + + public static const WIX_VIDEOS_PATH:String = HOST_PATH + "myvideos/"; + + public static const STUDIO_FULLSCREEN_PAGE_PATH:String = HOST_PATH + "go/studioFullscreen/"; + + public static const CC_PAGE_PATH:String = HOST_PATH + "go/character_creator"; + + public static const CLIENT_THEME_PATH:String = HOST_PATH + "static/client_theme/"; + + public static const CLIENT_LOCALE_PATH:String = HOST_PATH + "static/client_theme/"; + + public static const ACTION_SCHOOLPLUS_SIGNUP:String = HOST_PATH + "/public_signup/"; + + public static const UPGRADE_PAGE_PATH:String = HOST_PATH + "plusfeatures"; + + public static const BUSINESS_PLAN_PAGE_PATH:String = HOST_PATH + "business/videoplans"; + + public static const YOUR_VIDEOS_PATH:String = HOST_PATH + "dashboard/videos"; + + public static const ACTION_GET_THEME:String = SERVER_API_PATH + "getTheme/"; + + public static const ACTION_GET_LATEST_ASSET:String = SERVER_API_PATH + "getLatestAsset/"; + + public static const ACTION_GET_LATEST_ASSET_ID:String = SERVER_API_PATH + "getLatestAssetId/"; + + public static const ACTION_GET_THEME_COMPLETE:String = SERVER_API_PATH + "themeCompleted/"; + + public static const ACTION_GET_CC_PRE_MADE_CHARACTERS:String = SERVER_API_PATH + "getCCPreMadeCharacters"; + + public static const ACTION_DELETE_ASSET:String = SERVER_API_PATH + "deleteAsset/"; + + public static const ACTION_DELETE_ASSET_V2:String = SERVER_API_PATH_V2 + "asset/delete/"; + + public static const ACTION_DELETE_STARTER:String = SERVER_API_PATH + "deleteUserTemplate/"; + + public static const ACTION_UPDATE_FOLDER_V2:String = SERVER_API_PATH_V2 + "folder/update/"; + + public static const ACTION_DELETE_FOLDER_V2:String = SERVER_API_PATH_V2 + "folder/delete/"; + + public static const ACTION_UPDATE_ASSET:String = SERVER_API_PATH + "updateAsset/"; + + public static const ACTION_UPDATE_ASSET_V2:String = SERVER_API_PATH_V2 + "asset/update/"; + + public static const ACTION_GET_ASSET_V2:String = SERVER_API_PATH_V2 + "asset/get"; + + public static const ACTION_GET_TEAM_MEMBERS_V2:String = SERVER_API_PATH_V2 + "team/members"; + + public static const ACTION_GOOGLE_ANALYTIC:String = SERVER_API_PATH + "logActionToGA/"; + + public static const ACTION_RSS_PATH:String = HOST_PATH; + + public static const ACTION_GET_USER_ASSETS_V2:String = SERVER_API_PATH_V2 + "assets/imported"; + + public static const ACTION_GET_SHARED_ASSETS_V2:String = SERVER_API_PATH_V2 + "assets/shared"; + + public static const ACTION_GET_TEAM_ASSETS_V2:String = SERVER_API_PATH_V2 + "assets/team"; + + public static const ACTION_GET_STUDIO_PREFERENCE:String = SERVER_API_PATH_V2 + "studio_preference/get"; + + public static const ACTION_CATEGORY_UPDATE_FAVORITE_ORDER:String = SERVER_API_PATH_V2 + "asset_category/update_favorite_order"; + + public static const ACTION_CATEGORY_ADD_FAVORITE:String = SERVER_API_PATH_V2 + "asset_category/add_favorite"; + + public static const ACTION_CATEGORY_REMOVE_FAVORITE:String = SERVER_API_PATH_V2 + "asset_category/remove_favorite"; + + public static const ACTION_CATEGORY_ADD_FEATURED:String = SERVER_API_PATH_V2 + "asset_category/add_featured"; + + public static const ACTION_CATEGORY_REMOVE_FEATURED:String = SERVER_API_PATH_V2 + "asset_category/remove_featured"; + + public static const ACTION_TEXT_COMPONENT_GET_LIST:String = SERVER_API_PATH_V2 + "text_component/get_list"; + + public static const ACTION_TEXT_COMPONENT_GET:String = SERVER_API_PATH_V2 + "text_component/get"; + + public static const ACTION_TEXT_COMPONENT_ADD:String = SERVER_API_PATH_V2 + "text_component/add"; + + public static const ACTION_TEXT_COMPONENT_UPDATE:String = SERVER_API_PATH_V2 + "text_component/update"; + + public static const ACTION_TEXT_COMPONENT_DELETE:String = SERVER_API_PATH_V2 + "text_component/delete"; + + public static const PARAM_THEME_ID:String = "themeId"; + + public static const PARAM_SEGMENT:String = "segment"; + + public static const PARAM_CHAR:String = "char"; + + public static const PARAM_CHAR_ACTION:String = "char_action"; + + public static const PARAM_CHAR_FACIAL:String = "char_facial"; + + public static const PARAM_SOUND:String = "sound"; + + public static const PARAM_BG:String = "bg"; + + public static const PARAM_PROP:String = "prop"; + + public static const PARAM_BUBBLE:String = "bubble"; + + public static const PARAM_PROP_EX:String = "propex"; + + public static const PARAM_PROP_STATE:String = "prop_state"; + + public static const PARAM_PREVIOUS_ASSET_ID:String = "pre_aid"; + + public static const PARAM_EFFECT:String = "effect"; + + public static const PARAM_APPCODE:String = "appCode"; + + public static const DEFAULT_APPCODE:String = "go"; + + public static const PARAM_BOX_PHP_SESSION_ID:String = "PHPSESSID"; + + public static const PARAM_FLASHVAR_PHP_SESSION_ID:String = "ps"; + + public static const PARAM_ORIGINAL_ID:String = "originalId"; + + public static const PARAM_MOVIE_ID:String = "movieId"; + + public static const PARAM_RSS_PATH:String = "rsspath"; + + public static const PARAM_RSS_MOVIENUM:String = "movieNum"; + + public static const PARAM_RSS_CHANNEL:String = "channel"; + + public static const PARAM_IS_PUBLISHED:String = "is_published"; + + public static const PARAM_IS_PRIVATESHARED:String = "is_private_shared"; + + public static const PARAM_IS_PASSWORD_PROTECTED:String = "is_password_protected"; + + public static const PARAM_BADTERMS:String = "badterms"; + + public static const PARAM_BODY:String = "body"; + + public static const PARAM_BODY_ZIP:String = "body_zip"; + + public static const PARAM_LANG:String = "lang"; + + public static const PARAM_SAVE_THUMBNAIL:String = "save_thumbnail"; + + public static const PARAM_AUTOSAVE:String = "autosave"; + + public static const PARAM_IS_TRIGGER_BY_AUTOSAVE:String = "is_triggered_by_autosave"; + + public static const PARAM_THUMBNAIL:String = "thumbnail"; + + public static const PARAM_THUMBNAIL_LARGE:String = "thumbnail_large"; + + public static const PARAM_COMMONITEM:String = "commonItem"; + + public static const PARAM_ISOFFLINE:String = "isOffline"; + + public static const PARAM_GROUP_ID:String = "school_group_id"; + + public static const PARAM_GROUP_NAME:String = "group_name"; + + public static const PARAM_YOUTUBE_PUBLISH:String = "youtube_publish"; + + public static const PARAM_SKOLETUBE_PUBLISH:String = "skoletube_publish"; + + public static const PARAM_U_INFO:String = "u_info"; + + public static const PARAM_U_INFO_SCHOOL:String = PARAM_U_INFO + "_school"; + + public static const PARAM_CATEGORY:String = "category"; + + public static const PARAM_ROLE:String = "role"; + + public static const PARAM_BODYSHAPE:String = "bs"; + + public static const ACTION_GET_MOVIE:String = SERVER_API_PATH + "getMovie/"; + + public static const ACTION_GET_MOVIE_INFO:String = SERVER_API_PATH + "getMovieInfo/"; + + public static const PARAM_USER_ID:String = "userId"; + + public static const PARAM_MOVIE_OWNER_ID:String = "movieOwnerId"; + + public static const PARAM_USER_TOKEN:String = "ut"; + + public static const PARAM_INITIAL_THEME_CODE:String = "ithm"; + + public static const PARAM_IS_EDIT_MODE:String = "editMode"; + + public static const ACTION_SAVE_JPEG:String = SERVER_API_PATH + "jpg_download/screen.jpg"; + + public static const ACTION_SAVE_SOUND:String = SERVER_API_PATH + "saveSound/"; + + public static const ACTION_TEXT_TO_SPEECH:String = SERVER_API_PATH + "convertTextToSoundAsset/"; + + public static const ACTION_GET_USERASSETS:String = SERVER_API_PATH + "getUserAssets/"; + + public static const ACTION_GET_USER_ASSETS_XML:String = SERVER_API_PATH + "getUserAssetsXml/"; + + public static const ACTION_SEARCH_TEMPLATE_CC:String = SERVER_API_PATH + "searchTemplateCCs/"; + + public static const ACTION_GET_PUBLICTEMPLATE:String = SERVER_API_PATH + "getSysTemplates/"; + + public static const ACTION_UPDATE_TEMPLATE_INFO:String = SERVER_API_PATH + "updateSysTemplateAttributes/"; + + public static const ACTION_GET_USER_FONTLIST:String = SERVER_API_PATH + "getUserFontList/"; + + public static const ACTION_GET_ASSET_TAGS:String = SERVER_API_PATH + "getAssetTags"; + + public static const ACTION_GET_COMMUNITYASSETS:String = SERVER_API_PATH + "getCommunityAssets/"; + + public static const ACTION_GET_TTSVOICE:String = SERVER_API_PATH + "getTextToSpeechVoices/"; + + public static const ACTION_GET_ASSET:String = SERVER_API_PATH + "getAsset/"; + + public static const ACTION_REBUILD_TTS:String = SERVER_API_PATH + "rebuildTTS/"; + + public static const ACTION_GET_WATERMARKS:String = SERVER_API_PATH + "getUserWatermarks/"; + + public static const ACTION_ASSIGN_WATERMARK:String = SERVER_API_PATH + "assignwatermark/movie/"; + + public static const ACTION_SEARCH_ASSET:String = SERVER_API_PATH + "searchCommunityAssets/"; + + public static const PARAM_ASSET_ID:String = "assetId"; + + public static const PARAM_ISEMBED_ID:String = "isEmbed"; + + public static const PARAM_ISSLIDE:String = "is_slideshow"; + + public static const PARAM_GOOGLE_ANALYTIC_ACTION:String = "ga_action"; + + public static const ACTION_GET_STREAM_SOUND:String = "rtmpe://rtmp.voxcdn.com/3420.file"; + + public static const ACTION_GET_ALL_FAV_JSON:String = SERVER_API_PATH + "getAllFavoriteAssets/"; + + public static const ACTION_ADD_FAV_JSON:String = SERVER_API_PATH + "addThemeAssetToFavorite/"; + + public static const ACTION_REMOVE_FAV_JSON:String = SERVER_API_PATH + "removeThemeAssetFromFavorite/"; + + public static const ACTION_RESTART_TUTORIAL:String = HOST_PATH + "videomaker/full/tutorial"; + + public static const ERROR_CODE_MOVIE_NOT_FOUND:String = "NOTFOUND"; + + public static const ERROR_CODE_MOVIE_DELETED:String = "MOVIE_DELETED"; + + public static const ERROR_CODE_MOVIE_NOT_SHARE:String = "NOT_SHARE_VIEWABLE"; + + public static const ERROR_CODE_MOVIE_MODERATING:String = "MOVIE_UNDER_MODERATION"; + + public static const ERROR_CODE_NO_ACCESS:String = "NO_ACCESS"; + + public static const ERROR_CODE_SAVE_MOVIE_BLOCKED_BY_VIDEO_RECORDING:String = "video_block_save"; + + public static const ERROR_CODE_LOGGED_OUT:String = "ERR_LOGGED_OUT"; + + public static const FLASHVAR_THUMBNAIL:String = "thumbnailURL"; + + public static const FLASHVAR_IS_VIDEO_RECORD_MODE:String = "isVideoRecord"; + + public static const FLASHVAR_CUSTOM_PLAYER_WIDTH:String = "playerWidth"; + + public static const FLASHVAR_CUSTOM_PLAYER_HEIGHT:String = "playerHeight"; + + public static const FLASHVAR_CHAIN_MOVIE_ID:String = "chain_mids"; + + public static const FLASHVAR_AUTOSTART:String = "autostart"; + + public static const FLASHVAR_NEXT_URL:String = "nextUrl"; + + public static const FLASHVAR_ED_USER_TYPE:String = "edUserType"; + + public static const FLASHVAR_NEXT_URL_PLACEHOLDER:String = ""; + + public static const FLASHVAR_CLIENT_THEME_PATH:String = "clientThemePath"; + + public static const FLASHVAR_CLIENT_THEME_PLACEHOLDER:String = ""; + + public static const FLASHVAR_STORE_PATH:String = "storePath"; + + public static const FLASHVAR_STORE_PLACEHOLDER:String = ""; + + public static const POPUP_WINDOW_NAME:String = "wndstudio"; + + public static const FLASHVAR_S3_SHOULD_BE_USED:String = "useS3"; + + public static const FLASHVAR_S3_URL:String = "s3base"; + + public static const FLASHVAR_APISERVER:String = "apiserver"; + + public static const FLASHVAR_SHOWSHARE:String = "showshare"; + + public static const FLASHVAR_IS_PUBLISHED_PLAYER:String = "isPublished"; + + public static const FLASHVAR_IS_PSHARED:String = "is_private_shared"; + + public static const FLASHVAR_IS_COPYABLE:String = "copyable"; + + public static const FLASHVAR_MOVIE_LICENSE_ID:String = "movieLid"; + + public static const FLASHVAR_CLIENT_THEME_CODE:String = "ctc"; + + public static const FLASHVAR_THEME_COLOR:String = "themeColor"; + + public static const FLASHVAR_CLIENT_THEME_LANG_CODE:String = "tlang"; + + public static const FLASHVAR_SITE_ID:String = "siteId"; + + public static const FLASHVAR_USER_ID:String = "userId"; + + public static const FLASHVAR_THEME_ID:String = "thmid"; + + public static const FLASHVAR_MONEY_MODE:String = "m_mode"; + + public static const FLASHVAR_CC_START_PAGE:String = "page"; + + public static const FLASHVAR_IS_USER_LOGIN_MODE:String = "isLogin"; + + public static const FLASHVAR_IS_ADMIN:String = "uisa"; + + public static const FLASHVAR_IS_IN_SPEEDY_MODE:String = "isSpeedy"; + + public static const FLASHVAR_DEFAULT_TRAYTHEME:String = "tray"; + + public static const FLASHVAR_IS_GOLITE_PREVIEW:String = "is_golite_preview"; + + public static const END_CREDIT_MOVIE_ID:String = "0_aFnt5s2_8o"; + + public static const FLASHVAR_IS_WIDE:String = "isWide"; + + public static const FLASHVAR_IS_WIX_PAID:String = "isWixPaid"; + + public static const FLASHVAR_RESTART_TUTORIAL:String = "retut"; + + public static const FLASHVAR_NO_SKIP_TUTORIAL:String = "noSkipTutorial"; + + public static const FLASHVAR_IS_FREE_TRIAL:String = "free_trial"; + + public static const FLASHVAR_LICENSE_ID:String = "lid"; + + private static var _version:String; + + private static var _apiServer:String; + + private static var _isWixPaid:String; + + private static var _myAppCode:String; + + private static var _serverApiPath:String; + + private static var _serverApiPathV2:String; + + + public function ServerConstants() + { + super(); + } + + public static function get STORE_VERSION() : int + { + return Number(version); + } + + public static function get_ACTION_SAVE_MOVIE() : String + { + return get_server_path() + "saveMovie/"; + } + + public static function get ACTION_SAVE_STARTER() : String + { + return SERVER_API_PATH + "saveTemplate/"; + } + + private static function get version() : String + { + if(!_version) + { + _version = _configManager.getValue("v"); + } + return _version; + } + + private static function get apiServer() : String + { + if(!_apiServer) + { + _apiServer = _configManager.getValue(FLASHVAR_APISERVER); + } + return _apiServer; + } + + private static function get isWixPaid() : String + { + if(!_isWixPaid) + { + _isWixPaid = _configManager.getValue(FLASHVAR_IS_WIX_PAID); + } + return _isWixPaid; + } + + private static function get myAppCode() : String + { + if(!_myAppCode) + { + _myAppCode = _configManager.getValue(PARAM_APPCODE); + if(!_myAppCode) + { + _myAppCode = DEFAULT_APPCODE; + } + } + return _myAppCode; + } + + public static function get HOST_PATH() : String + { + return apiServer; + } + + public static function get HOST_PATH_HTTPS() : String + { + var _loc1_:String = HOST_PATH; + return !!_loc1_?_loc1_.replace(/^http:/,"https:"):""; + } + + public static function get SERVER_API_PATH() : String + { + if(!_serverApiPath) + { + _serverApiPath = apiServer + myAppCode + "api/"; + } + return _serverApiPath; + } + + public static function get SERVER_API_PATH_V2() : String + { + if(!_serverApiPathV2) + { + _serverApiPathV2 = apiServer + "api_v2/"; + } + return _serverApiPathV2; + } + + public static function get_server_path() : String + { + return SERVER_API_PATH; + } + + public static function getPOList(param1:String) : Array + { + if(param1 == "slideplayer") + { + return ["player","slideplayer"]; + } + if(param1 == "cc") + { + return ["cc","store"]; + } + if(param1 == "go") + { + return ["go","player","store","emessage"]; + } + if(param1 == "player") + { + return ["player"]; + } + if(param1 == "import") + { + return ["import"]; + } + return []; + } + + public static function isLookAtCameraEnabled() : Boolean + { + return true; + } + + public static function get IS_WIX() : Boolean + { + if(isWixPaid) + { + return true; + } + return false; + } + + public static function get IS_WIX_PAID() : Boolean + { + if(isWixPaid) + { + return isWixPaid == "1"; + } + return false; + } + } +} diff --git a/scripts/anifire/constant/ThemeConstants.as b/scripts/anifire/constant/ThemeConstants.as new file mode 100644 index 0000000..9c96edf --- /dev/null +++ b/scripts/anifire/constant/ThemeConstants.as @@ -0,0 +1,93 @@ +package anifire.constant +{ + public class ThemeConstants + { + + public static const USER_THEME_ID:String = "User"; + + public static const TEAM_THEME_ID:String = "Team"; + + public static const SHARED_THEME_ID:String = "Shared"; + + public static const COMMUNITY_THEME_ID:String = "Comm"; + + public static const UGC_THEME_ID:String = "ugc"; + + public static const COMMON_THEME_ID:String = "common"; + + public static const RETRO_THEME_ID:String = "retro"; + + public static const CHRISTMAS_THEME_ID:String = "christmas"; + + public static const MONSTERMSH_THEME_ID:String = "monstermsh"; + + public static const STICK_THEME_ID:String = "stick"; + + public static const STARTREK_THEME_ID:String = "startrek"; + + public static const POLITIC_THEME_ID:String = "politic"; + + public static const POLITIC_2_THEME_ID:String = "politics2"; + + public static const COMEDY_WORLD_THEME_ID:String = "custom"; + + public static const FAMILY_THEME_ID:String = "family"; + + public static const LIL_PEEPZ_THEME_ID:String = "action"; + + public static const LIL_PETZ_THEME_ID:String = "animal"; + + public static const TOON_ADVENTURE_THEME_ID:String = "toonadv"; + + public static const CHIBI_THEME_ID:String = "chibi"; + + public static const SPACE_THEME_ID:String = "space"; + + public static const VIETNAM_THEME_ID:String = "vietnam"; + + public static const NINJA_THEME_ID:String = "ninja"; + + public static const BUSINESS_THEME_ID:String = "business"; + + public static const STICKLY_BIZ_THEME_ID:String = "sticklybiz"; + + public static const BIZ_MODEL_THEME_ID:String = "bizmodels"; + + public static const ANIME_THEME_ID:String = "anime"; + + public static const NINJAANIME_THEME_ID:String = "ninjaanime"; + + public static const SPACE_CITIZEN_THEME_ID:String = "spacecitizen"; + + public static const BOTDF_THEME_ID:String = "botdf"; + + public static const COMMON_CRAFT_THEME_ID:String = "commoncraft"; + + public static const WHITEBOARD_THEME_ID:String = "whiteboard"; + + public static const INFOGRAPHICS_THEME_ID:String = "infographics"; + + public static const THEME_GROUP_CC1:String = "family"; + + public static const THEME_GROUP_CC2:String = "cc2"; + + + public function ThemeConstants() + { + super(); + } + + public static function isThumbCategorySupported(param1:String) : Boolean + { + switch(param1) + { + case BUSINESS_THEME_ID: + case WHITEBOARD_THEME_ID: + case INFOGRAPHICS_THEME_ID: + return true; + default: + return false; + } + } + } +} diff --git a/scripts/anifire/core/CCLipSyncController.as b/scripts/anifire/core/CCLipSyncController.as new file mode 100644 index 0000000..253f5f3 --- /dev/null +++ b/scripts/anifire/core/CCLipSyncController.as @@ -0,0 +1,274 @@ +package anifire.core +{ + import anifire.component.CcActionLoader; + import anifire.event.SpeechPitchEvent; + import anifire.interfaces.ISpeak; + import anifire.models.creator.CCCharacterActionModel; + import anifire.util.UtilHashArray; + import flash.events.IEventDispatcher; + + public class CCLipSyncController + { + + public static var LIPSYNC_FILE:String = "talk_sync.swf"; + + public static var DEMO_LIPSYNC_FILE:String = "talk.swf"; + + public static var LIPSYNC_LIB_ID:String = "lipsync.swf"; + + public static var DEMO_LIPSYNC_LIB_ID:String = "demolipsync.swf"; + + private static var _instance:CCLipSyncController; + + + private var _speechSource:IEventDispatcher; + + private var _speakingCharacter:ISpeak; + + public function CCLipSyncController() + { + super(); + } + + public static function getInstance() : CCLipSyncController + { + if(!_instance) + { + _instance = new CCLipSyncController(); + } + return _instance; + } + + public static function getLipSyncComponentItems(param1:XML, param2:String, param3:Number = 1) : UtilHashArray + { + var _loc5_:String = null; + var _loc6_:String = null; + var _loc4_:UtilHashArray = new UtilHashArray(); + _loc5_ = getLipSyncMouthUrl(param1,param2,param3); + _loc6_ = param1.@theme_id + "." + param1.@type + "." + CCLipSyncController.LIPSYNC_LIB_ID; + _loc4_.push(_loc5_,_loc6_); + _loc5_ = getDemoLipSyncMouthUrl(param1,param2,param3); + _loc6_ = param1.@theme_id + "." + param1.@type + "." + CCLipSyncController.DEMO_LIPSYNC_LIB_ID; + _loc4_.push(_loc5_,_loc6_); + return _loc4_; + } + + public static function getLipSyncComponentItemsByCam(param1:CCCharacterActionModel, param2:String, param3:String, param4:Number = 1) : Object + { + var _loc6_:String = null; + var _loc7_:String = null; + var _loc5_:Object = {}; + _loc6_ = getLipSyncMouthUrlByCam(param1,param2,param3,param4); + _loc7_ = param1.themeId + "." + param2 + "." + CCLipSyncController.LIPSYNC_LIB_ID; + _loc5_[_loc6_] = _loc7_; + _loc6_ = getDemoLipSyncMouthUrlByCam(param1,param2,param3,param4); + _loc7_ = param1.themeId + "." + param2 + "." + CCLipSyncController.DEMO_LIPSYNC_LIB_ID; + _loc5_[_loc6_] = _loc7_; + return _loc5_; + } + + public static function getFileName(param1:Boolean, param2:String, param3:String, param4:String, param5:String, param6:String = "", param7:Number = 1) : String + { + var _loc9_:String = null; + var _loc10_:String = null; + var _loc8_:* = ""; + if(param2.indexOf("_") > -1) + { + _loc10_ = String(param2).split("_")[0]; + if(_loc10_ != "talk" && (_loc10_ == "front" || _loc10_ == "side")) + { + _loc8_ = _loc10_ + "_"; + } + } + if(param1) + { + if(param7 == 3) + { + _loc9_ = getTalkMouthFileName(param6,param5,_loc8_); + } + else + { + _loc9_ = getTalkMouthFileName(param2,param5,_loc8_); + } + } + else if(param7 == 3) + { + _loc9_ = getLipSyncTalkMouthFileName(param6,param5,_loc8_); + } + else + { + _loc9_ = getLipSyncTalkMouthFileName(param2,param5,_loc8_); + } + return _loc9_; + } + + public static function getLipSyncMouthUrl(param1:XML, param2:String = "", param3:Number = 1) : String + { + var _loc4_:String = null; + var _loc5_:String = param1.@theme_id; + var _loc6_:String = ""; + _loc4_ = _loc5_ + (param3 == 3?"/charparts":"") + "/" + param1.@type + "/" + param1.@path + "/" + getFileName(false,param1.@file,param1.@type,param1.@path,_loc5_,param2,param3); + return CcActionLoader.getStoreUrl(_loc4_,param1.@theme_id,param3); + } + + public static function getDemoLipSyncMouthUrl(param1:XML, param2:String = "", param3:Number = 1) : String + { + var _loc4_:String = null; + var _loc5_:String = param1.@theme_id; + var _loc6_:String = ""; + _loc4_ = _loc5_ + (param3 == 3?"/charparts":"") + "/" + param1.@type + "/" + param1.@path + "/" + getFileName(true,param1.@file,param1.@type,param1.@path,_loc5_,param2,param3); + return CcActionLoader.getStoreUrl(_loc4_,param1.@theme_id,param3); + } + + public static function getLipSyncMouthUrlByCam(param1:CCCharacterActionModel, param2:String, param3:String = "", param4:Number = 1) : String + { + var _loc5_:String = null; + var _loc6_:String = param1.themeId; + var _loc7_:String = ""; + var _loc8_:String = param1.getComponentByType(param2).path; + var _loc9_:Array = _loc8_.split("/"); + _loc5_ = _loc9_[0] + (param4 == 3?"/charparts":"") + "/" + _loc9_[1] + "/" + _loc9_[2] + "/" + getFileName(false,_loc9_[3],_loc9_[1],_loc9_[2],_loc6_,param3,param4); + return CcActionLoader.getStoreUrl(_loc5_,_loc6_,param4); + } + + public static function getDemoLipSyncMouthUrlByCam(param1:CCCharacterActionModel, param2:String, param3:String = "", param4:Number = 1) : String + { + var _loc5_:String = null; + var _loc6_:String = param1.themeId; + var _loc7_:String = ""; + var _loc8_:String = param1.getComponentByType(param2).path; + var _loc9_:Array = _loc8_.split("/"); + _loc5_ = _loc9_[0] + (param4 == 3?"/charparts":"") + "/" + _loc9_[1] + "/" + _loc9_[2] + "/" + getFileName(true,_loc9_[3],_loc9_[1],_loc9_[2],_loc6_,param3,param4); + return CcActionLoader.getStoreUrl(_loc5_,_loc6_,param4); + } + + private static function getTalkMouthFileName(param1:String, param2:String, param3:String = "") : String + { + var _loc4_:String = null; + if(param2 == "family") + { + if(param1.indexOf("talk") >= 0) + { + return param3 + param1; + } + switch(param1) + { + case "talk_happy.swf": + case "happy.swf": + case "laugh.swf": + case "surprised.swf": + case "chewing.swf": + case "schemeing.swf": + return param3 + "talk_happy.swf"; + case "talk_sad.swf": + case "talk_cry.swf": + case "sad.swf": + case "cry.swf": + case "shock.swf": + case "sick.swf": + return param3 + "talk_sad.swf"; + case "talk_angry.swf": + case "angry.swf": + case "taunt.swf": + return param3 + "talk_angry.swf"; + default: + return param3 + "talk.swf"; + } + } + else + { + if(param2 == "politics2") + { + _loc4_ = "talk.swf"; + if(param1.indexOf("happy") > -1) + { + _loc4_ = "talk_happy.swf"; + } + else if(param1.indexOf("sad") > -1 || param1.indexOf("angry") > -1 || param1.indexOf("cry") > -1 || param1.indexOf("head_rolleye") > -1) + { + _loc4_ = "talk_sad.swf"; + } + return param3 + _loc4_; + } + return param3 + "talk.swf"; + } + } + + private static function getLipSyncTalkMouthFileName(param1:String, param2:String, param3:String = "") : String + { + var _loc4_:String = null; + if(param2 == "family") + { + switch(param1) + { + case "talk_happy.swf": + case "happy.swf": + case "laugh.swf": + case "surprised.swf": + case "chewing.swf": + case "schemeing.swf": + return param3 + "talk_happy_sync.swf"; + case "talk_sad.swf": + case "talk_cry.swf": + case "sad.swf": + case "cry.swf": + case "shock.swf": + case "sick.swf": + return param3 + "talk_sad_sync.swf"; + case "talk_angry.swf": + case "angry.swf": + case "taunt.swf": + return param3 + "talk_angry_sync.swf"; + default: + return param3 + "talk_sync.swf"; + } + } + else + { + if(param2 == "politics2") + { + _loc4_ = "talk_sync.swf"; + if(param1.indexOf("happy") > -1) + { + _loc4_ = "talk_happy_sync.swf"; + } + else if(param1.indexOf("sad") > -1 || param1.indexOf("angry") > -1 || param1.indexOf("cry") > -1 || param1.indexOf("head_rolleye") > -1) + { + _loc4_ = "talk_sad_sync.swf"; + } + return param3 + _loc4_; + } + return param3 + "talk_sync.swf"; + } + } + + public function set speechSource(param1:IEventDispatcher) : void + { + if(param1 && param1 != this._speechSource) + { + if(this._speechSource) + { + this._speechSource.removeEventListener(SpeechPitchEvent.PITCH,this.onSpeechCome); + } + param1.addEventListener(SpeechPitchEvent.PITCH,this.onSpeechCome); + this._speechSource = param1; + } + } + + public function set speakingCharacter(param1:ISpeak) : void + { + if(param1 != this._speakingCharacter) + { + this._speakingCharacter = param1; + } + } + + private function onSpeechCome(param1:SpeechPitchEvent) : void + { + if(this._speakingCharacter) + { + this._speakingCharacter.speak(param1.value); + } + } + } +} diff --git a/scripts/anifire/core/CCManager.as b/scripts/anifire/core/CCManager.as new file mode 100644 index 0000000..e52460e --- /dev/null +++ b/scripts/anifire/core/CCManager.as @@ -0,0 +1,288 @@ +package anifire.core +{ + import anifire.color.SelectedColor; + import anifire.constant.AnimeConstants; + import anifire.event.ByteLoaderEvent; + import anifire.util.UtilHashArray; + import anifire.util.UtilHashSelectedColor; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.display.LoaderInfo; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.geom.ColorTransform; + import flash.utils.ByteArray; + + public class CCManager extends EventDispatcher + { + + + private var _styleCollection:UtilHashArray; + + private var _cacheCollection:UtilHashArray; + + private var _styleName:Array; + + private var _partName:Array; + + private var _colors:UtilHashSelectedColor; + + private var _leftHandCache:Class; + + private var _rightHandCache:Class; + + private var _propHandStyle:String; + + private var _skinLoadingCount:Number; + + public function CCManager() + { + super(); + this._styleCollection = new UtilHashArray(); + this._cacheCollection = new UtilHashArray(); + this._styleName = []; + this._partName = []; + this._colors = new UtilHashSelectedColor(); + this._propHandStyle = ""; + } + + public function get skinLoadingCount() : Number + { + return this._skinLoadingCount; + } + + public function addSkinLoadingCount() : void + { + this._skinLoadingCount++; + } + + public function delSkinLoadingCount() : void + { + this._skinLoadingCount--; + } + + public function get colors() : UtilHashSelectedColor + { + return this._colors; + } + + public function set colors(param1:UtilHashSelectedColor) : void + { + this._colors = param1; + } + + public function addColor(param1:String, param2:SelectedColor) : void + { + this._colors.push(param1,param2); + } + + public function deleteColor(param1:String) : void + { + this._colors.removeByKey(param1); + } + + public function init() : void + { + } + + private function get leftHandCache() : Class + { + return this._leftHandCache; + } + + private function get rightHandCache() : Class + { + return this._rightHandCache; + } + + private function onLoadStyleDone(param1:Event) : void + { + } + + public function getColorByName(param1:String) : uint + { + var _loc2_:SelectedColor = this._colors.getValueByKey(param1); + if(_loc2_ != null) + { + return _loc2_.dstColor; + } + return uint.MAX_VALUE; + } + + private function doPrepareFinished(param1:Event) : void + { + this.dispatchEvent(new Event(Event.COMPLETE)); + } + + public function addStyle(param1:String, param2:LoaderInfo) : void + { + this._styleCollection.push(param1,param2); + } + + public function removeStyle(param1:String) : void + { + this._styleCollection.removeByKey(param1); + } + + public function loadPropThumbAsStyle(param1:Object, param2:String) : void + { + var _loc3_:Loader = null; + this._propHandStyle = param2; + if(param1) + { + _loc3_ = new Loader(); + if(param1 is ByteArray) + { + _loc3_.loadBytes(param1 as ByteArray); + } + else + { + _loc3_.loadBytes(param1["figure"] as ByteArray); + } + _loc3_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadPropThumbDone); + } + } + + private function onLoadPropThumbDone(param1:Event) : void + { + var _loc2_:LoaderInfo = LoaderInfo(param1.currentTarget); + this._styleCollection.push(AnimeConstants.CLASS_GOPROP,_loc2_); + this.dispatchEvent(new ByteLoaderEvent(ByteLoaderEvent.LOAD_BYTES_COMPLETE)); + } + + public function updatePropInfo(param1:LoaderInfo, param2:String) : void + { + this._propHandStyle = param2; + this._styleCollection.push(AnimeConstants.CLASS_GOPROP,param1); + this.dispatchEvent(new ByteLoaderEvent(ByteLoaderEvent.LOAD_BYTES_COMPLETE)); + } + + private function haveProp() : Boolean + { + if(this._styleCollection.getValueByKey(AnimeConstants.CLASS_GOPROP) != null) + { + return true; + } + return false; + } + + private function isOneOfHandClass(param1:String) : Boolean + { + return param1.indexOf(AnimeConstants.HAND) > 0; + } + + private function isOneOfRightHandClass(param1:String) : Boolean + { + return param1.indexOf(AnimeConstants.RIGHT) > 0 && this.isOneOfHandClass(param1); + } + + private function cacheExist(param1:String) : Boolean + { + return this._cacheCollection.containsKey(param1); + } + + private function getClassReferenceBySkinName(param1:String, param2:LoaderInfo = null, param3:Boolean = false) : Class + { + var _loc4_:Class = null; + if(param3 || !this.cacheExist(param1)) + { + if(param2.applicationDomain.hasDefinition(param1)) + { + _loc4_ = param2.applicationDomain.getDefinition(param1) as Class; + this._cacheCollection.push(param1,_loc4_); + } + return _loc4_; + } + return this._cacheCollection.getValueByKey(param1) as Class; + } + + public function getSkin(param1:String, param2:String, param3:Boolean = false) : DisplayObjectContainer + { + var _loc5_:DisplayObjectContainer = null; + var _loc6_:Class = null; + var _loc7_:Class = null; + var _loc4_:LoaderInfo = this._styleCollection.getValueByKey(!!this.isOneOfHandClass(param2)?AnimeConstants.CLASS_GOHAND:param2) as LoaderInfo; + if(_loc4_) + { + if(this.haveProp() && this.isOneOfRightHandClass(param2)) + { + param1 = AnimeConstants.ASSET_TYPE_PROP + this._propHandStyle + param1; + } + if(this.cacheExist(param1) || _loc4_.applicationDomain.hasDefinition(param1)) + { + _loc6_ = this.getClassReferenceBySkinName(param1,_loc4_,param3); + if(_loc6_) + { + if(param2 == AnimeConstants.CLASS_GOLEFTLOWERHAND) + { + this._leftHandCache = _loc6_; + } + if(param2 == AnimeConstants.CLASS_GORIGHTLOWERHAND) + { + this._rightHandCache = _loc6_; + } + _loc5_ = new _loc6_() as DisplayObjectContainer; + } + } + else + { + if(param2 == AnimeConstants.CLASS_GOLEFTLOWERHAND) + { + _loc7_ = this._leftHandCache; + } + if(param2 == AnimeConstants.CLASS_GORIGHTLOWERHAND) + { + _loc7_ = this._rightHandCache; + } + if(_loc7_) + { + _loc5_ = new _loc7_() as DisplayObjectContainer; + } + } + if(_loc5_) + { + this.changeSkinColor(_loc5_); + return _loc5_; + } + } + return null; + } + + protected function changeSkinColor(param1:DisplayObjectContainer) : void + { + var _loc4_:DisplayObject = null; + var _loc5_:String = null; + var _loc6_:String = null; + var _loc7_:uint = 0; + var _loc8_:ColorTransform = null; + var _loc2_:int = param1.numChildren; + var _loc3_:int = 0; + while(_loc3_ < _loc2_) + { + _loc4_ = param1.getChildAt(_loc3_); + _loc5_ = _loc4_.name; + if(_loc5_ && _loc5_.indexOf("theColor_") != -1) + { + _loc6_ = _loc5_.substr(9); + _loc7_ = this.getColorByName(_loc6_); + if(_loc7_ != uint.MAX_VALUE) + { + _loc8_ = new ColorTransform(); + _loc8_.color = _loc7_; + _loc4_.transform.colorTransform = _loc8_; + } + } + if(_loc4_ is DisplayObjectContainer) + { + this.changeSkinColor(_loc4_ as DisplayObjectContainer); + } + _loc3_++; + } + } + + public function destroy() : void + { + } + } +} diff --git a/scripts/anifire/core/GoBaseWorker.as b/scripts/anifire/core/GoBaseWorker.as new file mode 100644 index 0000000..e05949b --- /dev/null +++ b/scripts/anifire/core/GoBaseWorker.as @@ -0,0 +1,24 @@ +package anifire.core +{ + import flash.display.DisplayObjectContainer; + import flash.display.Sprite; + import flash.events.Event; + + public class GoBaseWorker extends Sprite + { + + + public function GoBaseWorker() + { + super(); + } + + public function initSkin(param1:DisplayObjectContainer = null, param2:Boolean = false) : void + { + } + + private function refreshSkin(param1:Event = null) : void + { + } + } +} diff --git a/scripts/anifire/core/GoBaseWorkerImp.as b/scripts/anifire/core/GoBaseWorkerImp.as new file mode 100644 index 0000000..e41ffba --- /dev/null +++ b/scripts/anifire/core/GoBaseWorkerImp.as @@ -0,0 +1,122 @@ +package anifire.core +{ + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.event.LoadEmbedMovieEvent; + import anifire.interfaces.ICharacter; + import anifire.util.UtilPlain; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.utils.getQualifiedClassName; + import flash.utils.getQualifiedSuperclassName; + import flash.utils.setTimeout; + + public class GoBaseWorkerImp extends GoBaseWorker + { + + + private var _myDisplayObject:DisplayObjectContainer; + + private var _count:Number = 0; + + public function GoBaseWorkerImp() + { + super(); + } + + override public function initSkin(param1:DisplayObjectContainer = null, param2:Boolean = false) : void + { + var _loc6_:Loader = null; + var _loc7_:DisplayObject = null; + var _loc8_:Array = null; + var _loc9_:int = 0; + var _loc10_:DisplayObjectContainer = null; + var _loc11_:DisplayObjectContainer = null; + var _loc12_:DisplayObject = null; + if(this._myDisplayObject == null) + { + this._myDisplayObject = param1; + } + if(param1 == null && this._myDisplayObject != null) + { + param1 = this._myDisplayObject; + } + var _loc3_:String = getQualifiedClassName(param1); + var _loc4_:String = getQualifiedSuperclassName(param1); + var _loc5_:Number = _loc4_.lastIndexOf(":"); + _loc4_ = _loc4_.substr(_loc5_ + 1); + if(param1.loaderInfo != null) + { + _loc6_ = Loader(param1.loaderInfo.loader); + if(_loc6_ != null) + { + _loc7_ = _loc6_.parent; + if(_loc7_ != null && _loc7_ is ICharacter) + { + while(param1.numChildren > 0) + { + param1.removeChildAt(0); + } + if(this.needToUseCacheBitmap(_loc3_) && !param1.cacheAsBitmap) + { + param1.cacheAsBitmap = true; + } + _loc8_ = new Array(_loc3_,"default"); + _loc9_ = 0; + while(_loc9_ < _loc8_.length) + { + _loc10_ = ICharacter(_loc7_).CCM.getSkin(_loc8_[_loc9_],_loc4_,param2); + if(_loc10_ != null) + { + ICharacter(_loc7_).CCM.addSkinLoadingCount(); + if(CcLibConstant.HEAD_RELATED_LIBRARY.indexOf(_loc4_) > -1) + { + _loc11_ = UtilPlain.getInstance(param1.root as DisplayObjectContainer,AnimeConstants.MOVIECLIP_THE_HEAD); + _loc12_ = _loc11_.getChildAt(0); + if(_loc12_) + { + _loc10_.scaleX = _loc10_.scaleY = _loc12_.scaleX; + } + } + param1.addChild(_loc10_ as DisplayObject); + break; + } + _loc9_++; + } + ICharacter(_loc7_).eventDispatcher.removeEventListener(LoadEmbedMovieEvent.RELOAD_MOVIE_EVENT,this.refreshSkin); + ICharacter(_loc7_).eventDispatcher.addEventListener(LoadEmbedMovieEvent.RELOAD_MOVIE_EVENT,this.refreshSkin); + } + else if(this._count < 5) + { + setTimeout(this.refreshSkin,200); + } + } + } + } + + private function needToUseCacheBitmap(param1:String) : Boolean + { + if(param1 == "body") + { + return true; + } + return false; + } + + private function refreshSkin(param1:Event = null) : void + { + if(param1 != null) + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.refreshSkin); + } + else + { + this._count++; + } + this.initSkin(null,true); + } + } +} diff --git a/scripts/anifire/creator/components/ArrowTipContainer.as b/scripts/anifire/creator/components/ArrowTipContainer.as new file mode 100644 index 0000000..7bb6ead --- /dev/null +++ b/scripts/anifire/creator/components/ArrowTipContainer.as @@ -0,0 +1,167 @@ +package anifire.creator.components +{ + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import spark.components.Group; + import spark.components.supportClasses.SkinnableComponent; + + use namespace mx_internal; + + public class ArrowTipContainer extends SkinnableComponent + { + + + [SkinPart(required="true")] + public var contentGroup:Group; + + protected var contentMXML:Array; + + private var _1019779949offset:Number = 0; + + private var _2092294475targetWidth:Number = 40; + + protected var _tipPosition:String = "above"; + + public function ArrowTipContainer() + { + super(); + } + + [Bindable(event="propertyChange")] + public function get tipPosition() : String + { + return this._tipPosition; + } + + private function set _1205996828tipPosition(param1:String) : void + { + if(this._tipPosition != param1) + { + this._tipPosition = param1; + invalidateSkinState(); + } + } + + [Bindable(event="propertyChange")] + public function get content() : Array + { + if(this.contentGroup) + { + return this.contentGroup.getMXMLContent(); + } + return this.contentMXML; + } + + private function set _951530617content(param1:Array) : void + { + if(this.contentGroup) + { + this.contentGroup.mxmlContent = param1; + } + else + { + this.contentMXML = param1; + } + } + + override protected function getCurrentSkinState() : String + { + switch(this.tipPosition) + { + case "below": + return "below"; + case "belowRight": + return "belowRight"; + case "aboveRight": + return "aboveRight"; + case "above": + default: + return "above"; + } + } + + override protected function partAdded(param1:String, param2:Object) : void + { + super.partAdded(param1,param2); + if(param2 == this.contentGroup) + { + this.contentGroup.mxmlContent = this.contentMXML; + this.contentMXML = null; + } + } + + override protected function partRemoved(param1:String, param2:Object) : void + { + super.partRemoved(param1,param2); + if(param2 == this.contentGroup) + { + this.contentMXML = this.contentGroup.getMXMLContent(); + this.contentGroup.mxmlContent = null; + } + } + + [Bindable(event="propertyChange")] + public function get offset() : Number + { + return this._1019779949offset; + } + + public function set offset(param1:Number) : void + { + var _loc2_:Object = this._1019779949offset; + if(_loc2_ !== param1) + { + this._1019779949offset = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"offset",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get targetWidth() : Number + { + return this._2092294475targetWidth; + } + + public function set targetWidth(param1:Number) : void + { + var _loc2_:Object = this._2092294475targetWidth; + if(_loc2_ !== param1) + { + this._2092294475targetWidth = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"targetWidth",_loc2_,param1)); + } + } + } + + public function set tipPosition(param1:String) : void + { + var _loc2_:Object = this.tipPosition; + if(_loc2_ !== param1) + { + this._1205996828tipPosition = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"tipPosition",_loc2_,param1)); + } + } + } + + public function set content(param1:Array) : void + { + var _loc2_:Object = this.content; + if(_loc2_ !== param1) + { + this._951530617content = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"content",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/BodyShapeChooser.as b/scripts/anifire/creator/components/BodyShapeChooser.as new file mode 100644 index 0000000..3278dbe --- /dev/null +++ b/scripts/anifire/creator/components/BodyShapeChooser.as @@ -0,0 +1,197 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.creator.events.CcBodyShapeChooserEvent; + import anifire.creator.models.CcBodyShape; + import anifire.creator.models.CcTheme; + import anifire.managers.AppConfigManager; + import flash.events.Event; + import flash.events.MouseEvent; + import mx.containers.HBox; + import mx.containers.VBox; + import mx.controls.Button; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.events.PropertyChangeEvent; + + public class BodyShapeChooser extends VBox + { + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + + private var _207474244bodyShapeBtnContainer:HBox; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _ccTheme:CcTheme; + + private var _defaultShape:String; + + public function BodyShapeChooser() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":VBox, + "stylesFactory":function():void + { + this.verticalAlign = "middle"; + this.horizontalAlign = "center"; + }, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":HBox, + "id":"bodyShapeBtnContainer", + "stylesFactory":function():void + { + this.verticalAlign = "middle"; + this.horizontalAlign = "center"; + } + })]}; + } + }); + super(); + mx_internal::_document = this; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.verticalAlign = "middle"; + this.horizontalAlign = "center"; + }; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + private function get ccTheme() : CcTheme + { + return this._ccTheme; + } + + public function init(param1:CcTheme, param2:int, param3:Boolean = false) : void + { + var _loc4_:String = null; + var _loc5_:int = 0; + var _loc6_:CcBodyShape = null; + var _loc7_:Button = null; + this._ccTheme = param1; + if(CcLibConstant.CHOOSE_TAG_TYPE_SEX) + { + if(param3) + { + if(!_configManager.getValue("ft")) + { + _loc4_ = "_sticky_filter_guy"; + _configManager.setValue("ft",_loc4_); + } + if(_configManager.getValue(ServerConstants.PARAM_BODYSHAPE)) + { + callLater(this.tellEveryoneBodyShape_choosen,[_configManager.getValue(ServerConstants.PARAM_BODYSHAPE)]); + } + else + { + callLater(this.tellEveryoneBodyShape_choosen,["default"]); + } + } + return; + } + if(param3) + { + if(param1.getBodyShapeNum() == 1) + { + callLater(this.tellEveryoneBodyShape_choosen,[param1.getBodyShapeByIndex(0).id]); + return; + } + _loc5_ = 0; + _loc5_ = 0; + while(_loc5_ < param1.getBodyShapeNum()) + { + _loc6_ = param1.getBodyShapeByIndex(_loc5_); + _loc7_ = new Button(); + _loc7_.styleName = "btnBodyShape" + _loc6_.id; + _loc7_.buttonMode = true; + _loc7_.id = _loc6_.id; + _loc7_.addEventListener(MouseEvent.CLICK,this.onButtonClick); + this.bodyShapeBtnContainer.addChild(_loc7_); + _loc5_++; + } + if(_configManager.getValue(ServerConstants.PARAM_BODYSHAPE)) + { + callLater(this.tellEveryoneBodyShape_choosen,[_configManager.getValue(ServerConstants.PARAM_BODYSHAPE)]); + return; + } + callLater(this.tellEveryoneBodyShape_choosen,[param1.getBodyShapeByIndex(0).id]); + } + } + + private function onDefaultButtonClick(param1:Event) : void + { + var _loc2_:Button = param1.target as Button; + var _loc3_:String = _loc2_.id; + _configManager.setValue("ft",_loc3_); + this.tellEveryoneBodyShape_choosen("default"); + } + + private function onKidButtonClick(param1:Event) : void + { + var _loc2_:Button = param1.target as Button; + var _loc3_:String = _loc2_.id; + _configManager.setValue("ft",_loc3_); + this.tellEveryoneBodyShape_choosen("kid"); + } + + private function onButtonClick(param1:Event) : void + { + var _loc2_:Button = param1.target as Button; + var _loc3_:String = _loc2_.id; + this.tellEveryoneBodyShape_choosen(_loc3_); + } + + private function tellEveryoneBodyShape_choosen(param1:String) : void + { + var _loc2_:CcBodyShape = this.ccTheme.getBodyShapeByShapeId(param1); + var _loc3_:CcBodyShapeChooserEvent = new CcBodyShapeChooserEvent(CcBodyShapeChooserEvent.BODY_SHAPE_CHOSEN,this); + _loc3_.bodyShapeChosen = _loc2_; + this.dispatchEvent(_loc3_); + } + + [Bindable(event="propertyChange")] + public function get bodyShapeBtnContainer() : HBox + { + return this._207474244bodyShapeBtnContainer; + } + + public function set bodyShapeBtnContainer(param1:HBox) : void + { + var _loc2_:Object = this._207474244bodyShapeBtnContainer; + if(_loc2_ !== param1) + { + this._207474244bodyShapeBtnContainer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bodyShapeBtnContainer",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/BodyShapeMegaChooser.as b/scripts/anifire/creator/components/BodyShapeMegaChooser.as new file mode 100644 index 0000000..6e4e7dc --- /dev/null +++ b/scripts/anifire/creator/components/BodyShapeMegaChooser.as @@ -0,0 +1,782 @@ +package anifire.creator.components +{ + import anifire.component.CCThumb; + import anifire.creator.core.CcConsole; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.events.CcPreMadeCharChooserEvent; + import anifire.creator.events.CcTemplateChooserEvent; + import anifire.creator.models.CcCharacter; + import anifire.util.UtilDict; + import anifire.util.UtilPager; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayCollection; + import mx.containers.Canvas; + import mx.containers.HBox; + import mx.containers.ViewStack; + import mx.controls.Button; + import mx.controls.TabBar; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.core.mx_internal; + import mx.effects.Move; + import mx.events.FlexEvent; + import mx.events.ItemClickEvent; + import mx.events.PropertyChangeEvent; + import mx.states.SetProperty; + import mx.states.State; + + use namespace mx_internal; + + public class BodyShapeMegaChooser extends Canvas implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _BodyShapeMegaChooser_HBox1:HBox; + + public var _BodyShapeMegaChooser_SetProperty1:SetProperty; + + private var _909839514_ce_bodyShapeChooser:BodyShapeChooser; + + private var _416853558btnModify:Button; + + private var _704377921charPreviewer:CharPreviewer; + + private var _3478mc:Canvas; + + private var _3497mv:Move; + + private var _832627083previewer:Canvas; + + private var _1395395193templateSelector:TemplateCCSelector; + + private var _1981727545templates:LatestTemplates; + + private var _1139886477topTabs:TabBar; + + private var _3773vs:ViewStack; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _1455447984_selectedCCChar:CcCharacter = null; + + private var _pager:UtilPager = null; + + private var _753188901TAB_DATAPROVIDER:ArrayCollection; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function BodyShapeMegaChooser() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":Canvas, + "propertiesFactory":function():Object + { + return { + "percentWidth":100, + "x":0, + "y":5, + "verticalScrollPolicy":"off", + "childDescriptors":[new UIComponentDescriptor({ + "type":TabBar, + "id":"topTabs", + "stylesFactory":function():void + { + this.firstTabStyleName = "topButtonTabFirst"; + this.tabStyleName = "topButtonTab"; + this.horizontalGap = 2; + }, + "propertiesFactory":function():Object + { + return {"buttonMode":true}; + } + })] + }; + } + }),new UIComponentDescriptor({ + "type":ViewStack, + "id":"vs", + "propertiesFactory":function():Object + { + return { + "percentWidth":100, + "percentHeight":100, + "childDescriptors":[new UIComponentDescriptor({ + "type":Canvas, + "propertiesFactory":function():Object + { + return { + "horizontalScrollPolicy":"off", + "verticalScrollPolicy":"off", + "childDescriptors":[new UIComponentDescriptor({ + "type":BodyShapeChooser, + "id":"_ce_bodyShapeChooser", + "propertiesFactory":function():Object + { + return { + "x":0, + "y":38, + "percentWidth":100, + "height":235 + }; + } + }),new UIComponentDescriptor({ + "type":Canvas, + "id":"mc", + "propertiesFactory":function():Object + { + return { + "x":3, + "height":218, + "childDescriptors":[new UIComponentDescriptor({ + "type":LatestTemplates, + "id":"templates", + "propertiesFactory":function():Object + { + return { + "percentWidth":100, + "verticalCenter":-20 + }; + } + })] + }; + } + })] + }; + } + }),new UIComponentDescriptor({ + "type":Canvas, + "id":"previewer", + "propertiesFactory":function():Object + { + return { + "horizontalScrollPolicy":"off", + "verticalScrollPolicy":"off", + "childDescriptors":[new UIComponentDescriptor({ + "type":CharPreviewer, + "id":"charPreviewer", + "propertiesFactory":function():Object + { + return { + "x":-20, + "y":65, + "width":428, + "height":329 + }; + } + }),new UIComponentDescriptor({ + "type":TemplateCCSelector, + "id":"templateSelector", + "propertiesFactory":function():Object + { + return { + "x":450, + "y":55 + }; + } + }),new UIComponentDescriptor({ + "type":HBox, + "id":"_BodyShapeMegaChooser_HBox1", + "stylesFactory":function():void + { + this.verticalAlign = "middle"; + this.horizontalGap = 25; + }, + "propertiesFactory":function():Object + { + return { + "y":450, + "horizontalCenter":-280, + "childDescriptors":[new UIComponentDescriptor({ + "type":Button, + "id":"btnModify", + "events":{"click":"__btnModify_click"}, + "propertiesFactory":function():Object + { + return { + "styleName":"templateCCBtnModify", + "buttonMode":true + }; + } + })] + }; + } + })] + }; + } + })] + }; + } + })]}; + } + }); + this._753188901TAB_DATAPROVIDER = new ArrayCollection([{ + "label":UtilDict.toDisplay("cc","Create Your Own Characters"), + "data":{"state":""} + },{ + "label":UtilDict.toDisplay("cc","Specialties"), + "data":{"state":"preview_professions"} + },{ + "label":UtilDict.toDisplay("cc","Celebrities"), + "data":{"state":"preview_celebrities"} + }]); + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._BodyShapeMegaChooser_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_BodyShapeMegaChooserWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return BodyShapeMegaChooser[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.horizontalScrollPolicy = "off"; + this.verticalScrollPolicy = "off"; + this.styleName = "bgTemplateMain"; + this.states = [this._BodyShapeMegaChooser_State1_c(),this._BodyShapeMegaChooser_State2_c(),this._BodyShapeMegaChooser_State3_c()]; + this._BodyShapeMegaChooser_Move1_i(); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + BodyShapeMegaChooser._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function sliceTabProvider() : void + { + while(this.TAB_DATAPROVIDER.length > 1) + { + this.TAB_DATAPROVIDER.removeItemAt(1); + } + } + + public function get bodyShapeChooser() : BodyShapeChooser + { + return this._ce_bodyShapeChooser; + } + + private function normalizeCategory(param1:String) : String + { + return param1 == ""?"celebrities":param1; + } + + private function initPagerByCategory(param1:String) : void + { + var cat:String = param1; + this._pager = new UtilPager(); + var console:CcConsole = CcConsole.getCcConsole(); + var filteredData:Array = console.getTemplateCCPreMadeChars().filter(function(param1:CcCharacter, param2:int, param3:Array):Boolean + { + return cat == param1.category || cat == "celebrities" && param1.category == ""; + }); + filteredData.sortOn("createDateTime",Array.DESCENDING); + this._pager.data = filteredData; + this._pager.windowSize = 9; + this.templateSelector.pager = this._pager; + this.templateSelector.category = cat; + } + + public function init() : void + { + var _self:BodyShapeMegaChooser = null; + var _numCCTotal:int = 0; + var _numCC:int = 0; + var _destroyHandler:Boolean = false; + var _handlerEach:Function = null; + var _handler:Function = null; + _self = this; + _numCCTotal = 9999; + _numCC = 0; + _destroyHandler = false; + _handlerEach = function(param1:CcCoreEvent):void + { + var _loc2_:Object = param1.getData(); + if(_loc2_.tag != "latest") + { + return; + } + templates.addThumbnail(_loc2_.thumbnail as CCThumb,_loc2_.char as CcCharacter); + if(++_numCC == _numCCTotal) + { + CcConsole.getCcConsole().removeEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,_handlerEach); + _destroyHandler = true; + } + }; + _handler = function(param1:CcCoreEvent):void + { + var _loc2_:Object = param1.getData(); + if(_loc2_.tag != "latest") + { + return; + } + _numCCTotal = int(_loc2_.total); + if(_numCC == _numCCTotal && !_destroyHandler) + { + CcConsole.getCcConsole().removeEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,_handlerEach); + } + CcConsole.getCcConsole().removeEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_ALL_COMPLETE,_handler); + mv.play(); + }; + CcConsole.getCcConsole().addEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,_handlerEach); + CcConsole.getCcConsole().addEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_ALL_COMPLETE,_handler); + addEventListener(CcTemplateChooserEvent.USER_WANT_TO_PREVIEW,function(param1:CcTemplateChooserEvent):void + { + var _loc2_:CcCharacter = param1.getData() as CcCharacter; + var _loc3_:String = normalizeCategory(_loc2_.category); + if(_pager == null || normalizeCategory(templateSelector.category) != _loc3_) + { + initPagerByCategory(_loc3_); + } + _pager.scrollToItem(_loc2_); + if(_selectedCCChar == null || (param1.getData() as CcCharacter).assetId != _selectedCCChar.assetId) + { + _selectedCCChar = param1.getData() as CcCharacter; + charPreviewer.initByCcChar(_selectedCCChar,_selectedCCChar.thumbnailActionId); + } + templateSelector.dispatchEvent(new CcTemplateChooserEvent(CcTemplateChooserEvent.PREVIEW_CHARACTER_CHANGED,_self,_selectedCCChar)); + _self.currentState = _loc2_.category == ""?"preview_celebrities":"preview_" + _loc2_.category; + }); + this.topTabs.addEventListener(ItemClickEvent.ITEM_CLICK,function(param1:ItemClickEvent):void + { + _self.currentState = param1.item.data["state"]; + }); + this.addEventListener(CcTemplateChooserEvent.PREVIEW_TAB_CHANGED,function(param1:CcTemplateChooserEvent):void + { + _self.currentState = param1.getData() as String; + }); + } + + private function updatePreviewer(param1:FlexEvent) : void + { + } + + private function updateCategory(param1:String) : void + { + var self:BodyShapeMegaChooser = null; + var xx:Function = null; + var cat:String = param1; + if(this._pager == null || this.normalizeCategory(this.templateSelector.category) != cat) + { + this.initPagerByCategory(cat); + } + var x:Object = { + "celebrities":2, + "professions":1 + }; + this.topTabs.selectedIndex = x[cat]; + if(this._selectedCCChar == null) + { + self = this; + xx = function(param1:Event):void + { + CcConsole.getCcConsole().removeEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_ALL_COMPLETE,xx); + var _loc2_:CcCharacter = _pager.getView()[0] as CcCharacter; + if(_selectedCCChar == null && _loc2_ != null) + { + self.dispatchEvent(new CcTemplateChooserEvent(CcTemplateChooserEvent.USER_WANT_TO_PREVIEW,self,_loc2_)); + } + }; + CcConsole.getCcConsole().addEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_ALL_COMPLETE,xx); + } + } + + private function tellEveryBodyUserWantToModify(param1:Event) : void + { + var _loc2_:CcPreMadeCharChooserEvent = new CcPreMadeCharChooserEvent(CcPreMadeCharChooserEvent.PRE_MADE_CHAR_CHOSEN,this); + this._selectedCCChar.markAsTemplate(); + _loc2_.ccCharChosen = this._selectedCCChar.clone(); + _loc2_.ccCharChosen.assetId = ""; + this.dispatchEvent(_loc2_); + } + + private function _BodyShapeMegaChooser_Move1_i() : Move + { + var _loc1_:Move = new Move(); + this.mv = _loc1_; + BindingManager.executeBindings(this,"mv",this.mv); + return _loc1_; + } + + private function _BodyShapeMegaChooser_State1_c() : State + { + var _loc1_:State = new State(); + _loc1_.name = "preview"; + _loc1_.overrides = [this._BodyShapeMegaChooser_SetProperty1_i(),this._BodyShapeMegaChooser_SetProperty2_c()]; + _loc1_.addEventListener("enterState",this.___BodyShapeMegaChooser_State1_enterState); + return _loc1_; + } + + private function _BodyShapeMegaChooser_SetProperty1_i() : SetProperty + { + var _loc1_:SetProperty = new SetProperty(); + _loc1_.name = "selectedChild"; + this._BodyShapeMegaChooser_SetProperty1 = _loc1_; + BindingManager.executeBindings(this,"_BodyShapeMegaChooser_SetProperty1",this._BodyShapeMegaChooser_SetProperty1); + return _loc1_; + } + + private function _BodyShapeMegaChooser_SetProperty2_c() : SetProperty + { + var _loc1_:SetProperty = new SetProperty(); + _loc1_.name = "styleName"; + _loc1_.value = "bgTemplatePreviewer"; + return _loc1_; + } + + public function ___BodyShapeMegaChooser_State1_enterState(param1:FlexEvent) : void + { + this.updatePreviewer(param1); + } + + private function _BodyShapeMegaChooser_State2_c() : State + { + var _loc1_:State = new State(); + _loc1_.name = "preview_celebrities"; + _loc1_.basedOn = "preview"; + _loc1_.addEventListener("enterState",this.___BodyShapeMegaChooser_State2_enterState); + return _loc1_; + } + + public function ___BodyShapeMegaChooser_State2_enterState(param1:FlexEvent) : void + { + this.updateCategory("celebrities"); + } + + private function _BodyShapeMegaChooser_State3_c() : State + { + var _loc1_:State = new State(); + _loc1_.name = "preview_professions"; + _loc1_.basedOn = "preview"; + _loc1_.addEventListener("enterState",this.___BodyShapeMegaChooser_State3_enterState); + return _loc1_; + } + + public function ___BodyShapeMegaChooser_State3_enterState(param1:FlexEvent) : void + { + this.updateCategory("professions"); + } + + public function __btnModify_click(param1:MouseEvent) : void + { + this.tellEveryBodyUserWantToModify(param1); + } + + private function _BodyShapeMegaChooser_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Object + { + return TAB_DATAPROVIDER; + },null,"topTabs.dataProvider"); + result[1] = new Binding(this,function():Number + { + return this.width - 6; + },null,"mc.width"); + result[2] = new Binding(this,function():Number + { + return this.height; + },null,"mc.y"); + result[3] = new Binding(this,function():Boolean + { + return _selectedCCChar != null; + },null,"_BodyShapeMegaChooser_HBox1.visible"); + result[4] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("cc","Modify Me!"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnModify.label"); + result[5] = new Binding(this,function():Number + { + return -mc.height; + },null,"mv.yBy"); + result[6] = new Binding(this,null,null,"mv.target","mc"); + result[7] = new Binding(this,null,null,"_BodyShapeMegaChooser_SetProperty1.target","vs"); + result[8] = new Binding(this,null,null,"_BodyShapeMegaChooser_SetProperty1.value","previewer"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _ce_bodyShapeChooser() : BodyShapeChooser + { + return this._909839514_ce_bodyShapeChooser; + } + + public function set _ce_bodyShapeChooser(param1:BodyShapeChooser) : void + { + var _loc2_:Object = this._909839514_ce_bodyShapeChooser; + if(_loc2_ !== param1) + { + this._909839514_ce_bodyShapeChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ce_bodyShapeChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnModify() : Button + { + return this._416853558btnModify; + } + + public function set btnModify(param1:Button) : void + { + var _loc2_:Object = this._416853558btnModify; + if(_loc2_ !== param1) + { + this._416853558btnModify = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnModify",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get charPreviewer() : CharPreviewer + { + return this._704377921charPreviewer; + } + + public function set charPreviewer(param1:CharPreviewer) : void + { + var _loc2_:Object = this._704377921charPreviewer; + if(_loc2_ !== param1) + { + this._704377921charPreviewer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"charPreviewer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get mc() : Canvas + { + return this._3478mc; + } + + public function set mc(param1:Canvas) : void + { + var _loc2_:Object = this._3478mc; + if(_loc2_ !== param1) + { + this._3478mc = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"mc",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get mv() : Move + { + return this._3497mv; + } + + public function set mv(param1:Move) : void + { + var _loc2_:Object = this._3497mv; + if(_loc2_ !== param1) + { + this._3497mv = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"mv",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get previewer() : Canvas + { + return this._832627083previewer; + } + + public function set previewer(param1:Canvas) : void + { + var _loc2_:Object = this._832627083previewer; + if(_loc2_ !== param1) + { + this._832627083previewer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"previewer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get templateSelector() : TemplateCCSelector + { + return this._1395395193templateSelector; + } + + public function set templateSelector(param1:TemplateCCSelector) : void + { + var _loc2_:Object = this._1395395193templateSelector; + if(_loc2_ !== param1) + { + this._1395395193templateSelector = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"templateSelector",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get templates() : LatestTemplates + { + return this._1981727545templates; + } + + public function set templates(param1:LatestTemplates) : void + { + var _loc2_:Object = this._1981727545templates; + if(_loc2_ !== param1) + { + this._1981727545templates = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"templates",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get topTabs() : TabBar + { + return this._1139886477topTabs; + } + + public function set topTabs(param1:TabBar) : void + { + var _loc2_:Object = this._1139886477topTabs; + if(_loc2_ !== param1) + { + this._1139886477topTabs = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"topTabs",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get vs() : ViewStack + { + return this._3773vs; + } + + public function set vs(param1:ViewStack) : void + { + var _loc2_:Object = this._3773vs; + if(_loc2_ !== param1) + { + this._3773vs = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"vs",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get _selectedCCChar() : CcCharacter + { + return this._1455447984_selectedCCChar; + } + + private function set _selectedCCChar(param1:CcCharacter) : void + { + var _loc2_:Object = this._1455447984_selectedCCChar; + if(_loc2_ !== param1) + { + this._1455447984_selectedCCChar = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_selectedCCChar",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get TAB_DATAPROVIDER() : ArrayCollection + { + return this._753188901TAB_DATAPROVIDER; + } + + private function set TAB_DATAPROVIDER(param1:ArrayCollection) : void + { + var _loc2_:Object = this._753188901TAB_DATAPROVIDER; + if(_loc2_ !== param1) + { + this._753188901TAB_DATAPROVIDER = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"TAB_DATAPROVIDER",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/BusyIndicator.as b/scripts/anifire/creator/components/BusyIndicator.as new file mode 100644 index 0000000..3f41fcf --- /dev/null +++ b/scripts/anifire/creator/components/BusyIndicator.as @@ -0,0 +1,374 @@ +package anifire.creator.components +{ + import flash.display.CapsStyle; + import flash.display.Graphics; + import flash.display.LineScaleMode; + import flash.events.Event; + import flash.events.TimerEvent; + import flash.geom.Point; + import flash.utils.Timer; + import mx.core.DPIClassification; + import mx.core.DesignLayer; + import mx.core.FlexGlobals; + import mx.core.IUIComponent; + import mx.core.IVisualElement; + import mx.core.UIComponent; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + use namespace mx_internal; + + public class BusyIndicator extends UIComponent + { + + private static const DEFAULT_ROTATION_INTERVAL:Number = 200; + + private static const DEFAULT_MINIMUM_SIZE:Number = 14; + + private static const DEFAULT_SIZE:Number = 20; + + private static const RADIANS_PER_DEGREE:Number = Math.PI / 180; + + + private var effectiveVisibility:Boolean = false; + + private var effectiveVisibilityChanged:Boolean = true; + + private var oldUnscaledHeight:Number; + + private var oldUnscaledWidth:Number; + + private var rotationTimer:Timer; + + private var currentRotation:Number = 0; + + private var spinnerDiameter:int; + + private var spokeColor:uint; + + private var _applicationDPI:Number; + + private var _insidePoint:Point; + + private var _outsidePoint:Point; + + public function BusyIndicator() + { + super(); + alpha = 0.6; + this._insidePoint = new Point(); + this._outsidePoint = new Point(); + addEventListener(Event.ADDED_TO_STAGE,this.addedToStageHandler); + addEventListener(Event.REMOVED_FROM_STAGE,this.removedFromStageHandler); + } + + private function get applicationDPI() : Number + { + if(this._applicationDPI) + { + return this._applicationDPI; + } + var _loc1_:Object = FlexGlobals.topLevelApplication; + if("applicationDPI" in _loc1_) + { + this._applicationDPI = _loc1_["applicationDPI"]; + } + return this._applicationDPI; + } + + override public function set designLayer(param1:DesignLayer) : void + { + super.designLayer = param1; + this.effectiveVisibilityChanged = true; + invalidateProperties(); + } + + override protected function commitProperties() : void + { + super.commitProperties(); + if(this.effectiveVisibilityChanged) + { + this.computeEffectiveVisibility(); + if(this.canRotate()) + { + this.startRotation(); + } + else + { + this.stopRotation(); + } + this.effectiveVisibilityChanged = false; + } + } + + override protected function measure() : void + { + super.measure(); + if(this.applicationDPI == DPIClassification.DPI_320) + { + measuredWidth = 52; + measuredHeight = 52; + } + else if(this.applicationDPI == DPIClassification.DPI_240) + { + measuredWidth = 40; + measuredHeight = 40; + } + else if(this.applicationDPI == DPIClassification.DPI_160) + { + measuredWidth = 26; + measuredHeight = 26; + } + else + { + measuredWidth = DEFAULT_SIZE; + measuredHeight = DEFAULT_SIZE; + } + measuredMinWidth = DEFAULT_SIZE; + measuredMinHeight = DEFAULT_SIZE; + } + + override public function setVisible(param1:Boolean, param2:Boolean = false) : void + { + super.setVisible(param1,param2); + this.effectiveVisibilityChanged = true; + invalidateProperties(); + } + + override public function styleChanged(param1:String) : void + { + super.styleChanged(param1); + var _loc2_:Boolean = !styleName || styleName == "styleName"; + if(_loc2_ || styleName == "rotationInterval") + { + if(this.isRotating()) + { + this.stopRotation(); + this.startRotation(); + } + } + if(_loc2_ || styleName == "symbolColor") + { + this.updateSpinner(this.spinnerDiameter); + } + } + + override protected function updateDisplayList(param1:Number, param2:Number) : void + { + var _loc3_:Number = NaN; + super.updateDisplayList(param1,param2); + if(this.oldUnscaledWidth != param1 || this.oldUnscaledHeight != param2) + { + _loc3_ = this.calculateSpinnerDiameter(param1,param2); + this.updateSpinner(_loc3_); + this.oldUnscaledWidth = param1; + this.oldUnscaledHeight = param2; + } + } + + private function calculateSpinnerDiameter(param1:Number, param2:Number) : Number + { + var _loc3_:Number = Math.min(param1,param2); + _loc3_ = Math.max(DEFAULT_MINIMUM_SIZE,_loc3_); + if(_loc3_ % 2 != 0) + { + _loc3_--; + } + return _loc3_; + } + + private function updateSpinner(param1:Number) : void + { + var _loc2_:Boolean = this.isRotating(); + if(_loc2_) + { + this.stopRotation(); + } + this.spinnerDiameter = param1; + this.spokeColor = getStyle("symbolColor"); + this.drawSpinner(); + if(_loc2_) + { + this.startRotation(); + } + } + + mx_internal function drawSpinner() : void + { + var _loc1_:Graphics = graphics; + var _loc2_:int = this.spinnerDiameter / 2; + var _loc3_:int = this.spinnerDiameter; + var _loc4_:Number = this.spinnerDiameter / 3.7; + var _loc5_:Number = this.spinnerDiameter - _loc4_ * 2; + var _loc6_:Number = _loc5_ / 5; + var _loc7_:Number = _loc6_ / 2; + var _loc8_:Number = 0; + _loc1_.clear(); + this.drawSpoke(0.2,this.currentRotation + 300,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.25,this.currentRotation + 330,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.3,this.currentRotation,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.35,this.currentRotation + 30,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.4,this.currentRotation + 60,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.45,this.currentRotation + 90,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.5,this.currentRotation + 120,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.6,this.currentRotation + 150,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.7,this.currentRotation + 180,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.8,this.currentRotation + 210,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(0.9,this.currentRotation + 240,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + this.drawSpoke(1,this.currentRotation + 270,_loc6_,_loc4_,this.spokeColor,_loc2_,_loc7_,_loc8_); + } + + private function drawSpoke(param1:Number, param2:int, param3:Number, param4:Number, param5:uint, param6:Number, param7:Number, param8:Number) : void + { + var _loc9_:Graphics = graphics; + _loc9_.lineStyle(param3,param5,param1,false,LineScaleMode.NORMAL,CapsStyle.ROUND); + this.calculatePointOnCircle(this._outsidePoint,param6,param6 - param7 - param8,param2); + this.calculatePointOnCircle(this._insidePoint,param6,param6 - param4 + param7 - param8,param2); + _loc9_.moveTo(this._outsidePoint.x,this._outsidePoint.y); + _loc9_.lineTo(this._insidePoint.x,this._insidePoint.y); + } + + private function calculatePointOnCircle(param1:Point, param2:Number, param3:Number, param4:Number) : void + { + var _loc5_:Number = param4 * RADIANS_PER_DEGREE; + param1.x = param2 + param3 * Math.cos(_loc5_); + param1.y = param2 + param3 * Math.sin(_loc5_); + } + + private function startRotation() : void + { + var _loc1_:Number = NaN; + if(!this.rotationTimer) + { + _loc1_ = getStyle("rotationInterval"); + if(isNaN(_loc1_)) + { + _loc1_ = DEFAULT_ROTATION_INTERVAL; + } + if(_loc1_ < 16.6) + { + _loc1_ = 16.6; + } + this.rotationTimer = new Timer(_loc1_); + } + if(!this.rotationTimer.hasEventListener(TimerEvent.TIMER)) + { + this.rotationTimer.addEventListener(TimerEvent.TIMER,this.timerHandler); + this.rotationTimer.reset(); + this.rotationTimer.start(); + } + } + + private function stopRotation() : void + { + if(this.rotationTimer) + { + this.rotationTimer.removeEventListener(TimerEvent.TIMER,this.timerHandler); + this.rotationTimer.stop(); + } + } + + private function isRotating() : Boolean + { + return this.rotationTimer && this.rotationTimer.running; + } + + private function canRotate() : Boolean + { + if(this.effectiveVisibility && stage != null) + { + return true; + } + return false; + } + + private function computeEffectiveVisibility() : void + { + if(designLayer && !designLayer.effectiveVisibility) + { + this.effectiveVisibility = false; + return; + } + this.effectiveVisibility = true; + var _loc1_:IVisualElement = this; + while(_loc1_) + { + if(!_loc1_.visible) + { + if(!(_loc1_ is IUIComponent) || !IUIComponent(_loc1_).isPopUp) + { + this.effectiveVisibility = false; + break; + } + } + _loc1_ = _loc1_.parent as IVisualElement; + } + } + + private function addVisibilityListeners() : void + { + var _loc1_:IVisualElement = this.parent as IVisualElement; + while(_loc1_) + { + _loc1_.addEventListener(FlexEvent.HIDE,this.visibilityChangedHandler,false,0,true); + _loc1_.addEventListener(FlexEvent.SHOW,this.visibilityChangedHandler,false,0,true); + _loc1_ = _loc1_.parent as IVisualElement; + } + } + + private function removeVisibilityListeners() : void + { + var _loc1_:IVisualElement = this; + while(_loc1_) + { + _loc1_.removeEventListener(FlexEvent.HIDE,this.visibilityChangedHandler,false); + _loc1_.removeEventListener(FlexEvent.SHOW,this.visibilityChangedHandler,false); + _loc1_ = _loc1_.parent as IVisualElement; + } + } + + override protected function layer_PropertyChange(param1:PropertyChangeEvent) : void + { + super.layer_PropertyChange(param1); + if(param1.property == "effectiveVisibility") + { + this.effectiveVisibilityChanged = true; + invalidateProperties(); + } + } + + private function addedToStageHandler(param1:Event) : void + { + this.computeEffectiveVisibility(); + if(this.canRotate()) + { + this.startRotation(); + } + this.addVisibilityListeners(); + } + + private function removedFromStageHandler(param1:Event) : void + { + this.stopRotation(); + this.removeVisibilityListeners(); + } + + private function visibilityChangedHandler(param1:FlexEvent) : void + { + this.effectiveVisibilityChanged = true; + invalidateProperties(); + } + + private function timerHandler(param1:TimerEvent) : void + { + this.currentRotation = this.currentRotation + 30; + if(this.currentRotation >= 360) + { + this.currentRotation = 0; + } + this.drawSpinner(); + param1.updateAfterEvent(); + } + } +} diff --git a/scripts/anifire/creator/components/CCLoadingScreen.as b/scripts/anifire/creator/components/CCLoadingScreen.as new file mode 100644 index 0000000..f8c1b88 --- /dev/null +++ b/scripts/anifire/creator/components/CCLoadingScreen.as @@ -0,0 +1,101 @@ +package anifire.creator.components +{ + import mx.core.IFlexModuleFactory; + import spark.components.Group; + import spark.components.VGroup; + import spark.primitives.BitmapImage; + + public class CCLoadingScreen extends Group + { + + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_preloader_loading_logo_png_878298051:Class; + + private var _embed_mxml__styles_images_preloader_loading_fill_png_876464899:Class; + + private var _embed_mxml__styles_images_preloader_loading_track_png_775182565:Class; + + public function CCLoadingScreen() + { + this._embed_mxml__styles_images_preloader_loading_logo_png_878298051 = CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051; + this._embed_mxml__styles_images_preloader_loading_fill_png_876464899 = CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899; + this._embed_mxml__styles_images_preloader_loading_track_png_775182565 = CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565; + super(); + mx_internal::_document = this; + this.percentWidth = 100; + this.percentHeight = 100; + this.mxmlContent = [this._CCLoadingScreen_VGroup1_c()]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _CCLoadingScreen_VGroup1_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = -1; + _loc1_.horizontalAlign = "center"; + _loc1_.gap = 20; + _loc1_.mxmlContent = [this._CCLoadingScreen_BitmapImage1_c(),this._CCLoadingScreen_Group2_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _CCLoadingScreen_BitmapImage1_c() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.source = this._embed_mxml__styles_images_preloader_loading_logo_png_878298051; + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _CCLoadingScreen_Group2_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.mxmlContent = [this._CCLoadingScreen_BitmapImage2_c(),this._CCLoadingScreen_BitmapImage3_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _CCLoadingScreen_BitmapImage2_c() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.source = this._embed_mxml__styles_images_preloader_loading_track_png_775182565; + _loc1_.smooth = true; + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _CCLoadingScreen_BitmapImage3_c() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.source = this._embed_mxml__styles_images_preloader_loading_fill_png_876464899; + _loc1_.smooth = true; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.initialized(this,null); + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899.as b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899.as new file mode 100644 index 0000000..6cc2c88 --- /dev/null +++ b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899 extends BitmapAsset + { + + + public function CCLoadingScreen__embed_mxml__styles_images_preloader_loading_fill_png_876464899() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051.as b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051.as new file mode 100644 index 0000000..50c78b9 --- /dev/null +++ b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051 extends BitmapAsset + { + + + public function CCLoadingScreen__embed_mxml__styles_images_preloader_loading_logo_png_878298051() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565.as b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565.as new file mode 100644 index 0000000..96b9f38 --- /dev/null +++ b/scripts/anifire/creator/components/CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565 extends BitmapAsset + { + + + public function CCLoadingScreen__embed_mxml__styles_images_preloader_loading_track_png_775182565() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCPreloader.as b/scripts/anifire/creator/components/CCPreloader.as new file mode 100644 index 0000000..a130fdc --- /dev/null +++ b/scripts/anifire/creator/components/CCPreloader.as @@ -0,0 +1,214 @@ +package anifire.creator.components +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.geom.Matrix; + import mx.events.FlexEvent; + import mx.events.RSLEvent; + import mx.preloaders.IPreloaderDisplay; + + public class CCPreloader extends Sprite implements IPreloaderDisplay + { + + private static var imgLogo:Class = CCPreloader_imgLogo; + + private static var imgBarTrack:Class = CCPreloader_imgBarTrack; + + private static var imgBarFill:Class = CCPreloader_imgBarFill; + + private static const LOGO_WIDTH:int = 188; + + private static const LOGO_HEIGHT:int = 36; + + private static const TRACK_WIDTH:int = 224; + + private static const TRACK_HEIGHT:int = 12; + + private static const FILL_WIDTH:int = 221; + + private static const FILL_HEIGHT:int = 8; + + private static const MARGIN:int = 20; + + + private var _preloader:Sprite; + + private var _stageWidth:Number = 0; + + private var _stageHeight:Number = 0; + + private var _trackX:Number; + + private var _trackY:Number; + + private var _fillX:Number; + + private var _fillY:Number; + + private var _rendered:Boolean; + + private var _barFillBitmapData:BitmapData; + + private var _fillSprite:Sprite; + + public function CCPreloader() + { + super(); + } + + public function set preloader(param1:Sprite) : void + { + this._preloader = param1; + param1.addEventListener(Event.COMPLETE,this.handleLoadComplete); + param1.addEventListener(ProgressEvent.PROGRESS,this.handleLoadProgress); + param1.addEventListener(FlexEvent.INIT_COMPLETE,this.handleInitComplete); + param1.addEventListener(RSLEvent.RSL_ERROR,this.handleRslError); + } + + public function initialize() : void + { + } + + private function show() : void + { + if(this.stageWidth == 0 && this.stageHeight == 0) + { + try + { + this.stageWidth = stage.stageWidth; + this.stageHeight = stage.stageHeight; + } + catch(e:Error) + { + stageWidth = loaderInfo.width; + stageHeight = loaderInfo.height; + } + if(this.stageWidth == 0 && this.stageHeight == 0) + { + return; + } + } + if(!this._rendered) + { + this.createChildren(); + } + } + + protected function createChildren() : void + { + var _loc1_:Number = this._stageWidth * 0.5; + var _loc2_:Number = this._stageHeight * 0.5; + var _loc3_:Number = (LOGO_HEIGHT + MARGIN + TRACK_HEIGHT) * 0.5; + var _loc4_:Bitmap = new imgLogo(); + var _loc5_:Number = _loc1_ - LOGO_WIDTH * 0.5; + var _loc6_:Number = _loc2_ - _loc3_; + graphics.beginBitmapFill(_loc4_.bitmapData,new Matrix(1,0,0,1,_loc5_,_loc6_),false,true); + graphics.drawRect(_loc5_,_loc6_,LOGO_WIDTH,LOGO_HEIGHT); + graphics.endFill(); + this._trackX = _loc1_ - TRACK_WIDTH * 0.5; + this._trackY = _loc2_ - _loc3_ + LOGO_HEIGHT + MARGIN; + this._fillX = _loc1_ - FILL_WIDTH * 0.5; + this._fillY = this._trackY + (TRACK_HEIGHT - FILL_HEIGHT) * 0.5; + var _loc7_:Bitmap = new imgBarTrack(); + graphics.beginBitmapFill(_loc7_.bitmapData,new Matrix(1,0,0,1,this._trackX,this._trackY),false,true); + graphics.drawRect(this._trackX,this._trackY,TRACK_WIDTH,TRACK_HEIGHT); + graphics.endFill(); + var _loc8_:Bitmap = new imgBarFill(); + this._barFillBitmapData = _loc8_.bitmapData; + this._fillSprite = new Sprite(); + this._fillSprite.x = this._fillX; + this._fillSprite.y = this._fillY; + addChild(this._fillSprite); + this._rendered = true; + } + + protected function updateProgress(param1:Number) : void + { + this._fillSprite.graphics.clear(); + this._fillSprite.graphics.beginBitmapFill(this._barFillBitmapData,null,false,true); + this._fillSprite.graphics.drawRect(0,0,FILL_WIDTH * param1,FILL_HEIGHT); + this._fillSprite.graphics.endFill(); + } + + private function handleLoadProgress(param1:ProgressEvent) : void + { + if(!this._rendered) + { + this.createChildren(); + } + this.updateProgress(param1.bytesLoaded / param1.bytesTotal); + } + + private function handleLoadComplete(param1:Event) : void + { + } + + private function handleInitComplete(param1:FlexEvent) : void + { + dispatchEvent(new Event(Event.COMPLETE)); + } + + private function handleRslError(param1:Event) : void + { + } + + public function get backgroundColor() : uint + { + return 16777215; + } + + public function set backgroundColor(param1:uint) : void + { + } + + public function get backgroundAlpha() : Number + { + return 0; + } + + public function set backgroundAlpha(param1:Number) : void + { + } + + public function get backgroundImage() : Object + { + return undefined; + } + + public function set backgroundImage(param1:Object) : void + { + } + + public function get backgroundSize() : String + { + return ""; + } + + public function set backgroundSize(param1:String) : void + { + } + + public function get stageWidth() : Number + { + return this._stageWidth; + } + + public function set stageWidth(param1:Number) : void + { + this._stageWidth = param1; + } + + public function get stageHeight() : Number + { + return this._stageHeight; + } + + public function set stageHeight(param1:Number) : void + { + this._stageHeight = param1; + } + } +} diff --git a/scripts/anifire/creator/components/CCPreloader_imgBarFill.as b/scripts/anifire/creator/components/CCPreloader_imgBarFill.as new file mode 100644 index 0000000..259f07a --- /dev/null +++ b/scripts/anifire/creator/components/CCPreloader_imgBarFill.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCPreloader_imgBarFill extends BitmapAsset + { + + + public function CCPreloader_imgBarFill() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCPreloader_imgBarTrack.as b/scripts/anifire/creator/components/CCPreloader_imgBarTrack.as new file mode 100644 index 0000000..aa8e363 --- /dev/null +++ b/scripts/anifire/creator/components/CCPreloader_imgBarTrack.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCPreloader_imgBarTrack extends BitmapAsset + { + + + public function CCPreloader_imgBarTrack() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCPreloader_imgLogo.as b/scripts/anifire/creator/components/CCPreloader_imgLogo.as new file mode 100644 index 0000000..a3670b6 --- /dev/null +++ b/scripts/anifire/creator/components/CCPreloader_imgLogo.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CCPreloader_imgLogo extends BitmapAsset + { + + + public function CCPreloader_imgLogo() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CCTemplateCharThumb.as b/scripts/anifire/creator/components/CCTemplateCharThumb.as new file mode 100644 index 0000000..f8f886f --- /dev/null +++ b/scripts/anifire/creator/components/CCTemplateCharThumb.as @@ -0,0 +1,121 @@ +package anifire.creator.components +{ + import anifire.component.CCThumb; + import anifire.constant.CcLibConstant; + import anifire.creator.models.CcCharacter; + import flash.events.MouseEvent; + import mx.containers.Canvas; + import mx.core.FlexGlobals; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponent; + import mx.core.UIComponentDescriptor; + import mx.events.FlexEvent; + import mx.states.SetProperty; + import mx.states.State; + import mx.utils.ColorUtil; + + public class CCTemplateCharThumb extends Canvas + { + + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _thumb:CCThumb = null; + + private var _char:CcCharacter = null; + + public function CCTemplateCharThumb() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "events":{"creationComplete":"___CCTemplateCharThumb_Canvas1_creationComplete"} + }); + super(); + mx_internal::_document = this; + this.states = [this._CCTemplateCharThumb_State1_c()]; + this.addEventListener("creationComplete",this.___CCTemplateCharThumb_Canvas1_creationComplete); + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function set thumbnail(param1:CCThumb) : void + { + this.removeAllChildren(); + this._thumb = param1; + var _loc2_:UIComponent = new UIComponent(); + _loc2_.addChild(param1); + _loc2_.width = param1.thumbWidth; + _loc2_.height = param1.thumbHeight; + width = CcLibConstant.TEMPLATE_CHAR_THUMB_WIDTH; + height = CcLibConstant.TEMPLATE_CHAR_THUMB_WIDTH; + buttonMode = true; + mouseEnabled = true; + useHandCursor = true; + _loc2_.x = (width - _loc2_.width) / 2; + _loc2_.y = (height - _loc2_.height) / 2; + addChild(_loc2_); + styleName = "templateCharThumbNormal"; + } + + public function get character() : CcCharacter + { + return this._char; + } + + public function set character(param1:CcCharacter) : void + { + this._char = param1; + } + + private function creationCompleteHandler() : void + { + var _bgColor:uint = 0; + var brightenedColor:uint = 0; + _bgColor = uint(FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("." + styleName).getStyle("backgroundColor")); + brightenedColor = ColorUtil.adjustBrightness(_bgColor,32); + var toggleHighlight:Function = function(param1:MouseEvent):void + { + setStyle("backgroundColor",param1.type == MouseEvent.ROLL_OVER?brightenedColor:_bgColor); + }; + addEventListener(MouseEvent.ROLL_OVER,toggleHighlight); + addEventListener(MouseEvent.ROLL_OUT,toggleHighlight); + } + + private function _CCTemplateCharThumb_State1_c() : State + { + var _loc1_:State = new State(); + _loc1_.name = "selected"; + _loc1_.overrides = [this._CCTemplateCharThumb_SetProperty1_c()]; + return _loc1_; + } + + private function _CCTemplateCharThumb_SetProperty1_c() : SetProperty + { + var _loc1_:SetProperty = new SetProperty(); + _loc1_.name = "styleName"; + _loc1_.value = "templateCharThumbSelected"; + return _loc1_; + } + + public function ___CCTemplateCharThumb_Canvas1_creationComplete(param1:FlexEvent) : void + { + this.creationCompleteHandler(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark.as b/scripts/anifire/creator/components/CcColorPickerElementSpark.as new file mode 100644 index 0000000..eaaaedb --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark.as @@ -0,0 +1,1253 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcColorPickerEvent; + import anifire.creator.events.ColorPickerDropDownListEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcColor; + import anifire.creator.models.CcColorThumb; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcTheme; + import anifire.util.ExtraDataTimer; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.events.MouseEvent; + import flash.events.TimerEvent; + import mx.binding.BindingManager; + import mx.containers.Canvas; + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Image; + + public class CcColorPickerElementSpark extends HGroup + { + + + private var _885706193colorPicker:ColorPickerDropDownList; + + private var _104085ico:Group; + + private var _1729322512sicoccBackMajor:Image; + + private var _1729564684sicoccBackMinor:Image; + + private var _1749076178sicoccBeard:Image; + + private var _971426279sicoccDecMajor:Image; + + private var _971184107sicoccDecMinor:Image; + + private var _1707589218sicoccEyeIris:Image; + + private var _1717654102sicoccEyeLib:Image; + + private var _1708334183sicoccEyebrow:Image; + + private var _1142344510sicoccFaceHairColor:Image; + + private var _1688101943sicoccFeetMain:Image; + + private var _1731424091sicoccGlassesFrame:Image; + + private var _1329787590sicoccGlassesLens:Image; + + private var _704989173sicoccHairMajor:Image; + + private var _705231345sicoccHairMinor:Image; + + private var _1509609974sicoccHandMain:Image; + + private var _103816872sicoccLowerMain:Image; + + private var _1076644329sicoccLowerMainA:Image; + + private var _1076887542sicoccLowerMinor:Image; + + private var _1629378674sicoccMouthLip:Image; + + private var _656768662sicoccMustache:Image; + + private var _1872239388sicoccSkinColor:Image; + + private var _634214009sicoccUpperMain:Image; + + private var _1813958923sicoccUpperMinor:Image; + + private var _876844715tileColor:HGroup; + + private var _110371416title:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var component:CcComponent; + + private var colorThumb:CcColorThumb; + + private var char:CcCharacter; + + private var _embed_mxml__styles_images_icons_color_mustache_png_390540537:Class; + + private var _embed_mxml__styles_images_icons_color_backprop_minor_png_907777337:Class; + + private var _embed_mxml__styles_images_icons_color_backprop_png_2093028773:Class; + + private var _embed_mxml__styles_images_icons_color_hair_minor_png_912147399:Class; + + private var _embed_mxml__styles_images_icons_color_acc_minor_png_757581579:Class; + + private var _embed_mxml__styles_images_icons_color_eyelid_png_173967229:Class; + + private var _embed_mxml__styles_images_icons_color_hand_png_169756807:Class; + + private var _embed_mxml__styles_images_icons_color_lower_minor_png_1476618123:Class; + + private var _embed_mxml__styles_images_icons_color_frame_png_631995193:Class; + + private var _embed_mxml__styles_images_icons_color_acc_png_1482909305:Class; + + private var _embed_mxml__styles_images_icons_color_upper_png_743381305:Class; + + private var _embed_mxml__styles_images_icons_color_lower_png_1538557191:Class; + + private var _embed_mxml__styles_images_icons_color_hair_png_40348533:Class; + + private var _embed_mxml__styles_images_icons_color_upper_minor_png_1376495179:Class; + + private var _embed_mxml__styles_images_icons_color_mouth_png_763068277:Class; + + private var _embed_mxml__styles_images_icons_color_feet_png_27306749:Class; + + private var _embed_mxml__styles_images_icons_color_beard_png_666467141:Class; + + private var _embed_mxml__styles_images_icons_color_eyeiris_png_61421821:Class; + + private var _embed_mxml__styles_images_icons_color_len_png_1033988025:Class; + + private var _embed_mxml__styles_images_icons_color_face_png_1310681731:Class; + + private var _embed_mxml__styles_images_icons_color_eyebrow_png_2108696135:Class; + + public function CcColorPickerElementSpark() + { + this._embed_mxml__styles_images_icons_color_mustache_png_390540537 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537; + this._embed_mxml__styles_images_icons_color_backprop_minor_png_907777337 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337; + this._embed_mxml__styles_images_icons_color_backprop_png_2093028773 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773; + this._embed_mxml__styles_images_icons_color_hair_minor_png_912147399 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399; + this._embed_mxml__styles_images_icons_color_acc_minor_png_757581579 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579; + this._embed_mxml__styles_images_icons_color_eyelid_png_173967229 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229; + this._embed_mxml__styles_images_icons_color_hand_png_169756807 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807; + this._embed_mxml__styles_images_icons_color_lower_minor_png_1476618123 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123; + this._embed_mxml__styles_images_icons_color_frame_png_631995193 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193; + this._embed_mxml__styles_images_icons_color_acc_png_1482909305 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305; + this._embed_mxml__styles_images_icons_color_upper_png_743381305 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305; + this._embed_mxml__styles_images_icons_color_lower_png_1538557191 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191; + this._embed_mxml__styles_images_icons_color_hair_png_40348533 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533; + this._embed_mxml__styles_images_icons_color_upper_minor_png_1376495179 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179; + this._embed_mxml__styles_images_icons_color_mouth_png_763068277 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277; + this._embed_mxml__styles_images_icons_color_feet_png_27306749 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749; + this._embed_mxml__styles_images_icons_color_beard_png_666467141 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141; + this._embed_mxml__styles_images_icons_color_eyeiris_png_61421821 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821; + this._embed_mxml__styles_images_icons_color_len_png_1033988025 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025; + this._embed_mxml__styles_images_icons_color_face_png_1310681731 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731; + this._embed_mxml__styles_images_icons_color_eyebrow_png_2108696135 = CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135; + super(); + mx_internal::_document = this; + this.percentWidth = 100; + this.height = 30; + this.mxmlContent = [this._CcColorPickerElementSpark_Group1_i(),this._CcColorPickerElementSpark_HGroup2_i()]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + public function init(param1:CcComponent, param2:CcComponentThumb, param3:CcTheme, param4:CcCharacter) : void + { + var _loc6_:CcColorThumb = null; + var _loc5_:int = 0; + while(_loc5_ < param3.getColorThumbNum()) + { + _loc6_ = param3.getColorThumbByIndex(_loc5_); + if(_loc6_.componentType == param2.type) + { + this.colorThumb = _loc6_; + } + _loc5_++; + } + this.initByColorThumb(param1,this.colorThumb,param3,param4); + } + + public function initByColorThumb(param1:CcComponent, param2:CcColorThumb, param3:CcTheme, param4:CcCharacter) : void + { + this.component = param1; + this.colorThumb = param2; + this["sico" + this.colorThumb.colorReference].visible = true; + this.char = param4; + var _loc5_:Array = new Array(); + _loc5_ = this.colorThumb.colorChoices; + this.destroy(); + var _loc6_:int = 0; + while(_loc6_ < Math.min(_loc5_.length,5)) + { + this.insertColor(_loc5_[_loc6_]); + _loc6_++; + } + } + + private function insertColorTimer(param1:TimerEvent) : void + { + var _loc2_:ExtraDataTimer = param1.currentTarget as ExtraDataTimer; + var _loc3_:Object = _loc2_.getData(); + var _loc4_:Array = _loc3_["colorThumbs"] as Array; + this.insertColor(_loc4_[_loc2_.currentCount]); + } + + private function onTimerDone(param1:TimerEvent) : void + { + var _loc2_:ExtraDataTimer = param1.currentTarget as ExtraDataTimer; + _loc2_.stop(); + (param1.currentTarget as IEventDispatcher).removeEventListener(param1.type,this.onTimerDone); + } + + private function colorPicker_colorChangeHandler(param1:ColorPickerDropDownListEvent) : void + { + this.tellEveryBodyColorChosen(param1.color,false); + } + + private function colorPicker_colorCommitHandler(param1:ColorPickerDropDownListEvent) : void + { + this.tellEveryBodyColorChosen(param1.color); + } + + private function onPickDefaultColor(param1:MouseEvent) : void + { + this.tellEveryBodyColorChosen(uint(Canvas(param1.currentTarget).data)); + } + + private function insertColor(param1:uint) : void + { + var _loc2_:Canvas = new Canvas(); + _loc2_.width = _loc2_.height = 25; + _loc2_.data = param1; + _loc2_.graphics.clear(); + _loc2_.graphics.lineStyle(2,16777215); + _loc2_.graphics.beginFill(uint(_loc2_.data)); + _loc2_.graphics.drawCircle(_loc2_.width / 2,_loc2_.width / 2,_loc2_.width / 2); + _loc2_.graphics.endFill(); + _loc2_.buttonMode = true; + _loc2_.name = "button" + param1.toString(); + _loc2_.addEventListener(MouseEvent.MOUSE_OVER,this.doColorOver); + _loc2_.addEventListener(MouseEvent.MOUSE_OUT,this.doColorOut); + _loc2_.addEventListener(MouseEvent.CLICK,this.onPickDefaultColor); + this.tileColor.addElement(_loc2_); + } + + private function doColorOver(param1:Event) : void + { + var _loc2_:Canvas = param1.currentTarget as Canvas; + _loc2_.graphics.clear(); + _loc2_.graphics.lineStyle(2,16488452); + _loc2_.graphics.beginFill(uint(_loc2_.data)); + _loc2_.graphics.drawCircle(_loc2_.width / 2,_loc2_.width / 2,_loc2_.width / 2); + _loc2_.graphics.endFill(); + } + + private function doColorOut(param1:Event) : void + { + var _loc2_:Canvas = param1.currentTarget as Canvas; + _loc2_.graphics.clear(); + _loc2_.graphics.lineStyle(2,16777215); + _loc2_.graphics.beginFill(uint(_loc2_.data)); + _loc2_.graphics.drawCircle(_loc2_.width / 2,_loc2_.width / 2,_loc2_.width / 2); + _loc2_.graphics.endFill(); + } + + private function tellEveryBodyColorChosen(param1:uint, param2:Boolean = true) : void + { + var _loc3_:CcColor = new CcColor(); + _loc3_.ccColorThumb = this.colorThumb; + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc3_.ccColorThumb.componentType) > -1) + { + _loc3_.ccComponent = this.component; + } + _loc3_.colorValue = param1; + var _loc4_:CcColorPickerEvent = new CcColorPickerEvent(CcColorPickerEvent.COLOR_CHOSEN,this); + _loc4_.colorChosen = _loc3_; + _loc4_.undoable = param2; + this.dispatchEvent(_loc4_); + } + + private function destroy() : void + { + var _loc1_:Number = NaN; + var _loc2_:int = 0; + if(this.tileColor.numElements > 1) + { + _loc1_ = this.tileColor.numElements - 1; + _loc2_ = _loc1_; + while(_loc2_ >= 1) + { + this.tileColor.removeElementAt(_loc2_); + _loc2_--; + } + } + } + + private function followColor(param1:Event) : void + { + var _loc2_:CcColor = null; + if(this.colorThumb.parentComponentColorRef() != null) + { + _loc2_ = this.char.getUserChosenColorByColorReference(this.colorThumb.parentComponentColorRef()); + this.tellEveryBodyColorChosen(_loc2_.colorValue); + } + } + + private function _CcColorPickerElementSpark_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.height = 28; + _loc1_.width = 34; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._CcColorPickerElementSpark_Group2_i()]; + _loc1_.id = "title"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.title = _loc1_; + BindingManager.executeBindings(this,"title",this.title); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 34; + _loc1_.height = 28; + _loc1_.verticalCenter = -3; + _loc1_.mxmlContent = [this._CcColorPickerElementSpark_Image1_i(),this._CcColorPickerElementSpark_Image2_i(),this._CcColorPickerElementSpark_Image3_i(),this._CcColorPickerElementSpark_Image4_i(),this._CcColorPickerElementSpark_Image5_i(),this._CcColorPickerElementSpark_Image6_i(),this._CcColorPickerElementSpark_Image7_i(),this._CcColorPickerElementSpark_Image8_i(),this._CcColorPickerElementSpark_Image9_i(),this._CcColorPickerElementSpark_Image10_i(),this._CcColorPickerElementSpark_Image11_i(),this._CcColorPickerElementSpark_Image12_i(),this._CcColorPickerElementSpark_Image13_i(),this._CcColorPickerElementSpark_Image14_i(),this._CcColorPickerElementSpark_Image15_i(),this._CcColorPickerElementSpark_Image16_i(),this._CcColorPickerElementSpark_Image17_i(),this._CcColorPickerElementSpark_Image18_i(),this._CcColorPickerElementSpark_Image19_i(),this._CcColorPickerElementSpark_Image20_i(),this._CcColorPickerElementSpark_Image21_i(),this._CcColorPickerElementSpark_Image22_i(),this._CcColorPickerElementSpark_Image23_i()]; + _loc1_.id = "ico"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.ico = _loc1_; + BindingManager.executeBindings(this,"ico",this.ico); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image1_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_face_png_1310681731; + _loc1_.visible = false; + _loc1_.id = "sicoccSkinColor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccSkinColor = _loc1_; + BindingManager.executeBindings(this,"sicoccSkinColor",this.sicoccSkinColor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image2_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_beard_png_666467141; + _loc1_.visible = false; + _loc1_.id = "sicoccFaceHairColor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccFaceHairColor = _loc1_; + BindingManager.executeBindings(this,"sicoccFaceHairColor",this.sicoccFaceHairColor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image3_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_eyelid_png_173967229; + _loc1_.visible = false; + _loc1_.id = "sicoccEyeLib"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccEyeLib = _loc1_; + BindingManager.executeBindings(this,"sicoccEyeLib",this.sicoccEyeLib); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image4_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_eyeiris_png_61421821; + _loc1_.visible = false; + _loc1_.id = "sicoccEyeIris"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccEyeIris = _loc1_; + BindingManager.executeBindings(this,"sicoccEyeIris",this.sicoccEyeIris); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image5_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_frame_png_631995193; + _loc1_.visible = false; + _loc1_.id = "sicoccGlassesFrame"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccGlassesFrame = _loc1_; + BindingManager.executeBindings(this,"sicoccGlassesFrame",this.sicoccGlassesFrame); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image6_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_len_png_1033988025; + _loc1_.visible = false; + _loc1_.id = "sicoccGlassesLens"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccGlassesLens = _loc1_; + BindingManager.executeBindings(this,"sicoccGlassesLens",this.sicoccGlassesLens); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image7_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_mouth_png_763068277; + _loc1_.visible = false; + _loc1_.id = "sicoccMouthLip"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccMouthLip = _loc1_; + BindingManager.executeBindings(this,"sicoccMouthLip",this.sicoccMouthLip); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image8_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_mustache_png_390540537; + _loc1_.visible = false; + _loc1_.id = "sicoccMustache"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccMustache = _loc1_; + BindingManager.executeBindings(this,"sicoccMustache",this.sicoccMustache); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image9_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_beard_png_666467141; + _loc1_.visible = false; + _loc1_.id = "sicoccBeard"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccBeard = _loc1_; + BindingManager.executeBindings(this,"sicoccBeard",this.sicoccBeard); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image10_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_eyebrow_png_2108696135; + _loc1_.visible = false; + _loc1_.id = "sicoccEyebrow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccEyebrow = _loc1_; + BindingManager.executeBindings(this,"sicoccEyebrow",this.sicoccEyebrow); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image11_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_hair_png_40348533; + _loc1_.visible = false; + _loc1_.id = "sicoccHairMajor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccHairMajor = _loc1_; + BindingManager.executeBindings(this,"sicoccHairMajor",this.sicoccHairMajor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image12_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_hair_minor_png_912147399; + _loc1_.visible = false; + _loc1_.id = "sicoccHairMinor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccHairMinor = _loc1_; + BindingManager.executeBindings(this,"sicoccHairMinor",this.sicoccHairMinor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image13_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_upper_png_743381305; + _loc1_.visible = false; + _loc1_.id = "sicoccUpperMain"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccUpperMain = _loc1_; + BindingManager.executeBindings(this,"sicoccUpperMain",this.sicoccUpperMain); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image14_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_upper_minor_png_1376495179; + _loc1_.visible = false; + _loc1_.id = "sicoccUpperMinor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccUpperMinor = _loc1_; + BindingManager.executeBindings(this,"sicoccUpperMinor",this.sicoccUpperMinor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image15_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_lower_png_1538557191; + _loc1_.visible = false; + _loc1_.id = "sicoccLowerMain"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccLowerMain = _loc1_; + BindingManager.executeBindings(this,"sicoccLowerMain",this.sicoccLowerMain); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image16_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_lower_png_1538557191; + _loc1_.visible = false; + _loc1_.id = "sicoccLowerMainA"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccLowerMainA = _loc1_; + BindingManager.executeBindings(this,"sicoccLowerMainA",this.sicoccLowerMainA); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image17_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_lower_minor_png_1476618123; + _loc1_.visible = false; + _loc1_.id = "sicoccLowerMinor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccLowerMinor = _loc1_; + BindingManager.executeBindings(this,"sicoccLowerMinor",this.sicoccLowerMinor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image18_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_backprop_png_2093028773; + _loc1_.visible = false; + _loc1_.id = "sicoccBackMajor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccBackMajor = _loc1_; + BindingManager.executeBindings(this,"sicoccBackMajor",this.sicoccBackMajor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image19_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_backprop_minor_png_907777337; + _loc1_.visible = false; + _loc1_.id = "sicoccBackMinor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccBackMinor = _loc1_; + BindingManager.executeBindings(this,"sicoccBackMinor",this.sicoccBackMinor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image20_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_acc_png_1482909305; + _loc1_.visible = false; + _loc1_.id = "sicoccDecMajor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccDecMajor = _loc1_; + BindingManager.executeBindings(this,"sicoccDecMajor",this.sicoccDecMajor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image21_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_acc_minor_png_757581579; + _loc1_.visible = false; + _loc1_.id = "sicoccDecMinor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccDecMinor = _loc1_; + BindingManager.executeBindings(this,"sicoccDecMinor",this.sicoccDecMinor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image22_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_feet_png_27306749; + _loc1_.visible = false; + _loc1_.id = "sicoccFeetMain"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccFeetMain = _loc1_; + BindingManager.executeBindings(this,"sicoccFeetMain",this.sicoccFeetMain); + return _loc1_; + } + + private function _CcColorPickerElementSpark_Image23_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_icons_color_hand_png_169756807; + _loc1_.visible = false; + _loc1_.id = "sicoccHandMain"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sicoccHandMain = _loc1_; + BindingManager.executeBindings(this,"sicoccHandMain",this.sicoccHandMain); + return _loc1_; + } + + private function _CcColorPickerElementSpark_HGroup2_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.height = 70; + _loc1_.mxmlContent = [this._CcColorPickerElementSpark_ColorPickerDropDownList1_i()]; + _loc1_.id = "tileColor"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.tileColor = _loc1_; + BindingManager.executeBindings(this,"tileColor",this.tileColor); + return _loc1_; + } + + private function _CcColorPickerElementSpark_ColorPickerDropDownList1_i() : ColorPickerDropDownList + { + var _loc1_:ColorPickerDropDownList = new ColorPickerDropDownList(); + _loc1_.addEventListener("colorChange",this.__colorPicker_colorChange); + _loc1_.addEventListener("colorCommit",this.__colorPicker_colorCommit); + _loc1_.id = "colorPicker"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.colorPicker = _loc1_; + BindingManager.executeBindings(this,"colorPicker",this.colorPicker); + return _loc1_; + } + + public function __colorPicker_colorChange(param1:ColorPickerDropDownListEvent) : void + { + this.colorPicker_colorChangeHandler(param1); + } + + public function __colorPicker_colorCommit(param1:ColorPickerDropDownListEvent) : void + { + this.colorPicker_colorCommitHandler(param1); + } + + [Bindable(event="propertyChange")] + public function get colorPicker() : ColorPickerDropDownList + { + return this._885706193colorPicker; + } + + public function set colorPicker(param1:ColorPickerDropDownList) : void + { + var _loc2_:Object = this._885706193colorPicker; + if(_loc2_ !== param1) + { + this._885706193colorPicker = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorPicker",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get ico() : Group + { + return this._104085ico; + } + + public function set ico(param1:Group) : void + { + var _loc2_:Object = this._104085ico; + if(_loc2_ !== param1) + { + this._104085ico = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"ico",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccBackMajor() : Image + { + return this._1729322512sicoccBackMajor; + } + + public function set sicoccBackMajor(param1:Image) : void + { + var _loc2_:Object = this._1729322512sicoccBackMajor; + if(_loc2_ !== param1) + { + this._1729322512sicoccBackMajor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccBackMajor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccBackMinor() : Image + { + return this._1729564684sicoccBackMinor; + } + + public function set sicoccBackMinor(param1:Image) : void + { + var _loc2_:Object = this._1729564684sicoccBackMinor; + if(_loc2_ !== param1) + { + this._1729564684sicoccBackMinor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccBackMinor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccBeard() : Image + { + return this._1749076178sicoccBeard; + } + + public function set sicoccBeard(param1:Image) : void + { + var _loc2_:Object = this._1749076178sicoccBeard; + if(_loc2_ !== param1) + { + this._1749076178sicoccBeard = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccBeard",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccDecMajor() : Image + { + return this._971426279sicoccDecMajor; + } + + public function set sicoccDecMajor(param1:Image) : void + { + var _loc2_:Object = this._971426279sicoccDecMajor; + if(_loc2_ !== param1) + { + this._971426279sicoccDecMajor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccDecMajor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccDecMinor() : Image + { + return this._971184107sicoccDecMinor; + } + + public function set sicoccDecMinor(param1:Image) : void + { + var _loc2_:Object = this._971184107sicoccDecMinor; + if(_loc2_ !== param1) + { + this._971184107sicoccDecMinor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccDecMinor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccEyeIris() : Image + { + return this._1707589218sicoccEyeIris; + } + + public function set sicoccEyeIris(param1:Image) : void + { + var _loc2_:Object = this._1707589218sicoccEyeIris; + if(_loc2_ !== param1) + { + this._1707589218sicoccEyeIris = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccEyeIris",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccEyeLib() : Image + { + return this._1717654102sicoccEyeLib; + } + + public function set sicoccEyeLib(param1:Image) : void + { + var _loc2_:Object = this._1717654102sicoccEyeLib; + if(_loc2_ !== param1) + { + this._1717654102sicoccEyeLib = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccEyeLib",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccEyebrow() : Image + { + return this._1708334183sicoccEyebrow; + } + + public function set sicoccEyebrow(param1:Image) : void + { + var _loc2_:Object = this._1708334183sicoccEyebrow; + if(_loc2_ !== param1) + { + this._1708334183sicoccEyebrow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccEyebrow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccFaceHairColor() : Image + { + return this._1142344510sicoccFaceHairColor; + } + + public function set sicoccFaceHairColor(param1:Image) : void + { + var _loc2_:Object = this._1142344510sicoccFaceHairColor; + if(_loc2_ !== param1) + { + this._1142344510sicoccFaceHairColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccFaceHairColor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccFeetMain() : Image + { + return this._1688101943sicoccFeetMain; + } + + public function set sicoccFeetMain(param1:Image) : void + { + var _loc2_:Object = this._1688101943sicoccFeetMain; + if(_loc2_ !== param1) + { + this._1688101943sicoccFeetMain = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccFeetMain",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccGlassesFrame() : Image + { + return this._1731424091sicoccGlassesFrame; + } + + public function set sicoccGlassesFrame(param1:Image) : void + { + var _loc2_:Object = this._1731424091sicoccGlassesFrame; + if(_loc2_ !== param1) + { + this._1731424091sicoccGlassesFrame = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccGlassesFrame",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccGlassesLens() : Image + { + return this._1329787590sicoccGlassesLens; + } + + public function set sicoccGlassesLens(param1:Image) : void + { + var _loc2_:Object = this._1329787590sicoccGlassesLens; + if(_loc2_ !== param1) + { + this._1329787590sicoccGlassesLens = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccGlassesLens",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccHairMajor() : Image + { + return this._704989173sicoccHairMajor; + } + + public function set sicoccHairMajor(param1:Image) : void + { + var _loc2_:Object = this._704989173sicoccHairMajor; + if(_loc2_ !== param1) + { + this._704989173sicoccHairMajor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccHairMajor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccHairMinor() : Image + { + return this._705231345sicoccHairMinor; + } + + public function set sicoccHairMinor(param1:Image) : void + { + var _loc2_:Object = this._705231345sicoccHairMinor; + if(_loc2_ !== param1) + { + this._705231345sicoccHairMinor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccHairMinor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccHandMain() : Image + { + return this._1509609974sicoccHandMain; + } + + public function set sicoccHandMain(param1:Image) : void + { + var _loc2_:Object = this._1509609974sicoccHandMain; + if(_loc2_ !== param1) + { + this._1509609974sicoccHandMain = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccHandMain",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccLowerMain() : Image + { + return this._103816872sicoccLowerMain; + } + + public function set sicoccLowerMain(param1:Image) : void + { + var _loc2_:Object = this._103816872sicoccLowerMain; + if(_loc2_ !== param1) + { + this._103816872sicoccLowerMain = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccLowerMain",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccLowerMainA() : Image + { + return this._1076644329sicoccLowerMainA; + } + + public function set sicoccLowerMainA(param1:Image) : void + { + var _loc2_:Object = this._1076644329sicoccLowerMainA; + if(_loc2_ !== param1) + { + this._1076644329sicoccLowerMainA = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccLowerMainA",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccLowerMinor() : Image + { + return this._1076887542sicoccLowerMinor; + } + + public function set sicoccLowerMinor(param1:Image) : void + { + var _loc2_:Object = this._1076887542sicoccLowerMinor; + if(_loc2_ !== param1) + { + this._1076887542sicoccLowerMinor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccLowerMinor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccMouthLip() : Image + { + return this._1629378674sicoccMouthLip; + } + + public function set sicoccMouthLip(param1:Image) : void + { + var _loc2_:Object = this._1629378674sicoccMouthLip; + if(_loc2_ !== param1) + { + this._1629378674sicoccMouthLip = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccMouthLip",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccMustache() : Image + { + return this._656768662sicoccMustache; + } + + public function set sicoccMustache(param1:Image) : void + { + var _loc2_:Object = this._656768662sicoccMustache; + if(_loc2_ !== param1) + { + this._656768662sicoccMustache = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccMustache",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccSkinColor() : Image + { + return this._1872239388sicoccSkinColor; + } + + public function set sicoccSkinColor(param1:Image) : void + { + var _loc2_:Object = this._1872239388sicoccSkinColor; + if(_loc2_ !== param1) + { + this._1872239388sicoccSkinColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccSkinColor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccUpperMain() : Image + { + return this._634214009sicoccUpperMain; + } + + public function set sicoccUpperMain(param1:Image) : void + { + var _loc2_:Object = this._634214009sicoccUpperMain; + if(_loc2_ !== param1) + { + this._634214009sicoccUpperMain = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccUpperMain",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sicoccUpperMinor() : Image + { + return this._1813958923sicoccUpperMinor; + } + + public function set sicoccUpperMinor(param1:Image) : void + { + var _loc2_:Object = this._1813958923sicoccUpperMinor; + if(_loc2_ !== param1) + { + this._1813958923sicoccUpperMinor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sicoccUpperMinor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get tileColor() : HGroup + { + return this._876844715tileColor; + } + + public function set tileColor(param1:HGroup) : void + { + var _loc2_:Object = this._876844715tileColor; + if(_loc2_ !== param1) + { + this._876844715tileColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"tileColor",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get title() : Group + { + return this._110371416title; + } + + public function set title(param1:Group) : void + { + var _loc2_:Object = this._110371416title; + if(_loc2_ !== param1) + { + this._110371416title = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"title",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579.as new file mode 100644 index 0000000..3985e63 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_minor_png_757581579() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.as new file mode 100644 index 0000000..a9ea392 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_acc_png_1482909305() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337.as new file mode 100644 index 0000000..a6e020e --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_minor_png_907777337() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.as new file mode 100644 index 0000000..5eed0ba --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_backprop_png_2093028773() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.as new file mode 100644 index 0000000..9143ff2 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_beard_png_666467141() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135.as new file mode 100644 index 0000000..eb48a8f --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyebrow_png_2108696135() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821.as new file mode 100644 index 0000000..a8b4223 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyeiris_png_61421821() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229.as new file mode 100644 index 0000000..65c2bb6 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_eyelid_png_173967229() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.as new file mode 100644 index 0000000..4ee0f6c --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_face_png_1310681731() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.as new file mode 100644 index 0000000..7cf427c --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_feet_png_27306749() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193.as new file mode 100644 index 0000000..199d6c6 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_frame_png_631995193() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399.as new file mode 100644 index 0000000..bd4d777 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_minor_png_912147399() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533.as new file mode 100644 index 0000000..28171ff --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hair_png_40348533() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807.as new file mode 100644 index 0000000..4b1b6f2 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_hand_png_169756807() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025.as new file mode 100644 index 0000000..87ceed4 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_len_png_1033988025() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.as new file mode 100644 index 0000000..da60ccc --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_minor_png_1476618123() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.as new file mode 100644 index 0000000..fbd1798 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_lower_png_1538557191() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.as new file mode 100644 index 0000000..60aa5e0 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mouth_png_763068277() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.as new file mode 100644 index 0000000..d8169e7 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_mustache_png_390540537() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179.as new file mode 100644 index 0000000..fae747f --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_minor_png_1376495179() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.as b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.as new file mode 100644 index 0000000..0de0155 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305 extends BitmapAsset + { + + + public function CcColorPickerElementSpark__embed_mxml__styles_images_icons_color_upper_png_743381305() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcColorPickers.as b/scripts/anifire/creator/components/CcColorPickers.as new file mode 100644 index 0000000..4f87989 --- /dev/null +++ b/scripts/anifire/creator/components/CcColorPickers.as @@ -0,0 +1,217 @@ +package anifire.creator.components +{ + import anifire.creator.events.CcColorPickerEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcColor; + import anifire.creator.models.CcColorThumb; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcLibrary; + import anifire.creator.models.CcTheme; + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.Group; + import spark.components.VGroup; + + public class CcColorPickers extends Group + { + + + private var _1780199526_pickers:VGroup; + + private var __moduleFactoryInitialized:Boolean = false; + + private var colorThumb:CcColorThumb; + + private var _biggerElementWidth:Number; + + private var _smallerElementWidth:Number; + + private const DELAY_BETWEEN_LOADING_EACH_THUMB:Number = 200; + + public function CcColorPickers() + { + super(); + mx_internal::_document = this; + this.mxmlContent = [this._CcColorPickers_VGroup1_i()]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + public function set biggerElementWidth(param1:Number) : void + { + this._biggerElementWidth = param1; + } + + public function set smallerElementWidth(param1:Number) : void + { + this._smallerElementWidth = param1; + } + + public function addLibraryType(param1:CcLibrary, param2:CcTheme, param3:CcCharacter) : void + { + var _loc5_:CcColorThumb = null; + var _loc7_:int = 0; + var _loc4_:Array = new Array(); + var _loc6_:int = 0; + while(_loc6_ < param2.getColorThumbNum()) + { + _loc5_ = param2.getColorThumbByIndex(_loc6_); + if(_loc5_.componentType == param1.type) + { + _loc4_.push(_loc5_); + } + _loc6_++; + } + if(_loc4_.length > 0) + { + _loc7_ = 0; + while(_loc7_ < _loc4_.length) + { + _loc5_ = _loc4_[_loc7_] as CcColorThumb; + this.addColorPicker(_loc5_,null,param2,param3); + _loc7_++; + } + } + } + + public function addComponentType(param1:CcComponent, param2:String, param3:CcTheme, param4:CcCharacter) : void + { + var _loc6_:CcColorThumb = null; + var _loc8_:CcColorPickerElementSpark = null; + var _loc9_:int = 0; + var _loc5_:Array = new Array(); + var _loc7_:int = 0; + while(_loc7_ < param3.getColorThumbNum()) + { + _loc6_ = param3.getColorThumbByIndex(_loc7_); + if(_loc6_.componentType == param2) + { + _loc5_.push(_loc6_); + } + _loc7_++; + } + if(_loc5_.length > 0) + { + _loc9_ = 0; + while(_loc9_ < _loc5_.length) + { + _loc6_ = _loc5_[_loc9_] as CcColorThumb; + this.addColorPicker(_loc6_,param1,param3,param4); + _loc9_++; + } + } + } + + public function addComponentThumb(param1:CcComponent, param2:CcComponentThumb, param3:CcTheme, param4:CcCharacter) : void + { + var _loc5_:CcColorPickerElementSpark = null; + var _loc6_:int = 0; + var _loc7_:CcColorThumb = null; + if(param2.getMyOwnColorNum() > 0) + { + _loc6_ = 0; + while(_loc6_ < param2.getMyOwnColorNum()) + { + _loc7_ = param2.getMyOwnColorByIndex(_loc6_); + this.addColorPicker(_loc7_,param1,param3,param4); + _loc6_++; + } + } + } + + private function addColorPicker(param1:CcColorThumb, param2:CcComponent, param3:CcTheme, param4:CcCharacter) : void + { + var _loc5_:CcColorPickerElementSpark = null; + if(!param1.enable) + { + return; + } + _loc5_ = new CcColorPickerElementSpark(); + if(param1.colorChoices.length > 4) + { + _loc5_.width = this._biggerElementWidth; + } + else + { + _loc5_.width = this._smallerElementWidth; + } + _loc5_.height = 30; + _loc5_.addEventListener(CcColorPickerEvent.COLOR_CHOSEN,this.onUserChooseColor); + _loc5_.callLater(_loc5_.initByColorThumb,[param2,param1,param3,param4]); + this._pickers.addElement(_loc5_); + } + + private function onUserChooseColor(param1:CcColorPickerEvent) : void + { + this.tellEveryBodyColorChosen(param1.colorChosen,param1.undoable); + } + + private function tellEveryBodyColorChosen(param1:CcColor, param2:Boolean = true) : void + { + var _loc3_:CcColorPickerEvent = new CcColorPickerEvent(CcColorPickerEvent.COLOR_CHOSEN,this); + _loc3_.colorChosen = param1; + _loc3_.undoable = param2; + this.dispatchEvent(_loc3_); + } + + public function destroy() : void + { + var _loc1_:int = 0; + var _loc2_:CcColorPickerElementSpark = null; + while(_loc1_ < this._pickers.numChildren) + { + _loc2_ = this._pickers.getChildAt(_loc1_) as CcColorPickerElementSpark; + _loc2_.removeEventListener(CcColorPickerEvent.COLOR_CHOSEN,this.onUserChooseColor); + _loc1_++; + } + this._pickers.removeAllElements(); + } + + private function _CcColorPickers_VGroup1_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.id = "_pickers"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._pickers = _loc1_; + BindingManager.executeBindings(this,"_pickers",this._pickers); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _pickers() : VGroup + { + return this._1780199526_pickers; + } + + public function set _pickers(param1:VGroup) : void + { + var _loc2_:Object = this._1780199526_pickers; + if(_loc2_ !== param1) + { + this._1780199526_pickers = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_pickers",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark.as new file mode 100644 index 0000000..6acf443 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark.as @@ -0,0 +1,1429 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcThumbPropertyEvent; + import anifire.creator.models.CcComponent; + import anifire.util.UtilDict; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.events.TimerEvent; + import flash.utils.Timer; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.EffectEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.AddItems; + import mx.states.State; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.VGroup; + import spark.effects.Animate; + import spark.effects.animation.MotionPath; + import spark.effects.animation.SimpleMotionPath; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + + use namespace mx_internal; + + public class CcComponentPropertyInspectorSpark extends Group implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _760107692_CcComponentPropertyInspectorSpark_HGroup1:HGroup; + + public var _CcComponentPropertyInspectorSpark_VGroup1:VGroup; + + public var _CcComponentPropertyInspectorSpark_VGroup2:VGroup; + + public var _CcComponentPropertyInspectorSpark_VGroup3:VGroup; + + private var _204767493bgCross:DirectionControlSpark; + + private var _2082343164btnClose:IconButton; + + private var _196605078btnExtend:IconButton; + + private var _349934417btnOffsetDown:IconButton; + + private var _1023827210btnOffsetUp:IconButton; + + private var _923101209btnRotateDown:IconButton; + + private var _1739506642btnRotateUp:IconButton; + + private var _1756165648btnScaleDown:IconButton; + + private var _721380233btnScaleUp:IconButton; + + private var _978900240btnXScaleDown:IconButton; + + private var _255766423btnXScaleUp:IconButton; + + private var _1175413745btnYScaleDown:IconButton; + + private var _1487043912btnYScaleUp:IconButton; + + private var _906978543dropShadow:RectangularDropShadow; + + private var _104889325moveDown:Animate; + + private var _1068263860moveUp:Animate; + + private var _3684698yPad:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _component:CcComponent; + + private var _timer:Timer; + + private var _type:String; + + private var hideFinishFlag:Boolean = true; + + private var _embed_mxml__styles_images_details_btn_scale_down_init_png_60286471:Class; + + private var _embed_mxml__styles_images_panel_btn_close_over_png_2000923769:Class; + + private var _embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073:Class; + + private var _embed_mxml__styles_images_details_btn_closer_over_png_1861461063:Class; + + private var _embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653:Class; + + private var _embed_mxml__styles_images_details_btn_closer_init_png_159598407:Class; + + private var _embed_mxml__styles_images_details_btn_anchor_init_png_804542717:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883:Class; + + private var _embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339:Class; + + private var _embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027:Class; + + private var _embed_mxml__styles_images_details_btn_wider_over_png_867826631:Class; + + private var _embed_mxml__styles_images_panel_btn_close_init_png_1805605639:Class; + + private var _embed_mxml__styles_images_details_btn_anchor_over_png_770455653:Class; + + private var _embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483:Class; + + private var _embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387:Class; + + private var _embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387:Class; + + private var _embed_mxml__styles_images_details_btn_scale_down_over_png_545719943:Class; + + private var _embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_init_png_953104677:Class; + + private var _embed_mxml__styles_images_details_btn_wider_init_png_850996167:Class; + + private var _embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223:Class; + + private var _embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function CcComponentPropertyInspectorSpark() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_details_btn_scale_down_init_png_60286471 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471; + this._embed_mxml__styles_images_panel_btn_close_over_png_2000923769 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769; + this._embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073; + this._embed_mxml__styles_images_details_btn_closer_over_png_1861461063 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063; + this._embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411; + this._embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653; + this._embed_mxml__styles_images_details_btn_closer_init_png_159598407 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407; + this._embed_mxml__styles_images_details_btn_anchor_init_png_804542717 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717; + this._embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231; + this._embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883; + this._embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339; + this._embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027; + this._embed_mxml__styles_images_details_btn_wider_over_png_867826631 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631; + this._embed_mxml__styles_images_panel_btn_close_init_png_1805605639 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639; + this._embed_mxml__styles_images_details_btn_anchor_over_png_770455653 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653; + this._embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483; + this._embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387; + this._embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171; + this._embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387; + this._embed_mxml__styles_images_details_btn_scale_down_over_png_545719943 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943; + this._embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499; + this._embed_mxml__styles_images_details_btn_scale_up_init_png_953104677 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677; + this._embed_mxml__styles_images_details_btn_wider_init_png_850996167 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167; + this._embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223; + this._embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985 = CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._CcComponentPropertyInspectorSpark_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_CcComponentPropertyInspectorSparkWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return CcComponentPropertyInspectorSpark[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 300; + this.height = 100; + this.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton1_i(),this._CcComponentPropertyInspectorSpark_Group2_i()]; + this.currentState = "keep_pro"; + this._CcComponentPropertyInspectorSpark_Animate2_i(); + this._CcComponentPropertyInspectorSpark_Animate1_i(); + var _CcComponentPropertyInspectorSpark_VGroup1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._CcComponentPropertyInspectorSpark_VGroup1_i); + var _CcComponentPropertyInspectorSpark_VGroup2_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._CcComponentPropertyInspectorSpark_VGroup2_i); + var _CcComponentPropertyInspectorSpark_VGroup3_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._CcComponentPropertyInspectorSpark_VGroup3_i); + states = [new State({ + "name":"keep_pro", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_CcComponentPropertyInspectorSpark_VGroup1_factory, + "destination":"_CcComponentPropertyInspectorSpark_HGroup1", + "propertyName":"mxmlContent", + "position":"first" + })] + }),new State({ + "name":"no_pro", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_CcComponentPropertyInspectorSpark_VGroup3_factory, + "destination":"_CcComponentPropertyInspectorSpark_HGroup1", + "propertyName":"mxmlContent", + "position":"first" + }),new AddItems().initializeFromObject({ + "itemsFactory":_CcComponentPropertyInspectorSpark_VGroup2_factory, + "destination":"_CcComponentPropertyInspectorSpark_HGroup1", + "propertyName":"mxmlContent", + "position":"first" + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + CcComponentPropertyInspectorSpark._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + public function init(param1:CcComponent, param2:int = 0) : void + { + if(!CcLibConstant.HAS_DETAIL_CONTROL) + { + return; + } + this._timer = new Timer(200,1); + this._component = param1; + if(CcLibConstant.ALL_HEAD_COMPONENT_TYPES.indexOf(this._component.componentThumb.type) > -1) + { + this.btnExtend.enabled = true; + } + else + { + this.btnExtend.enabled = false; + } + if(CcLibConstant.ALL_OFFSETABLE_COMPONENT_TYPES.indexOf(this._component.componentThumb.type) > -1) + { + this.btnOffsetUp.visible = true; + this.btnOffsetDown.visible = true; + } + else + { + this.btnOffsetUp.visible = false; + this.btnOffsetDown.visible = false; + } + if(param2 == 0) + { + setCurrentState("keep_pro"); + } + else + { + setCurrentState("no_pro"); + } + this.bgCross.addEventListener(CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK,this.onCrossDown); + this.bgCross.addEventListener(CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK,this.onCrossDown); + this.bgCross.addEventListener(CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK,this.onCrossDown); + this.bgCross.addEventListener(CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK,this.onCrossDown); + } + + private function onCrossDown(param1:Event) : void + { + CcThumbPropertyEvent(param1).component = this._component; + this.dispatch(param1); + } + + private function onMouseDown(param1:Event) : void + { + var _loc2_:CcThumbPropertyEvent = null; + this._type = this.getTypeByEventTarget(param1.currentTarget); + _loc2_ = new CcThumbPropertyEvent(this._type,this); + _loc2_.component = this._component; + this.dispatch(_loc2_); + this._timer = new Timer(1000,1); + this._timer.addEventListener(TimerEvent.TIMER,this.doFirstTimer); + this._timer.start(); + } + + private function onMouseUp(param1:Event) : void + { + var _loc2_:CcThumbPropertyEvent = null; + if(this._timer != null && this._timer.running) + { + this._timer.stop(); + this._timer.removeEventListener(TimerEvent.TIMER,this.doTimer); + _loc2_ = new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_LOCATION_UPDATE,this); + this.dispatch(_loc2_); + } + } + + private function doFirstTimer(param1:TimerEvent) : void + { + this._timer.stop(); + this._timer.removeEventListener(TimerEvent.TIMER,this.doFirstTimer); + this._timer = new Timer(20); + this._timer.addEventListener(TimerEvent.TIMER,this.doTimer); + this._timer.start(); + } + + private function doTimer(param1:TimerEvent) : void + { + var _loc2_:String = null; + var _loc3_:CcThumbPropertyEvent = null; + _loc2_ = this._type; + _loc3_ = new CcThumbPropertyEvent(_loc2_,this); + _loc3_.component = this._component; + this.dispatch(_loc3_); + } + + private function onClick(param1:Event) : void + { + var _loc3_:CcThumbPropertyEvent = null; + var _loc2_:String = this.getTypeByEventTarget(param1.currentTarget); + _loc3_ = new CcThumbPropertyEvent(_loc2_,this); + _loc3_.component = this._component; + this.dispatch(_loc3_); + } + + public function destroy() : void + { + this.btnExtend.enabled = false; + } + + public function close() : void + { + if(!this.hideFinishFlag) + { + this.startHide(); + } + } + + private function startHide() : void + { + this.moveDown.play(); + } + + private function dispatch(param1:Event) : void + { + var _loc2_:CcThumbPropertyEvent = CcThumbPropertyEvent(param1).clone() as CcThumbPropertyEvent; + _loc2_.component = this._component; + this.dispatchEvent(_loc2_); + } + + private function getTypeByEventTarget(param1:Object) : String + { + var _loc2_:String = ""; + switch(param1) + { + case this.btnRotateUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_ROTATEUP_BUTTON_CLICK; + break; + case this.btnRotateDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_ROTATEDOWN_BUTTON_CLICK; + break; + case this.btnScaleUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEUP_BUTTON_CLICK; + break; + case this.btnScaleDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEDOWN_BUTTON_CLICK; + break; + case this.btnXScaleUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEXUP_BUTTON_CLICK; + break; + case this.btnXScaleDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEXDOWN_BUTTON_CLICK; + break; + case this.btnYScaleUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEYUP_BUTTON_CLICK; + break; + case this.btnYScaleDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_SCALEYDOWN_BUTTON_CLICK; + break; + case this.btnOffsetUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_OFFSETUP_BUTTON_CLICK; + break; + case this.btnOffsetDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_OFFSETDOWN_BUTTON_CLICK; + } + return _loc2_; + } + + private function _CcComponentPropertyInspectorSpark_Animate2_i() : Animate + { + var _loc1_:Animate = new Animate(); + _loc1_.duration = 500; + _loc1_.motionPaths = new [this._CcComponentPropertyInspectorSpark_SimpleMotionPath3_c(),this._CcComponentPropertyInspectorSpark_SimpleMotionPath4_c()]; + _loc1_.addEventListener("effectEnd",this.__moveDown_effectEnd); + this.moveDown = _loc1_; + BindingManager.executeBindings(this,"moveDown",this.moveDown); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_SimpleMotionPath3_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "y"; + _loc1_.valueFrom = 5; + _loc1_.valueTo = 105; + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_SimpleMotionPath4_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "alpha"; + _loc1_.valueFrom = 1; + _loc1_.valueTo = 0; + return _loc1_; + } + + public function __moveDown_effectEnd(param1:EffectEvent) : void + { + this.hideFinishFlag = true; + this.yPad.mouseChildren = false; + } + + private function _CcComponentPropertyInspectorSpark_Animate1_i() : Animate + { + var _loc1_:Animate = new Animate(); + _loc1_.duration = 500; + _loc1_.motionPaths = new [this._CcComponentPropertyInspectorSpark_SimpleMotionPath1_c(),this._CcComponentPropertyInspectorSpark_SimpleMotionPath2_c()]; + _loc1_.addEventListener("effectStart",this.__moveUp_effectStart); + this.moveUp = _loc1_; + BindingManager.executeBindings(this,"moveUp",this.moveUp); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_SimpleMotionPath1_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "y"; + _loc1_.valueFrom = 105; + _loc1_.valueTo = 5; + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_SimpleMotionPath2_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "alpha"; + _loc1_.valueFrom = 0; + _loc1_.valueTo = 1; + return _loc1_; + } + + public function __moveUp_effectStart(param1:EffectEvent) : void + { + this.hideFinishFlag = false; + this.yPad.mouseChildren = true; + } + + private function _CcComponentPropertyInspectorSpark_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.right = 15; + _loc1_.bottom = 27; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_anchor_init_png_804542717); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_anchor_over_png_770455653); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411); + _loc1_.addEventListener("click",this.__btnExtend_click); + _loc1_.id = "btnExtend"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnExtend = _loc1_; + BindingManager.executeBindings(this,"btnExtend",this.btnExtend); + return _loc1_; + } + + public function __btnExtend_click(param1:MouseEvent) : void + { + this.moveUp.play(); + } + + private function _CcComponentPropertyInspectorSpark_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.y = 105; + _loc1_.alpha = 0; + _loc1_.mouseChildren = false; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_Rect1_c(),this._CcComponentPropertyInspectorSpark_RectangularDropShadow1_i(),this._CcComponentPropertyInspectorSpark_IconButton2_i(),this._CcComponentPropertyInspectorSpark_HGroup1_i()]; + _loc1_.id = "yPad"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.yPad = _loc1_; + BindingManager.executeBindings(this,"yPad",this.yPad); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 280; + _loc1_.height = 101; + _loc1_.radiusX = 5; + _loc1_.radiusY = 5; + _loc1_.fill = this._CcComponentPropertyInspectorSpark_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 3355443; + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.45; + _loc1_.distance = 7; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.top = 5; + _loc1_.right = 5; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_panel_btn_close_init_png_1805605639); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_panel_btn_close_over_png_2000923769); + _loc1_.addEventListener("click",this.__btnClose_click); + _loc1_.id = "btnClose"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnClose = _loc1_; + BindingManager.executeBindings(this,"btnClose",this.btnClose); + return _loc1_; + } + + public function __btnClose_click(param1:MouseEvent) : void + { + this.startHide(); + } + + private function _CcComponentPropertyInspectorSpark_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.top = 15; + _loc1_.bottom = 15; + _loc1_.left = 15; + _loc1_.right = 15; + _loc1_.gap = 8; + _loc1_.horizontalAlign = "center"; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_VGroup4_c(),this._CcComponentPropertyInspectorSpark_VGroup5_c(),this._CcComponentPropertyInspectorSpark_DirectionControlSpark1_i()]; + _loc1_.id = "_CcComponentPropertyInspectorSpark_HGroup1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CcComponentPropertyInspectorSpark_HGroup1 = _loc1_; + BindingManager.executeBindings(this,"_CcComponentPropertyInspectorSpark_HGroup1",this._CcComponentPropertyInspectorSpark_HGroup1); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_VGroup1_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.gap = 8; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton3_i(),this._CcComponentPropertyInspectorSpark_IconButton4_i()]; + _loc1_.id = "_CcComponentPropertyInspectorSpark_VGroup1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CcComponentPropertyInspectorSpark_VGroup1 = _loc1_; + BindingManager.executeBindings(this,"_CcComponentPropertyInspectorSpark_VGroup1",this._CcComponentPropertyInspectorSpark_VGroup1); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton3_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_up_init_png_953104677); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653); + _loc1_.addEventListener("mouseDown",this.__btnScaleUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnScaleUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnScaleUp_mouseUp); + _loc1_.id = "btnScaleUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnScaleUp = _loc1_; + BindingManager.executeBindings(this,"btnScaleUp",this.btnScaleUp); + return _loc1_; + } + + public function __btnScaleUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnScaleUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnScaleUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_IconButton4_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_down_init_png_60286471); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_down_over_png_545719943); + _loc1_.addEventListener("mouseDown",this.__btnScaleDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnScaleDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnScaleDown_mouseUp); + _loc1_.id = "btnScaleDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnScaleDown = _loc1_; + BindingManager.executeBindings(this,"btnScaleDown",this.btnScaleDown); + return _loc1_; + } + + public function __btnScaleDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnScaleDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnScaleDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_VGroup2_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.gap = 8; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton5_i(),this._CcComponentPropertyInspectorSpark_IconButton6_i()]; + _loc1_.id = "_CcComponentPropertyInspectorSpark_VGroup2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CcComponentPropertyInspectorSpark_VGroup2 = _loc1_; + BindingManager.executeBindings(this,"_CcComponentPropertyInspectorSpark_VGroup2",this._CcComponentPropertyInspectorSpark_VGroup2); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton5_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883); + _loc1_.addEventListener("mouseDown",this.__btnXScaleUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnXScaleUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnXScaleUp_mouseUp); + _loc1_.id = "btnXScaleUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnXScaleUp = _loc1_; + BindingManager.executeBindings(this,"btnXScaleUp",this.btnXScaleUp); + return _loc1_; + } + + public function __btnXScaleUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnXScaleUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnXScaleUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_IconButton6_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499); + _loc1_.addEventListener("mouseDown",this.__btnXScaleDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnXScaleDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnXScaleDown_mouseUp); + _loc1_.id = "btnXScaleDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnXScaleDown = _loc1_; + BindingManager.executeBindings(this,"btnXScaleDown",this.btnXScaleDown); + return _loc1_; + } + + public function __btnXScaleDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnXScaleDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnXScaleDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_VGroup3_i() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.gap = 8; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton7_i(),this._CcComponentPropertyInspectorSpark_IconButton8_i()]; + _loc1_.id = "_CcComponentPropertyInspectorSpark_VGroup3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CcComponentPropertyInspectorSpark_VGroup3 = _loc1_; + BindingManager.executeBindings(this,"_CcComponentPropertyInspectorSpark_VGroup3",this._CcComponentPropertyInspectorSpark_VGroup3); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton7_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231); + _loc1_.addEventListener("mouseDown",this.__btnYScaleUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnYScaleUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnYScaleUp_mouseUp); + _loc1_.id = "btnYScaleUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnYScaleUp = _loc1_; + BindingManager.executeBindings(this,"btnYScaleUp",this.btnYScaleUp); + return _loc1_; + } + + public function __btnYScaleUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnYScaleUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnYScaleUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_IconButton8_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387); + _loc1_.addEventListener("mouseDown",this.__btnYScaleDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnYScaleDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnYScaleDown_mouseUp); + _loc1_.id = "btnYScaleDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnYScaleDown = _loc1_; + BindingManager.executeBindings(this,"btnYScaleDown",this.btnYScaleDown); + return _loc1_; + } + + public function __btnYScaleDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnYScaleDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnYScaleDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_VGroup4_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.gap = 8; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton9_i(),this._CcComponentPropertyInspectorSpark_IconButton10_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton9_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985); + _loc1_.addEventListener("mouseDown",this.__btnRotateUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnRotateUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnRotateUp_mouseUp); + _loc1_.id = "btnRotateUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnRotateUp = _loc1_; + BindingManager.executeBindings(this,"btnRotateUp",this.btnRotateUp); + return _loc1_; + } + + public function __btnRotateUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnRotateUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnRotateUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_IconButton10_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171); + _loc1_.addEventListener("mouseDown",this.__btnRotateDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnRotateDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnRotateDown_mouseUp); + _loc1_.id = "btnRotateDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnRotateDown = _loc1_; + BindingManager.executeBindings(this,"btnRotateDown",this.btnRotateDown); + return _loc1_; + } + + public function __btnRotateDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnRotateDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnRotateDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_VGroup5_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.gap = 8; + _loc1_.mxmlContent = [this._CcComponentPropertyInspectorSpark_IconButton11_i(),this._CcComponentPropertyInspectorSpark_IconButton12_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_IconButton11_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_closer_init_png_159598407); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_closer_over_png_1861461063); + _loc1_.addEventListener("mouseDown",this.__btnOffsetUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnOffsetUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnOffsetUp_mouseUp); + _loc1_.id = "btnOffsetUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnOffsetUp = _loc1_; + BindingManager.executeBindings(this,"btnOffsetUp",this.btnOffsetUp); + return _loc1_; + } + + public function __btnOffsetUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnOffsetUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnOffsetUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_IconButton12_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_wider_init_png_850996167); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_wider_over_png_867826631); + _loc1_.addEventListener("mouseDown",this.__btnOffsetDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnOffsetDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnOffsetDown_mouseUp); + _loc1_.id = "btnOffsetDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnOffsetDown = _loc1_; + BindingManager.executeBindings(this,"btnOffsetDown",this.btnOffsetDown); + return _loc1_; + } + + public function __btnOffsetDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnOffsetDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnOffsetDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _CcComponentPropertyInspectorSpark_DirectionControlSpark1_i() : DirectionControlSpark + { + var _loc1_:DirectionControlSpark = new DirectionControlSpark(); + _loc1_.verticalCenter = 0; + _loc1_.right = 0; + _loc1_.id = "bgCross"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.bgCross = _loc1_; + BindingManager.executeBindings(this,"bgCross",this.bgCross); + return _loc1_; + } + + private function _CcComponentPropertyInspectorSpark_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,null,null,"moveUp.target","yPad"); + result[1] = new Binding(this,null,null,"moveDown.target","yPad"); + result[2] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Fine-tune size and position"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnExtend.label"); + result[3] = new Binding(this,function():Number + { + return (this.width - yPad.width) / 2; + },null,"yPad.x"); + result[4] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Close"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnClose.label"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _CcComponentPropertyInspectorSpark_HGroup1() : HGroup + { + return this._760107692_CcComponentPropertyInspectorSpark_HGroup1; + } + + public function set _CcComponentPropertyInspectorSpark_HGroup1(param1:HGroup) : void + { + var _loc2_:Object = this._760107692_CcComponentPropertyInspectorSpark_HGroup1; + if(_loc2_ !== param1) + { + this._760107692_CcComponentPropertyInspectorSpark_HGroup1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_CcComponentPropertyInspectorSpark_HGroup1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get bgCross() : DirectionControlSpark + { + return this._204767493bgCross; + } + + public function set bgCross(param1:DirectionControlSpark) : void + { + var _loc2_:Object = this._204767493bgCross; + if(_loc2_ !== param1) + { + this._204767493bgCross = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bgCross",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnClose() : IconButton + { + return this._2082343164btnClose; + } + + public function set btnClose(param1:IconButton) : void + { + var _loc2_:Object = this._2082343164btnClose; + if(_loc2_ !== param1) + { + this._2082343164btnClose = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnClose",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnExtend() : IconButton + { + return this._196605078btnExtend; + } + + public function set btnExtend(param1:IconButton) : void + { + var _loc2_:Object = this._196605078btnExtend; + if(_loc2_ !== param1) + { + this._196605078btnExtend = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnExtend",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnOffsetDown() : IconButton + { + return this._349934417btnOffsetDown; + } + + public function set btnOffsetDown(param1:IconButton) : void + { + var _loc2_:Object = this._349934417btnOffsetDown; + if(_loc2_ !== param1) + { + this._349934417btnOffsetDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnOffsetDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnOffsetUp() : IconButton + { + return this._1023827210btnOffsetUp; + } + + public function set btnOffsetUp(param1:IconButton) : void + { + var _loc2_:Object = this._1023827210btnOffsetUp; + if(_loc2_ !== param1) + { + this._1023827210btnOffsetUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnOffsetUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnRotateDown() : IconButton + { + return this._923101209btnRotateDown; + } + + public function set btnRotateDown(param1:IconButton) : void + { + var _loc2_:Object = this._923101209btnRotateDown; + if(_loc2_ !== param1) + { + this._923101209btnRotateDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnRotateDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnRotateUp() : IconButton + { + return this._1739506642btnRotateUp; + } + + public function set btnRotateUp(param1:IconButton) : void + { + var _loc2_:Object = this._1739506642btnRotateUp; + if(_loc2_ !== param1) + { + this._1739506642btnRotateUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnRotateUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnScaleDown() : IconButton + { + return this._1756165648btnScaleDown; + } + + public function set btnScaleDown(param1:IconButton) : void + { + var _loc2_:Object = this._1756165648btnScaleDown; + if(_loc2_ !== param1) + { + this._1756165648btnScaleDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnScaleDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnScaleUp() : IconButton + { + return this._721380233btnScaleUp; + } + + public function set btnScaleUp(param1:IconButton) : void + { + var _loc2_:Object = this._721380233btnScaleUp; + if(_loc2_ !== param1) + { + this._721380233btnScaleUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnScaleUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnXScaleDown() : IconButton + { + return this._978900240btnXScaleDown; + } + + public function set btnXScaleDown(param1:IconButton) : void + { + var _loc2_:Object = this._978900240btnXScaleDown; + if(_loc2_ !== param1) + { + this._978900240btnXScaleDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnXScaleDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnXScaleUp() : IconButton + { + return this._255766423btnXScaleUp; + } + + public function set btnXScaleUp(param1:IconButton) : void + { + var _loc2_:Object = this._255766423btnXScaleUp; + if(_loc2_ !== param1) + { + this._255766423btnXScaleUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnXScaleUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnYScaleDown() : IconButton + { + return this._1175413745btnYScaleDown; + } + + public function set btnYScaleDown(param1:IconButton) : void + { + var _loc2_:Object = this._1175413745btnYScaleDown; + if(_loc2_ !== param1) + { + this._1175413745btnYScaleDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnYScaleDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnYScaleUp() : IconButton + { + return this._1487043912btnYScaleUp; + } + + public function set btnYScaleUp(param1:IconButton) : void + { + var _loc2_:Object = this._1487043912btnYScaleUp; + if(_loc2_ !== param1) + { + this._1487043912btnYScaleUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnYScaleUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveDown() : Animate + { + return this._104889325moveDown; + } + + public function set moveDown(param1:Animate) : void + { + var _loc2_:Object = this._104889325moveDown; + if(_loc2_ !== param1) + { + this._104889325moveDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveUp() : Animate + { + return this._1068263860moveUp; + } + + public function set moveUp(param1:Animate) : void + { + var _loc2_:Object = this._1068263860moveUp; + if(_loc2_ !== param1) + { + this._1068263860moveUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get yPad() : Group + { + return this._3684698yPad; + } + + public function set yPad(param1:Group) : void + { + var _loc2_:Object = this._3684698yPad; + if(_loc2_ !== param1) + { + this._3684698yPad = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"yPad",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411.as new file mode 100644 index 0000000..50c4349 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_disabled_png_1132750411() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717.as new file mode 100644 index 0000000..a8dfe5d --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_init_png_804542717() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653.as new file mode 100644 index 0000000..af3eb8a --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_anchor_over_png_770455653() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.as new file mode 100644 index 0000000..3fd89cb --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_init_png_159598407() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063.as new file mode 100644 index 0000000..b165a61 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_closer_over_png_1861461063() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.as new file mode 100644 index 0000000..7eb757f --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_init_png_545166073() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985.as new file mode 100644 index 0000000..f9d28d1 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_left_over_png_1871588985() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.as new file mode 100644 index 0000000..51df254 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_init_png_884865483() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171.as new file mode 100644 index 0000000..d364537 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_rotate_right_over_png_934815171() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471.as new file mode 100644 index 0000000..aeb2601 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_init_png_60286471() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.as new file mode 100644 index 0000000..99efe94 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_over_png_545719943() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339.as new file mode 100644 index 0000000..ffd3410 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_init_png_928933339() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.as new file mode 100644 index 0000000..7dced9a --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_x_over_png_859906499() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.as new file mode 100644 index 0000000..cea66f1 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_init_png_927008027() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.as new file mode 100644 index 0000000..0d42f85 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_down_y_over_png_884736387() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677.as new file mode 100644 index 0000000..a0199c5 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_init_png_953104677() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653.as new file mode 100644 index 0000000..5e80f97 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_over_png_1478670653() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387.as new file mode 100644 index 0000000..900c609 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_init_png_456549387() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.as new file mode 100644 index 0000000..1a94224 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_x_over_png_524746883() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.as new file mode 100644 index 0000000..79fb2a9 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_init_png_591857223() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.as new file mode 100644 index 0000000..f24dc51 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_scale_up_y_over_png_56092231() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167.as new file mode 100644 index 0000000..3596751 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_init_png_850996167() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631.as new file mode 100644 index 0000000..82b39c4 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_details_btn_wider_over_png_867826631() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as new file mode 100644 index 0000000..4eb8698 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as new file mode 100644 index 0000000..b0e5389 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769 extends BitmapAsset + { + + + public function CcComponentPropertyInspectorSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentThumbDetailThumbnail.as b/scripts/anifire/creator/components/CcComponentThumbDetailThumbnail.as new file mode 100644 index 0000000..d01e6c1 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentThumbDetailThumbnail.as @@ -0,0 +1,296 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcComponentThumbnailMouseEvent; + import anifire.creator.models.CcComponentThumb; + import anifire.util.UtilDict; + import flash.display.Stage; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.events.MouseEvent; + import flash.geom.Point; + import flash.geom.Rectangle; + import mx.containers.Canvas; + import mx.containers.VBox; + import mx.controls.Label; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + public class CcComponentThumbDetailThumbnail extends VBox + { + + + private var _1074110575componentThumbnail:CcComponentThumbThumbnail; + + private var _1213926835goBuckPoint:Label; + + private var _1794379940thumbnailDetailContainer:Canvas; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + public var componentThumb:CcComponentThumb = null; + + private var thumbnailWidth:Number; + + private var thumbnailHeight:Number; + + private var bgStyleName:String; + + private var moneyMode:int; + + public var _componentType:String; + + public var ccComponentThumbThumbnail:CcComponentThumbThumbnail; + + public function CcComponentThumbDetailThumbnail() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":VBox, + "stylesFactory":function():void + { + this.verticalGap = 2; + }, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":CcComponentThumbThumbnail, + "id":"componentThumbnail" + }),new UIComponentDescriptor({ + "type":Canvas, + "id":"thumbnailDetailContainer", + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":Label, + "id":"goBuckPoint", + "propertiesFactory":function():Object + { + return { + "x":10, + "styleName":"lblComponentThumbGoPoint" + }; + } + })]}; + } + })]}; + } + }); + super(); + mx_internal::_document = this; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + var factory:IFlexModuleFactory = param1; + super.moduleFactory = factory; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + if(!this.styleDeclaration) + { + this.styleDeclaration = new CSSStyleDeclaration(null,styleManager); + } + this.styleDeclaration.defaultFactory = function():void + { + this.verticalGap = 2; + }; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function get componentType() : String + { + return this._componentType; + } + + public function get isNullThumbnail() : Boolean + { + return this.componentThumb == null?true:false; + } + + public function showGoBuck(param1:Boolean) : void + { + this.thumbnailDetailContainer.visible = param1; + } + + public function initNullThumbnail(param1:CcComponentThumbThumbnail, param2:Number, param3:Number, param4:String, param5:String, param6:int) : void + { + this.commonInit(param1,param2,param3,null,param4,param5,param6); + } + + public function init(param1:CcComponentThumbThumbnail, param2:Number, param3:Number, param4:CcComponentThumb, param5:String, param6:int) : void + { + this.commonInit(param1,param2,param3,param4,param4.type,param5,param6); + } + + private function commonInit(param1:CcComponentThumbThumbnail, param2:Number, param3:Number, param4:CcComponentThumb, param5:String, param6:String, param7:int) : void + { + this.componentThumb = param4; + this.thumbnailWidth = param2; + this.thumbnailHeight = param3; + this._componentType = param5; + this.moneyMode = param7; + this.setBgStyleName(param6); + this.ccComponentThumbThumbnail = param1; + if(this.initialized) + { + this.uiComponentInit(); + } + else + { + this.addEventListener(FlexEvent.CREATION_COMPLETE,this.doUiComponentInit); + } + } + + public function startMouseOutChecking(param1:Stage) : void + { + param1.addEventListener(MouseEvent.MOUSE_MOVE,this.onStageMouseMove); + } + + private function endMouseEndChecking(param1:Stage) : void + { + param1.removeEventListener(MouseEvent.MOUSE_MOVE,this.onStageMouseMove); + } + + private function onStageMouseMove(param1:MouseEvent) : void + { + var _loc4_:CcComponentThumbnailMouseEvent = null; + var _loc2_:Point = this.globalToLocal(new Point(param1.stageX,param1.stageY)); + var _loc3_:Rectangle = this.getRect(this); + if(_loc2_.x < _loc3_.left || _loc2_.x > _loc3_.right || _loc2_.y < _loc3_.top || _loc2_.y > _loc3_.bottom) + { + _loc4_ = new CcComponentThumbnailMouseEvent(CcComponentThumbnailMouseEvent.MOUSE_REALLY_OUT,this); + this.dispatchEvent(_loc4_); + this.endMouseEndChecking(param1.currentTarget as Stage); + } + } + + private function doUiComponentInit(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doUiComponentInit); + this.uiComponentInit(); + } + + private function uiComponentInit() : void + { + if(this.isNullThumbnail) + { + this.componentThumbnail.initNullThumbnail(this,this.thumbnailWidth,this.thumbnailHeight,this.componentType); + } + else + { + this.componentThumbnail.init(this,this.thumbnailWidth,this.thumbnailHeight,this.componentThumb); + } + if(this.moneyMode != CcLibConstant.MONEY_MODE_SCHOOL) + { + this.thumbnailDetailContainer.width = this.thumbnailWidth; + this.thumbnailDetailContainer.height = CcLibConstant.COMPONENT_THUMB_CHOOSER_DETAIL_PART_HEIGHT; + if(this.isNullThumbnail) + { + this.goBuckPoint.text = UtilDict.toDisplay("cc","cc_keyword_free"); + } + else if(this.moneyMode != CcLibConstant.MONEY_MODE_NORMAL) + { + this.goBuckPoint.text = UtilDict.toDisplay("cc","cc_keyword_free"); + } + else if(this.componentThumb.money > 0) + { + this.goBuckPoint.text = this.componentThumb.money.toString(); + } + else if(this.componentThumb.sharingPoint > 0) + { + this.goBuckPoint.text = this.componentThumb.sharingPoint.toString(); + } + else + { + this.goBuckPoint.text = UtilDict.toDisplay("cc","cc_keyword_free"); + } + } + else + { + this.thumbnailDetailContainer.visible = false; + } + } + + public function setBgStyleName(param1:String) : void + { + this.bgStyleName = param1; + if(this.componentThumbnail != null) + { + this.componentThumbnail.setBgStyleName(this.bgStyleName); + } + } + + public function getZoomCenterPosition() : Point + { + return new Point(this.thumbnailWidth / 2,this.thumbnailHeight / 2); + } + + [Bindable(event="propertyChange")] + public function get componentThumbnail() : CcComponentThumbThumbnail + { + return this._1074110575componentThumbnail; + } + + public function set componentThumbnail(param1:CcComponentThumbThumbnail) : void + { + var _loc2_:Object = this._1074110575componentThumbnail; + if(_loc2_ !== param1) + { + this._1074110575componentThumbnail = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"componentThumbnail",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get goBuckPoint() : Label + { + return this._1213926835goBuckPoint; + } + + public function set goBuckPoint(param1:Label) : void + { + var _loc2_:Object = this._1213926835goBuckPoint; + if(_loc2_ !== param1) + { + this._1213926835goBuckPoint = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"goBuckPoint",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get thumbnailDetailContainer() : Canvas + { + return this._1794379940thumbnailDetailContainer; + } + + public function set thumbnailDetailContainer(param1:Canvas) : void + { + var _loc2_:Object = this._1794379940thumbnailDetailContainer; + if(_loc2_ !== param1) + { + this._1794379940thumbnailDetailContainer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumbnailDetailContainer",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CcComponentThumbThumbnail.as b/scripts/anifire/creator/components/CcComponentThumbThumbnail.as new file mode 100644 index 0000000..3480687 --- /dev/null +++ b/scripts/anifire/creator/components/CcComponentThumbThumbnail.as @@ -0,0 +1,386 @@ +package anifire.creator.components +{ + import anifire.constant.CcServerConstant; + import anifire.creator.events.CcComponentLoadEvent; + import anifire.creator.events.CcComponentThumbnailMouseEvent; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.util.UtilColor; + import flash.display.DisplayObject; + import flash.display.Loader; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.events.MouseEvent; + import mx.containers.Canvas; + import mx.controls.Button; + import mx.controls.Label; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponent; + import mx.core.UIComponentDescriptor; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + public class CcComponentThumbThumbnail extends Canvas + { + + + private var _1378836465btnDel:Button; + + private var _2097929434btnThumb:Button; + + private var _951543133control:Canvas; + + private var _1905040139thumbnailContainer:Canvas; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private const THUMBNAIL_SIZE:Number = 60; + + public var componentThumb:CcComponentThumb = null; + + private var targetWidth:Number; + + private var targetHeight:Number; + + private var loader:Loader; + + private var moneyMode:int; + + private var bgStyleName:String; + + public var componentThumbDetailThumbnail:CcComponentThumbDetailThumbnail; + + public var componentType:String; + + public var component:CcComponent; + + public function CcComponentThumbThumbnail() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":Button, + "id":"btnThumb", + "events":{"initialize":"__btnThumb_initialize"}, + "propertiesFactory":function():Object + { + return { + "x":0, + "y":0 + }; + } + }),new UIComponentDescriptor({ + "type":Canvas, + "id":"control", + "events":{"creationComplete":"__control_creationComplete"}, + "propertiesFactory":function():Object + { + return { + "x":0, + "y":0, + "visible":false, + "clipContent":false, + "childDescriptors":[new UIComponentDescriptor({ + "type":Button, + "id":"btnDel", + "events":{ + "click":"__btnDel_click", + "mouseOver":"__btnDel_mouseOver", + "mouseOut":"__btnDel_mouseOut" + }, + "propertiesFactory":function():Object + { + return { + "styleName":"btnDelDec", + "y":-5, + "width":10, + "height":10 + }; + } + })] + }; + } + }),new UIComponentDescriptor({ + "type":Canvas, + "id":"thumbnailContainer", + "propertiesFactory":function():Object + { + return { + "x":0, + "y":0, + "clipContent":false + }; + } + })]}; + } + }); + super(); + mx_internal::_document = this; + this.clipContent = false; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function get isNullComponent() : Boolean + { + return this.componentThumb == null?true:false; + } + + public function init(param1:CcComponentThumbDetailThumbnail, param2:Number, param3:Number, param4:CcComponentThumb) : void + { + if(this.thumbnailContainer != null) + { + this.thumbnailContainer.removeAllChildren(); + } + this.componentThumb = param4; + this.componentType = this.componentThumb.type; + this.targetWidth = param2; + this.targetHeight = param3; + this.componentThumbDetailThumbnail = param1; + this.moneyMode = this.moneyMode; + this.width = this.targetWidth; + this.height = this.targetHeight; + this.componentThumb.addEventListener(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this.onThumbnailLoadFromNetwork); + this.componentThumb.loadThumbnailImageData(); + } + + public function initNullThumbnail(param1:CcComponentThumbDetailThumbnail, param2:Number, param3:Number, param4:String) : void + { + if(this.thumbnailContainer != null) + { + this.thumbnailContainer.removeAllChildren(); + } + this.componentThumb = null; + this.componentType = param4; + this.targetWidth = param2; + this.targetHeight = param3; + this.componentThumbDetailThumbnail = param1; + this.width = this.targetWidth; + this.height = this.targetHeight; + } + + public function setBgStyleName(param1:String) : void + { + this.bgStyleName = param1; + if(this.btnThumb != null) + { + this.btnThumb.styleName = param1; + } + } + + private function onNullThumbnailReady(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onNullThumbnailReady); + var _loc2_:DisplayObject = param1.target as DisplayObject; + this.placeThumbnail(_loc2_); + } + + private function onThumbnailLoadFromNetwork(param1:CcComponentLoadEvent) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onThumbnailLoadFromNetwork); + this.loader = new Loader(); + this.loader.mouseChildren = false; + this.loader.mouseEnabled = false; + this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onThumbImageDataLoadByteComplete); + this.loader.loadBytes(this.componentThumb.thumbnailImageData); + } + + private function onThumbImageDataLoadByteComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onThumbImageDataLoadByteComplete); + this.placeThumbnail(this.loader); + } + + private function placeThumbnail(param1:DisplayObject) : void + { + var _loc3_:Canvas = null; + var _loc4_:Label = null; + param1.scaleX = -1; + param1.x = 1 * this.THUMBNAIL_SIZE; + var _loc2_:UIComponent = new UIComponent(); + if(CcServerConstant.displayThumbnailId()) + { + _loc3_ = new Canvas(); + _loc3_.styleName = "thumbnailIdBackdrop"; + _loc3_.width = this.THUMBNAIL_SIZE - 2; + _loc3_.x = _loc3_.y = 1; + _loc4_ = new Label(); + _loc4_.text = this.componentThumb.componentId.replace(/^.*_/,""); + _loc4_.percentHeight = _loc4_.percentWidth = 100; + _loc4_.styleName = "thumbnailId"; + _loc3_.addChild(_loc4_); + } + _loc2_.addChild(param1); + this.thumbnailContainer.addChild(_loc2_); + if(CcServerConstant.displayThumbnailId()) + { + this.thumbnailContainer.addChild(_loc3_); + } + } + + private function drawControlBg() : void + { + this.control.graphics.clear(); + this.control.graphics.lineStyle(2,16744749); + this.control.graphics.beginFill(13421772,1); + this.control.graphics.moveTo(0,0); + this.control.graphics.lineTo(0,this.height); + this.control.graphics.lineTo(this.width,this.height); + this.control.graphics.lineTo(this.width,10); + this.drawMyCircle(this.control,10,this.width,0); + this.control.graphics.lineTo(0,0); + this.control.graphics.endFill(); + } + + private function onReleaseDelete() : void + { + var _loc1_:CcComponentThumbnailMouseEvent = new CcComponentThumbnailMouseEvent(CcComponentThumbnailMouseEvent.DELETE_RELEASED,this); + this.dispatchEvent(_loc1_); + } + + private function drawMyCircle(param1:Sprite, param2:Number, param3:Number, param4:Number) : void + { + param1.graphics.curveTo(0.4142 * param2 + param3,param2 + param4,0.7071 * param2 + param3,0.7071 * param2 + param4); + param1.graphics.curveTo(param2 + param3,0.4142 * param2 + param4,param2 + param3,param4); + param1.graphics.curveTo(param2 + param3,-0.4142 * param2 + param4,0.7071 * param2 + param3,-0.7071 * param2 + param4); + param1.graphics.curveTo(0.4142 * param2 + param3,-param2 + param4,param3,-param2 + param4); + param1.graphics.curveTo(-0.4142 * param2 + param3,-param2 + param4,-0.7071 * param2 + param3,-0.7071 * param2 + param4); + param1.graphics.curveTo(-param2 + param3,-0.4142 * param2 + param4,-param2 + param3,param4); + } + + private function onOverDel() : void + { + UtilColor.setRGB(this.btnDel,16744749); + } + + private function onOutDel() : void + { + UtilColor.setRGB(this.btnDel); + } + + public function __btnThumb_initialize(param1:FlexEvent) : void + { + this.btnThumb.styleName = this.bgStyleName; + this.btnThumb.width = this.targetWidth; + this.btnThumb.height = this.targetHeight; + } + + public function __control_creationComplete(param1:FlexEvent) : void + { + this.control.width = this.targetWidth; + this.control.height = this.targetHeight; + this.btnDel.x = this.control.width - this.btnDel.width / 2; + this.drawControlBg(); + } + + public function __btnDel_click(param1:MouseEvent) : void + { + this.onReleaseDelete(); + } + + public function __btnDel_mouseOver(param1:MouseEvent) : void + { + this.onOverDel(); + } + + public function __btnDel_mouseOut(param1:MouseEvent) : void + { + this.onOutDel(); + } + + [Bindable(event="propertyChange")] + public function get btnDel() : Button + { + return this._1378836465btnDel; + } + + public function set btnDel(param1:Button) : void + { + var _loc2_:Object = this._1378836465btnDel; + if(_loc2_ !== param1) + { + this._1378836465btnDel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnDel",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnThumb() : Button + { + return this._2097929434btnThumb; + } + + public function set btnThumb(param1:Button) : void + { + var _loc2_:Object = this._2097929434btnThumb; + if(_loc2_ !== param1) + { + this._2097929434btnThumb = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnThumb",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get control() : Canvas + { + return this._951543133control; + } + + public function set control(param1:Canvas) : void + { + var _loc2_:Object = this._951543133control; + if(_loc2_ !== param1) + { + this._951543133control = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"control",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get thumbnailContainer() : Canvas + { + return this._1905040139thumbnailContainer; + } + + public function set thumbnailContainer(param1:Canvas) : void + { + var _loc2_:Object = this._1905040139thumbnailContainer; + if(_loc2_ !== param1) + { + this._1905040139thumbnailContainer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumbnailContainer",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CharPreviewOption.as b/scripts/anifire/creator/components/CharPreviewOption.as new file mode 100644 index 0000000..58ad068 --- /dev/null +++ b/scripts/anifire/creator/components/CharPreviewOption.as @@ -0,0 +1,479 @@ +package anifire.creator.components +{ + import anifire.creator.events.CcActionChosenEvent; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.models.CcAction; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcFacial; + import anifire.creator.models.CcRequireComponent; + import anifire.creator.models.CcTheme; + import anifire.creator.skins.ActionDropDownListSkin; + import anifire.util.UtilDict; + import flash.events.Event; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayCollection; + import mx.collections.ICollectionView; + import mx.collections.IViewCursor; + import mx.collections.Sort; + import mx.collections.SortField; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import spark.components.DropDownList; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Label; + import spark.events.IndexChangeEvent; + import spark.layouts.VerticalLayout; + + use namespace mx_internal; + + public class CharPreviewOption extends Group implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _CharPreviewOption_Label1:Label; + + public var _CharPreviewOption_Label2:Label; + + private var _1033188906acitonList:DropDownList; + + private var _223341834facialList:DropDownList; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function CharPreviewOption() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._CharPreviewOption_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_CharPreviewOptionWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return CharPreviewOption[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.mxmlContent = [this._CharPreviewOption_HGroup1_c()]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + CharPreviewOption._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function creationcomplete(param1:Event) : void + { + } + + public function init(param1:CcCharacter, param2:CcTheme) : void + { + var _loc11_:CcAction = null; + var _loc12_:String = null; + var _loc13_:CcFacial = null; + var _loc3_:Number = param1.bodyShape.getActionNum(); + var _loc4_:ArrayCollection = new ArrayCollection(); + _loc4_.disableAutoUpdate(); + var _loc5_:int = 0; + while(_loc5_ < _loc3_) + { + _loc11_ = param1.bodyShape.getActionByIndex(_loc5_); + if(_loc11_.requireComponents.length <= 0 || this.checkIfRequiredComponentExist(param1,_loc11_.requireComponents)) + { + if(_loc11_.enable) + { + _loc12_ = _loc11_.name; + if(_loc11_.group) + { + _loc12_ = _loc11_.group; + } + else if(_loc11_.category) + { + _loc12_ = _loc11_.category + " - " + _loc12_; + } + _loc4_.addItem({ + "label":UtilDict.toDisplay("store",_loc12_), + "data":_loc11_.id + }); + } + } + _loc5_++; + } + var _loc6_:Number = param2.getFacialNum(); + var _loc7_:ArrayCollection = new ArrayCollection(); + _loc7_.disableAutoUpdate(); + var _loc8_:int = 0; + while(_loc8_ < _loc6_) + { + _loc13_ = param2.getFacialByIndex(_loc8_); + if(_loc13_.requireComponents.length <= 0 || this.checkIfRequiredComponentExist(param1,_loc13_.requireComponents)) + { + _loc7_.addItem({ + "label":UtilDict.toDisplay("store",_loc13_.name), + "data":_loc13_.facialId + }); + } + _loc8_++; + } + var _loc9_:SortField = new SortField(); + _loc9_.name = "label"; + _loc9_.caseInsensitive = true; + var _loc10_:Sort = new Sort(); + _loc10_.fields = [_loc9_]; + _loc4_.sort = _loc10_; + _loc4_.refresh(); + _loc7_.sort = _loc10_; + _loc7_.refresh(); + _loc4_.enableAutoUpdate(); + _loc7_.enableAutoUpdate(); + this.acitonList.dataProvider = _loc4_; + this.facialList.dataProvider = _loc7_; + this.acitonList.validateNow(); + this.facialList.validateNow(); + } + + private function checkIfRequiredComponentExist(param1:CcCharacter, param2:Array) : Boolean + { + var _loc3_:int = 0; + var _loc4_:int = 0; + var _loc5_:Boolean = false; + var _loc6_:CcRequireComponent = null; + var _loc7_:Array = null; + var _loc8_:CcComponent = null; + var _loc9_:Boolean = false; + _loc3_ = 0; + while(true) + { + if(_loc3_ >= param2.length) + { + return true; + } + _loc6_ = param2[_loc3_] as CcRequireComponent; + _loc7_ = param1.getUserChosenComponentByComponentType(_loc6_.componentType); + if(_loc7_ == null || _loc7_.length <= 0) + { + return false; + } + _loc9_ = false; + _loc4_ = 0; + while(_loc4_ < _loc7_.length) + { + _loc8_ = _loc7_[_loc4_] as CcComponent; + if(_loc6_.componentIds.indexOf(_loc8_.componentThumb.componentId) >= 0) + { + _loc9_ = true; + break; + } + _loc4_++; + } + if(!_loc9_) + { + break; + } + _loc3_++; + } + return false; + } + + public function set action(param1:String) : void + { + var _loc2_:ICollectionView = this.acitonList.dataProvider as ICollectionView; + var _loc3_:IViewCursor = _loc2_.createCursor(); + while(!_loc3_.afterLast) + { + if(_loc3_.current.data == param1) + { + this.acitonList.selectedItem = _loc3_.current; + return; + } + _loc3_.moveNext(); + } + } + + public function set facial(param1:String) : void + { + var _loc2_:ICollectionView = this.facialList.dataProvider as ICollectionView; + var _loc3_:IViewCursor = _loc2_.createCursor(); + while(!_loc3_.afterLast) + { + if(_loc3_.current.data == param1) + { + this.facialList.selectedItem = _loc3_.current; + return; + } + _loc3_.moveNext(); + } + } + + public function set saveEnabled(param1:Boolean) : void + { + } + + private function actionSelected(param1:Event) : void + { + var _loc2_:CcActionChosenEvent = new CcActionChosenEvent(CcActionChosenEvent.ACTION_CHOSEN,this); + if(this.acitonList.selectedItem && this.facialList.selectedItem) + { + _loc2_.action_id = this.acitonList.selectedItem.data; + _loc2_.facial_id = this.facialList.selectedItem.data; + this.dispatchEvent(_loc2_); + } + } + + private function facialSelected(param1:Event) : void + { + var _loc2_:CcActionChosenEvent = new CcActionChosenEvent(CcActionChosenEvent.FACIAL_CHOSEN,this); + if(this.acitonList.selectedItem && this.facialList.selectedItem) + { + _loc2_.action_id = this.acitonList.selectedItem.data; + _loc2_.facial_id = this.facialList.selectedItem.data; + this.dispatchEvent(_loc2_); + } + } + + private function onSaveButtonClick() : void + { + var _loc1_:CcCoreEvent = new CcCoreEvent(CcCoreEvent.USER_WANT_TO_SAVE,this); + this.dispatchEvent(_loc1_); + } + + private function onModifyButtonClick(param1:Event = null) : void + { + var _loc2_:CcCoreEvent = new CcCoreEvent(CcCoreEvent.USER_WANT_TO_CANCEL,this); + this.dispatchEvent(_loc2_); + } + + private function _CharPreviewOption_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._CharPreviewOption_Label1_i(),this._CharPreviewOption_DropDownList1_i(),this._CharPreviewOption_Label2_i(),this._CharPreviewOption_DropDownList2_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _CharPreviewOption_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.right = 0; + _loc1_.top = 2; + _loc1_.bottom = 4; + _loc1_.width = 130; + _loc1_.setStyle("verticalAlign","middle"); + _loc1_.setStyle("paddingTop",6); + _loc1_.setStyle("color",5331305); + _loc1_.setStyle("fontWeight","bold"); + _loc1_.setStyle("fontSize",14); + _loc1_.setStyle("textAlign","right"); + _loc1_.id = "_CharPreviewOption_Label1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CharPreviewOption_Label1 = _loc1_; + BindingManager.executeBindings(this,"_CharPreviewOption_Label1",this._CharPreviewOption_Label1); + return _loc1_; + } + + private function _CharPreviewOption_DropDownList1_i() : DropDownList + { + var _loc1_:DropDownList = new DropDownList(); + _loc1_.buttonMode = true; + _loc1_.top = 10; + _loc1_.bottom = 5; + _loc1_.width = 300; + _loc1_.layout = this._CharPreviewOption_VerticalLayout1_c(); + _loc1_.setStyle("skinClass",ActionDropDownListSkin); + _loc1_.addEventListener("change",this.__acitonList_change); + _loc1_.id = "acitonList"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.acitonList = _loc1_; + BindingManager.executeBindings(this,"acitonList",this.acitonList); + return _loc1_; + } + + private function _CharPreviewOption_VerticalLayout1_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.requestedMaxRowCount = -1; + _loc1_.horizontalAlign = "contentJustify"; + _loc1_.gap = 0; + return _loc1_; + } + + public function __acitonList_change(param1:IndexChangeEvent) : void + { + this.actionSelected(param1); + } + + private function _CharPreviewOption_Label2_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.maxDisplayedLines = 1; + _loc1_.right = 0; + _loc1_.top = 2; + _loc1_.bottom = 4; + _loc1_.width = 130; + _loc1_.setStyle("verticalAlign","middle"); + _loc1_.setStyle("paddingTop",6); + _loc1_.setStyle("color",5331305); + _loc1_.setStyle("fontWeight","bold"); + _loc1_.setStyle("fontSize",14); + _loc1_.setStyle("textAlign","right"); + _loc1_.id = "_CharPreviewOption_Label2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._CharPreviewOption_Label2 = _loc1_; + BindingManager.executeBindings(this,"_CharPreviewOption_Label2",this._CharPreviewOption_Label2); + return _loc1_; + } + + private function _CharPreviewOption_DropDownList2_i() : DropDownList + { + var _loc1_:DropDownList = new DropDownList(); + _loc1_.buttonMode = true; + _loc1_.top = 10; + _loc1_.bottom = 5; + _loc1_.width = 200; + _loc1_.layout = this._CharPreviewOption_VerticalLayout2_c(); + _loc1_.setStyle("skinClass",ActionDropDownListSkin); + _loc1_.addEventListener("change",this.__facialList_change); + _loc1_.id = "facialList"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.facialList = _loc1_; + BindingManager.executeBindings(this,"facialList",this.facialList); + return _loc1_; + } + + private function _CharPreviewOption_VerticalLayout2_c() : VerticalLayout + { + var _loc1_:VerticalLayout = new VerticalLayout(); + _loc1_.requestedMaxRowCount = -1; + _loc1_.horizontalAlign = "contentJustify"; + _loc1_.gap = 0; + return _loc1_; + } + + public function __facialList_change(param1:IndexChangeEvent) : void + { + this.facialSelected(param1); + } + + private function _CharPreviewOption_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("cc","Action:"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"_CharPreviewOption_Label1.text"); + result[1] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("cc","Facial expression:"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"_CharPreviewOption_Label2.text"); + return result; + } + + [Bindable(event="propertyChange")] + public function get acitonList() : DropDownList + { + return this._1033188906acitonList; + } + + public function set acitonList(param1:DropDownList) : void + { + var _loc2_:Object = this._1033188906acitonList; + if(_loc2_ !== param1) + { + this._1033188906acitonList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"acitonList",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get facialList() : DropDownList + { + return this._223341834facialList; + } + + public function set facialList(param1:DropDownList) : void + { + var _loc2_:Object = this._223341834facialList; + if(_loc2_ !== param1) + { + this._223341834facialList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"facialList",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/CharPreviewer.as b/scripts/anifire/creator/components/CharPreviewer.as new file mode 100644 index 0000000..f39e352 --- /dev/null +++ b/scripts/anifire/creator/components/CharPreviewer.as @@ -0,0 +1,926 @@ +package anifire.creator.components +{ + import anifire.component.CustomCharacterMaker; + import anifire.constant.AnimeConstants; + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.constant.ThemeConstants; + import anifire.creator.events.CcCharPreviewerEvent; + import anifire.creator.events.CcComponentLoadEvent; + import anifire.creator.models.CcAction; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcColor; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcFacial; + import anifire.creator.models.CcLibrary; + import anifire.creator.models.CcSelection; + import anifire.creator.models.CcState; + import anifire.event.LoadEmbedMovieEvent; + import anifire.event.LoadMgrEvent; + import anifire.managers.AppConfigManager; + import anifire.managers.NativeCursorManager; + import anifire.util.ExtraDataLoader; + import anifire.util.UtilHashArray; + import anifire.util.UtilLicense; + import anifire.util.UtilLoadMgr; + import anifire.util.UtilNetwork; + import anifire.util.UtilPlain; + import flash.display.BitmapData; + import flash.display.DisplayObjectContainer; + import flash.display.LoaderInfo; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.IEventDispatcher; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.containers.Canvas; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponent; + import mx.core.UIComponentDescriptor; + import mx.core.mx_internal; + import mx.effects.Blur; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import nochump.util.zip.ZipFile; + + use namespace mx_internal; + + public class CharPreviewer extends Canvas implements IBindingClient + { + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + private static var _themeId:String; + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1282133823fadeIn:Blur; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var myUI:UIComponent; + + private const LOADER:String = "loader"; + + private var _customColor:UtilHashArray; + + private var _orgX:Number; + + private var _tarX:Number; + + private var _orgY:Number; + + private var _tarY:Number; + + private var _orgRatio:Number = 1; + + private var _zoomRatio:Number = 2; + + private var _orgHeight:Number = 240; + + private const MC:String = "MC"; + + private var _isBuilding:int = 0; + + private var _isRandom:Boolean = false; + + public var showFace:Boolean = false; + + private var _shouldPauseOnLoadByteComplete:Boolean = false; + + private var _charCanvasHeight:Number; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function CharPreviewer() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "events":{"creationComplete":"___CharPreviewer_Canvas1_creationComplete"}, + "propertiesFactory":function():Object + { + return {"width":300}; + } + }); + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._CharPreviewer_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_CharPreviewerWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return CharPreviewer[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 300; + this.verticalScrollPolicy = "off"; + this.clipContent = false; + this._CharPreviewer_Blur1_i(); + this.addEventListener("creationComplete",this.___CharPreviewer_Canvas1_creationComplete); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + private static function get themeId() : String + { + if(!_themeId) + { + _themeId = _configManager.getValue(ServerConstants.PARAM_THEME_ID); + } + return _themeId; + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + CharPreviewer._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function hide() : void + { + this.visible = false; + } + + public function get zoomRatio() : Number + { + return this._zoomRatio; + } + + public function set zoomRatio(param1:Number) : void + { + this._zoomRatio = param1; + } + + public function get charCanvasHeight() : Number + { + return this._charCanvasHeight; + } + + public function set charCanvasHeight(param1:Number) : void + { + this._charCanvasHeight = param1; + } + + public function get shouldPauseOnLoadBytesComplete() : Boolean + { + return this._shouldPauseOnLoadByteComplete; + } + + public function set shouldPauseOnLoadBytesComplete(param1:Boolean) : void + { + this._shouldPauseOnLoadByteComplete = param1; + } + + public function CharPreview() : void + { + this._customColor = new UtilHashArray(); + var _loc1_:CustomCharacterMaker = new CustomCharacterMaker(); + _loc1_.name = this.LOADER; + _loc1_.visible = false; + _loc1_.scaleX = -1; + this._orgX = this.width * 0.4; + this._orgY = this.height * 0.5; + this._tarX = this.width * 0.6; + this._tarY = this.height * 0.8; + this.myUI = new UIComponent(); + this.myUI.addChild(_loc1_); + this._orgRatio = CcLibConstant.DEFAULT_PREVIEW_SCALE; + this.addChild(this.myUI); + this.charCanvasHeight = this.height; + } + + private function loadCCCharComplete(param1:Event) : void + { + } + + public function initByCcChar(param1:CcCharacter, param2:String, param3:String = "") : void + { + var _loc9_:CcColor = null; + var _loc10_:CcLibrary = null; + var _loc11_:ExtraDataLoader = null; + var _loc12_:Object = null; + if(this._isBuilding != 1) + { + this._isBuilding = 1; + NativeCursorManager.instance.setBusyCursor(); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).destroy(); + this._isRandom = param1.isRandom; + param1.isRandom = false; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).ver = param1.ver; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).visible = false; + var _loc4_:Number = param1.getUserChosenColorNum(); + var _loc5_:int = 0; + while(_loc5_ < _loc4_) + { + _loc9_ = param1.getUserChosenColorByIndex(_loc5_); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).addColor(_loc9_.ccColorThumb.colorReference,_loc9_.ccColorThumb.originalColor,_loc9_.colorValue); + _loc5_++; + } + var _loc6_:Number = param1.getUserChosenLibraryNum(); + var _loc7_:UtilLoadMgr = new UtilLoadMgr(); + _loc7_.setExtraData({ + "ccChar":param1, + "actionId":param2, + "facialId":param3 + }); + _loc7_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onCompleteLibrary); + var _loc8_:int = 0; + while(_loc8_ < _loc6_) + { + _loc10_ = param1.getUserChosenLibraryByIndex(_loc8_); + if(_loc10_ != null) + { + _loc11_ = new ExtraDataLoader(); + _loc12_ = new Object(); + _loc12_["library"] = _loc10_; + _loc11_.extraData = _loc12_; + _loc7_.addEventDispatcher(_loc11_.contentLoaderInfo,Event.COMPLETE); + _loc11_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadLibrary); + _loc11_.load(UtilNetwork.getGetCcLibraryFileRequest(_loc10_.theme_id,_loc10_.type,_loc10_.component_id)); + } + _loc8_++; + } + _loc7_.commit(); + return; + } + } + + private function onLoadLibrary(param1:Event) : void + { + var _loc2_:LoaderInfo = LoaderInfo(param1.currentTarget); + var _loc3_:Object = ExtraDataLoader(_loc2_.loader).extraData; + var _loc4_:CcLibrary = CcLibrary(_loc3_["library"]); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).CCM.addStyle(_loc4_.type,_loc2_); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).addLibrary(_loc4_.type,_loc4_.component_id,""); + this.reloadCharSkin(); + } + + private function reloadCharSkin(param1:Event = null) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).reloadSkin(); + } + + private function onCompleteLibrary(param1:Event) : void + { + var _loc2_:UtilLoadMgr = param1.target as UtilLoadMgr; + var _loc3_:Object = _loc2_.getExtraData(); + this.initComponents(_loc3_["ccChar"],_loc3_["actionId"],_loc3_["facialId"]); + } + + private function initComponents(param1:CcCharacter, param2:String, param3:String = "") : void + { + var _loc5_:int = 0; + var _loc6_:CcComponent = null; + var _loc7_:UtilLoadMgr = null; + var _loc8_:CcAction = null; + var _loc9_:CcSelection = null; + var _loc10_:CcState = null; + var _loc11_:CcComponentThumb = null; + var _loc4_:Number = param1.getUserChosenComponentSize(); + while(_loc5_ < _loc4_) + { + _loc6_ = param1.getUserChosenComponentByIndex(_loc5_); + _loc7_ = new UtilLoadMgr(); + if(_loc6_ != null) + { + _loc8_ = param1.bodyShape.getActionById(param2); + if(_loc6_.componentThumb.type == CcLibConstant.COMPONENT_TYPE_FREEACTION) + { + _loc7_.setExtraData({ + "component":_loc6_, + "ccChar":param1, + "actionId":param2, + "facialId":param3 + }); + if(_loc8_.imageData == null) + { + _loc7_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onLoadSkeletonImageData); + _loc7_.addEventDispatcher(_loc8_,CcComponentLoadEvent.LOAD_ACTION_IMAGE_DATA_COMPLETE); + _loc8_.loadImageData(UtilNetwork.getGetCcComponentStateFileRequest(_loc6_.componentThumb.themeId,_loc6_.componentThumb.type,_loc6_.componentThumb.path,_loc8_.filename)); + } + else + { + _loc7_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onReadySkeleton); + this.changeComponent(_loc6_,param2,param3,param1,_loc7_); + } + } + else if(_loc6_.componentThumb.type == CcLibConstant.COMPONENT_TYPE_SKELETON) + { + _loc9_ = _loc8_.getSelectionByComponentType(_loc6_.componentThumb.type); + if(_loc9_ != null) + { + _loc10_ = _loc6_.componentThumb.getStateByStateId(_loc9_.stateId); + _loc11_ = _loc6_.componentThumb; + _loc7_.setExtraData({ + "component":_loc6_, + "ccChar":param1, + "actionId":param2, + "facialId":param3 + }); + if(_loc10_.imageData == null) + { + _loc7_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onLoadSkeletonImageData); + _loc7_.addEventDispatcher(_loc10_,CcComponentLoadEvent.LOAD_STATE_IMAGE_DATA_COMPLETE); + _loc10_.loadImageData(UtilNetwork.getGetCcComponentStateFileRequest(_loc6_.componentThumb.themeId,_loc6_.componentThumb.type,_loc6_.componentThumb.path,_loc10_.filename)); + } + else + { + _loc7_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onReadySkeleton); + this.changeComponent(_loc6_,param2,param3,param1,_loc7_); + } + } + } + } + _loc7_.commit(); + _loc5_++; + } + } + + public function switchLibrary(param1:CcComponent, param2:CcCharacter) : void + { + var _loc3_:CcLibrary = new CcLibrary(); + _loc3_.type = param1.componentThumb.type; + _loc3_.component_id = param1.componentThumb.componentId; + _loc3_.theme_id = param1.componentThumb.themeId; + var _loc4_:ExtraDataLoader = new ExtraDataLoader(); + var _loc5_:Object = new Object(); + _loc5_["library"] = _loc3_; + _loc4_.extraData = _loc5_; + _loc4_.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onLoadLibrary); + _loc4_.load(UtilNetwork.getGetCcLibraryFileRequest(_loc3_.theme_id,_loc3_.type,_loc3_.component_id)); + } + + public function switchComponent(param1:CcComponent, param2:CcCharacter, param3:String, param4:String = "") : void + { + var _loc5_:CcAction = null; + var _loc6_:CcSelection = null; + var _loc7_:CcState = null; + var _loc8_:CcFacial = null; + var _loc9_:CcSelection = null; + var _loc10_:CcSelection = null; + var _loc11_:CcComponentThumb = null; + var _loc12_:UtilLoadMgr = null; + if(param1 != null && param1.componentThumb.type != CcLibConstant.COMPONENT_TYPE_FREEACTION && param1.componentThumb.type != CcLibConstant.COMPONENT_TYPE_SKELETON && param1.componentThumb.type != CcLibConstant.COMPONENT_TYPE_BODYSHAPE) + { + _loc5_ = param2.bodyShape.getActionById(param3); + _loc6_ = _loc5_.getSelectionByComponentType(param1.componentThumb.type); + _loc7_ = null; + if(_loc6_ != null) + { + _loc7_ = param1.componentThumb.getStateByStateId(_loc6_.stateId); + } + else if(param4 == "") + { + _loc10_ = _loc5_.getSelectionByComponentType("facial"); + _loc8_ = param2.getFacialByFacialId(_loc10_.facialId); + _loc9_ = _loc8_.selections.getValueByKey(param1.componentThumb.type) as CcSelection; + _loc7_ = param1.componentThumb.getStateByStateId(_loc9_.stateId); + } + else + { + _loc8_ = param2.getFacialByFacialId(param4); + _loc9_ = _loc8_.selections.getValueByKey(param1.componentThumb.type) as CcSelection; + _loc7_ = param1.componentThumb.getStateByStateId(_loc9_.stateId); + } + if(_loc7_ != null) + { + _loc11_ = param1.componentThumb; + _loc12_ = new UtilLoadMgr(); + _loc12_.setExtraData({ + "component":param1, + "ccChar":param2, + "actionId":param3, + "facialId":param4 + }); + if(_loc7_.imageData == null) + { + _loc12_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onLoadStateImageData); + _loc12_.addEventDispatcher(_loc7_,CcComponentLoadEvent.LOAD_STATE_IMAGE_DATA_COMPLETE); + _loc7_.loadImageData(UtilNetwork.getGetCcComponentStateFileRequest(param1.componentThumb.themeId,param1.componentThumb.type,param1.componentThumb.path,_loc7_.filename)); + } + else + { + _loc12_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onReadyComponent); + this.changeComponent(param1,param3,param4,param2,_loc12_); + } + _loc12_.commit(); + } + } + } + + public function initByCcCharAfterSkeleton(param1:CcCharacter, param2:String, param3:String = "") : void + { + var _loc8_:int = 0; + var _loc9_:Sprite = null; + var _loc10_:CcComponent = null; + var _loc4_:DisplayObjectContainer = UtilPlain.getInstance(this.myUI,AnimeConstants.MOVIECLIP_DEFAULT_HEAD); + var _loc5_:Array = CcLibConstant.GET_COMPONENT_ORDER_IN_HEAD; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateBodyScale(param1.bodyScale.x,param1.bodyScale.y); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateHeadScale(param1.headScale.x,param1.headScale.y); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateHeadPos(param1.headShift.x,param1.headShift.y); + if(_loc4_ != null) + { + _loc8_ = 0; + while(_loc8_ < _loc5_.length) + { + _loc9_ = new Sprite(); + _loc9_.name = _loc5_[_loc8_] + this.MC; + _loc4_.addChild(_loc9_); + _loc8_++; + } + } + var _loc6_:Number = param1.getUserChosenComponentSize(); + var _loc7_:int = 0; + while(_loc7_ < _loc6_) + { + _loc10_ = param1.getUserChosenComponentByIndex(_loc7_); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(_loc10_.componentThumb.type) == -1) + { + this.switchComponent(_loc10_,param1,param2,param3); + } + _loc7_++; + } + } + + private function onLoadSkeletonImageData(param1:LoadMgrEvent) : void + { + var _loc2_:UtilLoadMgr = param1.target as UtilLoadMgr; + var _loc3_:Object = _loc2_.getExtraData(); + var _loc4_:UtilLoadMgr = new UtilLoadMgr(); + _loc4_.setExtraData(_loc3_); + _loc4_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onReadySkeleton); + this.changeComponent(_loc3_["component"],_loc3_["actionId"],_loc3_["facialId"],_loc3_["ccChar"],_loc4_); + _loc4_.commit(); + } + + private function onReadySkeleton(param1:LoadMgrEvent) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onReadySkeleton); + NativeCursorManager.instance.removeBusyCursor(); + var _loc2_:UtilLoadMgr = param1.target as UtilLoadMgr; + var _loc3_:Object = _loc2_.getExtraData(); + this.initByCcCharAfterSkeleton(_loc3_["ccChar"],_loc3_["actionId"],_loc3_["facialId"]); + } + + private function onLoadStateImageData(param1:LoadMgrEvent) : void + { + IEventDispatcher(param1.target).removeEventListener(param1.type,this.onLoadStateImageData); + var _loc2_:UtilLoadMgr = param1.target as UtilLoadMgr; + var _loc3_:Object = _loc2_.getExtraData(); + var _loc4_:UtilLoadMgr = new UtilLoadMgr(); + _loc4_.setExtraData(_loc3_); + _loc4_.addEventListener(LoadMgrEvent.ALL_COMPLETE,this.onReadyComponent); + this.changeComponent(_loc3_["component"],_loc3_["actionId"],_loc3_["facialId"],_loc3_["ccChar"],_loc4_); + _loc4_.commit(); + } + + private function onCCReady(param1:Event) : void + { + this.updateCCPosition(); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).visible = true; + this._isBuilding = 2; + if(this._isRandom) + { + this.onRandomCharacterComplete(); + this._isRandom = false; + } + this.dispatchEvent(new LoadEmbedMovieEvent(LoadEmbedMovieEvent.COMPLETE_EVENT)); + } + + private function onReadyComponent(param1:LoadMgrEvent) : void + { + try + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).shouldPauseOnLoadBytesComplete = this.shouldPauseOnLoadBytesComplete; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.onCCReady); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).onReady(); + return; + } + catch(e:Error) + { + return; + } + } + + public function onRandomCharacterComplete() : void + { + this.playBlurEffect(); + } + + private function playBlurEffect() : void + { + this.fadeIn.play(); + } + + public function updateColor(param1:CcColor) : void + { + var _loc2_:Object = null; + try + { + _loc2_ = new Object(); + _loc2_["colorReference"] = param1.ccColorThumb.colorReference; + _loc2_["originalColor"] = !!param1.ccColorThumb.isOriginalColorExist?param1.ccColorThumb.originalColor:uint.MAX_VALUE; + _loc2_["colorValue"] = param1.colorValue; + _loc2_["targetComponentId"] = param1.ccComponent == null?"":param1.ccComponent.id; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateColor(_loc2_); + return; + } + catch(e:Error) + { + return; + } + } + + public function removeColorOfThumb(param1:CcComponent, param2:CcCharacter) : Array + { + var _loc6_:CcColor = null; + var _loc3_:Number = param2.getUserChosenColorNum(); + var _loc4_:Array = new Array(); + var _loc5_:int = _loc3_ - 1; + while(_loc5_ >= 0) + { + _loc6_ = param2.getUserChosenColorByIndex(_loc5_); + if(_loc6_.ccColorThumb.componentType == param1.componentThumb.type) + { + param2.removeUserChosenColorByIndex(_loc5_); + _loc4_.push(_loc6_.ccColorThumb.colorReference); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).deleteColorByArea(_loc6_.ccColorThumb.colorReference); + } + _loc5_--; + } + return _loc4_; + } + + public function removeColorByRefs(param1:Array) : void + { + var _loc4_:String = null; + var _loc2_:Number = param1.length; + var _loc3_:int = _loc2_ - 1; + while(_loc3_ >= 0) + { + _loc4_ = param1[_loc3_]; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).deleteColorByArea(_loc4_); + _loc3_--; + } + } + + private function zoomEffectCompleted() : void + { + dispatchEvent(new CcCharPreviewerEvent(CcCharPreviewerEvent.ZOOM_EFFECT_COMPLETED,this)); + } + + public function zoomInFacialWithoutDisplacement() : void + { + } + + public function zoomInFacial() : void + { + } + + private function getZoomedScale() : Number + { + var _loc1_:Number = NaN; + if(UtilLicense.getCurrentLicenseId() == "8") + { + _loc1_ = 0.9; + } + else if(themeId == ThemeConstants.ANIME_THEME_ID) + { + _loc1_ = 1.2; + } + else if(themeId == ThemeConstants.NINJAANIME_THEME_ID) + { + _loc1_ = 1.2; + } + else + { + _loc1_ = 1; + } + try + { + } + catch(e:Error) + { + } + return _loc1_; + } + + private function getZoomedPosition(param1:Number) : Point + { + return new Point(); + } + + public function zoomOutFacial() : void + { + } + + public function changeComponent(param1:CcComponent, param2:String, param3:String, param4:CcCharacter, param5:UtilLoadMgr) : void + { + var stateId:String = null; + var selection:CcSelection = null; + var state:CcState = null; + var facialSelection:CcSelection = null; + var facial:CcFacial = null; + var fSelection:CcSelection = null; + var color:CcColor = null; + var colorObj:Object = null; + var ccComponent:CcComponent = param1; + var actionId:String = param2; + var facialId:String = param3; + var ccChar:CcCharacter = param4; + var loadMgr:UtilLoadMgr = param5; + var action:CcAction = ccChar.bodyShape.getActionById(actionId); + if(ccComponent.componentThumb.type != CcLibConstant.COMPONENT_TYPE_FREEACTION) + { + selection = action.getSelectionByComponentType(ccComponent.componentThumb.type); + if(selection == null) + { + facialSelection = action.getSelectionByComponentType("facial"); + if(facialId != null && facialId.length > 0) + { + facial = ccChar.getFacialByFacialId(facialId); + } + else + { + facial = ccChar.getFacialByFacialId(facialSelection.facialId); + } + fSelection = facial.selections.getValueByKey(ccComponent.componentThumb.type) as CcSelection; + state = ccComponent.componentThumb.getStateByStateId(fSelection.stateId); + stateId = state.stateId; + } + else + { + stateId = selection.stateId; + } + } + var properties:Object = { + "x":ccComponent.x, + "y":ccComponent.y, + "xscale":ccComponent.xscale, + "yscale":ccComponent.yscale, + "offset":ccComponent.offset, + "rotation":ccComponent.rotation, + "split":ccComponent.split + }; + var colors:Array = new Array(); + var num:Number = ccChar.getUserChosenColorNum(); + var i:int = 0; + while(i < num) + { + color = ccChar.getUserChosenColorByIndex(i); + if(color.ccColorThumb.componentType == ccComponent.componentThumb.type || color.ccColorThumb.colorReference == "ccSkinColor" || color.ccColorThumb.colorReference == "ccFaceHairColor") + { + colorObj = new Object(); + colorObj["colorReference"] = color.ccColorThumb.colorReference; + colorObj["originalColor"] = !!color.ccColorThumb.isOriginalColorExist?color.ccColorThumb.originalColor:uint.MAX_VALUE; + colorObj["colorValue"] = color.colorValue; + colorObj["targetComponentId"] = color.ccComponent == null?"":color.ccComponent.id; + colors.push(colorObj); + } + i++; + } + try + { + if(stateId == null) + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateComponentImageData(ccComponent.componentThumb.type,action.imageData,properties,loadMgr,colors,ccComponent.id); + } + else + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateComponentImageData(ccComponent.componentThumb.type,ccComponent.componentThumb.getStateByStateId(stateId).imageData,properties,loadMgr,colors,ccComponent.id); + } + return; + } + catch(e:Error) + { + return; + } + } + + public function highlightComponent(param1:CcComponent) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).highlightComponent(param1.id); + } + + public function removeHighlightComponent(param1:CcComponent) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).removeHighlight(param1.id); + } + + public function removeComponent(param1:CcComponent) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).removeComponentById(param1.id); + } + + public function updateLocation(param1:CcComponent) : void + { + var _loc2_:Object = { + "x":param1.x, + "y":param1.y, + "xscale":param1.xscale, + "yscale":param1.yscale, + "offset":param1.offset, + "rotation":param1.rotation + }; + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateLocation(param1.componentThumb.type,_loc2_,CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1.componentThumb.type) > -1?param1.id:""); + if(param1.componentThumb.type == CcLibConstant.COMPONENT_TYPE_HAIR) + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateLocation(CcLibConstant.COMPONENT_TYPE_FRONT_HAIR,_loc2_,""); + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateLocation(CcLibConstant.COMPONENT_TYPE_BACK_HAIR,_loc2_,""); + } + } + + public function capCharAsBitmap() : BitmapData + { + var _loc1_:BitmapData = null; + _loc1_ = CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).getBitmap(); + return _loc1_; + } + + public function setHeadScale(param1:Number, param2:Number) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateHeadScale(param1,param2); + this.updateCCPosition(); + } + + public function setBodyScale(param1:Number, param2:Number) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateBodyScale(param1,param2); + this.updateCCPosition(); + } + + public function resetHeadPos() : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).resetHeadPos(); + } + + public function setHeadPos(param1:Number = 0, param2:Number = 0) : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).updateHeadPos(param1,param2); + } + + public function getHeadScale() : Point + { + return new Point(CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).head.scaleX,CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).head.scaleY); + } + + public function getBodyScale() : Point + { + return new Point(CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).bodyScale,CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).bodyScale); + } + + public function getHeadPos() : Point + { + return CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).headPos; + } + + private function updateCCPosition() : void + { + var _loc1_:Rectangle = CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).getBounds(this.myUI); + var _loc2_:Number = _loc1_.height + _loc1_.y; + if(this.showFace) + { + this.myUI.y = this.height - 40; + } + else + { + this.myUI.y = this.height - _loc2_; + } + this.myUI.x = this.width / 2; + } + + public function get headRect() : Rectangle + { + var _loc2_:Rectangle = null; + var _loc1_:DisplayObjectContainer = CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).head; + if(_loc1_ != null) + { + _loc2_ = _loc1_.getRect(this); + _loc2_.height = _loc2_.height * 1.3; + return _loc2_; + } + return null; + } + + public function get ccMaker() : CustomCharacterMaker + { + return CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)); + } + + public function capFaceAsBitmap() : BitmapData + { + var _loc1_:BitmapData = null; + _loc1_ = CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).getHeadBitmap(); + return _loc1_; + } + + public function reset() : void + { + } + + public function initByCharZip(param1:ZipFile) : void + { + } + + public function reloadSkin() : void + { + CustomCharacterMaker(this.myUI.getChildByName(this.LOADER)).reloadSkin(); + } + + private function _CharPreviewer_Blur1_i() : Blur + { + var _loc1_:Blur = new Blur(); + _loc1_.blurXFrom = 10; + _loc1_.blurXTo = 0; + _loc1_.blurYFrom = 10; + _loc1_.blurYTo = 0; + _loc1_.duration = 300; + this.fadeIn = _loc1_; + BindingManager.executeBindings(this,"fadeIn",this.fadeIn); + return _loc1_; + } + + public function ___CharPreviewer_Canvas1_creationComplete(param1:FlexEvent) : void + { + this.CharPreview(); + } + + private function _CharPreviewer_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Object + { + return this; + },null,"fadeIn.target"); + return result; + } + + [Bindable(event="propertyChange")] + public function get fadeIn() : Blur + { + return this._1282133823fadeIn; + } + + public function set fadeIn(param1:Blur) : void + { + var _loc2_:Object = this._1282133823fadeIn; + if(_loc2_ !== param1) + { + this._1282133823fadeIn = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fadeIn",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ClothesChooser.as b/scripts/anifire/creator/components/ClothesChooser.as new file mode 100644 index 0000000..60b524b --- /dev/null +++ b/scripts/anifire/creator/components/ClothesChooser.as @@ -0,0 +1,168 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcComponentThumbChooserEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcTheme; + import mx.containers.Tile; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + public class ClothesChooser extends Tile + { + + + private var _2020330632lowerBodyChooser:ComponentThumbChooserSpark; + + private var _1568676041upperBodyChooser:ComponentThumbChooserSpark; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var moneyMode:int; + + private var _biggerHeight:Number; + + private var _smallerHeight:Number; + + private var _thumbChooserWidth:Number; + + public function ClothesChooser() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Tile, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":ComponentThumbChooserSpark, + "id":"upperBodyChooser", + "events":{"creationComplete":"__upperBodyChooser_creationComplete"} + }),new UIComponentDescriptor({ + "type":ComponentThumbChooserSpark, + "id":"lowerBodyChooser", + "events":{"creationComplete":"__lowerBodyChooser_creationComplete"} + })]}; + } + }); + super(); + mx_internal::_document = this; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function set thumbChooserWidth(param1:Number) : void + { + this._thumbChooserWidth = param1; + if(this.initialized) + { + this.upperBodyChooser.width = param1; + this.lowerBodyChooser.width = param1; + } + } + + public function set biggerHeight(param1:Number) : void + { + this._biggerHeight = param1; + if(this.initialized) + { + this.upperBodyChooser.biggerHeight = this._biggerHeight; + } + } + + public function set smallerHeight(param1:Number) : void + { + this._smallerHeight = param1; + if(this.initialized) + { + this.lowerBodyChooser.smallerHeight = this._smallerHeight; + } + } + + public function init(param1:CcCharacter, param2:CcTheme, param3:String, param4:int, param5:Boolean) : void + { + this.upperBodyChooser.init(param1,param2,CcLibConstant.COMPONENT_TYPE_UPPER_BODY,param4,param5); + this.upperBodyChooser.addEventListener(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this.onComponentThumbChoosen); + this.lowerBodyChooser.init(param1,param2,CcLibConstant.COMPONENT_TYPE_LOWER_BODY,param4,param5); + this.lowerBodyChooser.addEventListener(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this.onComponentThumbChoosen); + } + + private function onComponentThumbChoosen(param1:CcComponentThumbChooserEvent) : void + { + var _loc2_:CcComponentThumbChooserEvent = new CcComponentThumbChooserEvent(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this); + _loc2_.componentThumb = param1.componentThumb; + this.dispatchEvent(_loc2_); + } + + private function initComponentThumbChooser(param1:ComponentThumbChooserSpark) : void + { + param1.smallerHeight = this._smallerHeight; + param1.biggerHeight = this._biggerHeight; + param1.width = this._thumbChooserWidth; + } + + public function __upperBodyChooser_creationComplete(param1:FlexEvent) : void + { + this.initComponentThumbChooser(this.upperBodyChooser); + } + + public function __lowerBodyChooser_creationComplete(param1:FlexEvent) : void + { + this.initComponentThumbChooser(this.lowerBodyChooser); + } + + [Bindable(event="propertyChange")] + public function get lowerBodyChooser() : ComponentThumbChooserSpark + { + return this._2020330632lowerBodyChooser; + } + + public function set lowerBodyChooser(param1:ComponentThumbChooserSpark) : void + { + var _loc2_:Object = this._2020330632lowerBodyChooser; + if(_loc2_ !== param1) + { + this._2020330632lowerBodyChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"lowerBodyChooser",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get upperBodyChooser() : ComponentThumbChooserSpark + { + return this._1568676041upperBodyChooser; + } + + public function set upperBodyChooser(param1:ComponentThumbChooserSpark) : void + { + var _loc2_:Object = this._1568676041upperBodyChooser; + if(_loc2_ !== param1) + { + this._1568676041upperBodyChooser = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"upperBodyChooser",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ColorDisplayGroup.as b/scripts/anifire/creator/components/ColorDisplayGroup.as new file mode 100644 index 0000000..c50c33b --- /dev/null +++ b/scripts/anifire/creator/components/ColorDisplayGroup.as @@ -0,0 +1,222 @@ +package anifire.creator.components +{ + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import spark.components.Group; + import spark.primitives.BitmapImage; + import spark.primitives.Ellipse; + + use namespace mx_internal; + + public class ColorDisplayGroup extends Group implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _ColorDisplayGroup_BitmapImage1:BitmapImage; + + private var _358089761colorDisplay:SolidColor; + + private var _1442907498currentColor:Ellipse; + + private var __moduleFactoryInitialized:Boolean = false; + + protected var _color:uint; + + private var _embed_mxml__styles_images_panel_text_nocolor_png_1973715611:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function ColorDisplayGroup() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_panel_text_nocolor_png_1973715611 = ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ColorDisplayGroup_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_ColorDisplayGroupWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ColorDisplayGroup[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 20; + this.height = 20; + this.mxmlContent = [this._ColorDisplayGroup_Ellipse1_i(),this._ColorDisplayGroup_BitmapImage1_i()]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ColorDisplayGroup._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function set _94842723color(param1:uint) : void + { + if(this._color != param1) + { + this._color = param1; + } + } + + [Bindable(event="propertyChange")] + public function get color() : uint + { + return this._color; + } + + private function _ColorDisplayGroup_Ellipse1_i() : Ellipse + { + var _loc1_:Ellipse = new Ellipse(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._ColorDisplayGroup_SolidColor1_i(); + _loc1_.stroke = this._ColorDisplayGroup_SolidColorStroke1_c(); + _loc1_.initialized(this,"currentColor"); + this.currentColor = _loc1_; + BindingManager.executeBindings(this,"currentColor",this.currentColor); + return _loc1_; + } + + private function _ColorDisplayGroup_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + this.colorDisplay = _loc1_; + BindingManager.executeBindings(this,"colorDisplay",this.colorDisplay); + return _loc1_; + } + + private function _ColorDisplayGroup_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _ColorDisplayGroup_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.source = this._embed_mxml__styles_images_panel_text_nocolor_png_1973715611; + _loc1_.initialized(this,"_ColorDisplayGroup_BitmapImage1"); + this._ColorDisplayGroup_BitmapImage1 = _loc1_; + BindingManager.executeBindings(this,"_ColorDisplayGroup_BitmapImage1",this._ColorDisplayGroup_BitmapImage1); + return _loc1_; + } + + private function _ColorDisplayGroup_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,null,null,"colorDisplay.color","color"); + result[1] = new Binding(this,function():Boolean + { + return color == uint.MAX_VALUE; + },null,"_ColorDisplayGroup_BitmapImage1.visible"); + return result; + } + + [Bindable(event="propertyChange")] + public function get colorDisplay() : SolidColor + { + return this._358089761colorDisplay; + } + + public function set colorDisplay(param1:SolidColor) : void + { + var _loc2_:Object = this._358089761colorDisplay; + if(_loc2_ !== param1) + { + this._358089761colorDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"colorDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get currentColor() : Ellipse + { + return this._1442907498currentColor; + } + + public function set currentColor(param1:Ellipse) : void + { + var _loc2_:Object = this._1442907498currentColor; + if(_loc2_ !== param1) + { + this._1442907498currentColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"currentColor",_loc2_,param1)); + } + } + } + + public function set color(param1:uint) : void + { + var _loc2_:Object = this.color; + if(_loc2_ !== param1) + { + this._94842723color = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"color",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as b/scripts/anifire/creator/components/ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as new file mode 100644 index 0000000..87e429a --- /dev/null +++ b/scripts/anifire/creator/components/ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611 extends BitmapAsset + { + + + public function ColorDisplayGroup__embed_mxml__styles_images_panel_text_nocolor_png_1973715611() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ColorPicker.as b/scripts/anifire/creator/components/ColorPicker.as new file mode 100644 index 0000000..f512705 --- /dev/null +++ b/scripts/anifire/creator/components/ColorPicker.as @@ -0,0 +1,299 @@ +package anifire.creator.components +{ + import anifire.util.UtilDict; + import flash.display.DisplayObject; + import flash.events.Event; + import flash.events.FocusEvent; + import flash.events.MouseEvent; + import mx.controls.colorPickerClasses.WebSafePalette; + import mx.core.FlexVersion; + import mx.core.IVisualElement; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.events.StateChangeEvent; + import spark.components.ComboBox; + import spark.components.IItemRenderer; + import spark.components.Label; + import spark.components.TextInput; + import spark.components.supportClasses.ButtonBase; + import spark.events.DropDownEvent; + import spark.events.IndexChangeEvent; + import spark.events.RendererExistenceEvent; + + public class ColorPicker extends ComboBox + { + + public static const TRANSPARENT_COLOR:uint = uint.MAX_VALUE; + + + private var wsp:WebSafePalette; + + [SkinPart(required="false")] + public var labelDisplay:Label; + + [SkinPart(required="true")] + public var colorInput:TextInput; + + [SkinPart(required="false")] + public var transparentColorButton:ButtonBase; + + protected var _previewColor:uint; + + private var _860736679columnCount:int = 20; + + protected var _allowTransparent:Boolean; + + public function ColorPicker() + { + super(); + this.wsp = new WebSafePalette(); + dataProvider = this.wsp.getList(); + labelFunction = this.colorDetail; + labelToItemFunction = this.colorFunction; + openOnInput = false; + this.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE,this.onStateChange); + } + + [Bindable(event="propertyChange")] + public function get previewColor() : uint + { + return this._previewColor; + } + + private function set _1388676997previewColor(param1:uint) : void + { + this._previewColor = param1; + } + + [Bindable(event="propertyChange")] + public function get allowTransparent() : Boolean + { + return this._allowTransparent; + } + + private function set _1521440183allowTransparent(param1:Boolean) : void + { + if(this._allowTransparent != param1) + { + this._allowTransparent = param1; + if(this.transparentColorButton) + { + this.transparentColorButton.visible = param1; + this.transparentColorButton.includeInLayout = param1; + } + } + } + + override public function set selectedItem(param1:*) : void + { + super.selectedItem = param1; + this.previewColor = param1; + } + + protected function colorFunction(param1:String) : * + { + return uint(param1); + } + + public function colorDetail(param1:Object) : String + { + var _loc2_:uint = param1 as uint; + if(_loc2_ == TRANSPARENT_COLOR) + { + return UtilDict.toDisplay("go","No Color"); + } + var _loc3_:String = "00000" + _loc2_.toString(16); + _loc3_ = _loc3_.substr(_loc3_.length - 6); + return "#" + _loc3_.toUpperCase(); + } + + protected function onColorInputFocus(param1:FocusEvent) : void + { + this.colorInput.selectAll(); + } + + protected function onColorInputChange(param1:Event) : void + { + this.previewColor = parseInt(this.colorInput.text,16); + } + + protected function onColorInputEnter(param1:FlexEvent) : void + { + this.selectedItem = this.previewColor; + closeDropDown(true); + dispatchEvent(new IndexChangeEvent(IndexChangeEvent.CHANGE)); + } + + protected function onRendererRollOver(param1:MouseEvent) : void + { + this.previewColor = (param1.currentTarget as IItemRenderer).data as uint; + this.colorInput.text = itemToLabel(this.previewColor); + this.colorInput.selectAll(); + } + + protected function onTransparentColorButtonRollOver(param1:MouseEvent) : void + { + this.previewColor = TRANSPARENT_COLOR; + this.colorInput.text = itemToLabel(this.previewColor); + this.colorInput.selectAll(); + } + + protected function onTransparentColorButtonClick(param1:MouseEvent) : void + { + this.selectTransparentColor(); + closeDropDown(true); + } + + override public function setFocus() : void + { + stage.focus = this; + } + + override protected function isOurFocus(param1:DisplayObject) : Boolean + { + return param1 == this; + } + + override protected function dropDownController_closeHandler(param1:DropDownEvent) : void + { + param1.preventDefault(); + super.dropDownController_closeHandler(param1); + } + + override protected function partAdded(param1:String, param2:Object) : void + { + super.partAdded(param1,param2); + if(param2 == this.colorInput) + { + this.colorInput.maxChars = 6; + this.colorInput.restrict = "0123456789abcdefABCDEF"; + this.colorInput.text = itemToLabel(this.previewColor); + this.colorInput.addEventListener(FocusEvent.FOCUS_IN,this.onColorInputFocus); + this.colorInput.addEventListener(Event.CHANGE,this.onColorInputChange); + this.colorInput.addEventListener(FlexEvent.ENTER,this.onColorInputEnter); + this.colorInput.callLater(this.colorInput.setFocus); + } + else if(param2 == this.transparentColorButton) + { + this.transparentColorButton.addEventListener(MouseEvent.CLICK,this.onTransparentColorButtonClick); + this.transparentColorButton.addEventListener(MouseEvent.ROLL_OVER,this.onTransparentColorButtonRollOver); + this.transparentColorButton.visible = this._allowTransparent; + this.transparentColorButton.includeInLayout = this._allowTransparent; + } + } + + override protected function partRemoved(param1:String, param2:Object) : void + { + super.partRemoved(param1,param2); + if(param2 == this.colorInput) + { + this.colorInput.removeEventListener(FocusEvent.FOCUS_IN,this.onColorInputFocus); + this.colorInput.removeEventListener(Event.CHANGE,this.onColorInputChange); + this.colorInput.removeEventListener(FlexEvent.ENTER,this.onColorInputEnter); + } + else if(param2 == this.transparentColorButton) + { + this.transparentColorButton.removeEventListener(MouseEvent.CLICK,this.onTransparentColorButtonClick); + this.transparentColorButton.removeEventListener(MouseEvent.ROLL_OVER,this.onTransparentColorButtonRollOver); + } + } + + override protected function dataGroup_rendererAddHandler(param1:RendererExistenceEvent) : void + { + super.dataGroup_rendererAddHandler(param1); + param1.renderer.addEventListener(MouseEvent.ROLL_OVER,this.onRendererRollOver); + } + + override protected function dataGroup_rendererRemoveHandler(param1:RendererExistenceEvent) : void + { + super.dataGroup_rendererRemoveHandler(param1); + param1.renderer.removeEventListener(MouseEvent.ROLL_OVER,this.onRendererRollOver); + } + + protected function onStateChange(param1:StateChangeEvent) : void + { + if(currentState == "open") + { + this.previewColor = selectedItem as uint; + this.colorInput.callLater(this.colorInput.setFocus); + this.colorInput.text = itemToLabel(this.previewColor); + } + } + + public function restoreDefaultColors() : void + { + dataProvider = this.wsp.getList(); + this.columnCount = 20; + } + + public function selectTransparentColor() : void + { + this.selectedItem = TRANSPARENT_COLOR; + dispatchEvent(new IndexChangeEvent(IndexChangeEvent.CHANGE)); + } + + override public function get baselinePosition() : Number + { + if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5) + { + return super.baselinePosition; + } + var _loc1_:IVisualElement = this.labelDisplay; + if(_loc1_) + { + return _loc1_.baselinePosition + _loc1_.y; + } + return super.baselinePosition; + } + + public function get isTransparent() : Boolean + { + return selectedItem == TRANSPARENT_COLOR; + } + + [Bindable(event="propertyChange")] + public function get columnCount() : int + { + return this._860736679columnCount; + } + + public function set columnCount(param1:int) : void + { + var _loc2_:Object = this._860736679columnCount; + if(_loc2_ !== param1) + { + this._860736679columnCount = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"columnCount",_loc2_,param1)); + } + } + } + + public function set previewColor(param1:uint) : void + { + var _loc2_:Object = this.previewColor; + if(_loc2_ !== param1) + { + this._1388676997previewColor = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"previewColor",_loc2_,param1)); + } + } + } + + public function set allowTransparent(param1:Boolean) : void + { + var _loc2_:Object = this.allowTransparent; + if(_loc2_ !== param1) + { + this._1521440183allowTransparent = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"allowTransparent",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ColorPickerDropDownList.as b/scripts/anifire/creator/components/ColorPickerDropDownList.as new file mode 100644 index 0000000..8c58880 --- /dev/null +++ b/scripts/anifire/creator/components/ColorPickerDropDownList.as @@ -0,0 +1,85 @@ +package anifire.creator.components +{ + import anifire.component.ColorInputPanel; + import anifire.creator.events.ColorPickerDropDownListEvent; + import anifire.creator.skins.ColorPickerDropDownListSkin; + import anifire.event.ColorPaletteEvent; + import mx.events.FlexEvent; + import spark.components.DropDownList; + import spark.events.DropDownEvent; + + public class ColorPickerDropDownList extends DropDownList + { + + + [SkinPart(required="false")] + public var colorInputPanel:ColorInputPanel; + + [SkinPart(required="false")] + public var colorDisplay:ColorDisplayGroup; + + public function ColorPickerDropDownList() + { + super(); + setStyle("skinClass",ColorPickerDropDownListSkin); + } + + override protected function partAdded(param1:String, param2:Object) : void + { + super.partAdded(param1,param2); + if(param2 == this.colorInputPanel) + { + this.colorInputPanel.addEventListener(ColorPaletteEvent.COLOR_PREVIEW,this.colorInputPanel_colorPreviewHandler); + this.colorInputPanel.addEventListener(ColorPaletteEvent.COLOR_CHANGE,this.colorInputPanel_colorChangeHandler); + this.colorInputPanel.addEventListener(FlexEvent.CREATION_COMPLETE,this.colorInputPanel_creationCompleteHandler); + } + } + + override protected function partRemoved(param1:String, param2:Object) : void + { + super.partRemoved(param1,param2); + if(param2 == this.colorInputPanel) + { + this.colorInputPanel.removeEventListener(ColorPaletteEvent.COLOR_PREVIEW,this.colorInputPanel_colorPreviewHandler); + this.colorInputPanel.removeEventListener(ColorPaletteEvent.COLOR_CHANGE,this.colorInputPanel_colorChangeHandler); + this.colorInputPanel.removeEventListener(FlexEvent.CREATION_COMPLETE,this.colorInputPanel_creationCompleteHandler); + } + } + + private function colorInputPanel_creationCompleteHandler(param1:FlexEvent) : void + { + this.colorInputPanel.currentColor = this.colorDisplay.color; + } + + private function colorInputPanel_colorChangeHandler(param1:ColorPaletteEvent) : void + { + this.updateColorFromColorInputPanel(); + } + + private function colorInputPanel_colorPreviewHandler(param1:ColorPaletteEvent) : void + { + this.updateColorFromColorInputPanel(); + } + + private function updateColorFromColorInputPanel() : void + { + if(this.colorInputPanel) + { + if(this.colorDisplay) + { + this.colorDisplay.color = this.colorInputPanel.currentColor; + } + this.dispatchEvent(new ColorPickerDropDownListEvent(ColorPickerDropDownListEvent.COLOR_CHANGE,this.colorInputPanel.currentColor)); + } + } + + override protected function dropDownController_closeHandler(param1:DropDownEvent) : void + { + if(this.colorInputPanel) + { + this.dispatchEvent(new ColorPickerDropDownListEvent(ColorPickerDropDownListEvent.COLOR_COMMIT,this.colorInputPanel.currentColor)); + } + super.dropDownController_closeHandler(param1); + } + } +} diff --git a/scripts/anifire/creator/components/ColorPickerItemRenderer.as b/scripts/anifire/creator/components/ColorPickerItemRenderer.as new file mode 100644 index 0000000..a72c28e --- /dev/null +++ b/scripts/anifire/creator/components/ColorPickerItemRenderer.as @@ -0,0 +1,193 @@ +package anifire.creator.components +{ + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class ColorPickerItemRenderer extends ItemRenderer implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _ColorPickerItemRenderer_SolidColor1:SolidColor; + + private var _1714788406_ColorPickerItemRenderer_SolidColorStroke1:SolidColorStroke; + + private var _889711556swatch:Rect; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function ColorPickerItemRenderer() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._ColorPickerItemRenderer_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_ColorPickerItemRendererWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ColorPickerItemRenderer[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.autoDrawBackground = false; + this.buttonMode = true; + this.mxmlContent = [this._ColorPickerItemRenderer_Rect1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_ColorPickerItemRenderer_SolidColorStroke1", + "name":"alpha", + "value":1 + })] + }),new State({ + "name":"selected", + "overrides":[] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ColorPickerItemRenderer._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function _ColorPickerItemRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 10; + _loc1_.height = 10; + _loc1_.fill = this._ColorPickerItemRenderer_SolidColor1_i(); + _loc1_.stroke = this._ColorPickerItemRenderer_SolidColorStroke1_i(); + _loc1_.initialized(this,"swatch"); + this.swatch = _loc1_; + BindingManager.executeBindings(this,"swatch",this.swatch); + return _loc1_; + } + + private function _ColorPickerItemRenderer_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + this._ColorPickerItemRenderer_SolidColor1 = _loc1_; + BindingManager.executeBindings(this,"_ColorPickerItemRenderer_SolidColor1",this._ColorPickerItemRenderer_SolidColor1); + return _loc1_; + } + + private function _ColorPickerItemRenderer_SolidColorStroke1_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 16776960; + _loc1_.alpha = 0; + this._ColorPickerItemRenderer_SolidColorStroke1 = _loc1_; + BindingManager.executeBindings(this,"_ColorPickerItemRenderer_SolidColorStroke1",this._ColorPickerItemRenderer_SolidColorStroke1); + return _loc1_; + } + + private function _ColorPickerItemRenderer_bindingsSetup() : Array + { + var _loc1_:Array = []; + _loc1_[0] = new Binding(this,null,null,"_ColorPickerItemRenderer_SolidColor1.color","data"); + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _ColorPickerItemRenderer_SolidColorStroke1() : SolidColorStroke + { + return this._1714788406_ColorPickerItemRenderer_SolidColorStroke1; + } + + public function set _ColorPickerItemRenderer_SolidColorStroke1(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._1714788406_ColorPickerItemRenderer_SolidColorStroke1; + if(_loc2_ !== param1) + { + this._1714788406_ColorPickerItemRenderer_SolidColorStroke1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ColorPickerItemRenderer_SolidColorStroke1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get swatch() : Rect + { + return this._889711556swatch; + } + + public function set swatch(param1:Rect) : void + { + var _loc2_:Object = this._889711556swatch; + if(_loc2_ !== param1) + { + this._889711556swatch = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"swatch",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ComponentItemRenderer.as b/scripts/anifire/creator/components/ComponentItemRenderer.as new file mode 100644 index 0000000..23b788a --- /dev/null +++ b/scripts/anifire/creator/components/ComponentItemRenderer.as @@ -0,0 +1,454 @@ +package anifire.creator.components +{ + import anifire.constant.LicenseConstants; + import anifire.creator.events.CcComponentLoadEvent; + import anifire.creator.models.CcComponentThumb; + import anifire.util.UtilUser; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Loader; + import flash.events.Event; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.utils.ByteArray; + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.components.Image; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + + public class ComponentItemRenderer extends ItemRenderer implements IStateClient2 + { + + + private var _794323583_ComponentItemRenderer_Image1:Image; + + private var _794323582_ComponentItemRenderer_Image2:Image; + + private var _1125926366_ComponentItemRenderer_Rect1:Rect; + + private var _1600092163_loading:BusyIndicator; + + private var _2024940825imageDisplay:BitmapImage; + + private var _1906681184nullIcon:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var cid:String; + + private var thumb:CcComponentThumb; + + private var _1180261935isNull:Boolean = false; + + protected var _loader:Loader; + + protected var _bitmapData:BitmapData; + + protected var _displayWidth:Number = 105; + + protected var _displayHeight:Number = 105; + + protected var _displayMatrix:Matrix; + + private var _embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205:Class; + + private var _embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301:Class; + + public function ComponentItemRenderer() + { + this._loader = new Loader(); + this._displayMatrix = new Matrix(); + this._embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205 = ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205; + this._embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301 = ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301; + super(); + mx_internal::_document = this; + this.autoDrawBackground = false; + this.width = 105; + this.height = 105; + this.useHandCursor = true; + this.buttonMode = true; + this.mxmlContent = [this._ComponentItemRenderer_Group1_i(),this._ComponentItemRenderer_BusyIndicator1_i(),this._ComponentItemRenderer_BitmapImage1_i(),this._ComponentItemRenderer_Rect1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_ComponentItemRenderer_Image1", + "name":"visible", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_ComponentItemRenderer_Image2", + "name":"visible", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"width", + "value":105 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"height", + "value":105 + }),new SetProperty().initializeFromObject({ + "target":"_ComponentItemRenderer_Rect1", + "name":"visible", + "value":true + })] + }),new State({ + "name":"selected", + "overrides":[] + }),new State({ + "name":"normalAndShowsCaret", + "overrides":[] + }),new State({ + "name":"hoveredAndShowsCaret", + "overrides":[] + }),new State({ + "name":"selectedAndShowsCaret", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_ComponentItemRenderer_Rect1", + "name":"visible", + "value":true + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function set data(param1:Object) : void + { + if(!param1) + { + super.data = param1; + return; + } + this.cid = param1.key; + this.thumb = param1.data; + super.data = this.thumb; + if(!this.thumb) + { + this.isNull = true; + this.nullIcon.visible = true; + } + else + { + this.isNull = false; + this.nullIcon.visible = false; + } + if(this.thumb) + { + this.imageDisplay.source = null; + this.updateThumbData(); + } + else + { + this.imageDisplay.source = null; + } + if(UtilUser.hasAdminFeatures || LicenseConstants.isThumbnailTestHost()) + { + this.toolTip = this.cid; + } + } + + private function updateThumbData() : void + { + this.thumb.addEventListener(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this.onLoadThumbImage); + this.thumb.loadThumbnailImageData(); + this._loading.visible = true; + } + + private function onLoadThumbImage(param1:Event) : void + { + if(this.thumb && this.thumb.thumbnailImageData is ByteArray) + { + this._loader.contentLoaderInfo.addEventListener(Event.INIT,this.onImageLoaderInit); + this._loader.loadBytes(this.thumb.thumbnailImageData); + } + else + { + this.imageDisplay.source = null; + } + } + + protected function onImageLoaderInit(param1:Event = null) : void + { + if(this._loader.content is DisplayObject) + { + this.createBitmap(this._loader.content); + } + else + { + this.imageDisplay.source = this._loader.content; + } + this._loading.visible = false; + } + + protected function createBitmap(param1:DisplayObject) : void + { + this._bitmapData = new BitmapData(this._displayWidth,this._displayHeight,true,16711680); + this._displayMatrix.a = this._displayWidth / 60; + this._displayMatrix.d = this._displayHeight / 60; + this._bitmapData.draw(param1,this._displayMatrix,new ColorTransform(),null,null,true); + this.imageDisplay.source = this._bitmapData; + } + + private function _ComponentItemRenderer_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.visible = false; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._ComponentItemRenderer_Image1_i(),this._ComponentItemRenderer_Image2_i()]; + _loc1_.id = "nullIcon"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.nullIcon = _loc1_; + BindingManager.executeBindings(this,"nullIcon",this.nullIcon); + return _loc1_; + } + + private function _ComponentItemRenderer_Image1_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301; + _loc1_.visible = true; + _loc1_.id = "_ComponentItemRenderer_Image1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ComponentItemRenderer_Image1 = _loc1_; + BindingManager.executeBindings(this,"_ComponentItemRenderer_Image1",this._ComponentItemRenderer_Image1); + return _loc1_; + } + + private function _ComponentItemRenderer_Image2_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205; + _loc1_.visible = false; + _loc1_.id = "_ComponentItemRenderer_Image2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ComponentItemRenderer_Image2 = _loc1_; + BindingManager.executeBindings(this,"_ComponentItemRenderer_Image2",this._ComponentItemRenderer_Image2); + return _loc1_; + } + + private function _ComponentItemRenderer_BusyIndicator1_i() : BusyIndicator + { + var _loc1_:BusyIndicator = new BusyIndicator(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.visible = false; + _loc1_.setStyle("symbolColor",0); + _loc1_.id = "_loading"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._loading = _loc1_; + BindingManager.executeBindings(this,"_loading",this._loading); + return _loc1_; + } + + private function _ComponentItemRenderer_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.width = 90; + _loc1_.height = 90; + _loc1_.scaleX = -1; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.smoothingQuality = "high"; + _loc1_.smooth = true; + _loc1_.initialized(this,"imageDisplay"); + this.imageDisplay = _loc1_; + BindingManager.executeBindings(this,"imageDisplay",this.imageDisplay); + return _loc1_; + } + + private function _ComponentItemRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.visible = false; + _loc1_.stroke = this._ComponentItemRenderer_SolidColorStroke1_c(); + _loc1_.initialized(this,"_ComponentItemRenderer_Rect1"); + this._ComponentItemRenderer_Rect1 = _loc1_; + BindingManager.executeBindings(this,"_ComponentItemRenderer_Rect1",this._ComponentItemRenderer_Rect1); + return _loc1_; + } + + private function _ComponentItemRenderer_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 2210726; + _loc1_.weight = 1; + _loc1_.alpha = 1; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _ComponentItemRenderer_Image1() : Image + { + return this._794323583_ComponentItemRenderer_Image1; + } + + public function set _ComponentItemRenderer_Image1(param1:Image) : void + { + var _loc2_:Object = this._794323583_ComponentItemRenderer_Image1; + if(_loc2_ !== param1) + { + this._794323583_ComponentItemRenderer_Image1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ComponentItemRenderer_Image1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ComponentItemRenderer_Image2() : Image + { + return this._794323582_ComponentItemRenderer_Image2; + } + + public function set _ComponentItemRenderer_Image2(param1:Image) : void + { + var _loc2_:Object = this._794323582_ComponentItemRenderer_Image2; + if(_loc2_ !== param1) + { + this._794323582_ComponentItemRenderer_Image2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ComponentItemRenderer_Image2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ComponentItemRenderer_Rect1() : Rect + { + return this._1125926366_ComponentItemRenderer_Rect1; + } + + public function set _ComponentItemRenderer_Rect1(param1:Rect) : void + { + var _loc2_:Object = this._1125926366_ComponentItemRenderer_Rect1; + if(_loc2_ !== param1) + { + this._1125926366_ComponentItemRenderer_Rect1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ComponentItemRenderer_Rect1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _loading() : BusyIndicator + { + return this._1600092163_loading; + } + + public function set _loading(param1:BusyIndicator) : void + { + var _loc2_:Object = this._1600092163_loading; + if(_loc2_ !== param1) + { + this._1600092163_loading = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_loading",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get imageDisplay() : BitmapImage + { + return this._2024940825imageDisplay; + } + + public function set imageDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._2024940825imageDisplay; + if(_loc2_ !== param1) + { + this._2024940825imageDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"imageDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get nullIcon() : Group + { + return this._1906681184nullIcon; + } + + public function set nullIcon(param1:Group) : void + { + var _loc2_:Object = this._1906681184nullIcon; + if(_loc2_ !== param1) + { + this._1906681184nullIcon = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"nullIcon",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get isNull() : Boolean + { + return this._1180261935isNull; + } + + private function set isNull(param1:Boolean) : void + { + var _loc2_:Object = this._1180261935isNull; + if(_loc2_ !== param1) + { + this._1180261935isNull = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"isNull",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as b/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as new file mode 100644 index 0000000..c76ad8f --- /dev/null +++ b/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301 extends BitmapAsset + { + + + public function ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as b/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as new file mode 100644 index 0000000..5a1dccc --- /dev/null +++ b/scripts/anifire/creator/components/ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205 extends BitmapAsset + { + + + public function ComponentItemRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark.as new file mode 100644 index 0000000..0ad3477 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark.as @@ -0,0 +1,779 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcComponentThumbChooserEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcLibrary; + import anifire.creator.models.CcTheme; + import anifire.creator.utils.ComponentThumbFilter; + import anifire.util.UtilHashArray; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.events.TimerEvent; + import flash.utils.Timer; + import flash.utils.clearTimeout; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayCollection; + import mx.collections.IList; + import mx.core.ClassFactory; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import spark.components.Group; + import spark.events.IndexChangeEvent; + import spark.layouts.TileLayout; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class ComponentThumbChooserSpark extends Group implements IBindingClient + { + + private static const EVENT_TAG_FILTER_CHANGED:String = "evt_tag_changed"; + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1426573781downButt:IconButton; + + private var _1282758095downLayer:Group; + + private var _1938834755thumbnailTileSpark:ThumbList; + + private var _839839922upButt:IconButton; + + private var _256589962upLayer:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var componentThumbs:UtilHashArray; + + private var componentType:String; + + private var currentPageNum:int = 0; + + private var moneyMode:int; + + private var timeoutId:int = -1; + + private var _biggerHeight:Number; + + private var _smallerHeight:Number; + + private var _filter:ComponentThumbFilter = null; + + private var _filteredThumbs:UtilHashArray; + + private var _480745960_thumbnailSource:ArrayCollection; + + private const DELAY_BETWEEN_LOADING_EACH_THUMB:Number = 200; + + private var scrollTimer:Timer; + + private var scrollDy:Number = 0; + + private var _embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239:Class; + + private var _embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563:Class; + + private var _embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271:Class; + + private var _embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911:Class; + + private var _embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557:Class; + + private var _embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function ComponentThumbChooserSpark() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239; + this._embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563; + this._embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271; + this._embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911; + this._embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557; + this._embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053 = ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ComponentThumbChooserSpark_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_ComponentThumbChooserSparkWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ComponentThumbChooserSpark[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.mxmlContent = [this._ComponentThumbChooserSpark_Rect1_c(),this._ComponentThumbChooserSpark_ThumbList1_i(),this._ComponentThumbChooserSpark_Group2_i(),this._ComponentThumbChooserSpark_Group3_i()]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ComponentThumbChooserSpark._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function initTagFilter() : void + { + this.addEventListener(EVENT_TAG_FILTER_CHANGED,function(param1:Event):void + { + var _loc2_:UtilHashArray = new UtilHashArray(); + var _loc3_:int = 0; + while(_loc3_ < componentThumbs.length) + { + if(!_filter || _filter.filter(componentThumbs.getValueByIndex(_loc3_) as CcComponentThumb)) + { + _loc2_.push(componentThumbs.getKey(_loc3_),componentThumbs.getValueByIndex(_loc3_)); + } + _loc3_++; + } + _filteredThumbs = _loc2_; + initPage(); + }); + } + + public function set thumbFilter(param1:ComponentThumbFilter) : void + { + var _loc2_:* = this._filter != param1; + this._filter = param1; + if(_loc2_) + { + this.dispatchEvent(new Event(EVENT_TAG_FILTER_CHANGED)); + } + } + + public function set biggerHeight(param1:Number) : void + { + this._biggerHeight = param1; + } + + public function set smallerHeight(param1:Number) : void + { + this._smallerHeight = param1; + } + + public function init(param1:CcCharacter, param2:CcTheme, param3:String, param4:int, param5:Boolean) : void + { + var i:int = 0; + var item:Object = null; + var sLib:CcLibrary = null; + var sComArray:Array = null; + var sCom:CcComponent = null; + var ccChar:CcCharacter = param1; + var ccTheme:CcTheme = param2; + var componentType:String = param3; + var moneyMode:int = param4; + var shouldUseBiggerHeight:Boolean = param5; + this.doClearTimeOut(); + if(shouldUseBiggerHeight) + { + this.height = this._biggerHeight; + this.thumbnailTileSpark.height = this._biggerHeight; + } + else + { + this.height = this._smallerHeight; + this.thumbnailTileSpark.height = this._smallerHeight; + } + this.componentType = componentType; + this.moneyMode = moneyMode; + if(CcLibConstant.USER_CHOOSE_ABLE_HEAD_COMPONENT_TYPES.indexOf(componentType) >= 0) + { + this.componentThumbs = ccTheme.getComponentThumbByType(componentType); + } + else if(CcLibConstant.USER_CHOOSE_ABLE_BODY_COMPONENT_TYPES.indexOf(componentType) >= 0) + { + this.componentThumbs = ccChar.bodyShape.getComponentThumbByType(componentType); + } + if(this.componentThumbs == null) + { + this.componentThumbs = new UtilHashArray(); + } + this.initTagFilter(); + var _componentThumbs:Array = []; + var enabledComponentThumbs:UtilHashArray = new UtilHashArray(); + i = 0; + while(i < this.componentThumbs.length) + { + if((this.componentThumbs.getValueByIndex(i) as CcComponentThumb).enable) + { + if(!this._filter || this._filter.filter(this.componentThumbs.getValueByIndex(i) as CcComponentThumb)) + { + _componentThumbs.push({ + "key":this.componentThumbs.getKey(i), + "data":this.componentThumbs.getValueByIndex(i), + "order":i + }); + } + } + i++; + } + _componentThumbs.sort(function(param1:Object, param2:Object):Number + { + var _loc3_:int = (param1.data as CcComponentThumb).displayOrder - (param2.data as CcComponentThumb).displayOrder; + return _loc3_ == 0?Number(param1.order - param2.order):Number(_loc3_); + }); + this._thumbnailSource = new ArrayCollection(); + var isNullThumbnailNeeded:Boolean = CcLibConstant.OPTIONAL_COMPONENTS.containsKey(componentType); + if(isNullThumbnailNeeded) + { + this._thumbnailSource.addItem({ + "key":"null", + "data":null + }); + } + for each(item in _componentThumbs) + { + this._thumbnailSource.addItem({ + "key":item.key, + "data":item.data + }); + } + _componentThumbs = null; + this.thumbnailTileSpark.setStyle("backgroundColor",null); + this.thumbnailTileSpark.setStyle("borderStyle",null); + this.dispatchEvent(new Event(EVENT_TAG_FILTER_CHANGED)); + this.thumbnailTileSpark.scroller.verticalScrollBar.addEventListener(Event.CHANGE,this.scrollerUpdate); + this.thumbnailTileSpark.addEventListener(FlexEvent.UPDATE_COMPLETE,this.scrollerUpdate); + this.scrollerUpdate(); + this.thumbnailTileSpark.scroller.addEventListener(MouseEvent.MOUSE_WHEEL,this.disableScroll,true); + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(this.componentType) > -1) + { + sLib = ccChar.getUserChosenLibraryByType(this.componentType); + if(sLib) + { + i = 0; + while(i < this._thumbnailSource.length) + { + if(this._thumbnailSource.getItemAt(i).key == this.componentType + "_" + sLib.component_id) + { + this.thumbnailTileSpark.selectedIndex = i; + break; + } + i++; + } + } + } + else + { + sComArray = ccChar.getUserChosenComponentByComponentType(this.componentType); + if(sComArray.length == 1) + { + sCom = sComArray[0] as CcComponent; + i = 0; + while(i < this._thumbnailSource.length) + { + if(this._thumbnailSource.getItemAt(i).key == sCom.componentThumb.internalId) + { + this.thumbnailTileSpark.selectedIndex = i; + break; + } + i++; + } + } + } + this.thumbnailTileSpark.removeEventListener(MouseEvent.CLICK,this.onDecoClick); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(this.componentType) > -1) + { + this.thumbnailTileSpark.addEventListener(MouseEvent.CLICK,this.onDecoClick); + this.thumbnailTileSpark.itemRenderer = new ClassFactory(DecoThumbRenderer); + } + else + { + this.thumbnailTileSpark.addEventListener(IndexChangeEvent.CHANGE,this.onThumbSelect); + this.thumbnailTileSpark.itemRenderer = new ClassFactory(ComponentItemRenderer); + } + callLater(this.thumbnailTileSpark.ensureIndexIsVisible,[this.thumbnailTileSpark.selectedIndex + 10 > this.thumbnailTileSpark.dataProvider.length?this.thumbnailTileSpark.selectedIndex:this.thumbnailTileSpark.selectedIndex + 10]); + } + + private function disableScroll(param1:MouseEvent) : void + { + param1.stopPropagation(); + } + + private function initPage() : void + { + this.doClearTimeOut(); + this.currentPageNum = 0; + } + + private function doClearTimeOut() : void + { + if(this.timeoutId >= 0) + { + clearTimeout(this.timeoutId); + } + this.timeoutId = -1; + } + + private function scrollerUpdate(param1:Event = null) : void + { + if(this.thumbnailTileSpark.scroller.verticalScrollBar.value == 0) + { + this.upButt.enabled = false; + } + else + { + this.upButt.enabled = true; + } + if(this.thumbnailTileSpark.scroller.verticalScrollBar.value == this.thumbnailTileSpark.scroller.verticalScrollBar.maximum) + { + this.downButt.enabled = false; + } + else + { + this.downButt.enabled = true; + } + this.upLayer.visible = this.downLayer.visible = this.thumbnailTileSpark.scroller.verticalScrollBar.includeInLayout; + } + + private function onDecoClick(param1:MouseEvent) : void + { + this.thumbnailTileSpark.selectedItem = null; + } + + private function onThumbSelect(param1:IndexChangeEvent) : void + { + var _loc2_:CcComponentThumbChooserEvent = null; + _loc2_ = new CcComponentThumbChooserEvent(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this); + _loc2_.componentThumb = param1.currentTarget.selectedItem.data; + if(!_loc2_.componentThumb) + { + _loc2_ = new CcComponentThumbChooserEvent(CcComponentThumbChooserEvent.NONE_COMPONENT_THUMB_CHOSEN,this); + _loc2_.noneComponentThumbType = this.componentType; + } + this.dispatchEvent(_loc2_); + } + + private function onThumbDown(param1:Event) : void + { + var _loc3_:CcComponentThumbChooserEvent = null; + var _loc2_:CcComponentThumbDetailThumbnail = param1.currentTarget as CcComponentThumbDetailThumbnail; + if(!_loc2_.isNullThumbnail) + { + _loc3_ = new CcComponentThumbChooserEvent(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this); + _loc3_.componentThumb = _loc2_.componentThumb; + this.dispatchEvent(_loc3_); + } + else + { + _loc3_ = new CcComponentThumbChooserEvent(CcComponentThumbChooserEvent.NONE_COMPONENT_THUMB_CHOSEN,this); + _loc3_.noneComponentThumbType = _loc2_.componentType; + this.dispatchEvent(_loc3_); + } + } + + private function initTile() : void + { + var _loc5_:int = 0; + var _loc6_:int = 0; + var _loc1_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_TILE_PADDING_SIZE; + var _loc2_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_TILE_PADDING_SIZE; + var _loc3_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_TILE_GAP_SIZE; + var _loc4_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_TILE_GAP_SIZE; + var _loc7_:Number = this.thumbnailTileSpark.width; + var _loc8_:Number = this.thumbnailTileSpark.height; + var _loc9_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_THUMBNAIL_HEIGHT; + var _loc10_:Number = CcLibConstant.COMPONENT_THUMB_CHOOSER_THUMBNAIL_WIDTH; + } + + private function scrollUpdate(param1:TimerEvent) : void + { + this.thumbnailTileSpark.scroller.verticalScrollBar.value = this.thumbnailTileSpark.scroller.verticalScrollBar.value + this.scrollDy; + } + + private function onMouseUp(param1:Event) : void + { + this.scrollDy = 0; + if(this.scrollTimer) + { + this.scrollTimer.stop(); + } + this.scrollerUpdate(); + } + + private function onMouseDown(param1:Event) : void + { + switch(param1.currentTarget) + { + case this.upButt: + this.scrollDy = -10; + break; + case this.downButt: + this.scrollDy = 10; + } + this.scrollTimer = new Timer(20); + this.scrollTimer.addEventListener(TimerEvent.TIMER,this.scrollUpdate); + this.scrollTimer.start(); + } + + private function _ComponentThumbChooserSpark_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._ComponentThumbChooserSpark_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _ComponentThumbChooserSpark_ThumbList1_i() : ThumbList + { + var _loc1_:ThumbList = new ThumbList(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.useHandCursor = true; + _loc1_.layout = this._ComponentThumbChooserSpark_TileLayout1_c(); + _loc1_.setStyle("borderVisible",false); + _loc1_.setStyle("contentBackgroundAlpha",0); + _loc1_.id = "thumbnailTileSpark"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.thumbnailTileSpark = _loc1_; + BindingManager.executeBindings(this,"thumbnailTileSpark",this.thumbnailTileSpark); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_TileLayout1_c() : TileLayout + { + var _loc1_:TileLayout = new TileLayout(); + _loc1_.paddingTop = 60; + _loc1_.paddingBottom = 60; + _loc1_.paddingLeft = 45; + _loc1_.paddingRight = 45; + _loc1_.verticalGap = 0; + _loc1_.horizontalGap = 0; + _loc1_.columnAlign = "justifyUsingGap"; + _loc1_.orientation = "rows"; + return _loc1_; + } + + private function _ComponentThumbChooserSpark_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.height = 45; + _loc1_.width = 639; + _loc1_.top = 0; + _loc1_.mxmlContent = [this._ComponentThumbChooserSpark_Rect2_c(),this._ComponentThumbChooserSpark_IconButton1_i()]; + _loc1_.id = "upLayer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.upLayer = _loc1_; + BindingManager.executeBindings(this,"upLayer",this.upLayer); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._ComponentThumbChooserSpark_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + _loc1_.alpha = 0.4; + return _loc1_; + } + + private function _ComponentThumbChooserSpark_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271); + _loc1_.addEventListener("mouseDown",this.__upButt_mouseDown); + _loc1_.addEventListener("mouseOut",this.__upButt_mouseOut); + _loc1_.addEventListener("mouseUp",this.__upButt_mouseUp); + _loc1_.id = "upButt"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.upButt = _loc1_; + BindingManager.executeBindings(this,"upButt",this.upButt); + return _loc1_; + } + + public function __upButt_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __upButt_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __upButt_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _ComponentThumbChooserSpark_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.height = 45; + _loc1_.width = 639; + _loc1_.bottom = 0; + _loc1_.mxmlContent = [this._ComponentThumbChooserSpark_Rect3_c(),this._ComponentThumbChooserSpark_IconButton2_i()]; + _loc1_.id = "downLayer"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.downLayer = _loc1_; + BindingManager.executeBindings(this,"downLayer",this.downLayer); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_Rect3_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._ComponentThumbChooserSpark_SolidColor3_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ComponentThumbChooserSpark_SolidColor3_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + _loc1_.alpha = 0.4; + return _loc1_; + } + + private function _ComponentThumbChooserSpark_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557); + _loc1_.addEventListener("mouseDown",this.__downButt_mouseDown); + _loc1_.addEventListener("mouseOut",this.__downButt_mouseOut); + _loc1_.addEventListener("mouseUp",this.__downButt_mouseUp); + _loc1_.id = "downButt"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.downButt = _loc1_; + BindingManager.executeBindings(this,"downButt",this.downButt); + return _loc1_; + } + + public function __downButt_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __downButt_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __downButt_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _ComponentThumbChooserSpark_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():IList + { + return _thumbnailSource; + },null,"thumbnailTileSpark.dataProvider"); + return result; + } + + [Bindable(event="propertyChange")] + public function get downButt() : IconButton + { + return this._1426573781downButt; + } + + public function set downButt(param1:IconButton) : void + { + var _loc2_:Object = this._1426573781downButt; + if(_loc2_ !== param1) + { + this._1426573781downButt = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"downButt",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get downLayer() : Group + { + return this._1282758095downLayer; + } + + public function set downLayer(param1:Group) : void + { + var _loc2_:Object = this._1282758095downLayer; + if(_loc2_ !== param1) + { + this._1282758095downLayer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"downLayer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get thumbnailTileSpark() : ThumbList + { + return this._1938834755thumbnailTileSpark; + } + + public function set thumbnailTileSpark(param1:ThumbList) : void + { + var _loc2_:Object = this._1938834755thumbnailTileSpark; + if(_loc2_ !== param1) + { + this._1938834755thumbnailTileSpark = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumbnailTileSpark",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get upButt() : IconButton + { + return this._839839922upButt; + } + + public function set upButt(param1:IconButton) : void + { + var _loc2_:Object = this._839839922upButt; + if(_loc2_ !== param1) + { + this._839839922upButt = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"upButt",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get upLayer() : Group + { + return this._256589962upLayer; + } + + public function set upLayer(param1:Group) : void + { + var _loc2_:Object = this._256589962upLayer; + if(_loc2_ !== param1) + { + this._256589962upLayer = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"upLayer",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get _thumbnailSource() : ArrayCollection + { + return this._480745960_thumbnailSource; + } + + private function set _thumbnailSource(param1:ArrayCollection) : void + { + var _loc2_:Object = this._480745960_thumbnailSource; + if(_loc2_ !== param1) + { + this._480745960_thumbnailSource = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_thumbnailSource",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557.as new file mode 100644 index 0000000..a390217 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_disabled_png_1737469557() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.as new file mode 100644 index 0000000..7384fd7 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_init_png_1145426563() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053.as new file mode 100644 index 0000000..7fcaef8 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrolldown_over_png_1537650053() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.as new file mode 100644 index 0000000..8662ba8 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_disabled_png_1375363271() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239.as new file mode 100644 index 0000000..d397f67 --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_init_png_878607239() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911.as b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911.as new file mode 100644 index 0000000..67a067d --- /dev/null +++ b/scripts/anifire/creator/components/ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911 extends BitmapAsset + { + + + public function ComponentThumbChooserSpark__embed_mxml__styles_images_thumbBox_scrollup_over_png_843131911() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ConfirmPopUp.as b/scripts/anifire/creator/components/ConfirmPopUp.as new file mode 100644 index 0000000..8e39352 --- /dev/null +++ b/scripts/anifire/creator/components/ConfirmPopUp.as @@ -0,0 +1,335 @@ +package anifire.creator.components +{ + import anifire.creator.skins.ConfirmPopUpSkin; + import anifire.event.StudioEvent; + import anifire.util.UtilDict; + import flash.display.DisplayObjectContainer; + import flash.events.MouseEvent; + import mx.core.FlexGlobals; + import mx.events.PropertyChangeEvent; + import spark.components.Label; + import spark.components.Panel; + import spark.components.supportClasses.ButtonBase; + import spark.events.PopUpEvent; + import spark.primitives.BitmapImage; + + public class ConfirmPopUp extends DefaultPopUpContainer + { + + public static const CONFIRM_POPUP_NO_ICON:int = 0; + + public static const CONFIRM_POPUP_INFO:int = 1; + + public static const CONFIRM_POPUP_ALERT:int = 2; + + public static const CONFIRM_POPUP_ERROR:int = 3; + + public static const imgAlert:Class = ConfirmPopUp_imgAlert; + + public static const imgConfirm:Class = ConfirmPopUp_imgConfirm; + + public static const imgError:Class = ConfirmPopUp_imgError; + + + [SkinPart(required="false")] + public var confirmButton:ButtonBase; + + [SkinPart(required="false")] + public var cancelButton:ButtonBase; + + [SkinPart(required="false")] + public var closeButton:ButtonBase; + + [SkinPart(required="true")] + public var panel:Panel; + + [SkinPart(required="false")] + public var messageLabel:Label; + + [SkinPart(required="false")] + public var iconDisplay:BitmapImage; + + protected var _iconType:int = 2; + + protected var _showConfirmButton:Boolean = true; + + protected var _showCancelButton:Boolean = true; + + protected var _showCloseButton:Boolean = true; + + public function ConfirmPopUp() + { + super(); + setStyle("fontSize",14); + setStyle("skinClass",ConfirmPopUpSkin); + } + + public static function openDefaultPopUpWithLocale(param1:String, param2:String = null, param3:DisplayObjectContainer = null, param4:Boolean = true, param5:Function = null) : ConfirmPopUp + { + if(param1) + { + param1 = UtilDict.toDisplay("go",param1); + } + if(param2) + { + param2 = UtilDict.toDisplay("go",param2); + } + return openDefaultPopUp(param1,param2,param3,param4,param5); + } + + public static function openDefaultPopUp(param1:String, param2:String = null, param3:DisplayObjectContainer = null, param4:Boolean = true, param5:Function = null) : ConfirmPopUp + { + var _loc6_:ConfirmPopUp = new ConfirmPopUp(); + _loc6_.createDefaultPopUp(); + _loc6_.message = param1; + if(param2) + { + _loc6_.title = param2; + } + if(param5 != null) + { + _loc6_.addEventListener(PopUpEvent.CLOSE,param5); + } + if(!param3) + { + param3 = FlexGlobals.topLevelApplication as DisplayObjectContainer; + } + _loc6_.open(param3,param4); + return _loc6_; + } + + public function createDefaultPopUp() : void + { + this.showCloseButton = false; + this.confirmText = UtilDict.toDisplay("go","OK"); + this.cancelText = UtilDict.toDisplay("go","Cancel"); + } + + [Bindable(event="propertyChange")] + public function get iconType() : int + { + return this._iconType; + } + + private function set _737911981iconType(param1:int) : void + { + if(this._iconType != param1) + { + this._iconType = param1; + if(this.iconDisplay) + { + this.updateIconDisplay(); + } + } + } + + protected function updateIconDisplay() : void + { + switch(this._iconType) + { + case CONFIRM_POPUP_INFO: + this.iconDisplay.source = imgConfirm; + break; + case CONFIRM_POPUP_ALERT: + this.iconDisplay.source = imgAlert; + break; + case CONFIRM_POPUP_ERROR: + this.iconDisplay.source = imgError; + break; + default: + this.iconDisplay.source = null; + } + } + + [Bindable(event="propertyChange")] + public function get showConfirmButton() : Boolean + { + return this._showConfirmButton; + } + + private function set _179584491showConfirmButton(param1:Boolean) : void + { + this._showConfirmButton = param1; + if(this.confirmButton) + { + this.confirmButton.includeInLayout = param1; + this.confirmButton.visible = param1; + } + } + + [Bindable(event="propertyChange")] + public function get showCancelButton() : Boolean + { + return this._showCancelButton; + } + + private function set _606509545showCancelButton(param1:Boolean) : void + { + this._showCancelButton = param1; + if(this.cancelButton) + { + this.cancelButton.includeInLayout = param1; + this.cancelButton.visible = param1; + } + } + + [Bindable(event="propertyChange")] + public function get showCloseButton() : Boolean + { + return this._showCloseButton; + } + + private function set _1859425293showCloseButton(param1:Boolean) : void + { + this._showCloseButton = param1; + if(this.closeButton) + { + this.closeButton.includeInLayout = param1; + this.closeButton.visible = param1; + } + } + + override public function set confirmText(param1:String) : void + { + super.confirmText = param1; + if(this.confirmButton) + { + this.confirmButton.label = param1; + } + } + + override public function set cancelText(param1:String) : void + { + super.cancelText = param1; + if(this.cancelButton) + { + this.cancelButton.label = param1; + } + } + + override public function set message(param1:String) : void + { + super.message = param1; + if(this.messageLabel) + { + this.messageLabel.text = param1; + } + } + + override protected function partAdded(param1:String, param2:Object) : void + { + if(param2 == this.confirmButton) + { + this.confirmButton.label = confirmText; + this.confirmButton.includeInLayout = this.showConfirmButton; + this.confirmButton.visible = this.showConfirmButton; + this.confirmButton.addEventListener(MouseEvent.CLICK,this.onConfirmButtonClick); + } + else if(param2 == this.cancelButton) + { + this.cancelButton.label = cancelText; + this.cancelButton.includeInLayout = this.showCancelButton; + this.cancelButton.visible = this.showCancelButton; + this.cancelButton.addEventListener(MouseEvent.CLICK,this.onCancelButtonClick); + } + else if(param2 == this.closeButton) + { + this.closeButton.includeInLayout = this.showCloseButton; + this.closeButton.visible = this.showCloseButton; + this.closeButton.addEventListener(MouseEvent.CLICK,this.onCloseButtonClick); + } + else if(param2 == this.messageLabel) + { + this.messageLabel.text = message; + } + else if(param2 == this.iconDisplay) + { + this.updateIconDisplay(); + } + } + + override protected function partRemoved(param1:String, param2:Object) : void + { + if(param2 == this.confirmButton) + { + this.confirmButton.removeEventListener(MouseEvent.CLICK,this.onConfirmButtonClick); + } + else if(param2 == this.cancelButton) + { + this.cancelButton.removeEventListener(MouseEvent.CLICK,this.onCancelButtonClick); + } + else if(param2 == this.closeButton) + { + this.closeButton.removeEventListener(MouseEvent.CLICK,this.onCloseButtonClick); + } + } + + protected function onConfirmButtonClick(param1:MouseEvent) : void + { + this.dispatchEvent(new StudioEvent(StudioEvent.POPUP_CONFIRM)); + confirm(); + } + + protected function onCancelButtonClick(param1:MouseEvent) : void + { + cancel(); + } + + protected function onCloseButtonClick(param1:MouseEvent) : void + { + cancel(); + } + + public function set showConfirmButton(param1:Boolean) : void + { + var _loc2_:Object = this.showConfirmButton; + if(_loc2_ !== param1) + { + this._179584491showConfirmButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"showConfirmButton",_loc2_,param1)); + } + } + } + + public function set showCloseButton(param1:Boolean) : void + { + var _loc2_:Object = this.showCloseButton; + if(_loc2_ !== param1) + { + this._1859425293showCloseButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"showCloseButton",_loc2_,param1)); + } + } + } + + public function set showCancelButton(param1:Boolean) : void + { + var _loc2_:Object = this.showCancelButton; + if(_loc2_ !== param1) + { + this._606509545showCancelButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"showCancelButton",_loc2_,param1)); + } + } + } + + public function set iconType(param1:int) : void + { + var _loc2_:Object = this.iconType; + if(_loc2_ !== param1) + { + this._737911981iconType = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconType",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ConfirmPopUp_imgAlert.as b/scripts/anifire/creator/components/ConfirmPopUp_imgAlert.as new file mode 100644 index 0000000..bac5945 --- /dev/null +++ b/scripts/anifire/creator/components/ConfirmPopUp_imgAlert.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ConfirmPopUp_imgAlert extends BitmapAsset + { + + + public function ConfirmPopUp_imgAlert() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ConfirmPopUp_imgConfirm.as b/scripts/anifire/creator/components/ConfirmPopUp_imgConfirm.as new file mode 100644 index 0000000..86a68d0 --- /dev/null +++ b/scripts/anifire/creator/components/ConfirmPopUp_imgConfirm.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ConfirmPopUp_imgConfirm extends BitmapAsset + { + + + public function ConfirmPopUp_imgConfirm() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ConfirmPopUp_imgError.as b/scripts/anifire/creator/components/ConfirmPopUp_imgError.as new file mode 100644 index 0000000..bc1a544 --- /dev/null +++ b/scripts/anifire/creator/components/ConfirmPopUp_imgError.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ConfirmPopUp_imgError extends BitmapAsset + { + + + public function ConfirmPopUp_imgError() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DecoThumbRenderer.as b/scripts/anifire/creator/components/DecoThumbRenderer.as new file mode 100644 index 0000000..47b3c91 --- /dev/null +++ b/scripts/anifire/creator/components/DecoThumbRenderer.as @@ -0,0 +1,437 @@ +package anifire.creator.components +{ + import anifire.creator.events.CcComponentLoadEvent; + import anifire.creator.models.CcComponentThumb; + import anifire.util.UtilUser; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Loader; + import flash.events.Event; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.utils.ByteArray; + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColorStroke; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.components.Image; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + + public class DecoThumbRenderer extends ItemRenderer implements IStateClient2 + { + + + private var _1510438808_DecoThumbRenderer_Image1:Image; + + private var _1510438807_DecoThumbRenderer_Image2:Image; + + private var _1010479525_DecoThumbRenderer_Rect1:Rect; + + private var _1600092163_loading:BusyIndicator; + + private var _2024940825imageDisplay:BitmapImage; + + private var _1906681184nullIcon:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var cid:String; + + private var thumb:CcComponentThumb; + + private var _1180261935isNull:Boolean = false; + + protected var _loader:Loader; + + protected var _bitmapData:BitmapData; + + protected var _displayWidth:Number = 105; + + protected var _displayHeight:Number = 105; + + protected var _displayMatrix:Matrix; + + private var _embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205:Class; + + private var _embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301:Class; + + public function DecoThumbRenderer() + { + this._loader = new Loader(); + this._displayMatrix = new Matrix(); + this._embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205 = DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205; + this._embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301 = DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301; + super(); + mx_internal::_document = this; + this.autoDrawBackground = false; + this.width = 105; + this.height = 105; + this.useHandCursor = true; + this.buttonMode = true; + this.mxmlContent = [this._DecoThumbRenderer_Group1_i(),this._DecoThumbRenderer_BusyIndicator1_i(),this._DecoThumbRenderer_BitmapImage1_i(),this._DecoThumbRenderer_Rect1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_DecoThumbRenderer_Image1", + "name":"visible", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_DecoThumbRenderer_Image2", + "name":"visible", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"width", + "value":105 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"height", + "value":105 + }),new SetProperty().initializeFromObject({ + "target":"_DecoThumbRenderer_Rect1", + "name":"visible", + "value":true + })] + })]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function set data(param1:Object) : void + { + if(!param1) + { + super.data = param1; + return; + } + this.cid = param1.key; + this.thumb = param1.data; + super.data = this.thumb; + if(!this.thumb) + { + this.isNull = true; + this.nullIcon.visible = true; + } + else + { + this.isNull = false; + this.nullIcon.visible = false; + } + if(this.thumb) + { + this.imageDisplay.source = null; + this.updateThumbData(); + } + else + { + this.imageDisplay.source = null; + } + if(UtilUser.hasAdminFeatures) + { + this.toolTip = this.cid; + } + } + + private function updateThumbData() : void + { + this.thumb.addEventListener(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this.onLoadThumbImage); + this.thumb.loadThumbnailImageData(); + this._loading.visible = true; + } + + private function onLoadThumbImage(param1:Event) : void + { + if(this.thumb && this.thumb.thumbnailImageData is ByteArray) + { + this._loader.contentLoaderInfo.addEventListener(Event.INIT,this.onImageLoaderInit); + this._loader.loadBytes(this.thumb.thumbnailImageData); + } + else + { + this.imageDisplay.source = null; + } + } + + protected function onImageLoaderInit(param1:Event = null) : void + { + if(this._loader.content is DisplayObject) + { + this.createBitmap(this._loader.content); + } + else + { + this.imageDisplay.source = this._loader.content; + } + this._loading.visible = false; + } + + protected function createBitmap(param1:DisplayObject) : void + { + this._bitmapData = new BitmapData(this._displayWidth,this._displayHeight,true,16711680); + this._displayMatrix.a = this._displayWidth / 60; + this._displayMatrix.d = this._displayHeight / 60; + this._bitmapData.draw(param1,this._displayMatrix,new ColorTransform(),null,null,true); + this.imageDisplay.source = this._bitmapData; + } + + private function _DecoThumbRenderer_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.visible = false; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._DecoThumbRenderer_Image1_i(),this._DecoThumbRenderer_Image2_i()]; + _loc1_.id = "nullIcon"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.nullIcon = _loc1_; + BindingManager.executeBindings(this,"nullIcon",this.nullIcon); + return _loc1_; + } + + private function _DecoThumbRenderer_Image1_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301; + _loc1_.visible = true; + _loc1_.id = "_DecoThumbRenderer_Image1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._DecoThumbRenderer_Image1 = _loc1_; + BindingManager.executeBindings(this,"_DecoThumbRenderer_Image1",this._DecoThumbRenderer_Image1); + return _loc1_; + } + + private function _DecoThumbRenderer_Image2_i() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205; + _loc1_.visible = false; + _loc1_.id = "_DecoThumbRenderer_Image2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._DecoThumbRenderer_Image2 = _loc1_; + BindingManager.executeBindings(this,"_DecoThumbRenderer_Image2",this._DecoThumbRenderer_Image2); + return _loc1_; + } + + private function _DecoThumbRenderer_BusyIndicator1_i() : BusyIndicator + { + var _loc1_:BusyIndicator = new BusyIndicator(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.visible = false; + _loc1_.setStyle("symbolColor",0); + _loc1_.id = "_loading"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._loading = _loc1_; + BindingManager.executeBindings(this,"_loading",this._loading); + return _loc1_; + } + + private function _DecoThumbRenderer_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.width = 90; + _loc1_.height = 90; + _loc1_.scaleX = -1; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.smoothingQuality = "high"; + _loc1_.smooth = true; + _loc1_.initialized(this,"imageDisplay"); + this.imageDisplay = _loc1_; + BindingManager.executeBindings(this,"imageDisplay",this.imageDisplay); + return _loc1_; + } + + private function _DecoThumbRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.visible = false; + _loc1_.stroke = this._DecoThumbRenderer_SolidColorStroke1_c(); + _loc1_.initialized(this,"_DecoThumbRenderer_Rect1"); + this._DecoThumbRenderer_Rect1 = _loc1_; + BindingManager.executeBindings(this,"_DecoThumbRenderer_Rect1",this._DecoThumbRenderer_Rect1); + return _loc1_; + } + + private function _DecoThumbRenderer_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 2210726; + _loc1_.weight = 1; + _loc1_.alpha = 1; + return _loc1_; + } + + [Bindable(event="propertyChange")] + public function get _DecoThumbRenderer_Image1() : Image + { + return this._1510438808_DecoThumbRenderer_Image1; + } + + public function set _DecoThumbRenderer_Image1(param1:Image) : void + { + var _loc2_:Object = this._1510438808_DecoThumbRenderer_Image1; + if(_loc2_ !== param1) + { + this._1510438808_DecoThumbRenderer_Image1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DecoThumbRenderer_Image1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _DecoThumbRenderer_Image2() : Image + { + return this._1510438807_DecoThumbRenderer_Image2; + } + + public function set _DecoThumbRenderer_Image2(param1:Image) : void + { + var _loc2_:Object = this._1510438807_DecoThumbRenderer_Image2; + if(_loc2_ !== param1) + { + this._1510438807_DecoThumbRenderer_Image2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DecoThumbRenderer_Image2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _DecoThumbRenderer_Rect1() : Rect + { + return this._1010479525_DecoThumbRenderer_Rect1; + } + + public function set _DecoThumbRenderer_Rect1(param1:Rect) : void + { + var _loc2_:Object = this._1010479525_DecoThumbRenderer_Rect1; + if(_loc2_ !== param1) + { + this._1010479525_DecoThumbRenderer_Rect1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DecoThumbRenderer_Rect1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _loading() : BusyIndicator + { + return this._1600092163_loading; + } + + public function set _loading(param1:BusyIndicator) : void + { + var _loc2_:Object = this._1600092163_loading; + if(_loc2_ !== param1) + { + this._1600092163_loading = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_loading",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get imageDisplay() : BitmapImage + { + return this._2024940825imageDisplay; + } + + public function set imageDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._2024940825imageDisplay; + if(_loc2_ !== param1) + { + this._2024940825imageDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"imageDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get nullIcon() : Group + { + return this._1906681184nullIcon; + } + + public function set nullIcon(param1:Group) : void + { + var _loc2_:Object = this._1906681184nullIcon; + if(_loc2_ !== param1) + { + this._1906681184nullIcon = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"nullIcon",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get isNull() : Boolean + { + return this._1180261935isNull; + } + + private function set isNull(param1:Boolean) : void + { + var _loc2_:Object = this._1180261935isNull; + if(_loc2_ !== param1) + { + this._1180261935isNull = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"isNull",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as b/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as new file mode 100644 index 0000000..f5e62b7 --- /dev/null +++ b/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301 extends BitmapAsset + { + + + public function DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_init_png_1572482301() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as b/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as new file mode 100644 index 0000000..b76e4b1 --- /dev/null +++ b/scripts/anifire/creator/components/DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205 extends BitmapAsset + { + + + public function DecoThumbRenderer__embed_mxml__styles_images_thumbBox_btn_remove_over_png_998649205() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DecorationItemRenderer.as b/scripts/anifire/creator/components/DecorationItemRenderer.as new file mode 100644 index 0000000..c37d26f --- /dev/null +++ b/scripts/anifire/creator/components/DecorationItemRenderer.as @@ -0,0 +1,472 @@ +package anifire.creator.components +{ + import anifire.creator.events.CcComponentLoadEvent; + import anifire.creator.events.CcSelectedDecorationEvent; + import anifire.creator.models.CcComponent; + import anifire.util.UtilDict; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Loader; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.utils.ByteArray; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class DecorationItemRenderer extends ItemRenderer implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1830212877_DecorationItemRenderer_Rect1:Rect; + + private var _563382433_DecorationItemRenderer_SolidColor1:SolidColor; + + private var _1600092163_loading:BusyIndicator; + + private var _150190887btnDelete:IconButton; + + private var _2024940825imageDisplay:BitmapImage; + + private var __moduleFactoryInitialized:Boolean = false; + + private var component:CcComponent; + + protected var _loader:Loader; + + protected var _bitmapData:BitmapData; + + protected var _displayWidth:Number = 60; + + protected var _displayHeight:Number = 60; + + protected var _displayMatrix:Matrix; + + private var _embed_mxml__styles_images_control_btn_delete_over_png_1240721219:Class; + + private var _embed_mxml__styles_images_control_btn_delete_init_png_1753458267:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function DecorationItemRenderer() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._loader = new Loader(); + this._displayMatrix = new Matrix(); + this._embed_mxml__styles_images_control_btn_delete_over_png_1240721219 = DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219; + this._embed_mxml__styles_images_control_btn_delete_init_png_1753458267 = DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._DecorationItemRenderer_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_DecorationItemRendererWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return DecorationItemRenderer[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.autoDrawBackground = false; + this.width = 70; + this.height = 70; + this.mxmlContent = [this._DecorationItemRenderer_Rect1_i(),this._DecorationItemRenderer_BusyIndicator1_i(),this._DecorationItemRenderer_BitmapImage1_i(),this._DecorationItemRenderer_IconButton1_i()]; + this.currentState = "normal"; + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"width", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"height", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"radiusX", + "value":10 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"radiusY", + "value":10 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_SolidColor1", + "name":"color", + "value":14870509 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"width", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"height", + "value":70 + })] + }),new State({ + "name":"selected", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_SolidColor1", + "name":"color", + "value":14870509 + })] + }),new State({ + "name":"normalAndShowsCaret", + "overrides":[] + }),new State({ + "name":"hoveredAndShowsCaret", + "overrides":[] + }),new State({ + "name":"selectedAndShowsCaret", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"width", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_Rect1", + "name":"height", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"_DecorationItemRenderer_SolidColor1", + "name":"color", + "value":14870509 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"width", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"imageDisplay", + "name":"height", + "value":70 + }),new SetProperty().initializeFromObject({ + "target":"btnDelete", + "name":"visible", + "value":true + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + DecorationItemRenderer._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function set data(param1:Object) : void + { + super.data = param1; + this.component = param1 as CcComponent; + if(this.component) + { + this.imageDisplay.source = null; + this.updateThumbData(); + } + else + { + this.imageDisplay.source = null; + } + } + + private function updateThumbData() : void + { + this.component.componentThumb.addEventListener(CcComponentLoadEvent.LOAD_THUMBNAIL_IMAGE_DATA_COMPLETE,this.onLoadThumbImage); + this.component.componentThumb.loadThumbnailImageData(); + this._loading.visible = true; + } + + private function onLoadThumbImage(param1:Event) : void + { + var e:Event = param1; + try + { + if(this.component.componentThumb && this.component.componentThumb.thumbnailImageData is ByteArray) + { + this._loader.contentLoaderInfo.addEventListener(Event.INIT,this.onImageLoaderInit); + this._loader.loadBytes(this.component.componentThumb.thumbnailImageData); + } + else + { + this.imageDisplay.source = null; + } + return; + } + catch(e:Error) + { + return; + } + } + + protected function onImageLoaderInit(param1:Event = null) : void + { + if(this._loader.content is DisplayObject) + { + this.createBitmap(this._loader.content); + } + else + { + this.imageDisplay.source = this._loader.content; + } + this._loading.visible = false; + } + + protected function createBitmap(param1:DisplayObject) : void + { + this._bitmapData = new BitmapData(this._displayWidth,this._displayHeight,true,16711680); + this._bitmapData.draw(param1,this._displayMatrix,new ColorTransform(),null,null,true); + this.imageDisplay.source = this._bitmapData; + } + + private function onDeleteClick(param1:Event) : void + { + owner.dispatchEvent(new CcSelectedDecorationEvent(CcSelectedDecorationEvent.DECORATION_DELETED,this)); + } + + private function _DecorationItemRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 50; + _loc1_.height = 50; + _loc1_.radiusX = 5; + _loc1_.radiusY = 5; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.fill = this._DecorationItemRenderer_SolidColor1_i(); + _loc1_.initialized(this,"_DecorationItemRenderer_Rect1"); + this._DecorationItemRenderer_Rect1 = _loc1_; + BindingManager.executeBindings(this,"_DecorationItemRenderer_Rect1",this._DecorationItemRenderer_Rect1); + return _loc1_; + } + + private function _DecorationItemRenderer_SolidColor1_i() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16777215; + this._DecorationItemRenderer_SolidColor1 = _loc1_; + BindingManager.executeBindings(this,"_DecorationItemRenderer_SolidColor1",this._DecorationItemRenderer_SolidColor1); + return _loc1_; + } + + private function _DecorationItemRenderer_BusyIndicator1_i() : BusyIndicator + { + var _loc1_:BusyIndicator = new BusyIndicator(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.visible = false; + _loc1_.setStyle("symbolColor",0); + _loc1_.id = "_loading"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._loading = _loc1_; + BindingManager.executeBindings(this,"_loading",this._loading); + return _loc1_; + } + + private function _DecorationItemRenderer_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.width = 50; + _loc1_.height = 50; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.smoothingQuality = "high"; + _loc1_.smooth = true; + _loc1_.initialized(this,"imageDisplay"); + this.imageDisplay = _loc1_; + BindingManager.executeBindings(this,"imageDisplay",this.imageDisplay); + return _loc1_; + } + + private function _DecorationItemRenderer_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.visible = false; + _loc1_.enabled = true; + _loc1_.bottom = 10; + _loc1_.right = 10; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_control_btn_delete_init_png_1753458267); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_control_btn_delete_over_png_1240721219); + _loc1_.addEventListener("click",this.__btnDelete_click); + _loc1_.id = "btnDelete"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnDelete = _loc1_; + BindingManager.executeBindings(this,"btnDelete",this.btnDelete); + return _loc1_; + } + + public function __btnDelete_click(param1:MouseEvent) : void + { + this.onDeleteClick(param1); + } + + private function _DecorationItemRenderer_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Delete"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnDelete.label"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _DecorationItemRenderer_Rect1() : Rect + { + return this._1830212877_DecorationItemRenderer_Rect1; + } + + public function set _DecorationItemRenderer_Rect1(param1:Rect) : void + { + var _loc2_:Object = this._1830212877_DecorationItemRenderer_Rect1; + if(_loc2_ !== param1) + { + this._1830212877_DecorationItemRenderer_Rect1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DecorationItemRenderer_Rect1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _DecorationItemRenderer_SolidColor1() : SolidColor + { + return this._563382433_DecorationItemRenderer_SolidColor1; + } + + public function set _DecorationItemRenderer_SolidColor1(param1:SolidColor) : void + { + var _loc2_:Object = this._563382433_DecorationItemRenderer_SolidColor1; + if(_loc2_ !== param1) + { + this._563382433_DecorationItemRenderer_SolidColor1 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_DecorationItemRenderer_SolidColor1",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _loading() : BusyIndicator + { + return this._1600092163_loading; + } + + public function set _loading(param1:BusyIndicator) : void + { + var _loc2_:Object = this._1600092163_loading; + if(_loc2_ !== param1) + { + this._1600092163_loading = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_loading",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnDelete() : IconButton + { + return this._150190887btnDelete; + } + + public function set btnDelete(param1:IconButton) : void + { + var _loc2_:Object = this._150190887btnDelete; + if(_loc2_ !== param1) + { + this._150190887btnDelete = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnDelete",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get imageDisplay() : BitmapImage + { + return this._2024940825imageDisplay; + } + + public function set imageDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._2024940825imageDisplay; + if(_loc2_ !== param1) + { + this._2024940825imageDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"imageDisplay",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267.as b/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267.as new file mode 100644 index 0000000..4907dba --- /dev/null +++ b/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267 extends BitmapAsset + { + + + public function DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_init_png_1753458267() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219.as b/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219.as new file mode 100644 index 0000000..9c09917 --- /dev/null +++ b/scripts/anifire/creator/components/DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219 extends BitmapAsset + { + + + public function DecorationItemRenderer__embed_mxml__styles_images_control_btn_delete_over_png_1240721219() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DecorationPanel.as b/scripts/anifire/creator/components/DecorationPanel.as new file mode 100644 index 0000000..8d6ff15 --- /dev/null +++ b/scripts/anifire/creator/components/DecorationPanel.as @@ -0,0 +1,363 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcSelectedDecorationEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcComponent; + import flash.events.Event; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayCollection; + import mx.collections.IList; + import mx.core.ClassFactory; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import spark.components.Group; + import spark.components.List; + import spark.events.IndexChangeEvent; + import spark.events.ListEvent; + import spark.layouts.HorizontalLayout; + + use namespace mx_internal; + + public class DecorationPanel extends Group implements IBindingClient + { + + public static const THUMB_INIT:String = "Init"; + + public static const THUMB_OVER:String = "Over"; + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1754705447selectedList:List; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _selectedThumb:CcComponentThumbThumbnail; + + private var _480745960_thumbnailSource:ArrayCollection; + + private var _1829184970_decoratedList:Array; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function DecorationPanel() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._1829184970_decoratedList = new Array(); + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._DecorationPanel_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_DecorationPanelWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return DecorationPanel[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.percentWidth = 100; + this.height = 80; + this.mxmlContent = [this._DecorationPanel_List1_i()]; + this.addEventListener("creationComplete",this.___DecorationPanel_Group1_creationComplete); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + DecorationPanel._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function set visible(param1:Boolean) : void + { + super.visible = param1; + var _loc2_:Number = this.selectedList.numChildren; + if(param1) + { + this.selectedList.addEventListener(ListEvent.ITEM_ROLL_OVER,this.onThumbMouseOver); + this.selectedList.addEventListener(ListEvent.ITEM_ROLL_OUT,this.onThumbMouseOut); + this.selectedList.addEventListener(IndexChangeEvent.CARET_CHANGE,this.onThumbDown); + this.selectedList.addEventListener(CcSelectedDecorationEvent.DECORATION_DELETED,this.onThumbDelete); + } + else + { + this.selectedList.removeEventListener(ListEvent.ITEM_ROLL_OVER,this.onThumbMouseOver); + this.selectedList.removeEventListener(ListEvent.ITEM_ROLL_OUT,this.onThumbMouseOut); + this.selectedList.removeEventListener(IndexChangeEvent.CARET_CHANGE,this.onThumbDown); + this.selectedList.removeEventListener(CcSelectedDecorationEvent.DECORATION_DELETED,this.onThumbDelete); + } + } + + public function set selectedThumb(param1:CcComponentThumbThumbnail) : void + { + var _loc2_:Number = this.selectedList.numChildren; + var _loc3_:int = 0; + while(_loc3_ < _loc2_) + { + _loc3_++; + } + this._selectedThumb = param1; + } + + public function init() : void + { + this._decoratedList = new Array(); + this._thumbnailSource = new ArrayCollection(); + this._thumbnailSource.source = this._decoratedList; + } + + public function initByCcChar(param1:CcCharacter) : void + { + var _loc3_:CcComponent = null; + this.init(); + var _loc2_:int = 0; + while(_loc2_ < param1.getUserChosenComponentSize()) + { + _loc3_ = param1.getUserChosenComponentByIndex(_loc2_); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc3_.componentThumb.type) > -1) + { + this.addComponent(_loc3_); + } + _loc2_++; + } + } + + public function addComponent(param1:CcComponent) : void + { + this.addThumbnail(param1,param1.componentThumb.type); + } + + private function onThumbDelete(param1:Event) : void + { + var _loc2_:CcSelectedDecorationEvent = null; + _loc2_ = new CcSelectedDecorationEvent(CcSelectedDecorationEvent.DECORATION_DELETED,this); + _loc2_.ccComponent = this._decoratedList[this.selectedList.selectedIndex]; + this.dispatchEvent(_loc2_); + this._decoratedList.splice(this.selectedList.selectedIndex,1); + if(this._decoratedList.length <= 0) + { + this._thumbnailSource = null; + } + else + { + this._thumbnailSource = new ArrayCollection(); + this._thumbnailSource.source = this._decoratedList; + } + this.selectedList.validateNow(); + } + + private function addThumbnail(param1:CcComponent, param2:String) : void + { + this._decoratedList.push(param1); + this._thumbnailSource = new ArrayCollection(); + this._thumbnailSource.source = this._decoratedList; + this.selectedList.validateNow(); + this.selectedList.selectedIndex = this.selectedList.dataProvider.length - 1; + this.selectedList.ensureIndexIsVisible(this.selectedList.dataProvider.length - 1); + } + + private function onThumbDown(param1:IndexChangeEvent) : void + { + var _loc2_:CcComponent = null; + var _loc3_:CcSelectedDecorationEvent = null; + if(param1.newIndex > -1) + { + _loc2_ = this._decoratedList[param1.newIndex]; + _loc3_ = new CcSelectedDecorationEvent(CcSelectedDecorationEvent.DECORATION_CHOOSEN,this); + _loc3_.ccComponent = _loc2_; + this.dispatchEvent(_loc3_); + } + } + + private function onThumbMouseOver(param1:ListEvent) : void + { + var _loc2_:CcComponent = null; + var _loc3_:CcSelectedDecorationEvent = null; + try + { + _loc2_ = this._decoratedList[param1.itemIndex]; + _loc3_ = new CcSelectedDecorationEvent(CcSelectedDecorationEvent.DECORATION_MOUSE_OVER,this); + _loc3_.ccComponent = _loc2_; + this.dispatchEvent(_loc3_); + return; + } + catch(e:Error) + { + return; + } + } + + private function onThumbMouseOut(param1:ListEvent) : void + { + var _loc2_:CcComponent = null; + var _loc3_:CcSelectedDecorationEvent = null; + try + { + _loc2_ = this._decoratedList[param1.itemIndex]; + _loc3_ = new CcSelectedDecorationEvent(CcSelectedDecorationEvent.DECORATION_MOUSE_OUT,this); + _loc3_.ccComponent = _loc2_; + this.dispatchEvent(_loc3_); + return; + } + catch(e:Error) + { + return; + } + } + + private function _DecorationPanel_List1_i() : List + { + var _loc1_:List = new List(); + _loc1_.itemRenderer = this._DecorationPanel_ClassFactory1_c(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.layout = this._DecorationPanel_HorizontalLayout1_c(); + _loc1_.setStyle("borderVisible",false); + _loc1_.setStyle("contentBackgroundAlpha",0); + _loc1_.setStyle("verticalScrollPolicy","off"); + _loc1_.id = "selectedList"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.selectedList = _loc1_; + BindingManager.executeBindings(this,"selectedList",this.selectedList); + return _loc1_; + } + + private function _DecorationPanel_ClassFactory1_c() : ClassFactory + { + var _loc1_:ClassFactory = new ClassFactory(); + _loc1_.generator = DecorationItemRenderer; + return _loc1_; + } + + private function _DecorationPanel_HorizontalLayout1_c() : HorizontalLayout + { + var _loc1_:HorizontalLayout = new HorizontalLayout(); + _loc1_.paddingTop = 5; + _loc1_.paddingBottom = 5; + _loc1_.paddingLeft = 15; + _loc1_.paddingRight = 15; + _loc1_.gap = 10; + return _loc1_; + } + + public function ___DecorationPanel_Group1_creationComplete(param1:FlexEvent) : void + { + this.init(); + } + + private function _DecorationPanel_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():IList + { + return _thumbnailSource; + },null,"selectedList.dataProvider"); + return result; + } + + [Bindable(event="propertyChange")] + public function get selectedList() : List + { + return this._1754705447selectedList; + } + + public function set selectedList(param1:List) : void + { + var _loc2_:Object = this._1754705447selectedList; + if(_loc2_ !== param1) + { + this._1754705447selectedList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"selectedList",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get _thumbnailSource() : ArrayCollection + { + return this._480745960_thumbnailSource; + } + + private function set _thumbnailSource(param1:ArrayCollection) : void + { + var _loc2_:Object = this._480745960_thumbnailSource; + if(_loc2_ !== param1) + { + this._480745960_thumbnailSource = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_thumbnailSource",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get _decoratedList() : Array + { + return this._1829184970_decoratedList; + } + + private function set _decoratedList(param1:Array) : void + { + var _loc2_:Object = this._1829184970_decoratedList; + if(_loc2_ !== param1) + { + this._1829184970_decoratedList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_decoratedList",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DefaultDropDownListItemRenderer.as b/scripts/anifire/creator/components/DefaultDropDownListItemRenderer.as new file mode 100644 index 0000000..849834d --- /dev/null +++ b/scripts/anifire/creator/components/DefaultDropDownListItemRenderer.as @@ -0,0 +1,244 @@ +package anifire.creator.components +{ + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.AddItems; + import mx.states.SetStyle; + import mx.states.State; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.BitmapImage; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class DefaultDropDownListItemRenderer extends ItemRenderer implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _DefaultDropDownListItemRenderer_Rect1:Rect; + + private var _1031744009iconDisplay:BitmapImage; + + private var __moduleFactoryInitialized:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function DefaultDropDownListItemRenderer() + { + var bindings:Array = null; + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + bindings = this._DefaultDropDownListItemRenderer_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_DefaultDropDownListItemRendererWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return DefaultDropDownListItemRenderer[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.autoDrawBackground = false; + this.buttonMode = true; + this.minHeight = 28; + this.mxmlContent = [this._DefaultDropDownListItemRenderer_HGroup1_c()]; + this.currentState = "normal"; + var _DefaultDropDownListItemRenderer_Rect1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._DefaultDropDownListItemRenderer_Rect1_i); + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "stateGroups":["hoveredStates"], + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_DefaultDropDownListItemRenderer_Rect1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetStyle().initializeFromObject({ + "target":"labelDisplay", + "name":"color", + "value":16777215 + })] + }),new State({ + "name":"selected", + "stateGroups":["hoveredStates"], + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_DefaultDropDownListItemRenderer_Rect1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetStyle().initializeFromObject({ + "target":"labelDisplay", + "name":"color", + "value":16777215 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + DefaultDropDownListItemRenderer._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function getIcon(param1:Object) : Class + { + if(param1) + { + return param1.icon; + } + return null; + } + + private function _DefaultDropDownListItemRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 3; + _loc1_.right = 3; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.fill = this._DefaultDropDownListItemRenderer_SolidColor1_c(); + _loc1_.initialized(this,"_DefaultDropDownListItemRenderer_Rect1"); + this._DefaultDropDownListItemRenderer_Rect1 = _loc1_; + BindingManager.executeBindings(this,"_DefaultDropDownListItemRenderer_Rect1",this._DefaultDropDownListItemRenderer_Rect1); + return _loc1_; + } + + private function _DefaultDropDownListItemRenderer_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 6142119; + return _loc1_; + } + + private function _DefaultDropDownListItemRenderer_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.verticalAlign = "middle"; + _loc1_.paddingLeft = 8; + _loc1_.paddingRight = 8; + _loc1_.paddingTop = 5; + _loc1_.paddingBottom = 5; + _loc1_.mxmlContent = [this._DefaultDropDownListItemRenderer_BitmapImage1_i(),this._DefaultDropDownListItemRenderer_Label1_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _DefaultDropDownListItemRenderer_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.scaleMode = "letterbox"; + _loc1_.initialized(this,"iconDisplay"); + this.iconDisplay = _loc1_; + BindingManager.executeBindings(this,"iconDisplay",this.iconDisplay); + return _loc1_; + } + + private function _DefaultDropDownListItemRenderer_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.percentWidth = 100; + _loc1_.height = 18; + _loc1_.setStyle("paddingTop",1); + _loc1_.setStyle("verticalAlign","middle"); + _loc1_.setStyle("fontWeight","bold"); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",labelDisplay); + return _loc1_; + } + + private function _DefaultDropDownListItemRenderer_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Object + { + return getIcon(data); + },null,"iconDisplay.source"); + result[1] = new Binding(this,function():Boolean + { + return getIcon(data) != null; + },null,"iconDisplay.includeInLayout"); + return result; + } + + [Bindable(event="propertyChange")] + public function get iconDisplay() : BitmapImage + { + return this._1031744009iconDisplay; + } + + public function set iconDisplay(param1:BitmapImage) : void + { + var _loc2_:Object = this._1031744009iconDisplay; + if(_loc2_ !== param1) + { + this._1031744009iconDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"iconDisplay",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DefaultPopUpContainer.as b/scripts/anifire/creator/components/DefaultPopUpContainer.as new file mode 100644 index 0000000..3f6fc54 --- /dev/null +++ b/scripts/anifire/creator/components/DefaultPopUpContainer.as @@ -0,0 +1,186 @@ +package anifire.creator.components +{ + import flash.display.DisplayObjectContainer; + import mx.core.IFlexModuleFactory; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.managers.PopUpManager; + import spark.components.SkinnablePopUpContainer; + + public class DefaultPopUpContainer extends SkinnablePopUpContainer + { + + + private var __moduleFactoryInitialized:Boolean = false; + + protected var _title:String; + + protected var _message:String; + + protected var _confirmText:String; + + protected var _cancelText:String; + + protected var _data:Object; + + public function DefaultPopUpContainer() + { + super(); + mx_internal::_document = this; + this.addEventListener("creationComplete",this.___DefaultPopUpContainer_SkinnablePopUpContainer1_creationComplete); + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + public function set data(param1:Object) : void + { + this._data = param1; + } + + [Bindable(event="propertyChange")] + public function get title() : String + { + return this._title; + } + + private function set _110371416title(param1:String) : void + { + if(this._title != param1) + { + this._title = param1; + } + } + + [Bindable(event="propertyChange")] + public function get message() : String + { + return this._message; + } + + private function set _954925063message(param1:String) : void + { + if(this._message != param1) + { + this._message = param1; + } + } + + [Bindable(event="propertyChange")] + public function get confirmText() : String + { + return this._confirmText; + } + + private function set _344408077confirmText(param1:String) : void + { + if(this._confirmText != param1) + { + this._confirmText = param1; + } + } + + [Bindable(event="propertyChange")] + public function get cancelText() : String + { + return this._cancelText; + } + + private function set _1888623303cancelText(param1:String) : void + { + if(this._cancelText != param1) + { + this._cancelText = param1; + } + } + + protected function confirm() : void + { + close(true,this._data); + } + + protected function cancel() : void + { + close(false,this._data); + } + + protected function init() : void + { + } + + override public function open(param1:DisplayObjectContainer, param2:Boolean = false) : void + { + super.open(param1,param2); + PopUpManager.centerPopUp(this); + } + + public function ___DefaultPopUpContainer_SkinnablePopUpContainer1_creationComplete(param1:FlexEvent) : void + { + this.init(); + } + + public function set confirmText(param1:String) : void + { + var _loc2_:Object = this.confirmText; + if(_loc2_ !== param1) + { + this._344408077confirmText = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"confirmText",_loc2_,param1)); + } + } + } + + public function set message(param1:String) : void + { + var _loc2_:Object = this.message; + if(_loc2_ !== param1) + { + this._954925063message = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"message",_loc2_,param1)); + } + } + } + + public function set title(param1:String) : void + { + var _loc2_:Object = this.title; + if(_loc2_ !== param1) + { + this._110371416title = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"title",_loc2_,param1)); + } + } + } + + public function set cancelText(param1:String) : void + { + var _loc2_:Object = this.cancelText; + if(_loc2_ !== param1) + { + this._1888623303cancelText = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"cancelText",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark.as b/scripts/anifire/creator/components/DirectionControlSpark.as new file mode 100644 index 0000000..0409436 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark.as @@ -0,0 +1,416 @@ +package anifire.creator.components +{ + import anifire.creator.events.CcThumbPropertyEvent; + import anifire.creator.models.CcComponent; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.events.TimerEvent; + import flash.utils.Timer; + import mx.binding.BindingManager; + import mx.core.IFlexModuleFactory; + import mx.events.PropertyChangeEvent; + import spark.components.Group; + import spark.components.Image; + + public class DirectionControlSpark extends Group + { + + + private var _205752606btnDown:IconButton; + + private var _205980803btnLeft:IconButton; + + private var _2096098592btnRight:IconButton; + + private var _94069271btnUp:IconButton; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _component:CcComponent; + + private var _timer:Timer; + + private var _type:String; + + private var _embed_mxml__styles_images_details_arrow_right_over_png_1436963749:Class; + + private var _embed_mxml__styles_images_details_arrow_right_init_png_1972087997:Class; + + private var _embed_mxml__styles_images_details_arrow_down_init_png_658249917:Class; + + private var _embed_mxml__styles_images_details_arrow_left_init_png_641472697:Class; + + private var _embed_mxml__styles_images_details_arrow_right_down_png_2074750393:Class; + + private var _embed_mxml__styles_images_details_arrow_down_over_png_638434213:Class; + + private var _embed_mxml__styles_images_details_arrow_left_over_png_556579001:Class; + + private var _embed_mxml__styles_images_details_arrow_left_down_png_1371776587:Class; + + private var _embed_mxml__styles_images_details_arrow_up_down_png_1026025411:Class; + + private var _embed_mxml__styles_images_details_arrow_up_init_png_782509959:Class; + + private var _embed_mxml__styles_images_details_arrow_up_over_png_223823367:Class; + + private var _embed_mxml__styles_images_details_bg_cross_png_1281283403:Class; + + private var _embed_mxml__styles_images_details_arrow_down_down_png_1317250631:Class; + + public function DirectionControlSpark() + { + this._embed_mxml__styles_images_details_arrow_right_over_png_1436963749 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749; + this._embed_mxml__styles_images_details_arrow_right_init_png_1972087997 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997; + this._embed_mxml__styles_images_details_arrow_down_init_png_658249917 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917; + this._embed_mxml__styles_images_details_arrow_left_init_png_641472697 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697; + this._embed_mxml__styles_images_details_arrow_right_down_png_2074750393 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393; + this._embed_mxml__styles_images_details_arrow_down_over_png_638434213 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213; + this._embed_mxml__styles_images_details_arrow_left_over_png_556579001 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001; + this._embed_mxml__styles_images_details_arrow_left_down_png_1371776587 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587; + this._embed_mxml__styles_images_details_arrow_up_down_png_1026025411 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411; + this._embed_mxml__styles_images_details_arrow_up_init_png_782509959 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959; + this._embed_mxml__styles_images_details_arrow_up_over_png_223823367 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367; + this._embed_mxml__styles_images_details_bg_cross_png_1281283403 = DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403; + this._embed_mxml__styles_images_details_arrow_down_down_png_1317250631 = DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631; + super(); + mx_internal::_document = this; + this.width = 65; + this.height = 65; + this.mxmlContent = [this._DirectionControlSpark_Image1_c(),this._DirectionControlSpark_IconButton1_i(),this._DirectionControlSpark_IconButton2_i(),this._DirectionControlSpark_IconButton3_i(),this._DirectionControlSpark_IconButton4_i()]; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function onMouseDown(param1:Event) : void + { + var _loc2_:CcThumbPropertyEvent = null; + this._type = this.getTypeByEventTarget(param1.currentTarget); + _loc2_ = new CcThumbPropertyEvent(this._type,this); + this.dispatch(_loc2_); + this._timer = new Timer(1000,1); + this._timer.addEventListener(TimerEvent.TIMER,this.doFirstTimer); + this._timer.start(); + } + + private function onMouseUp(param1:Event) : void + { + var _loc2_:CcThumbPropertyEvent = null; + if(this._timer != null && this._timer.running) + { + this._timer.stop(); + this._timer.removeEventListener(TimerEvent.TIMER,this.doTimer); + _loc2_ = new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_LOCATION_UPDATE,this); + this.dispatch(_loc2_); + } + } + + private function doFirstTimer(param1:TimerEvent) : void + { + this._timer.stop(); + this._timer.removeEventListener(TimerEvent.TIMER,this.doFirstTimer); + this._timer = new Timer(20); + this._timer.addEventListener(TimerEvent.TIMER,this.doTimer); + this._timer.start(); + } + + private function doTimer(param1:TimerEvent) : void + { + var _loc2_:String = null; + var _loc3_:CcThumbPropertyEvent = null; + _loc2_ = this._type; + _loc3_ = new CcThumbPropertyEvent(_loc2_,this); + this.dispatch(_loc3_); + } + + private function onClick(param1:Event) : void + { + var _loc3_:CcThumbPropertyEvent = null; + var _loc2_:String = this.getTypeByEventTarget(param1.currentTarget); + _loc3_ = new CcThumbPropertyEvent(_loc2_,this); + this.dispatch(_loc3_); + } + + public function destroy() : void + { + this.visible = false; + } + + private function dispatch(param1:Event) : void + { + this.dispatchEvent(param1); + } + + private function getTypeByEventTarget(param1:Object) : String + { + var _loc2_:String = ""; + switch(param1) + { + case this.btnUp: + _loc2_ = CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK; + break; + case this.btnDown: + _loc2_ = CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK; + break; + case this.btnLeft: + _loc2_ = CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK; + break; + case this.btnRight: + _loc2_ = CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK; + } + return _loc2_; + } + + private function _DirectionControlSpark_Image1_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_details_bg_cross_png_1281283403; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _DirectionControlSpark_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.horizontalCenter = 0; + _loc1_.top = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_arrow_up_init_png_782509959); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_arrow_up_over_png_223823367); + _loc1_.setStyle("iconDown",this._embed_mxml__styles_images_details_arrow_up_down_png_1026025411); + _loc1_.addEventListener("mouseDown",this.__btnUp_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnUp_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnUp_mouseUp); + _loc1_.id = "btnUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnUp = _loc1_; + BindingManager.executeBindings(this,"btnUp",this.btnUp); + return _loc1_; + } + + public function __btnUp_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnUp_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnUp_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _DirectionControlSpark_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.horizontalCenter = 0; + _loc1_.bottom = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_arrow_down_init_png_658249917); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_arrow_down_over_png_638434213); + _loc1_.setStyle("iconDown",this._embed_mxml__styles_images_details_arrow_down_down_png_1317250631); + _loc1_.addEventListener("mouseDown",this.__btnDown_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnDown_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnDown_mouseUp); + _loc1_.id = "btnDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnDown = _loc1_; + BindingManager.executeBindings(this,"btnDown",this.btnDown); + return _loc1_; + } + + public function __btnDown_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnDown_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnDown_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _DirectionControlSpark_IconButton3_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.verticalCenter = 0; + _loc1_.left = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_arrow_left_init_png_641472697); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_arrow_left_over_png_556579001); + _loc1_.setStyle("iconDown",this._embed_mxml__styles_images_details_arrow_left_down_png_1371776587); + _loc1_.addEventListener("mouseDown",this.__btnLeft_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnLeft_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnLeft_mouseUp); + _loc1_.id = "btnLeft"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnLeft = _loc1_; + BindingManager.executeBindings(this,"btnLeft",this.btnLeft); + return _loc1_; + } + + public function __btnLeft_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnLeft_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnLeft_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + private function _DirectionControlSpark_IconButton4_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.verticalCenter = 0; + _loc1_.right = 0; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_arrow_right_init_png_1972087997); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_arrow_right_over_png_1436963749); + _loc1_.setStyle("iconDown",this._embed_mxml__styles_images_details_arrow_right_down_png_2074750393); + _loc1_.addEventListener("mouseDown",this.__btnRight_mouseDown); + _loc1_.addEventListener("mouseOut",this.__btnRight_mouseOut); + _loc1_.addEventListener("mouseUp",this.__btnRight_mouseUp); + _loc1_.id = "btnRight"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnRight = _loc1_; + BindingManager.executeBindings(this,"btnRight",this.btnRight); + return _loc1_; + } + + public function __btnRight_mouseDown(param1:MouseEvent) : void + { + this.onMouseDown(param1); + } + + public function __btnRight_mouseOut(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + public function __btnRight_mouseUp(param1:MouseEvent) : void + { + this.onMouseUp(param1); + } + + [Bindable(event="propertyChange")] + public function get btnDown() : IconButton + { + return this._205752606btnDown; + } + + public function set btnDown(param1:IconButton) : void + { + var _loc2_:Object = this._205752606btnDown; + if(_loc2_ !== param1) + { + this._205752606btnDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnLeft() : IconButton + { + return this._205980803btnLeft; + } + + public function set btnLeft(param1:IconButton) : void + { + var _loc2_:Object = this._205980803btnLeft; + if(_loc2_ !== param1) + { + this._205980803btnLeft = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnLeft",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnRight() : IconButton + { + return this._2096098592btnRight; + } + + public function set btnRight(param1:IconButton) : void + { + var _loc2_:Object = this._2096098592btnRight; + if(_loc2_ !== param1) + { + this._2096098592btnRight = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnRight",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnUp() : IconButton + { + return this._94069271btnUp; + } + + public function set btnUp(param1:IconButton) : void + { + var _loc2_:Object = this._94069271btnUp; + if(_loc2_ !== param1) + { + this._94069271btnUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnUp",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.as new file mode 100644 index 0000000..2bab4ca --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_down_png_1317250631() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917.as new file mode 100644 index 0000000..1f7e12f --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_init_png_658249917() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213.as new file mode 100644 index 0000000..0a74f0b --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_down_over_png_638434213() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.as new file mode 100644 index 0000000..043dc2f --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_down_png_1371776587() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697.as new file mode 100644 index 0000000..2437183 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_init_png_641472697() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001.as new file mode 100644 index 0000000..e0a180b --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_left_over_png_556579001() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.as new file mode 100644 index 0000000..b4a82f8 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_down_png_2074750393() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.as new file mode 100644 index 0000000..82b13ce --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_init_png_1972087997() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.as new file mode 100644 index 0000000..e586273 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_right_over_png_1436963749() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411.as new file mode 100644 index 0000000..1d0b9f9 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_down_png_1026025411() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959.as new file mode 100644 index 0000000..3305a2a --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_init_png_782509959() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.as new file mode 100644 index 0000000..0690224 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_arrow_up_over_png_223823367() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403.as b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403.as new file mode 100644 index 0000000..a12e669 --- /dev/null +++ b/scripts/anifire/creator/components/DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403 extends BitmapAsset + { + + + public function DirectionControlSpark__embed_mxml__styles_images_details_bg_cross_png_1281283403() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/IconButton.as b/scripts/anifire/creator/components/IconButton.as new file mode 100644 index 0000000..cb98311 --- /dev/null +++ b/scripts/anifire/creator/components/IconButton.as @@ -0,0 +1,72 @@ +package anifire.creator.components +{ + import spark.components.Button; + + public class IconButton extends Button + { + + + public function IconButton() + { + super(); + buttonMode = true; + } + + override protected function partAdded(param1:String, param2:Object) : void + { + super.partAdded(param1,param2); + if(param2 == iconDisplay) + { + this.updateIcon(); + } + } + + override public function styleChanged(param1:String) : void + { + super.styleChanged(param1); + if(!param1 || param1 == "styleName" || param1 == "icon" || param1 == "iconOver" || param1 == "iconDisabled" || param1 == "iconDown") + { + this.updateIcon(); + } + } + + override protected function stateChanged(param1:String, param2:String, param3:Boolean) : void + { + super.stateChanged(param1,param2,param3); + this.updateIcon(); + } + + protected function updateIcon() : void + { + var _loc1_:String = null; + var _loc2_:Class = null; + var _loc3_:Class = null; + var _loc4_:Class = null; + var _loc5_:Class = null; + if(iconDisplay) + { + _loc1_ = getCurrentSkinState(); + _loc2_ = getStyle("icon"); + if(_loc1_ == "up") + { + iconDisplay.source = _loc2_; + } + else if(_loc1_ == "disabled") + { + _loc3_ = getStyle("iconDisabled"); + iconDisplay.source = !!_loc3_?_loc3_:_loc2_; + } + else if(_loc1_ == "over") + { + _loc4_ = getStyle("iconOver"); + iconDisplay.source = !!_loc4_?_loc4_:_loc2_; + } + else if(_loc1_ == "down") + { + _loc5_ = getStyle("iconDown"); + iconDisplay.source = !!_loc5_?_loc5_:_loc2_; + } + } + } + } +} diff --git a/scripts/anifire/creator/components/LatestTemplateCharThumb.as b/scripts/anifire/creator/components/LatestTemplateCharThumb.as new file mode 100644 index 0000000..3038423 --- /dev/null +++ b/scripts/anifire/creator/components/LatestTemplateCharThumb.as @@ -0,0 +1,150 @@ +package anifire.creator.components +{ + import anifire.component.CCThumb; + import anifire.creator.models.CcCharacter; + import flash.events.MouseEvent; + import flash.filters.GlowFilter; + import mx.containers.Canvas; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponent; + import mx.core.UIComponentDescriptor; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + public class LatestTemplateCharThumb extends Canvas + { + + + private var _3492669raft:Canvas; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _thumb:CCThumb = null; + + private var _char:CcCharacter = null; + + public function LatestTemplateCharThumb() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "events":{"creationComplete":"___LatestTemplateCharThumb_Canvas1_creationComplete"}, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":Canvas, + "id":"raft", + "propertiesFactory":function():Object + { + return { + "styleName":"templateCharThumbRaft", + "x":0, + "y":115, + "width":128, + "height":40 + }; + } + })]}; + } + }); + super(); + mx_internal::_document = this; + this.verticalScrollPolicy = "off"; + this.addEventListener("creationComplete",this.___LatestTemplateCharThumb_Canvas1_creationComplete); + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + private function toggleGlow(param1:MouseEvent) : void + { + if(param1.type == MouseEvent.ROLL_OVER) + { + if(this._thumb) + { + this._thumb.filters = [new GlowFilter(16777215,1,8,8,3)]; + } + } + else if(param1.type == MouseEvent.ROLL_OUT) + { + if(this._thumb) + { + this._thumb.filters = []; + } + } + } + + public function set thumbnail(param1:CCThumb) : void + { + this.removeAllChildren(); + this._thumb = param1; + var _loc2_:UIComponent = new UIComponent(); + _loc2_.addChild(param1); + _loc2_.width = param1.thumbWidth; + _loc2_.height = param1.thumbHeight; + width = 128; + height = 150; + buttonMode = true; + mouseEnabled = true; + useHandCursor = true; + _loc2_.x = (width - _loc2_.width) / 2; + _loc2_.y = (height - _loc2_.height) / 2; + addChild(_loc2_); + } + + public function get character() : CcCharacter + { + return this._char; + } + + public function set character(param1:CcCharacter) : void + { + this._char = param1; + } + + public function creationCompleteHandler() : void + { + setChildIndex(this.raft,0); + addEventListener(MouseEvent.ROLL_OVER,this.toggleGlow); + addEventListener(MouseEvent.ROLL_OUT,this.toggleGlow); + } + + public function ___LatestTemplateCharThumb_Canvas1_creationComplete(param1:FlexEvent) : void + { + this.creationCompleteHandler(); + } + + [Bindable(event="propertyChange")] + public function get raft() : Canvas + { + return this._3492669raft; + } + + public function set raft(param1:Canvas) : void + { + var _loc2_:Object = this._3492669raft; + if(_loc2_ !== param1) + { + this._3492669raft = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"raft",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/LatestTemplates.as b/scripts/anifire/creator/components/LatestTemplates.as new file mode 100644 index 0000000..c44ee67 --- /dev/null +++ b/scripts/anifire/creator/components/LatestTemplates.as @@ -0,0 +1,132 @@ +package anifire.creator.components +{ + import anifire.component.CCThumb; + import anifire.creator.events.CcTemplateChooserEvent; + import anifire.creator.models.CcCharacter; + import flash.events.MouseEvent; + import mx.containers.Canvas; + import mx.containers.HBox; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.events.PropertyChangeEvent; + + public class LatestTemplates extends Canvas + { + + + private var _110363525tiles:HBox; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + public function LatestTemplates() + { + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":Canvas, + "propertiesFactory":function():Object + { + return {"childDescriptors":[new UIComponentDescriptor({ + "type":HBox, + "stylesFactory":function():void + { + this.verticalAlign = "middle"; + }, + "propertiesFactory":function():Object + { + return { + "percentWidth":100, + "childDescriptors":[new UIComponentDescriptor({ + "type":HBox, + "id":"tiles", + "stylesFactory":function():void + { + this.horizontalAlign = "center"; + this.verticalAlign = "middle"; + this.horizontalGap = -5; + }, + "propertiesFactory":function():Object + { + return {"percentWidth":100}; + } + }),new UIComponentDescriptor({ + "type":Canvas, + "events":{"click":"___LatestTemplates_Canvas2_click"}, + "propertiesFactory":function():Object + { + return { + "width":120, + "height":123, + "styleName":"buoyNext" + }; + } + })] + }; + } + })]}; + } + }); + super(); + mx_internal::_document = this; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function addThumbnail(param1:CCThumb, param2:CcCharacter) : void + { + var tthumb:LatestTemplateCharThumb = null; + var thumb:CCThumb = param1; + var char:CcCharacter = param2; + var self:LatestTemplates = this; + if(this.tiles.getChildren().length < 6) + { + tthumb = new LatestTemplateCharThumb(); + tthumb.character = char; + tthumb.thumbnail = thumb; + tthumb.addEventListener(MouseEvent.CLICK,function(param1:MouseEvent):void + { + dispatchEvent(new CcTemplateChooserEvent(CcTemplateChooserEvent.USER_WANT_TO_PREVIEW,tthumb,char,true)); + }); + this.tiles.addChild(tthumb); + } + } + + public function ___LatestTemplates_Canvas2_click(param1:MouseEvent) : void + { + dispatchEvent(new CcTemplateChooserEvent(CcTemplateChooserEvent.PREVIEW_TAB_CHANGED,this,"preview_professions",true)); + } + + [Bindable(event="propertyChange")] + public function get tiles() : HBox + { + return this._110363525tiles; + } + + public function set tiles(param1:HBox) : void + { + var _loc2_:Object = this._110363525tiles; + if(_loc2_ !== param1) + { + this._110363525tiles = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"tiles",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/MenuItemList.as b/scripts/anifire/creator/components/MenuItemList.as new file mode 100644 index 0000000..ef3ba78 --- /dev/null +++ b/scripts/anifire/creator/components/MenuItemList.as @@ -0,0 +1,64 @@ +package anifire.creator.components +{ + import anifire.creator.events.MenuItemEvent; + import anifire.creator.interfaces.IMenuItemOwner; + import anifire.creator.models.MenuItemModel; + import flash.events.MouseEvent; + import mx.core.IVisualElement; + import spark.components.List; + import spark.events.RendererExistenceEvent; + + public class MenuItemList extends List implements IMenuItemOwner + { + + + public function MenuItemList() + { + super(); + useVirtualLayout = false; + } + + public function menuItemClicked(param1:MenuItemModel, param2:Boolean, param3:MouseEvent) : void + { + if(!param2) + { + param1.toggle(); + } + var _loc4_:MenuItemEvent = new MenuItemEvent(MenuItemEvent.ITEM_CLICK,param1); + _loc4_.isPropagated = param2; + _loc4_.mouseEvent = param3; + dispatchEvent(_loc4_); + } + + override protected function dataGroup_rendererAddHandler(param1:RendererExistenceEvent) : void + { + super.dataGroup_rendererAddHandler(param1); + var _loc2_:IVisualElement = param1.renderer; + if(!_loc2_) + { + return; + } + _loc2_.addEventListener(MouseEvent.MOUSE_UP,this.menuItem_mouseHandler); + } + + override protected function dataGroup_rendererRemoveHandler(param1:RendererExistenceEvent) : void + { + super.dataGroup_rendererRemoveHandler(param1); + var _loc2_:IVisualElement = param1.renderer; + if(!_loc2_) + { + return; + } + _loc2_.removeEventListener(MouseEvent.MOUSE_UP,this.menuItem_mouseHandler); + } + + protected function menuItem_mouseHandler(param1:MouseEvent) : void + { + var _loc2_:MenuItemModel = this.selectedItem as MenuItemModel; + if(_loc2_ && _loc2_.selectable) + { + this.menuItemClicked(_loc2_,false,param1); + } + } + } +} diff --git a/scripts/anifire/creator/components/MenuItemRenderer.as b/scripts/anifire/creator/components/MenuItemRenderer.as new file mode 100644 index 0000000..391c7c3 --- /dev/null +++ b/scripts/anifire/creator/components/MenuItemRenderer.as @@ -0,0 +1,689 @@ +package anifire.creator.components +{ + import anifire.creator.events.MenuItemEvent; + import anifire.creator.interfaces.IMenuItemOwner; + import anifire.creator.models.MenuItemModel; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.IList; + import mx.core.DeferredInstanceFromFunction; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import mx.states.AddItems; + import mx.states.SetProperty; + import mx.states.SetStyle; + import mx.states.State; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.Label; + import spark.components.supportClasses.ItemRenderer; + import spark.primitives.BitmapImage; + import spark.primitives.Line; + import spark.primitives.Path; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class MenuItemRenderer extends ItemRenderer implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _MenuItemRenderer_BitmapImage1:BitmapImage; + + public var _MenuItemRenderer_Group2:Group; + + public var _MenuItemRenderer_Group3:Group; + + public var _MenuItemRenderer_HGroup1:HGroup; + + public var _MenuItemRenderer_Line1:Line; + + public var _MenuItemRenderer_Rect1:Rect; + + private var _63492407_MenuItemRenderer_SolidColorStroke2:SolidColorStroke; + + private var _63492408_MenuItemRenderer_SolidColorStroke3:SolidColorStroke; + + private var _1896065460selectedIndicator:Group; + + private var _1868748865subMenu:MenuItemList; + + private var _1971903485subMenuDisplay:spark.components.PopUpAnchor; + + private var __moduleFactoryInitialized:Boolean = false; + + protected var _104069929model:MenuItemModel; + + protected var _893353837displayIndicator:Boolean = false; + + protected var _956783549displaySeparator:Boolean = false; + + protected var _532727086displayOverlay:Boolean = true; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function MenuItemRenderer() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._MenuItemRenderer_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_MenuItemRendererWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return MenuItemRenderer[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.autoDrawBackground = false; + this.minHeight = 0; + this.mxmlContent = [this._MenuItemRenderer_Line1_i(),this._MenuItemRenderer_HGroup1_i(),this._MenuItemRenderer_PopUpAnchor1_i()]; + this.currentState = "normal"; + this.addEventListener("mouseOver",this.___MenuItemRenderer_ItemRenderer1_mouseOver); + this.addEventListener("removedFromStage",this.___MenuItemRenderer_ItemRenderer1_removedFromStage); + var _MenuItemRenderer_Rect1_factory:DeferredInstanceFromFunction = new DeferredInstanceFromFunction(this._MenuItemRenderer_Rect1_i); + states = [new State({ + "name":"normal", + "overrides":[] + }),new State({ + "name":"hovered", + "overrides":[new AddItems().initializeFromObject({ + "itemsFactory":_MenuItemRenderer_Rect1_factory, + "destination":null, + "propertyName":"mxmlContent", + "position":"first" + }),new SetProperty().initializeFromObject({ + "target":"_MenuItemRenderer_SolidColorStroke2", + "name":"color", + "value":16777215 + }),new SetStyle().initializeFromObject({ + "target":"labelDisplay", + "name":"color", + "value":16777215 + }),new SetProperty().initializeFromObject({ + "target":"_MenuItemRenderer_SolidColorStroke3", + "name":"color", + "value":16777215 + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + MenuItemRenderer._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override public function set data(param1:Object) : void + { + super.data = param1; + this.model = data as MenuItemModel; + if(this.model) + { + labelDisplay.text = this.model.label; + this.displaySeparator = this.model.menuType == MenuItemModel.MENU_TYPE_SEPARATOR; + this.displayIndicator = this.model.menuType == MenuItemModel.MENU_TYPE_RADIO || this.model.menuType == MenuItemModel.MENU_TYPE_CHECKBOX; + this.displayOverlay = !this.displaySeparator && this.model.enabled; + } + } + + public function closeSubMenu() : void + { + this.subMenuDisplay.displayPopUp = false; + } + + protected function onMouseOver(param1:MouseEvent) : void + { + var _loc2_:IMenuItemOwner = owner as IMenuItemOwner; + if(!_loc2_) + { + } + this.subMenuDisplay.displayPopUp = true; + } + + protected function onItemClick(param1:MenuItemEvent) : void + { + var _loc2_:IMenuItemOwner = owner as IMenuItemOwner; + if(_loc2_) + { + _loc2_.menuItemClicked(param1.item,true,param1.mouseEvent); + } + } + + protected function onRemove() : void + { + this.subMenuDisplay.displayPopUp = false; + } + + private function _MenuItemRenderer_Rect1_i() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.left = 3; + _loc1_.right = 3; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.fill = this._MenuItemRenderer_SolidColor1_c(); + _loc1_.initialized(this,"_MenuItemRenderer_Rect1"); + this._MenuItemRenderer_Rect1 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_Rect1",this._MenuItemRenderer_Rect1); + return _loc1_; + } + + private function _MenuItemRenderer_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 6142119; + return _loc1_; + } + + private function _MenuItemRenderer_Line1_i() : Line + { + var _loc1_:Line = new Line(); + _loc1_.top = 5; + _loc1_.bottom = 5; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.stroke = this._MenuItemRenderer_SolidColorStroke1_c(); + _loc1_.initialized(this,"_MenuItemRenderer_Line1"); + this._MenuItemRenderer_Line1 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_Line1",this._MenuItemRenderer_Line1); + return _loc1_; + } + + private function _MenuItemRenderer_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 0; + return _loc1_; + } + + private function _MenuItemRenderer_HGroup1_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.left = 5; + _loc1_.right = 5; + _loc1_.top = 5; + _loc1_.bottom = 5; + _loc1_.verticalAlign = "middle"; + _loc1_.gap = -4; + _loc1_.mxmlContent = [this._MenuItemRenderer_Group1_i(),this._MenuItemRenderer_Group2_i(),this._MenuItemRenderer_Label1_i(),this._MenuItemRenderer_Group3_i()]; + _loc1_.id = "_MenuItemRenderer_HGroup1"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._MenuItemRenderer_HGroup1 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_HGroup1",this._MenuItemRenderer_HGroup1); + return _loc1_; + } + + private function _MenuItemRenderer_Group1_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 20; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._MenuItemRenderer_Path1_c()]; + _loc1_.id = "selectedIndicator"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.selectedIndicator = _loc1_; + BindingManager.executeBindings(this,"selectedIndicator",this.selectedIndicator); + return _loc1_; + } + + private function _MenuItemRenderer_Path1_c() : Path + { + var _loc1_:Path = new Path(); + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.data = "M 0 5 l 4 3 l 4 -8"; + _loc1_.stroke = this._MenuItemRenderer_SolidColorStroke2_i(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _MenuItemRenderer_SolidColorStroke2_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.weight = 2; + _loc1_.caps = "square"; + _loc1_.color = 5486248; + this._MenuItemRenderer_SolidColorStroke2 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_SolidColorStroke2",this._MenuItemRenderer_SolidColorStroke2); + return _loc1_; + } + + private function _MenuItemRenderer_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 30; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._MenuItemRenderer_BitmapImage1_i()]; + _loc1_.id = "_MenuItemRenderer_Group2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._MenuItemRenderer_Group2 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_Group2",this._MenuItemRenderer_Group2); + return _loc1_; + } + + private function _MenuItemRenderer_BitmapImage1_i() : BitmapImage + { + var _loc1_:BitmapImage = new BitmapImage(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.smooth = true; + _loc1_.initialized(this,"_MenuItemRenderer_BitmapImage1"); + this._MenuItemRenderer_BitmapImage1 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_BitmapImage1",this._MenuItemRenderer_BitmapImage1); + return _loc1_; + } + + private function _MenuItemRenderer_Label1_i() : Label + { + var _loc1_:Label = new Label(); + _loc1_.percentWidth = 100; + _loc1_.setStyle("paddingLeft",10); + _loc1_.setStyle("paddingRight",10); + _loc1_.setStyle("textAlign","left"); + _loc1_.setStyle("fontSize",15); + _loc1_.id = "labelDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + labelDisplay = _loc1_; + BindingManager.executeBindings(this,"labelDisplay",labelDisplay); + return _loc1_; + } + + private function _MenuItemRenderer_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.width = 20; + _loc1_.mxmlContent = [this._MenuItemRenderer_Path2_c()]; + _loc1_.id = "_MenuItemRenderer_Group3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._MenuItemRenderer_Group3 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_Group3",this._MenuItemRenderer_Group3); + return _loc1_; + } + + private function _MenuItemRenderer_Path2_c() : Path + { + var _loc1_:Path = new Path(); + _loc1_.verticalCenter = -0.5; + _loc1_.horizontalCenter = 0; + _loc1_.data = "M 0 0 l 5 4 l -5 4"; + _loc1_.stroke = this._MenuItemRenderer_SolidColorStroke3_i(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _MenuItemRenderer_SolidColorStroke3_i() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.weight = 2; + _loc1_.caps = "square"; + _loc1_.color = 5486248; + this._MenuItemRenderer_SolidColorStroke3 = _loc1_; + BindingManager.executeBindings(this,"_MenuItemRenderer_SolidColorStroke3",this._MenuItemRenderer_SolidColorStroke3); + return _loc1_; + } + + private function _MenuItemRenderer_PopUpAnchor1_i() : spark.components.PopUpAnchor + { + var _loc1_:spark.components.PopUpAnchor = new spark.components.PopUpAnchor(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.popUpWidthMatchesAnchorWidth = false; + _loc1_.popUpHeightMatchesAnchorHeight = false; + _loc1_.displayPopUp = false; + _loc1_.popUpPosition = "right"; + _loc1_.popUp = this._MenuItemRenderer_MenuItemList1_i(); + _loc1_.id = "subMenuDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.subMenuDisplay = _loc1_; + BindingManager.executeBindings(this,"subMenuDisplay",this.subMenuDisplay); + return _loc1_; + } + + private function _MenuItemRenderer_MenuItemList1_i() : MenuItemList + { + var _loc1_:MenuItemList = new MenuItemList(); + _loc1_.addEventListener("itemClick",this.__subMenu_itemClick); + _loc1_.id = "subMenu"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.subMenu = _loc1_; + BindingManager.executeBindings(this,"subMenu",this.subMenu); + return _loc1_; + } + + public function __subMenu_itemClick(param1:MenuItemEvent) : void + { + this.onItemClick(param1); + } + + public function ___MenuItemRenderer_ItemRenderer1_mouseOver(param1:MouseEvent) : void + { + this.onMouseOver(param1); + } + + public function ___MenuItemRenderer_ItemRenderer1_removedFromStage(param1:Event) : void + { + this.onRemove(); + } + + private function _MenuItemRenderer_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Boolean + { + return displayOverlay; + },null,"this.buttonMode"); + result[1] = new Binding(this,function():Boolean + { + return model.enabled; + },null,"this.enabled"); + result[2] = new Binding(this,function():Boolean + { + return model.enabled; + },null,"this.mouseEnabled"); + result[3] = new Binding(this,function():Boolean + { + return displayOverlay; + },null,"_MenuItemRenderer_Rect1.visible"); + result[4] = new Binding(this,function():Boolean + { + return displaySeparator; + },null,"_MenuItemRenderer_Line1.visible"); + result[5] = new Binding(this,function():Boolean + { + return displaySeparator; + },null,"_MenuItemRenderer_Line1.includeInLayout"); + result[6] = new Binding(this,function():Boolean + { + return !displaySeparator; + },null,"_MenuItemRenderer_HGroup1.visible"); + result[7] = new Binding(this,function():Boolean + { + return !displaySeparator; + },null,"_MenuItemRenderer_HGroup1.includeInLayout"); + result[8] = new Binding(this,function():Boolean + { + return model.selected && model.selectable; + },null,"selectedIndicator.visible"); + result[9] = new Binding(this,function():Boolean + { + return displayIndicator; + },null,"selectedIndicator.includeInLayout"); + result[10] = new Binding(this,function():Boolean + { + return model.icon != null; + },null,"_MenuItemRenderer_Group2.visible"); + result[11] = new Binding(this,function():Boolean + { + return model.icon != null; + },null,"_MenuItemRenderer_Group2.includeInLayout"); + result[12] = new Binding(this,function():Object + { + return model.icon; + },null,"_MenuItemRenderer_BitmapImage1.source"); + result[13] = new Binding(this,function():Boolean + { + return model.hasSubMenu(); + },null,"_MenuItemRenderer_Group3.visible"); + result[14] = new Binding(this,function():Boolean + { + return model.hasSubMenu(); + },null,"subMenu.includeInLayout"); + result[15] = new Binding(this,function():Boolean + { + return model.hasSubMenu(); + },null,"subMenu.visible"); + result[16] = new Binding(this,function():IList + { + return model.subMenu; + },null,"subMenu.dataProvider"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _MenuItemRenderer_SolidColorStroke2() : SolidColorStroke + { + return this._63492407_MenuItemRenderer_SolidColorStroke2; + } + + public function set _MenuItemRenderer_SolidColorStroke2(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._63492407_MenuItemRenderer_SolidColorStroke2; + if(_loc2_ !== param1) + { + this._63492407_MenuItemRenderer_SolidColorStroke2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_MenuItemRenderer_SolidColorStroke2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _MenuItemRenderer_SolidColorStroke3() : SolidColorStroke + { + return this._63492408_MenuItemRenderer_SolidColorStroke3; + } + + public function set _MenuItemRenderer_SolidColorStroke3(param1:SolidColorStroke) : void + { + var _loc2_:Object = this._63492408_MenuItemRenderer_SolidColorStroke3; + if(_loc2_ !== param1) + { + this._63492408_MenuItemRenderer_SolidColorStroke3 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_MenuItemRenderer_SolidColorStroke3",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get selectedIndicator() : Group + { + return this._1896065460selectedIndicator; + } + + public function set selectedIndicator(param1:Group) : void + { + var _loc2_:Object = this._1896065460selectedIndicator; + if(_loc2_ !== param1) + { + this._1896065460selectedIndicator = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"selectedIndicator",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get subMenu() : MenuItemList + { + return this._1868748865subMenu; + } + + public function set subMenu(param1:MenuItemList) : void + { + var _loc2_:Object = this._1868748865subMenu; + if(_loc2_ !== param1) + { + this._1868748865subMenu = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"subMenu",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get subMenuDisplay() : spark.components.PopUpAnchor + { + return this._1971903485subMenuDisplay; + } + + public function set subMenuDisplay(param1:spark.components.PopUpAnchor) : void + { + var _loc2_:Object = this._1971903485subMenuDisplay; + if(_loc2_ !== param1) + { + this._1971903485subMenuDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"subMenuDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + protected function get model() : MenuItemModel + { + return this._104069929model; + } + + protected function set model(param1:MenuItemModel) : void + { + var _loc2_:Object = this._104069929model; + if(_loc2_ !== param1) + { + this._104069929model = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"model",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + protected function get displayIndicator() : Boolean + { + return this._893353837displayIndicator; + } + + protected function set displayIndicator(param1:Boolean) : void + { + var _loc2_:Object = this._893353837displayIndicator; + if(_loc2_ !== param1) + { + this._893353837displayIndicator = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"displayIndicator",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + protected function get displaySeparator() : Boolean + { + return this._956783549displaySeparator; + } + + protected function set displaySeparator(param1:Boolean) : void + { + var _loc2_:Object = this._956783549displaySeparator; + if(_loc2_ !== param1) + { + this._956783549displaySeparator = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"displaySeparator",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + protected function get displayOverlay() : Boolean + { + return this._532727086displayOverlay; + } + + protected function set displayOverlay(param1:Boolean) : void + { + var _loc2_:Object = this._532727086displayOverlay; + if(_loc2_ !== param1) + { + this._532727086displayOverlay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"displayOverlay",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/PopUpAnchor.as b/scripts/anifire/creator/components/PopUpAnchor.as new file mode 100644 index 0000000..3010bc8 --- /dev/null +++ b/scripts/anifire/creator/components/PopUpAnchor.as @@ -0,0 +1,127 @@ +package anifire.creator.components +{ + import flash.display.DisplayObject; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import mx.core.mx_internal; + import mx.events.SandboxMouseEvent; + import mx.utils.MatrixUtil; + + public class PopUpAnchor extends spark.components.PopUpAnchor + { + + public static const ABOVE_RIGHT:String = "aboveRight"; + + public static const BELOW_RIGHT:String = "belowRight"; + + public static const BELOW_CENTER:String = "belowCenter"; + + + protected var _autoClose:Boolean = true; + + protected var hasCloseTrigger:Boolean; + + public function PopUpAnchor() + { + super(); + } + + public function get autoClose() : Boolean + { + return this._autoClose; + } + + public function set autoClose(param1:Boolean) : void + { + if(this._autoClose != param1) + { + this._autoClose = param1; + if(!this._autoClose) + { + this.removeCloseTrigger(); + } + else if(displayPopUp) + { + this.addCloseTrigger(); + } + } + } + + override public function set popUpPosition(param1:String) : void + { + super.popUpPosition = param1; + } + + override public function set displayPopUp(param1:Boolean) : void + { + super.displayPopUp = param1; + if(this.autoClose) + { + if(param1) + { + this.addCloseTrigger(); + } + else + { + this.removeCloseTrigger(); + } + } + } + + protected function addCloseTrigger() : void + { + if(!this.hasCloseTrigger) + { + systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP,this.systemManager_mouseHandler); + systemManager.getSandboxRoot().addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,this.systemManager_mouseHandler); + this.hasCloseTrigger = true; + } + } + + protected function removeCloseTrigger() : void + { + if(this.hasCloseTrigger) + { + systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_UP,this.systemManager_mouseHandler); + systemManager.getSandboxRoot().removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE,this.systemManager_mouseHandler); + this.hasCloseTrigger = false; + } + } + + private function systemManager_mouseHandler(param1:Event) : void + { + this.displayPopUp = false; + } + + override mx_internal function determinePosition(param1:String, param2:Number, param3:Number, param4:Matrix, param5:Point, param6:Rectangle) : void + { + switch(param1) + { + case BELOW_RIGHT: + param5.x = unscaledWidth - param2; + param5.y = unscaledHeight; + break; + case ABOVE_RIGHT: + param5.x = unscaledWidth - param2; + param5.y = -param3; + break; + case BELOW_CENTER: + param5.x = (unscaledWidth - param2) / 2; + param5.y = unscaledHeight; + default: + super.determinePosition(param1,param2,param3,param4,param5,param6); + return; + } + var _loc7_:DisplayObject = popUp as DisplayObject; + var _loc8_:Point = param5.clone(); + var _loc9_:Point = MatrixUtil.transformBounds(_loc7_.width,_loc7_.height,param4,_loc8_); + param6.left = _loc8_.x; + param6.top = _loc8_.y; + param6.width = _loc9_.x; + param6.height = _loc9_.y; + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark.as b/scripts/anifire/creator/components/ScaleChooserSpark.as new file mode 100644 index 0000000..4c509c1 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark.as @@ -0,0 +1,1274 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcScaleChosenEvent; + import anifire.creator.events.CcThumbPropertyEvent; + import anifire.util.UtilDict; + import anifire.util.UtilUser; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.Point; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.EffectEvent; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.HSlider; + import spark.components.Image; + import spark.components.VGroup; + import spark.effects.Animate; + import spark.effects.animation.MotionPath; + import spark.effects.animation.SimpleMotionPath; + import spark.primitives.Rect; + import spark.primitives.RectangularDropShadow; + + use namespace mx_internal; + + public class ScaleChooserSpark extends Group implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _200915974_ScaleChooserSpark_Group3:Group; + + private var _200915975_ScaleChooserSpark_Group4:Group; + + private var _1592476650_ScaleChooserSpark_HGroup3:HGroup; + + private var _1686836913btnArrowDown:IconButton; + + private var _1686608716btnArrowLeft:IconButton; + + private var _739601649btnArrowRight:IconButton; + + private var _1923540344btnArrowUp:IconButton; + + private var _2082343164btnClose:IconButton; + + private var _626844727btnType01:IconButton; + + private var _626844728btnType02:IconButton; + + private var _626844729btnType03:IconButton; + + private var _626844730btnType04:IconButton; + + private var _906978543dropShadow:RectangularDropShadow; + + private var _104889325moveDown:Animate; + + private var _1068263860moveUp:Animate; + + private var _1105645091sliderBody:HSlider; + + private var _1105814113sliderHead:HSlider; + + private var _3684698yPad:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var hideFinishFlag:Boolean = true; + + private var _embed_mxml__styles_images_panel_btn_close_over_png_2000923769:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119:Class; + + private var _embed_mxml__styles_images_details_btn_arrowd_init_png_926693625:Class; + + private var _embed_mxml__styles_images_details_btn_arrowd_over_png_372004985:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335:Class; + + private var _embed_mxml__styles_images_details_btn_arrowl_init_png_147572551:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647:Class; + + private var _embed_mxml__styles_images_details_btn_arrowr_init_png_281765451:Class; + + private var _embed_mxml__styles_images_details_ico_drag_head_max_png_994122617:Class; + + private var _embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715:Class; + + private var _embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995:Class; + + private var _embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041:Class; + + private var _embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317:Class; + + private var _embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509:Class; + + private var _embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607:Class; + + private var _embed_mxml__styles_images_details_btn_arrowr_over_png_298567235:Class; + + private var _embed_mxml__styles_images_panel_btn_close_init_png_1805605639:Class; + + private var _embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function ScaleChooserSpark() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_panel_btn_close_over_png_2000923769 = ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769; + this._embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119; + this._embed_mxml__styles_images_details_btn_arrowd_init_png_926693625 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625; + this._embed_mxml__styles_images_details_btn_arrowd_over_png_372004985 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985; + this._embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851; + this._embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335; + this._embed_mxml__styles_images_details_btn_arrowl_init_png_147572551 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551; + this._embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647; + this._embed_mxml__styles_images_details_btn_arrowr_init_png_281765451 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451; + this._embed_mxml__styles_images_details_ico_drag_head_max_png_994122617 = ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617; + this._embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083; + this._embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115; + this._embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715; + this._embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995; + this._embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041 = ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041; + this._embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317 = ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317; + this._embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567; + this._embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509; + this._embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607; + this._embed_mxml__styles_images_details_btn_arrowr_over_png_298567235 = ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235; + this._embed_mxml__styles_images_panel_btn_close_init_png_1805605639 = ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639; + this._embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637 = ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._ScaleChooserSpark_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_ScaleChooserSparkWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return ScaleChooserSpark[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 300; + this.height = 100; + this.mxmlContent = [this._ScaleChooserSpark_Group2_i()]; + this.currentState = "normal"; + this._ScaleChooserSpark_Animate2_i(); + this._ScaleChooserSpark_Animate1_i(); + states = [new State({ + "name":"normal", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_Group3", + "name":"mouseChildren", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_Group3", + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_Group4", + "name":"mouseChildren", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_Group4", + "name":"alpha", + "value":0.5 + }),new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_HGroup3", + "name":"mouseChildren", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_ScaleChooserSpark_HGroup3", + "name":"alpha", + "value":0.5 + })] + }),new State({ + "name":"isPlus", + "overrides":[] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + ScaleChooserSpark._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function onCustomScaleUpdate() : void + { + var _loc1_:CcScaleChosenEvent = new CcScaleChosenEvent(CcScaleChosenEvent.SCALE_CHOSEN,this); + _loc1_.head_scale = this.sliderHead.value; + _loc1_.body_scale = this.sliderBody.value; + dispatchEvent(_loc1_); + } + + private function onScaleButtonClick(param1:Event) : void + { + var _loc2_:CcScaleChosenEvent = new CcScaleChosenEvent(CcScaleChosenEvent.SCALE_CHOSEN,this); + switch(param1.currentTarget) + { + case this.btnType01: + _loc2_.head_scale = CcLibConstant.DEFAULT_HEADSCALES[0]; + _loc2_.body_scale = CcLibConstant.DEFAULT_BODYSCALES[0]; + _loc2_.head_pos = CcLibConstant.DEFAULT_HEADPOS[0]; + break; + case this.btnType02: + _loc2_.head_scale = CcLibConstant.DEFAULT_HEADSCALES[1]; + _loc2_.body_scale = CcLibConstant.DEFAULT_BODYSCALES[1]; + _loc2_.head_pos = CcLibConstant.DEFAULT_HEADPOS[1]; + break; + case this.btnType03: + _loc2_.head_scale = CcLibConstant.DEFAULT_HEADSCALES[2]; + _loc2_.body_scale = CcLibConstant.DEFAULT_BODYSCALES[2]; + _loc2_.head_pos = CcLibConstant.DEFAULT_HEADPOS[2]; + break; + case this.btnType04: + _loc2_.head_scale = CcLibConstant.DEFAULT_HEADSCALES[3]; + _loc2_.body_scale = CcLibConstant.DEFAULT_BODYSCALES[3]; + _loc2_.head_pos = CcLibConstant.DEFAULT_HEADPOS[3]; + } + this.updateSliders(_loc2_.body_scale * 100,_loc2_.head_scale * 100); + dispatchEvent(_loc2_); + } + + public function show() : void + { + if(UtilUser.hasPlusFeatures()) + { + setCurrentState("isPlus"); + } + else + { + setCurrentState("normal"); + } + this.addEventListener(CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK,this.updateHeadPos); + this.addEventListener(CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK,this.updateHeadPos); + this.addEventListener(CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK,this.updateHeadPos); + this.addEventListener(CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK,this.updateHeadPos); + this.moveUp.play(); + } + + public function close() : void + { + if(!this.hideFinishFlag) + { + this.startHide(); + } + } + + public function startHide() : void + { + this.moveDown.play(); + } + + private function changeHeadSize() : void + { + var _loc1_:CcScaleChosenEvent = new CcScaleChosenEvent(CcScaleChosenEvent.SCALE_CHOSEN,this); + _loc1_.head_scale = this.sliderHead.value / 100; + dispatchEvent(_loc1_); + } + + private function changeBodySize() : void + { + var _loc1_:CcScaleChosenEvent = new CcScaleChosenEvent(CcScaleChosenEvent.SCALE_CHOSEN,this); + _loc1_.body_scale = this.sliderBody.value / 100; + dispatchEvent(_loc1_); + } + + private function updateHeadPos(param1:Event) : void + { + var _loc2_:Number = 0; + var _loc3_:Number = 0; + switch(param1.type) + { + case CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK: + _loc3_ = -1; + break; + case CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK: + _loc3_ = 1; + break; + case CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK: + _loc2_ = 1; + break; + case CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK: + _loc2_ = -1; + } + var _loc4_:CcScaleChosenEvent = new CcScaleChosenEvent(CcScaleChosenEvent.SCALE_CHOSEN,this); + _loc4_.head_shift = new Point(_loc2_,_loc3_); + dispatchEvent(_loc4_); + } + + public function updateSliders(param1:Number, param2:Number) : void + { + this.sliderBody.value = param1; + this.sliderHead.value = param2; + } + + private function _ScaleChooserSpark_Animate2_i() : Animate + { + var _loc1_:Animate = new Animate(); + _loc1_.duration = 500; + _loc1_.motionPaths = new [this._ScaleChooserSpark_SimpleMotionPath3_c(),this._ScaleChooserSpark_SimpleMotionPath4_c()]; + _loc1_.addEventListener("effectEnd",this.__moveDown_effectEnd); + this.moveDown = _loc1_; + BindingManager.executeBindings(this,"moveDown",this.moveDown); + return _loc1_; + } + + private function _ScaleChooserSpark_SimpleMotionPath3_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "y"; + _loc1_.valueFrom = 5; + _loc1_.valueTo = 105; + return _loc1_; + } + + private function _ScaleChooserSpark_SimpleMotionPath4_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "alpha"; + _loc1_.valueFrom = 1; + _loc1_.valueTo = 0; + return _loc1_; + } + + public function __moveDown_effectEnd(param1:EffectEvent) : void + { + this.hideFinishFlag = true; + this.yPad.mouseChildren = false; + } + + private function _ScaleChooserSpark_Animate1_i() : Animate + { + var _loc1_:Animate = new Animate(); + _loc1_.duration = 500; + _loc1_.motionPaths = new [this._ScaleChooserSpark_SimpleMotionPath1_c(),this._ScaleChooserSpark_SimpleMotionPath2_c()]; + _loc1_.addEventListener("effectStart",this.__moveUp_effectStart); + this.moveUp = _loc1_; + BindingManager.executeBindings(this,"moveUp",this.moveUp); + return _loc1_; + } + + private function _ScaleChooserSpark_SimpleMotionPath1_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "y"; + _loc1_.valueFrom = 105; + _loc1_.valueTo = 5; + return _loc1_; + } + + private function _ScaleChooserSpark_SimpleMotionPath2_c() : SimpleMotionPath + { + var _loc1_:SimpleMotionPath = new SimpleMotionPath(); + _loc1_.property = "alpha"; + _loc1_.valueFrom = 0; + _loc1_.valueTo = 1; + return _loc1_; + } + + public function __moveUp_effectStart(param1:EffectEvent) : void + { + this.hideFinishFlag = false; + this.yPad.mouseChildren = true; + } + + private function _ScaleChooserSpark_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.y = 105; + _loc1_.alpha = 0; + _loc1_.mouseChildren = false; + _loc1_.mxmlContent = [this._ScaleChooserSpark_Rect1_c(),this._ScaleChooserSpark_RectangularDropShadow1_i(),this._ScaleChooserSpark_IconButton1_i(),this._ScaleChooserSpark_HGroup1_c()]; + _loc1_.id = "yPad"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.yPad = _loc1_; + BindingManager.executeBindings(this,"yPad",this.yPad); + return _loc1_; + } + + private function _ScaleChooserSpark_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 280; + _loc1_.height = 101; + _loc1_.radiusX = 5; + _loc1_.radiusY = 5; + _loc1_.fill = this._ScaleChooserSpark_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _ScaleChooserSpark_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 3355443; + return _loc1_; + } + + private function _ScaleChooserSpark_RectangularDropShadow1_i() : RectangularDropShadow + { + var _loc1_:RectangularDropShadow = new RectangularDropShadow(); + _loc1_.blurX = 20; + _loc1_.blurY = 20; + _loc1_.alpha = 0.45; + _loc1_.distance = 7; + _loc1_.angle = 90; + _loc1_.color = 0; + _loc1_.blRadius = 3; + _loc1_.brRadius = 3; + _loc1_.tlRadius = 3; + _loc1_.trRadius = 3; + _loc1_.left = 0; + _loc1_.right = 0; + _loc1_.top = 0; + _loc1_.bottom = 0; + _loc1_.id = "dropShadow"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropShadow = _loc1_; + BindingManager.executeBindings(this,"dropShadow",this.dropShadow); + return _loc1_; + } + + private function _ScaleChooserSpark_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.top = 5; + _loc1_.right = 5; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_panel_btn_close_init_png_1805605639); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_panel_btn_close_over_png_2000923769); + _loc1_.addEventListener("click",this.__btnClose_click); + _loc1_.id = "btnClose"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnClose = _loc1_; + BindingManager.executeBindings(this,"btnClose",this.btnClose); + return _loc1_; + } + + public function __btnClose_click(param1:MouseEvent) : void + { + this.moveDown.play(); + } + + private function _ScaleChooserSpark_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.verticalCenter = 0; + _loc1_.horizontalCenter = 0; + _loc1_.gap = 22; + _loc1_.top = 15; + _loc1_.bottom = 15; + _loc1_.left = 15; + _loc1_.right = 15; + _loc1_.mxmlContent = [this._ScaleChooserSpark_VGroup1_c(),this._ScaleChooserSpark_VGroup2_c()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_VGroup1_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._ScaleChooserSpark_Group3_i(),this._ScaleChooserSpark_Group4_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.height = 33; + _loc1_.alpha = 1; + _loc1_.mouseChildren = true; + _loc1_.mxmlContent = [this._ScaleChooserSpark_Image1_c(),this._ScaleChooserSpark_HSlider1_i(),this._ScaleChooserSpark_Image2_c()]; + _loc1_.id = "_ScaleChooserSpark_Group3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ScaleChooserSpark_Group3 = _loc1_; + BindingManager.executeBindings(this,"_ScaleChooserSpark_Group3",this._ScaleChooserSpark_Group3); + return _loc1_; + } + + private function _ScaleChooserSpark_Image1_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041; + _loc1_.width = 29; + _loc1_.height = 33; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_HSlider1_i() : HSlider + { + var _loc1_:HSlider = new HSlider(); + _loc1_.x = 30; + _loc1_.width = 20; + _loc1_.verticalCenter = 0; + _loc1_.minimum = 60; + _loc1_.maximum = 140; + _loc1_.stepSize = 1; + _loc1_.addEventListener("changeEnd",this.__sliderBody_changeEnd); + _loc1_.id = "sliderBody"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sliderBody = _loc1_; + BindingManager.executeBindings(this,"sliderBody",this.sliderBody); + return _loc1_; + } + + public function __sliderBody_changeEnd(param1:FlexEvent) : void + { + this.changeBodySize(); + } + + private function _ScaleChooserSpark_Image2_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637; + _loc1_.x = 65; + _loc1_.width = 29; + _loc1_.height = 33; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_Group4_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.height = 33; + _loc1_.alpha = 1; + _loc1_.mouseChildren = true; + _loc1_.mxmlContent = [this._ScaleChooserSpark_Image3_c(),this._ScaleChooserSpark_HSlider2_i(),this._ScaleChooserSpark_Image4_c()]; + _loc1_.id = "_ScaleChooserSpark_Group4"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ScaleChooserSpark_Group4 = _loc1_; + BindingManager.executeBindings(this,"_ScaleChooserSpark_Group4",this._ScaleChooserSpark_Group4); + return _loc1_; + } + + private function _ScaleChooserSpark_Image3_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317; + _loc1_.width = 29; + _loc1_.height = 33; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_HSlider2_i() : HSlider + { + var _loc1_:HSlider = new HSlider(); + _loc1_.x = 30; + _loc1_.width = 20; + _loc1_.verticalCenter = 0; + _loc1_.minimum = 60; + _loc1_.maximum = 180; + _loc1_.stepSize = 1; + _loc1_.addEventListener("changeEnd",this.__sliderHead_changeEnd); + _loc1_.id = "sliderHead"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.sliderHead = _loc1_; + BindingManager.executeBindings(this,"sliderHead",this.sliderHead); + return _loc1_; + } + + public function __sliderHead_changeEnd(param1:FlexEvent) : void + { + this.changeHeadSize(); + } + + private function _ScaleChooserSpark_Image4_c() : Image + { + var _loc1_:Image = new Image(); + _loc1_.source = this._embed_mxml__styles_images_details_ico_drag_head_max_png_994122617; + _loc1_.x = 65; + _loc1_.width = 29; + _loc1_.height = 33; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_VGroup2_c() : VGroup + { + var _loc1_:VGroup = new VGroup(); + _loc1_.verticalCenter = 0; + _loc1_.percentHeight = 100; + _loc1_.verticalAlign = "middle"; + _loc1_.mxmlContent = [this._ScaleChooserSpark_HGroup2_c(),this._ScaleChooserSpark_HGroup3_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_HGroup2_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._ScaleChooserSpark_IconButton2_i(),this._ScaleChooserSpark_IconButton3_i(),this._ScaleChooserSpark_IconButton4_i(),this._ScaleChooserSpark_IconButton5_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _ScaleChooserSpark_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509); + _loc1_.addEventListener("click",this.__btnType01_click); + _loc1_.id = "btnType01"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnType01 = _loc1_; + BindingManager.executeBindings(this,"btnType01",this.btnType01); + return _loc1_; + } + + public function __btnType01_click(param1:MouseEvent) : void + { + this.onScaleButtonClick(param1); + } + + private function _ScaleChooserSpark_IconButton3_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119); + _loc1_.addEventListener("click",this.__btnType02_click); + _loc1_.id = "btnType02"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnType02 = _loc1_; + BindingManager.executeBindings(this,"btnType02",this.btnType02); + return _loc1_; + } + + public function __btnType02_click(param1:MouseEvent) : void + { + this.onScaleButtonClick(param1); + } + + private function _ScaleChooserSpark_IconButton4_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647); + _loc1_.addEventListener("click",this.__btnType03_click); + _loc1_.id = "btnType03"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnType03 = _loc1_; + BindingManager.executeBindings(this,"btnType03",this.btnType03); + return _loc1_; + } + + public function __btnType03_click(param1:MouseEvent) : void + { + this.onScaleButtonClick(param1); + } + + private function _ScaleChooserSpark_IconButton5_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851); + _loc1_.addEventListener("click",this.__btnType04_click); + _loc1_.id = "btnType04"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnType04 = _loc1_; + BindingManager.executeBindings(this,"btnType04",this.btnType04); + return _loc1_; + } + + public function __btnType04_click(param1:MouseEvent) : void + { + this.onScaleButtonClick(param1); + } + + private function _ScaleChooserSpark_HGroup3_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.verticalCenter = 0; + _loc1_.alpha = 1; + _loc1_.mouseChildren = true; + _loc1_.mxmlContent = [this._ScaleChooserSpark_IconButton6_i(),this._ScaleChooserSpark_IconButton7_i(),this._ScaleChooserSpark_IconButton8_i(),this._ScaleChooserSpark_IconButton9_i()]; + _loc1_.id = "_ScaleChooserSpark_HGroup3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._ScaleChooserSpark_HGroup3 = _loc1_; + BindingManager.executeBindings(this,"_ScaleChooserSpark_HGroup3",this._ScaleChooserSpark_HGroup3); + return _loc1_; + } + + private function _ScaleChooserSpark_IconButton6_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_arrowl_init_png_147572551); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567); + _loc1_.addEventListener("click",this.__btnArrowLeft_click); + _loc1_.id = "btnArrowLeft"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnArrowLeft = _loc1_; + BindingManager.executeBindings(this,"btnArrowLeft",this.btnArrowLeft); + return _loc1_; + } + + public function __btnArrowLeft_click(param1:MouseEvent) : void + { + dispatchEvent(new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK,this)); + } + + private function _ScaleChooserSpark_IconButton7_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_arrowr_init_png_281765451); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_arrowr_over_png_298567235); + _loc1_.addEventListener("click",this.__btnArrowRight_click); + _loc1_.id = "btnArrowRight"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnArrowRight = _loc1_; + BindingManager.executeBindings(this,"btnArrowRight",this.btnArrowRight); + return _loc1_; + } + + public function __btnArrowRight_click(param1:MouseEvent) : void + { + dispatchEvent(new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK,this)); + } + + private function _ScaleChooserSpark_IconButton8_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083); + _loc1_.addEventListener("click",this.__btnArrowUp_click); + _loc1_.id = "btnArrowUp"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnArrowUp = _loc1_; + BindingManager.executeBindings(this,"btnArrowUp",this.btnArrowUp); + return _loc1_; + } + + public function __btnArrowUp_click(param1:MouseEvent) : void + { + dispatchEvent(new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK,this)); + } + + private function _ScaleChooserSpark_IconButton9_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_details_btn_arrowd_init_png_926693625); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_details_btn_arrowd_over_png_372004985); + _loc1_.addEventListener("click",this.__btnArrowDown_click); + _loc1_.id = "btnArrowDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnArrowDown = _loc1_; + BindingManager.executeBindings(this,"btnArrowDown",this.btnArrowDown); + return _loc1_; + } + + public function __btnArrowDown_click(param1:MouseEvent) : void + { + dispatchEvent(new CcThumbPropertyEvent(CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK,this)); + } + + private function _ScaleChooserSpark_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,null,null,"moveUp.target","yPad"); + result[1] = new Binding(this,null,null,"moveDown.target","yPad"); + result[2] = new Binding(this,function():Number + { + return (this.width - yPad.width) / 2; + },null,"yPad.x"); + result[3] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Close"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnClose.label"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _ScaleChooserSpark_Group3() : Group + { + return this._200915974_ScaleChooserSpark_Group3; + } + + public function set _ScaleChooserSpark_Group3(param1:Group) : void + { + var _loc2_:Object = this._200915974_ScaleChooserSpark_Group3; + if(_loc2_ !== param1) + { + this._200915974_ScaleChooserSpark_Group3 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ScaleChooserSpark_Group3",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ScaleChooserSpark_Group4() : Group + { + return this._200915975_ScaleChooserSpark_Group4; + } + + public function set _ScaleChooserSpark_Group4(param1:Group) : void + { + var _loc2_:Object = this._200915975_ScaleChooserSpark_Group4; + if(_loc2_ !== param1) + { + this._200915975_ScaleChooserSpark_Group4 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ScaleChooserSpark_Group4",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _ScaleChooserSpark_HGroup3() : HGroup + { + return this._1592476650_ScaleChooserSpark_HGroup3; + } + + public function set _ScaleChooserSpark_HGroup3(param1:HGroup) : void + { + var _loc2_:Object = this._1592476650_ScaleChooserSpark_HGroup3; + if(_loc2_ !== param1) + { + this._1592476650_ScaleChooserSpark_HGroup3 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_ScaleChooserSpark_HGroup3",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnArrowDown() : IconButton + { + return this._1686836913btnArrowDown; + } + + public function set btnArrowDown(param1:IconButton) : void + { + var _loc2_:Object = this._1686836913btnArrowDown; + if(_loc2_ !== param1) + { + this._1686836913btnArrowDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnArrowDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnArrowLeft() : IconButton + { + return this._1686608716btnArrowLeft; + } + + public function set btnArrowLeft(param1:IconButton) : void + { + var _loc2_:Object = this._1686608716btnArrowLeft; + if(_loc2_ !== param1) + { + this._1686608716btnArrowLeft = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnArrowLeft",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnArrowRight() : IconButton + { + return this._739601649btnArrowRight; + } + + public function set btnArrowRight(param1:IconButton) : void + { + var _loc2_:Object = this._739601649btnArrowRight; + if(_loc2_ !== param1) + { + this._739601649btnArrowRight = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnArrowRight",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnArrowUp() : IconButton + { + return this._1923540344btnArrowUp; + } + + public function set btnArrowUp(param1:IconButton) : void + { + var _loc2_:Object = this._1923540344btnArrowUp; + if(_loc2_ !== param1) + { + this._1923540344btnArrowUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnArrowUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnClose() : IconButton + { + return this._2082343164btnClose; + } + + public function set btnClose(param1:IconButton) : void + { + var _loc2_:Object = this._2082343164btnClose; + if(_loc2_ !== param1) + { + this._2082343164btnClose = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnClose",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnType01() : IconButton + { + return this._626844727btnType01; + } + + public function set btnType01(param1:IconButton) : void + { + var _loc2_:Object = this._626844727btnType01; + if(_loc2_ !== param1) + { + this._626844727btnType01 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnType01",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnType02() : IconButton + { + return this._626844728btnType02; + } + + public function set btnType02(param1:IconButton) : void + { + var _loc2_:Object = this._626844728btnType02; + if(_loc2_ !== param1) + { + this._626844728btnType02 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnType02",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnType03() : IconButton + { + return this._626844729btnType03; + } + + public function set btnType03(param1:IconButton) : void + { + var _loc2_:Object = this._626844729btnType03; + if(_loc2_ !== param1) + { + this._626844729btnType03 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnType03",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnType04() : IconButton + { + return this._626844730btnType04; + } + + public function set btnType04(param1:IconButton) : void + { + var _loc2_:Object = this._626844730btnType04; + if(_loc2_ !== param1) + { + this._626844730btnType04 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnType04",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropShadow() : RectangularDropShadow + { + return this._906978543dropShadow; + } + + public function set dropShadow(param1:RectangularDropShadow) : void + { + var _loc2_:Object = this._906978543dropShadow; + if(_loc2_ !== param1) + { + this._906978543dropShadow = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropShadow",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveDown() : Animate + { + return this._104889325moveDown; + } + + public function set moveDown(param1:Animate) : void + { + var _loc2_:Object = this._104889325moveDown; + if(_loc2_ !== param1) + { + this._104889325moveDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveUp() : Animate + { + return this._1068263860moveUp; + } + + public function set moveUp(param1:Animate) : void + { + var _loc2_:Object = this._1068263860moveUp; + if(_loc2_ !== param1) + { + this._1068263860moveUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sliderBody() : HSlider + { + return this._1105645091sliderBody; + } + + public function set sliderBody(param1:HSlider) : void + { + var _loc2_:Object = this._1105645091sliderBody; + if(_loc2_ !== param1) + { + this._1105645091sliderBody = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sliderBody",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get sliderHead() : HSlider + { + return this._1105814113sliderHead; + } + + public function set sliderHead(param1:HSlider) : void + { + var _loc2_:Object = this._1105814113sliderHead; + if(_loc2_ !== param1) + { + this._1105814113sliderHead = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"sliderHead",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get yPad() : Group + { + return this._3684698yPad; + } + + public function set yPad(param1:Group) : void + { + var _loc2_:Object = this._3684698yPad; + if(_loc2_ !== param1) + { + this._3684698yPad = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"yPad",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625.as new file mode 100644 index 0000000..11063b4 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_init_png_926693625() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.as new file mode 100644 index 0000000..63de2ce --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowd_over_png_372004985() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.as new file mode 100644 index 0000000..a8b7a7c --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_init_png_147572551() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.as new file mode 100644 index 0000000..e5ef00b --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowl_over_png_1774962567() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.as new file mode 100644 index 0000000..0e650ed --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_init_png_281765451() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235.as new file mode 100644 index 0000000..db7c840 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowr_over_png_298567235() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.as new file mode 100644 index 0000000..837be30 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_init_png_1510196995() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.as new file mode 100644 index 0000000..040997d --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_arrowu_over_png_1477683083() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.as new file mode 100644 index 0000000..d69d91f --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_init_png_548923715() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.as new file mode 100644 index 0000000..cd0f655 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype01_over_png_1018755509() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607.as new file mode 100644 index 0000000..8c2daa1 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_init_png_256313607() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.as new file mode 100644 index 0000000..96e2f78 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype02_over_png_727082119() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.as new file mode 100644 index 0000000..6e7682f --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_init_png_525739335() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647.as new file mode 100644 index 0000000..c50360d --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype03_over_png_523704647() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.as new file mode 100644 index 0000000..f31aa5e --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_init_png_1589053115() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.as new file mode 100644 index 0000000..faed5cb --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_btn_bodytype04_over_png_528750851() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.as new file mode 100644 index 0000000..ebcb565 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_max_png_1690384637() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041.as new file mode 100644 index 0000000..95904eb --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_body_min_png_1489058041() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617.as new file mode 100644 index 0000000..fcc672e --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_max_png_994122617() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317.as new file mode 100644 index 0000000..1e581e3 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_details_ico_drag_head_min_png_1564563317() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as new file mode 100644 index 0000000..8c59a27 --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_init_png_1805605639() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as new file mode 100644 index 0000000..60f80ec --- /dev/null +++ b/scripts/anifire/creator/components/ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769 extends BitmapAsset + { + + + public function ScaleChooserSpark__embed_mxml__styles_images_panel_btn_close_over_png_2000923769() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TemplateCCSelector.as b/scripts/anifire/creator/components/TemplateCCSelector.as new file mode 100644 index 0000000..0c2c461 --- /dev/null +++ b/scripts/anifire/creator/components/TemplateCCSelector.as @@ -0,0 +1,465 @@ +package anifire.creator.components +{ + import anifire.component.CCThumb; + import anifire.creator.core.CcConsole; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.events.CcTemplateChooserEvent; + import anifire.creator.models.CcCharacter; + import anifire.util.UtilPager; + import flash.events.MouseEvent; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.containers.HBox; + import mx.containers.Tile; + import mx.containers.VBox; + import mx.controls.Button; + import mx.controls.Label; + import mx.core.IFlexModuleFactory; + import mx.core.UIComponentDescriptor; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + + use namespace mx_internal; + + public class TemplateCCSelector extends VBox implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + public var _TemplateCCSelector_Label1:Label; + + private var _55416058leftBut:Button; + + private var _1436107067rightBut:Button; + + private var _1329765796thumbTile:Tile; + + private var _documentDescriptor_:UIComponentDescriptor; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _selectedAssetId:String = null; + + private var _1468771644_pager:UtilPager = null; + + private var _pageNumDisplayed:int = -1; + + private var _categoryDisplayed:String = ""; + + private var _category:String = ""; + + private var _hasHandler:Boolean = false; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function TemplateCCSelector() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._documentDescriptor_ = new UIComponentDescriptor({ + "type":VBox, + "events":{"initialize":"___TemplateCCSelector_VBox1_initialize"}, + "propertiesFactory":function():Object + { + return { + "width":500, + "height":440, + "childDescriptors":[new UIComponentDescriptor({ + "type":HBox, + "stylesFactory":function():void + { + this.verticalAlign = "middle"; + }, + "propertiesFactory":function():Object + { + return { + "percentWidth":100, + "percentHeight":100, + "childDescriptors":[new UIComponentDescriptor({ + "type":Button, + "id":"leftBut", + "events":{"click":"__leftBut_click"}, + "propertiesFactory":function():Object + { + return { + "buttonMode":true, + "styleName":"btnTemplateThumbChooserLeft" + }; + } + }),new UIComponentDescriptor({ + "type":Tile, + "id":"thumbTile", + "propertiesFactory":function():Object + { + return { + "minWidth":406, + "minHeight":402 + }; + } + }),new UIComponentDescriptor({ + "type":Button, + "id":"rightBut", + "events":{"click":"__rightBut_click"}, + "propertiesFactory":function():Object + { + return { + "buttonMode":true, + "styleName":"btnTemplateThumbChooserRight" + }; + } + })] + }; + } + }),new UIComponentDescriptor({ + "type":Label, + "id":"_TemplateCCSelector_Label1", + "propertiesFactory":function():Object + { + return { + "styleName":"templateBrowsePageNumber", + "percentWidth":100 + }; + } + })] + }; + } + }); + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._TemplateCCSelector_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_TemplateCCSelectorWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return TemplateCCSelector[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.horizontalScrollPolicy = "off"; + this.verticalScrollPolicy = "off"; + this.width = 500; + this.height = 440; + this.addEventListener("initialize",this.___TemplateCCSelector_VBox1_initialize); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + TemplateCCSelector._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + mx_internal::setDocumentDescriptor(this._documentDescriptor_); + super.initialize(); + } + + public function get category() : String + { + return this._category; + } + + public function set category(param1:String) : void + { + this._category = param1; + } + + private function refreshHighlight() : void + { + var _loc1_:CCTemplateCharThumb = null; + for each(_loc1_ in this.thumbTile.getChildren()) + { + _loc1_.currentState = _loc1_.character.assetId == this._selectedAssetId?"selected":""; + } + } + + private function init() : void + { + addEventListener(CcTemplateChooserEvent.PREVIEW_CHARACTER_CHANGED,function(param1:CcTemplateChooserEvent):void + { + _selectedAssetId = (param1.getData() as CcCharacter).assetId; + if(_pageNumDisplayed != _pager.pageNumber || _categoryDisplayed != _category) + { + _pageNumDisplayed = _pager.pageNumber; + _categoryDisplayed = _category; + CcConsole.getCcConsole().refreshTemplateCCSelector(_pager.getView(),"tile"); + thumbTile.removeAllChildren(); + } + else + { + refreshHighlight(); + } + }); + } + + private function initCreationComplete() : void + { + var self:TemplateCCSelector = this; + this._hasHandler = true; + CcConsole.getCcConsole().addEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,function(param1:CcCoreEvent):void + { + var char:CcCharacter = null; + var tthumb:CCTemplateCharThumb = null; + var e:CcCoreEvent = param1; + var data:Object = e.getData(); + var thumb:CCThumb = data.thumbnail as CCThumb; + char = data.char as CcCharacter; + if(data.tag != "tile" || !_pager.isItemOnCurrentPage(char) || thumbTile.getChildren().some(function(param1:CCTemplateCharThumb, param2:int, param3:Array):Boolean + { + return param1.character.assetId == char.assetId; + })) + { + return; + } + tthumb = new CCTemplateCharThumb(); + tthumb.character = char; + tthumb.thumbnail = thumb; + tthumb.addEventListener(MouseEvent.CLICK,function(param1:MouseEvent):void + { + dispatchEvent(new CcTemplateChooserEvent(CcTemplateChooserEvent.USER_WANT_TO_PREVIEW,tthumb,char,true)); + }); + if(tthumb.character.assetId == _selectedAssetId) + { + tthumb.currentState = "selected"; + } + thumbTile.addChildAt(tthumb,getInsertionIndex(tthumb)); + if(_pager.getView().length == thumbTile.getChildren().length) + { + refreshHighlight(); + } + }); + } + + private function getInsertionIndex(param1:CCTemplateCharThumb) : int + { + var addedChars:Array = null; + var iitemIndex:int = 0; + var retval:Array = null; + var iitem:CCTemplateCharThumb = param1; + addedChars = this.thumbTile.getChildren().map(function(param1:CCTemplateCharThumb, param2:int, param3:Array):Object + { + return param1.character; + }); + iitemIndex = 0; + var orderings:Array = this._pager.getView().map(function(param1:CcCharacter, param2:int, param3:Array):Object + { + if(param1 == iitem.character) + { + iitemIndex = param2; + } + return { + "item":param1, + "index":param2 + }; + }); + retval = []; + orderings.filter(function(param1:Object, param2:int, param3:Array):Boolean + { + return addedChars.indexOf(param1.item) >= 0; + }).forEach(function(param1:Object, param2:int, param3:Array):void + { + if(param1.index - iitemIndex > 0) + { + retval.push(param2); + } + }); + return retval.length == 0?addedChars.length > 0?int(addedChars.length):0:int(retval[0]); + } + + public function get pager() : UtilPager + { + return this._pager; + } + + public function set pager(param1:UtilPager) : void + { + this._pager = param1; + if(param1 != null) + { + this.thumbTile.removeAllChildren(); + if(!this._hasHandler) + { + this.initCreationComplete(); + } + this._pageNumDisplayed = this._pager.pageNumber; + this._categoryDisplayed = this._category; + CcConsole.getCcConsole().refreshTemplateCCSelector(param1.getView(),"tile"); + } + } + + private function previous() : void + { + var _loc1_:CcConsole = CcConsole.getCcConsole(); + var _loc2_:int = this._pager.pageNumber; + this._pager.previous(); + if(this._pager.pageNumber != _loc2_ || this._categoryDisplayed != this._category) + { + this._pageNumDisplayed = this._pager.pageNumber; + this._categoryDisplayed = this._category; + _loc1_.refreshTemplateCCSelector(this._pager.getView(),"tile"); + this.thumbTile.removeAllChildren(); + } + } + + private function next() : void + { + var _loc1_:CcConsole = CcConsole.getCcConsole(); + var _loc2_:int = this._pager.pageNumber; + this._pager.next(); + if(this._pager.pageNumber != _loc2_ || this._categoryDisplayed != this._category) + { + this._pageNumDisplayed = this._pager.pageNumber; + this._categoryDisplayed = this._category; + _loc1_.refreshTemplateCCSelector(this._pager.getView(),"tile"); + this.thumbTile.removeAllChildren(); + } + } + + public function ___TemplateCCSelector_VBox1_initialize(param1:FlexEvent) : void + { + this.init(); + } + + public function __leftBut_click(param1:MouseEvent) : void + { + this.previous(); + } + + public function __rightBut_click(param1:MouseEvent) : void + { + this.next(); + } + + private function _TemplateCCSelector_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Boolean + { + return _pager.pageNumber > 1; + },null,"leftBut.enabled"); + result[1] = new Binding(this,function():Boolean + { + return _pager.pageNumber < _pager.totalPages; + },null,"rightBut.enabled"); + result[2] = new Binding(this,function():String + { + var _loc1_:* = _pager.pageNumber + " / " + _pager.totalPages; + return _loc1_ == undefined?null:String(_loc1_); + },null,"_TemplateCCSelector_Label1.text"); + return result; + } + + [Bindable(event="propertyChange")] + public function get leftBut() : Button + { + return this._55416058leftBut; + } + + public function set leftBut(param1:Button) : void + { + var _loc2_:Object = this._55416058leftBut; + if(_loc2_ !== param1) + { + this._55416058leftBut = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"leftBut",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get rightBut() : Button + { + return this._1436107067rightBut; + } + + public function set rightBut(param1:Button) : void + { + var _loc2_:Object = this._1436107067rightBut; + if(_loc2_ !== param1) + { + this._1436107067rightBut = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"rightBut",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get thumbTile() : Tile + { + return this._1329765796thumbTile; + } + + public function set thumbTile(param1:Tile) : void + { + var _loc2_:Object = this._1329765796thumbTile; + if(_loc2_ !== param1) + { + this._1329765796thumbTile = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"thumbTile",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + private function get _pager() : UtilPager + { + return this._1468771644_pager; + } + + private function set _pager(param1:UtilPager) : void + { + var _loc2_:Object = this._1468771644_pager; + if(_loc2_ !== param1) + { + this._1468771644_pager = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_pager",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/ThumbList.as b/scripts/anifire/creator/components/ThumbList.as new file mode 100644 index 0000000..7fbb6bd --- /dev/null +++ b/scripts/anifire/creator/components/ThumbList.as @@ -0,0 +1,19 @@ +package anifire.creator.components +{ + import flash.events.KeyboardEvent; + import spark.components.List; + + public class ThumbList extends List + { + + + public function ThumbList() + { + super(); + } + + override protected function keyDownHandler(param1:KeyboardEvent) : void + { + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons.as b/scripts/anifire/creator/components/TopButtons.as new file mode 100644 index 0000000..f7762c4 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons.as @@ -0,0 +1,1119 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.constant.ServerConstants; + import anifire.creator.events.CcButtonBarEvent; + import anifire.creator.events.MenuItemEvent; + import anifire.creator.models.MenuItemModel; + import anifire.creator.skins.SubscribeTipContainerSkin; + import anifire.managers.ExternalLinkManager; + import anifire.managers.ServerConnector; + import anifire.util.UtilDict; + import anifire.util.UtilUser; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.utils.getDefinitionByName; + import flashx.textLayout.elements.LinkElement; + import flashx.textLayout.elements.ParagraphElement; + import flashx.textLayout.elements.SpanElement; + import flashx.textLayout.elements.TextFlow; + import flashx.textLayout.events.FlowElementMouseEvent; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayCollection; + import mx.controls.Spacer; + import mx.core.IFlexModuleFactory; + import mx.core.IStateClient2; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.states.SetProperty; + import mx.states.State; + import spark.components.Button; + import spark.components.Group; + import spark.components.HGroup; + import spark.components.RichEditableText; + import spark.effects.Fade; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class TopButtons extends Group implements IBindingClient, IStateClient2 + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _2126924263_TopButtons_HGroup2:HGroup; + + private var _2126924264_TopButtons_HGroup3:HGroup; + + private var _2093656596btnOther:IconButton; + + private var _206159482btnRedo:IconButton; + + private var _206185977btnSave:IconButton; + + private var _1357233045btnSaveDisabled:IconButton; + + private var _206257504btnUndo:IconButton; + + private var _433014735dropDown:ArrowTipContainer; + + private var _253520497extraMenu:MenuItemList; + + private var _1233089485extraMenuDisplay:PopUpAnchor; + + private var _1282133823fadeIn:Fade; + + private var _295724916modifyButton:Button; + + private var _122158822previewButton:Button; + + private var _2239512subscribeDisplay:PopUpAnchor; + + private var _327806705subscribeTip:ArrowTipContainer; + + private var _1766219762warnLabel:RichEditableText; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043:Class; + + private var _embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495:Class; + + private var _embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911:Class; + + private var _embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409:Class; + + private var _embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699:Class; + + private var _embed_mxml__styles_images_toolbar_btn_save_over_png_757483579:Class; + + private var _embed_mxml__styles_images_toolbar_btn_save_init_png_220669891:Class; + + private var _embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469:Class; + + private var _embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807:Class; + + private var _embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077:Class; + + private var _embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function TopButtons() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043 = TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043; + this._embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495 = TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495; + this._embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911 = TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911; + this._embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409 = TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409; + this._embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699 = TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699; + this._embed_mxml__styles_images_toolbar_btn_save_over_png_757483579 = TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579; + this._embed_mxml__styles_images_toolbar_btn_save_init_png_220669891 = TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891; + this._embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469 = TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469; + this._embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807 = TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807; + this._embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077 = TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077; + this._embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303 = TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._TopButtons_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_TopButtonsWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return TopButtons[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 300; + this.height = 68; + this.mxmlContent = [this._TopButtons_Rect1_c(),this._TopButtons_HGroup1_c(),this._TopButtons_PopUpAnchor1_i(),this._TopButtons_PopUpAnchor2_i()]; + this.currentState = "editor"; + this._TopButtons_Fade1_i(); + this.addEventListener("creationComplete",this.___TopButtons_Group1_creationComplete); + states = [new State({ + "name":"editor", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_TopButtons_HGroup2", + "name":"visible", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"_TopButtons_HGroup3", + "name":"visible", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"modifyButton", + "name":"visible", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"modifyButton", + "name":"includeInLayout", + "value":false + })] + }),new State({ + "name":"preview", + "overrides":[new SetProperty().initializeFromObject({ + "target":"_TopButtons_HGroup2", + "name":"visible", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"_TopButtons_HGroup3", + "name":"visible", + "value":true + }),new SetProperty().initializeFromObject({ + "target":"previewButton", + "name":"visible", + "value":false + }),new SetProperty().initializeFromObject({ + "target":"previewButton", + "name":"includeInLayout", + "value":false + })] + })]; + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + TopButtons._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + protected function createMenuModel() : void + { + var _loc3_:MenuItemModel = null; + var _loc4_:MenuItemModel = null; + var _loc1_:ArrayCollection = new ArrayCollection(); + if(CcLibConstant.RANDOM_CHAR) + { + _loc3_ = new MenuItemModel(UtilDict.toDisplay("go","Randomize character"),"random"); + _loc1_.addItem(_loc3_); + } + var _loc2_:MenuItemModel = new MenuItemModel(UtilDict.toDisplay("go","Reset character"),"reset"); + _loc1_.addItem(_loc2_); + if(CcLibConstant.CHANGE_CHAR_SCALE) + { + _loc4_ = new MenuItemModel(UtilDict.toDisplay("go","Scaling tool"),"scale"); + _loc1_.addItem(_loc4_); + } + this.extraMenu.dataProvider = _loc1_; + this.refreshRole(); + } + + public function refreshRole() : void + { + var _loc1_:String = null; + var _loc2_:TextFlow = null; + var _loc3_:Array = null; + var _loc4_:ParagraphElement = null; + var _loc5_:SpanElement = null; + var _loc6_:LinkElement = null; + var _loc7_:SpanElement = null; + var _loc8_:SpanElement = null; + this.btnSave.visible = true; + this.btnSaveDisabled.visible = false; + if(CcLibConstant.IS_BUSINESS_THEME && !UtilUser.hasBusinessFeatures) + { + this.btnSave.visible = false; + this.btnSaveDisabled.visible = true; + _loc1_ = UtilDict.toDisplay("go","To save this character, please {0} to a business plan."); + } + else if(UtilUser.userType == UtilUser.BASIC_USER) + { + this.btnSave.visible = false; + this.btnSaveDisabled.visible = true; + _loc1_ = UtilDict.toDisplay("go","To save this character, please {0} now."); + } + if(this.btnSaveDisabled.visible) + { + _loc2_ = new TextFlow(); + _loc3_ = _loc1_.split("{0}"); + _loc4_ = new ParagraphElement(); + _loc5_ = new SpanElement(); + _loc5_.text = _loc3_[0]; + _loc4_.addChild(_loc5_); + _loc6_ = new LinkElement(); + _loc7_ = new SpanElement(); + _loc7_.text = UtilDict.toDisplay("go","subscribe"); + _loc7_.fontFamily = "StudioSparkMain"; + _loc7_.fontWeight = "bold"; + _loc7_.color = 1808298; + _loc6_.addChild(_loc7_); + _loc6_.addEventListener(FlowElementMouseEvent.CLICK,this.onUpgradeLinkClick); + _loc4_.addChild(_loc6_); + if(_loc3_.length > 1) + { + _loc8_ = new SpanElement(); + _loc8_.text = _loc3_[1]; + _loc4_.addChild(_loc8_); + } + _loc2_.addChild(_loc4_); + this.warnLabel.textFlow = _loc2_; + this.warnLabel.textFlow.fontFamily = "StudioSparkMain"; + this.btnSaveDisabled.addEventListener(MouseEvent.MOUSE_OVER,this.displaySubscribe); + } + else + { + this.warnLabel.textFlow = null; + this.btnSaveDisabled.removeEventListener(MouseEvent.MOUSE_OVER,this.displaySubscribe); + } + } + + override public function set currentState(param1:String) : void + { + if(CcLibConstant.IS_BUSINESS_THEME && !UtilUser.hasBusinessFeatures || UtilUser.userType == UtilUser.BASIC_USER) + { + if(param1 == "preview") + { + this.subscribeDisplay.displayPopUp = true; + } + } + if(param1 == "editor") + { + this.subscribeDisplay.displayPopUp = false; + } + super.currentState = param1; + } + + protected function onUpgradeLinkClick(param1:FlowElementMouseEvent) : void + { + ExternalLinkManager.instance.navigateWithSession(ServerConstants.BUSINESS_PLAN_PAGE_PATH,"wndbizplan"); + ServerConnector.instance.onUpsellUpgradePending(); + } + + protected function displaySubscribe(param1:Event) : void + { + this.subscribeDisplay.displayPopUp = true; + } + + protected function displayMenu() : void + { + this.extraMenuDisplay.displayPopUp = true; + } + + protected function onExtraMenuButtonClick(param1:MouseEvent) : void + { + this.displayMenu(); + } + + protected function onMenuItemClick(param1:MenuItemEvent) : void + { + var _loc2_:String = param1.item.value; + switch(_loc2_) + { + case "random": + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.RANDOMIZE_BUTTON_CLICK,this)); + break; + case "reset": + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.RESET_BUTTON_CLICK,this)); + break; + case "scale": + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.SCALE_BUTTON_CLICK,this)); + } + } + + private function _TopButtons_Fade1_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.alphaFrom = 0; + _loc1_.alphaTo = 1; + _loc1_.duration = 300; + this.fadeIn = _loc1_; + BindingManager.executeBindings(this,"fadeIn",this.fadeIn); + return _loc1_; + } + + private function _TopButtons_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.percentWidth = 100; + _loc1_.percentHeight = 100; + _loc1_.fill = this._TopButtons_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _TopButtons_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _TopButtons_HGroup1_c() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.width = 300; + _loc1_.height = 40; + _loc1_.verticalAlign = "middle"; + _loc1_.horizontalAlign = "right"; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._TopButtons_HGroup2_i(),this._TopButtons_HGroup3_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopButtons_HGroup2_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.height = 40; + _loc1_.verticalAlign = "middle"; + _loc1_.gap = -1; + _loc1_.horizontalAlign = "right"; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._TopButtons_IconButton1_i(),this._TopButtons_IconButton2_i(),this._TopButtons_Spacer1_c(),this._TopButtons_IconButton3_i()]; + _loc1_.id = "_TopButtons_HGroup2"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._TopButtons_HGroup2 = _loc1_; + BindingManager.executeBindings(this,"_TopButtons_HGroup2",this._TopButtons_HGroup2); + return _loc1_; + } + + private function _TopButtons_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.styleName = "topToolBar"; + _loc1_.enabled = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409); + _loc1_.addEventListener("click",this.__btnUndo_click); + _loc1_.id = "btnUndo"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnUndo = _loc1_; + BindingManager.executeBindings(this,"btnUndo",this.btnUndo); + return _loc1_; + } + + public function __btnUndo_click(param1:MouseEvent) : void + { + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.UNDO_BUTTON_CLICK,this)); + } + + private function _TopButtons_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.styleName = "topToolBar"; + _loc1_.enabled = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469); + _loc1_.addEventListener("click",this.__btnRedo_click); + _loc1_.id = "btnRedo"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnRedo = _loc1_; + BindingManager.executeBindings(this,"btnRedo",this.btnRedo); + return _loc1_; + } + + public function __btnRedo_click(param1:MouseEvent) : void + { + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.REDO_BUTTON_CLICK,this)); + } + + private function _TopButtons_Spacer1_c() : Spacer + { + var _loc1_:Spacer = new Spacer(); + _loc1_.width = 15; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopButtons_IconButton3_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.focusEnabled = false; + _loc1_.tabEnabled = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495); + _loc1_.addEventListener("click",this.__btnOther_click); + _loc1_.id = "btnOther"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnOther = _loc1_; + BindingManager.executeBindings(this,"btnOther",this.btnOther); + return _loc1_; + } + + public function __btnOther_click(param1:MouseEvent) : void + { + this.onExtraMenuButtonClick(param1); + } + + private function _TopButtons_HGroup3_i() : HGroup + { + var _loc1_:HGroup = new HGroup(); + _loc1_.height = 40; + _loc1_.verticalAlign = "middle"; + _loc1_.gap = -1; + _loc1_.horizontalAlign = "right"; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._TopButtons_Spacer2_c(),this._TopButtons_Button1_i(),this._TopButtons_Button2_i(),this._TopButtons_Spacer3_c(),this._TopButtons_Group2_c()]; + _loc1_.id = "_TopButtons_HGroup3"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this._TopButtons_HGroup3 = _loc1_; + BindingManager.executeBindings(this,"_TopButtons_HGroup3",this._TopButtons_HGroup3); + return _loc1_; + } + + private function _TopButtons_Spacer2_c() : Spacer + { + var _loc1_:Spacer = new Spacer(); + _loc1_.width = 15; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopButtons_Button1_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.buttonMode = true; + _loc1_.styleName = "default"; + _loc1_.width = 85; + _loc1_.addEventListener("click",this.__previewButton_click); + _loc1_.id = "previewButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.previewButton = _loc1_; + BindingManager.executeBindings(this,"previewButton",this.previewButton); + return _loc1_; + } + + public function __previewButton_click(param1:MouseEvent) : void + { + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.PREVIEW_BUTTON_CLICK,this)); + } + + private function _TopButtons_Button2_i() : Button + { + var _loc1_:Button = new Button(); + _loc1_.buttonMode = true; + _loc1_.styleName = "default"; + _loc1_.width = 85; + _loc1_.addEventListener("click",this.__modifyButton_click); + _loc1_.id = "modifyButton"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.modifyButton = _loc1_; + BindingManager.executeBindings(this,"modifyButton",this.modifyButton); + return _loc1_; + } + + public function __modifyButton_click(param1:MouseEvent) : void + { + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.MODIFY_BUTTON_CLICK,this)); + } + + private function _TopButtons_Spacer3_c() : Spacer + { + var _loc1_:Spacer = new Spacer(); + _loc1_.width = 15; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopButtons_Group2_c() : Group + { + var _loc1_:Group = new Group(); + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.mxmlContent = [this._TopButtons_IconButton4_i(),this._TopButtons_IconButton5_i()]; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TopButtons_IconButton4_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.enabled = true; + _loc1_.visible = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077); + _loc1_.id = "btnSaveDisabled"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnSaveDisabled = _loc1_; + BindingManager.executeBindings(this,"btnSaveDisabled",this.btnSaveDisabled); + return _loc1_; + } + + private function _TopButtons_IconButton5_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.styleName = "topToolBar"; + _loc1_.enabled = true; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_toolbar_btn_save_init_png_220669891); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_toolbar_btn_save_over_png_757483579); + _loc1_.addEventListener("click",this.__btnSave_click); + _loc1_.id = "btnSave"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnSave = _loc1_; + BindingManager.executeBindings(this,"btnSave",this.btnSave); + return _loc1_; + } + + public function __btnSave_click(param1:MouseEvent) : void + { + this.dispatchEvent(new CcButtonBarEvent(CcButtonBarEvent.SAVE_BUTTON_CLICK,this)); + } + + private function _TopButtons_PopUpAnchor1_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.percentWidth = 100; + _loc1_.bottom = 0; + _loc1_.popUpPosition = "belowRight"; + _loc1_.right = 20; + _loc1_.popUp = this._TopButtons_ArrowTipContainer1_i(); + _loc1_.id = "extraMenuDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.extraMenuDisplay = _loc1_; + BindingManager.executeBindings(this,"extraMenuDisplay",this.extraMenuDisplay); + return _loc1_; + } + + private function _TopButtons_ArrowTipContainer1_i() : ArrowTipContainer + { + var _loc1_:ArrowTipContainer = new ArrowTipContainer(); + _loc1_.left = 5; + _loc1_.right = 5; + _loc1_.top = 5; + _loc1_.bottom = 5; + _loc1_.tipPosition = "below"; + _loc1_.targetWidth = 20; + _loc1_.offset = 15; + _loc1_.content = [this._TopButtons_MenuItemList1_i()]; + _loc1_.id = "dropDown"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.dropDown = _loc1_; + BindingManager.executeBindings(this,"dropDown",this.dropDown); + return _loc1_; + } + + private function _TopButtons_MenuItemList1_i() : MenuItemList + { + var _loc1_:MenuItemList = new MenuItemList(); + _loc1_.top = 5; + _loc1_.bottom = 5; + _loc1_.addEventListener("itemClick",this.__extraMenu_itemClick); + _loc1_.id = "extraMenu"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.extraMenu = _loc1_; + BindingManager.executeBindings(this,"extraMenu",this.extraMenu); + return _loc1_; + } + + public function __extraMenu_itemClick(param1:MenuItemEvent) : void + { + this.onMenuItemClick(param1); + } + + private function _TopButtons_PopUpAnchor2_i() : PopUpAnchor + { + var _loc1_:PopUpAnchor = new PopUpAnchor(); + _loc1_.maxWidth = 160; + _loc1_.bottom = 0; + _loc1_.popUpPosition = "belowCenter"; + _loc1_.right = 2; + _loc1_.popUp = this._TopButtons_ArrowTipContainer2_i(); + _loc1_.id = "subscribeDisplay"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.subscribeDisplay = _loc1_; + BindingManager.executeBindings(this,"subscribeDisplay",this.subscribeDisplay); + return _loc1_; + } + + private function _TopButtons_ArrowTipContainer2_i() : ArrowTipContainer + { + var _loc1_:ArrowTipContainer = new ArrowTipContainer(); + _loc1_.left = 5; + _loc1_.right = 5; + _loc1_.top = 5; + _loc1_.bottom = 5; + _loc1_.tipPosition = "belowRight"; + _loc1_.targetWidth = 20; + _loc1_.offset = 15; + _loc1_.content = [this._TopButtons_RichEditableText1_i()]; + _loc1_.setStyle("skinClass",SubscribeTipContainerSkin); + _loc1_.id = "subscribeTip"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.subscribeTip = _loc1_; + BindingManager.executeBindings(this,"subscribeTip",this.subscribeTip); + return _loc1_; + } + + private function _TopButtons_RichEditableText1_i() : RichEditableText + { + var _loc1_:RichEditableText = new RichEditableText(); + _loc1_.multiline = true; + _loc1_.minWidth = 140; + _loc1_.maxWidth = 160; + _loc1_.editable = false; + _loc1_.focusEnabled = false; + _loc1_.selectable = false; + _loc1_.verticalCenter = 0; + _loc1_.setStyle("fontSize",13); + _loc1_.setStyle("color",16777215); + _loc1_.setStyle("textAlign","left"); + _loc1_.setStyle("paddingLeft",15); + _loc1_.setStyle("paddingRight",15); + _loc1_.setStyle("paddingTop",15); + _loc1_.setStyle("paddingBottom",15); + _loc1_.id = "warnLabel"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.warnLabel = _loc1_; + BindingManager.executeBindings(this,"warnLabel",this.warnLabel); + return _loc1_; + } + + public function ___TopButtons_Group1_creationComplete(param1:FlexEvent) : void + { + this.createMenuModel(); + } + + private function _TopButtons_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Undo"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnUndo.label"); + result[1] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Redo"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnRedo.label"); + result[2] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","PREVIEW"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"previewButton.label"); + result[3] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","MODIFY"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"modifyButton.label"); + result[4] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Save"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnSave.label"); + result[5] = new Binding(this,null,function(param1:*):void + { + subscribeTip.setStyle("showEffect",param1); + },"subscribeTip.showEffect","fadeIn"); + return result; + } + + [Bindable(event="propertyChange")] + public function get _TopButtons_HGroup2() : HGroup + { + return this._2126924263_TopButtons_HGroup2; + } + + public function set _TopButtons_HGroup2(param1:HGroup) : void + { + var _loc2_:Object = this._2126924263_TopButtons_HGroup2; + if(_loc2_ !== param1) + { + this._2126924263_TopButtons_HGroup2 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_TopButtons_HGroup2",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get _TopButtons_HGroup3() : HGroup + { + return this._2126924264_TopButtons_HGroup3; + } + + public function set _TopButtons_HGroup3(param1:HGroup) : void + { + var _loc2_:Object = this._2126924264_TopButtons_HGroup3; + if(_loc2_ !== param1) + { + this._2126924264_TopButtons_HGroup3 = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"_TopButtons_HGroup3",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnOther() : IconButton + { + return this._2093656596btnOther; + } + + public function set btnOther(param1:IconButton) : void + { + var _loc2_:Object = this._2093656596btnOther; + if(_loc2_ !== param1) + { + this._2093656596btnOther = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnOther",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnRedo() : IconButton + { + return this._206159482btnRedo; + } + + public function set btnRedo(param1:IconButton) : void + { + var _loc2_:Object = this._206159482btnRedo; + if(_loc2_ !== param1) + { + this._206159482btnRedo = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnRedo",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnSave() : IconButton + { + return this._206185977btnSave; + } + + public function set btnSave(param1:IconButton) : void + { + var _loc2_:Object = this._206185977btnSave; + if(_loc2_ !== param1) + { + this._206185977btnSave = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnSave",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnSaveDisabled() : IconButton + { + return this._1357233045btnSaveDisabled; + } + + public function set btnSaveDisabled(param1:IconButton) : void + { + var _loc2_:Object = this._1357233045btnSaveDisabled; + if(_loc2_ !== param1) + { + this._1357233045btnSaveDisabled = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnSaveDisabled",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnUndo() : IconButton + { + return this._206257504btnUndo; + } + + public function set btnUndo(param1:IconButton) : void + { + var _loc2_:Object = this._206257504btnUndo; + if(_loc2_ !== param1) + { + this._206257504btnUndo = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnUndo",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get dropDown() : ArrowTipContainer + { + return this._433014735dropDown; + } + + public function set dropDown(param1:ArrowTipContainer) : void + { + var _loc2_:Object = this._433014735dropDown; + if(_loc2_ !== param1) + { + this._433014735dropDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"dropDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get extraMenu() : MenuItemList + { + return this._253520497extraMenu; + } + + public function set extraMenu(param1:MenuItemList) : void + { + var _loc2_:Object = this._253520497extraMenu; + if(_loc2_ !== param1) + { + this._253520497extraMenu = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"extraMenu",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get extraMenuDisplay() : PopUpAnchor + { + return this._1233089485extraMenuDisplay; + } + + public function set extraMenuDisplay(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._1233089485extraMenuDisplay; + if(_loc2_ !== param1) + { + this._1233089485extraMenuDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"extraMenuDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get fadeIn() : Fade + { + return this._1282133823fadeIn; + } + + public function set fadeIn(param1:Fade) : void + { + var _loc2_:Object = this._1282133823fadeIn; + if(_loc2_ !== param1) + { + this._1282133823fadeIn = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fadeIn",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get modifyButton() : Button + { + return this._295724916modifyButton; + } + + public function set modifyButton(param1:Button) : void + { + var _loc2_:Object = this._295724916modifyButton; + if(_loc2_ !== param1) + { + this._295724916modifyButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"modifyButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get previewButton() : Button + { + return this._122158822previewButton; + } + + public function set previewButton(param1:Button) : void + { + var _loc2_:Object = this._122158822previewButton; + if(_loc2_ !== param1) + { + this._122158822previewButton = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"previewButton",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get subscribeDisplay() : PopUpAnchor + { + return this._2239512subscribeDisplay; + } + + public function set subscribeDisplay(param1:PopUpAnchor) : void + { + var _loc2_:Object = this._2239512subscribeDisplay; + if(_loc2_ !== param1) + { + this._2239512subscribeDisplay = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"subscribeDisplay",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get subscribeTip() : ArrowTipContainer + { + return this._327806705subscribeTip; + } + + public function set subscribeTip(param1:ArrowTipContainer) : void + { + var _loc2_:Object = this._327806705subscribeTip; + if(_loc2_ !== param1) + { + this._327806705subscribeTip = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"subscribeTip",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get warnLabel() : RichEditableText + { + return this._1766219762warnLabel; + } + + public function set warnLabel(param1:RichEditableText) : void + { + var _loc2_:Object = this._1766219762warnLabel; + if(_loc2_ !== param1) + { + this._1766219762warnLabel = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"warnLabel",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303.as new file mode 100644 index 0000000..5d3c1bf --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_gear_init_png_1294223303() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.as new file mode 100644 index 0000000..224ee42 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_gear_over_png_760727495() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.as new file mode 100644 index 0000000..11cd96e --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_redo_disabled_png_1489476469() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043.as new file mode 100644 index 0000000..cb1d121 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_redo_init_png_1025927043() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699.as new file mode 100644 index 0000000..6d9e4d0 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_redo_over_png_1027024699() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.as new file mode 100644 index 0000000..f0f04c7 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_save_disabled_png_941857077() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.as new file mode 100644 index 0000000..01b9d87 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_save_init_png_220669891() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579.as new file mode 100644 index 0000000..ad63909 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_save_over_png_757483579() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.as new file mode 100644 index 0000000..2331c1f --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_undo_disabled_png_1489156409() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911.as new file mode 100644 index 0000000..59268a6 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_undo_init_png_1035347911() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807.as b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807.as new file mode 100644 index 0000000..492dfd2 --- /dev/null +++ b/scripts/anifire/creator/components/TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807 extends BitmapAsset + { + + + public function TopButtons__embed_mxml__styles_images_toolbar_btn_undo_over_png_1017636807() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark.as b/scripts/anifire/creator/components/TypeChooserSpark.as new file mode 100644 index 0000000..20d3eda --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark.as @@ -0,0 +1,669 @@ +package anifire.creator.components +{ + import anifire.constant.CcLibConstant; + import anifire.creator.core.CcConsole; + import anifire.creator.events.CcComponentTypeChooserEvent; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcTheme; + import anifire.creator.skins.HButtonBarSkin; + import anifire.util.UtilDict; + import anifire.util.UtilHashArray; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.collections.ArrayList; + import mx.controls.Spacer; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.PropertyChangeEvent; + import spark.components.ButtonBar; + import spark.components.HGroup; + import spark.events.IndexChangeEvent; + + use namespace mx_internal; + + public class TypeChooserSpark extends HGroup implements IBindingClient + { + + private static var TRANSITION:String = "easeOut"; + + private static var CAN_BG:String = "bg"; + + private static var CAN_CIRCLE:String = "circle"; + + private static var CAN_CURRENTICON:String = "currentIcon"; + + private static var CAN_ICONIMAGE:String = "iconImage"; + + private static var CAN_ICONPREVIOUS:String = "iconPrevious"; + + private static var CAN_ICONNEXT:String = "iconNext"; + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _206040943btnNext:IconButton; + + private var _506036595btnPrevious:IconButton; + + private var _1644785962canQuickBar:ButtonBar; + + private var _323293656confirmTypeList:ArrayList; + + private var _676559112typeList:ArrayList; + + private var __moduleFactoryInitialized:Boolean = false; + + private var components:Array; + + private var currentComponentIndex:int; + + private var STEP_BUTTONS:Object; + + private var _propChanged:Object; + + private var _embed_mxml__styles_images_assets_ico_nose_png_1570986425:Class; + + private var _embed_mxml__styles_images_assets_ico_hair_png_1438873273:Class; + + private var _embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481:Class; + + private var _embed_mxml__styles_images_assets_ico_upper_body_png_758638535:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361:Class; + + private var _embed_mxml__styles_images_assets_ico_mouth_png_40052473:Class; + + private var _embed_mxml__styles_images_assets_ico_lower_body_png_1025779659:Class; + + private var _embed_mxml__styles_images_assets_ico_beard_png_58796709:Class; + + private var _embed_mxml__styles_images_assets_icon_upperbody_png_757352387:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925:Class; + + private var _embed_mxml__styles_images_assets_ico_face_png_1598125757:Class; + + private var _embed_mxml__styles_images_assets_ico_back_prop_png_415704249:Class; + + private var _embed_mxml__styles_images_assets_ico_face_dec_png_330808245:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481:Class; + + private var _embed_mxml__styles_images_assets_ico_hand_png_1682020985:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597:Class; + + private var _embed_mxml__styles_images_assets_ico_glasses_png_1966638279:Class; + + private var _embed_mxml__styles_images_assets_ico_eye_png_1265449509:Class; + + private var _embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125:Class; + + private var _embed_mxml__styles_images_assets_ico_shoe_png_970889849:Class; + + private var _embed_mxml__styles_images_assets_ico_mustache_png_57358789:Class; + + private var _embed_mxml__styles_images_assets_ico_ear_png_1274492665:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function TypeChooserSpark() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this.components = new Array(); + this._propChanged = {}; + this._embed_mxml__styles_images_assets_ico_nose_png_1570986425 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425; + this._embed_mxml__styles_images_assets_ico_hair_png_1438873273 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273; + this._embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443; + this._embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481; + this._embed_mxml__styles_images_assets_ico_upper_body_png_758638535 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535; + this._embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361; + this._embed_mxml__styles_images_assets_ico_mouth_png_40052473 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473; + this._embed_mxml__styles_images_assets_ico_lower_body_png_1025779659 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659; + this._embed_mxml__styles_images_assets_ico_beard_png_58796709 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709; + this._embed_mxml__styles_images_assets_icon_upperbody_png_757352387 = TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387; + this._embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925; + this._embed_mxml__styles_images_assets_ico_face_png_1598125757 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757; + this._embed_mxml__styles_images_assets_ico_back_prop_png_415704249 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249; + this._embed_mxml__styles_images_assets_ico_face_dec_png_330808245 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245; + this._embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481; + this._embed_mxml__styles_images_assets_ico_hand_png_1682020985 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985; + this._embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597; + this._embed_mxml__styles_images_assets_ico_glasses_png_1966638279 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279; + this._embed_mxml__styles_images_assets_ico_eye_png_1265449509 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509; + this._embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125 = TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125; + this._embed_mxml__styles_images_assets_ico_shoe_png_970889849 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849; + this._embed_mxml__styles_images_assets_ico_mustache_png_57358789 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789; + this._embed_mxml__styles_images_assets_ico_ear_png_1274492665 = TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._TypeChooserSpark_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_TypeChooserSparkWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return TypeChooserSpark[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.verticalAlign = "middle"; + this.horizontalAlign = "center"; + this.mxmlContent = [this._TypeChooserSpark_IconButton1_i(),this._TypeChooserSpark_Spacer1_c(),this._TypeChooserSpark_ButtonBar1_i(),this._TypeChooserSpark_Spacer2_c(),this._TypeChooserSpark_IconButton2_i()]; + this._TypeChooserSpark_ArrayList1_i(); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + TypeChooserSpark._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + override protected function createChildren() : void + { + super.createChildren(); + } + + public function init(param1:CcTheme, param2:CcCharacter, param3:Boolean = true) : void + { + var _loc6_:Array = null; + var _loc7_:* = null; + var _loc8_:String = null; + var _loc9_:Boolean = false; + var _loc10_:UtilHashArray = null; + var _loc11_:UtilHashArray = null; + var _loc12_:int = 0; + var _loc13_:Function = null; + var _loc14_:Number = NaN; + var _loc4_:Array = new Array(); + var _loc5_:* = param1.getBodyShapeNum() > 1; + this.components = new Array(); + if(param2.bodyShape.getLibraryNum() == 0) + { + _loc6_ = CcLibConstant.COMPONENT_TYPE_CHOOSER_ORDERING_VER1; + } + else + { + _loc6_ = CcLibConstant.COMPONENT_TYPE_CHOOSER_ORDERING_VER2; + } + for(_loc7_ in this.typeList.source) + { + _loc8_ = this.typeList.source[_loc7_].label; + _loc9_ = false; + if(CcLibConstant.COMPONENT_TYPE_CHOOSER_COMPONENT_GROUP.indexOf(_loc8_) >= 0 || param1.getAvailableComponentTypes().indexOf(_loc8_) > -1) + { + if(_loc8_ == CcLibConstant.COMPONENT_TYPE_BODYSHAPE) + { + if(_loc5_ && CcLibConstant.BODYSHAPE_CHOOSABLE || CcLibConstant.CHOOSE_TAG_TYPE_SEX) + { + _loc9_ = true; + } + } + else + { + _loc10_ = param2.bodyShape.getComponentThumbByType(_loc8_); + if(!_loc10_) + { + _loc10_ = param1.getComponentThumbByType(_loc8_); + } + _loc11_ = new UtilHashArray(); + if(_loc10_) + { + _loc12_ = 0; + while(_loc12_ < _loc10_.length) + { + if(CcComponentThumb(_loc10_.getValueByIndex(_loc12_)).enable) + { + _loc13_ = CcConsole.getCcConsole().configuration.defaultThumbFilter.filter; + if(_loc13_(CcComponentThumb(_loc10_.getValueByIndex(_loc12_)))) + { + _loc11_.push(_loc10_.getKey(_loc12_),_loc10_.getValueByIndex(_loc12_)); + } + } + _loc12_++; + } + } + else + { + _loc11_ = null; + } + if(CcLibConstant.COMPONENT_TYPE_CHOOSER_COMPONENT_GROUP.indexOf(_loc8_) >= 0) + { + _loc9_ = true; + } + else + { + _loc14_ = CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(_loc8_) > -1?Number(0):Number(1); + if(param1.getAvailableComponentTypes().indexOf(_loc8_) > -1 && _loc11_ && _loc11_.length > _loc14_) + { + _loc9_ = true; + } + } + } + } + if(_loc9_ && _loc6_.indexOf(_loc8_) > -1) + { + this.components.push(_loc8_); + _loc4_.push(this.typeList.source[_loc7_]); + } + } + this.confirmTypeList.source = _loc4_; + this.currentComponentIndex = 0; + this.switchToComponentType(this.components[this.currentComponentIndex],param3); + } + + override public function styleChanged(param1:String) : void + { + var _loc3_:String = null; + var _loc4_:* = undefined; + super.styleChanged(param1); + var _loc2_:Array = ["percentWidth","navMarginRight"]; + if(param1 == null || _loc2_.indexOf(param1) >= 0) + { + for each(_loc3_ in _loc2_) + { + _loc4_ = getStyle(_loc3_); + if(_loc4_ != undefined) + { + this._propChanged[_loc3_] = _loc4_; + } + } + } + } + + private function prepare() : void + { + } + + public function switchToComponentType(param1:String = "", param2:Boolean = true) : void + { + this.currentComponentIndex = this.components.indexOf(param1); + this.canQuickBar.selectedIndex = this.currentComponentIndex; + if(this.components.indexOf(param1) == 0) + { + this.btnPrevious.enabled = false; + } + else + { + this.btnPrevious.enabled = true; + } + if(this.components.indexOf(param1) == this.components.length - 1) + { + this.btnNext.enabled = false; + } + else + { + this.btnNext.enabled = true; + } + if(param2) + { + this.tellEverybodyComponentTypeChosen(param1); + } + } + + private function tellEverybodyComponentTypeChosen(param1:String) : void + { + var _loc2_:CcComponentTypeChooserEvent = new CcComponentTypeChooserEvent(CcComponentTypeChooserEvent.COMPONENT_TYPE_CHOSEN,this); + _loc2_.componentType = param1; + this.dispatchEvent(_loc2_); + } + + private function onBtnClick(param1:Event) : void + { + var _loc2_:int = 0; + if(param1.currentTarget == this.btnPrevious) + { + _loc2_ = this.currentComponentIndex - 1; + } + else if(param1.currentTarget == this.btnNext) + { + _loc2_ = this.currentComponentIndex + 1; + } + if(_loc2_ < this.components.length) + { + this.switchToComponentType(this.components[_loc2_]); + } + } + + private function onButtonBarChange(param1:IndexChangeEvent) : void + { + var _loc3_:String = null; + var _loc2_:int = param1.newIndex; + if(_loc2_ >= 0) + { + _loc3_ = this.confirmTypeList.source[_loc2_].label; + this.switchToComponentType(_loc3_); + } + } + + private function _TypeChooserSpark_ArrayList1_i() : ArrayList + { + var _loc1_:ArrayList = new ArrayList(); + _loc1_.source = [{ + "label":"componentGroupClothes", + "icon":this._embed_mxml__styles_images_assets_icon_upperbody_png_757352387 + },{ + "label":"GoUpper", + "icon":this._embed_mxml__styles_images_assets_ico_upper_body_png_758638535 + },{ + "label":"GoLower", + "icon":this._embed_mxml__styles_images_assets_ico_lower_body_png_1025779659 + },{ + "label":"GoHands", + "icon":this._embed_mxml__styles_images_assets_ico_hand_png_1682020985 + },{ + "label":"GoFeet", + "icon":this._embed_mxml__styles_images_assets_ico_shoe_png_970889849 + },{ + "label":"GoBehindBody", + "icon":this._embed_mxml__styles_images_assets_ico_back_prop_png_415704249 + },{ + "label":"GoHair", + "icon":this._embed_mxml__styles_images_assets_ico_hair_png_1438873273 + },{ + "label":"upper_body", + "icon":this._embed_mxml__styles_images_assets_ico_upper_body_png_758638535 + },{ + "label":"lower_body", + "icon":this._embed_mxml__styles_images_assets_ico_lower_body_png_1025779659 + },{ + "label":"faceshape", + "icon":this._embed_mxml__styles_images_assets_ico_face_png_1598125757 + },{ + "label":"hair", + "icon":this._embed_mxml__styles_images_assets_ico_hair_png_1438873273 + },{ + "label":"beard", + "icon":this._embed_mxml__styles_images_assets_ico_beard_png_58796709 + },{ + "label":"mouth", + "icon":this._embed_mxml__styles_images_assets_ico_mouth_png_40052473 + },{ + "label":"ear", + "icon":this._embed_mxml__styles_images_assets_ico_ear_png_1274492665 + },{ + "label":"mustache", + "icon":this._embed_mxml__styles_images_assets_ico_mustache_png_57358789 + },{ + "label":"eye", + "icon":this._embed_mxml__styles_images_assets_ico_eye_png_1265449509 + },{ + "label":"eyebrow", + "icon":this._embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443 + },{ + "label":"nose", + "icon":this._embed_mxml__styles_images_assets_ico_nose_png_1570986425 + },{ + "label":"glasses", + "icon":this._embed_mxml__styles_images_assets_ico_glasses_png_1966638279 + },{ + "label":"facedecoration", + "icon":this._embed_mxml__styles_images_assets_ico_face_dec_png_330808245 + }]; + this.typeList = _loc1_; + BindingManager.executeBindings(this,"typeList",this.typeList); + return _loc1_; + } + + private function _TypeChooserSpark_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925); + _loc1_.addEventListener("click",this.__btnPrevious_click); + _loc1_.id = "btnPrevious"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnPrevious = _loc1_; + BindingManager.executeBindings(this,"btnPrevious",this.btnPrevious); + return _loc1_; + } + + public function __btnPrevious_click(param1:MouseEvent) : void + { + this.onBtnClick(param1); + } + + private function _TypeChooserSpark_Spacer1_c() : Spacer + { + var _loc1_:Spacer = new Spacer(); + _loc1_.width = 18; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TypeChooserSpark_ButtonBar1_i() : ButtonBar + { + var _loc1_:ButtonBar = new ButtonBar(); + _loc1_.x = 0; + _loc1_.height = 45; + _loc1_.visible = true; + _loc1_.verticalCenter = 0; + _loc1_.requireSelection = true; + _loc1_.dataProvider = this._TypeChooserSpark_ArrayList2_i(); + _loc1_.setStyle("skinClass",HButtonBarSkin); + _loc1_.addEventListener("change",this.__canQuickBar_change); + _loc1_.id = "canQuickBar"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.canQuickBar = _loc1_; + BindingManager.executeBindings(this,"canQuickBar",this.canQuickBar); + return _loc1_; + } + + private function _TypeChooserSpark_ArrayList2_i() : ArrayList + { + var _loc1_:ArrayList = new ArrayList(); + this.confirmTypeList = _loc1_; + BindingManager.executeBindings(this,"confirmTypeList",this.confirmTypeList); + return _loc1_; + } + + public function __canQuickBar_change(param1:IndexChangeEvent) : void + { + this.onButtonBarChange(param1); + } + + private function _TypeChooserSpark_Spacer2_c() : Spacer + { + var _loc1_:Spacer = new Spacer(); + _loc1_.width = 18; + if(!_loc1_.document) + { + _loc1_.document = this; + } + return _loc1_; + } + + private function _TypeChooserSpark_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = false; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481); + _loc1_.setStyle("iconDisabled",this._embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361); + _loc1_.addEventListener("click",this.__btnNext_click); + _loc1_.id = "btnNext"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnNext = _loc1_; + BindingManager.executeBindings(this,"btnNext",this.btnNext); + return _loc1_; + } + + public function __btnNext_click(param1:MouseEvent) : void + { + this.onBtnClick(param1); + } + + private function _TypeChooserSpark_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Previous"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnPrevious.label"); + result[1] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Next"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnNext.label"); + return result; + } + + [Bindable(event="propertyChange")] + public function get btnNext() : IconButton + { + return this._206040943btnNext; + } + + public function set btnNext(param1:IconButton) : void + { + var _loc2_:Object = this._206040943btnNext; + if(_loc2_ !== param1) + { + this._206040943btnNext = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnNext",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnPrevious() : IconButton + { + return this._506036595btnPrevious; + } + + public function set btnPrevious(param1:IconButton) : void + { + var _loc2_:Object = this._506036595btnPrevious; + if(_loc2_ !== param1) + { + this._506036595btnPrevious = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnPrevious",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get canQuickBar() : ButtonBar + { + return this._1644785962canQuickBar; + } + + public function set canQuickBar(param1:ButtonBar) : void + { + var _loc2_:Object = this._1644785962canQuickBar; + if(_loc2_ !== param1) + { + this._1644785962canQuickBar = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"canQuickBar",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get confirmTypeList() : ArrayList + { + return this._323293656confirmTypeList; + } + + public function set confirmTypeList(param1:ArrayList) : void + { + var _loc2_:Object = this._323293656confirmTypeList; + if(_loc2_ !== param1) + { + this._323293656confirmTypeList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"confirmTypeList",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get typeList() : ArrayList + { + return this._676559112typeList; + } + + public function set typeList(param1:ArrayList) : void + { + var _loc2_:Object = this._676559112typeList; + if(_loc2_ !== param1) + { + this._676559112typeList = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"typeList",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249.as new file mode 100644 index 0000000..f1e41f8 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_back_prop_png_415704249() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.as new file mode 100644 index 0000000..0cd9105 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_beard_png_58796709() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665.as new file mode 100644 index 0000000..67712d5 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_ear_png_1274492665() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.as new file mode 100644 index 0000000..105ee6a --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_eye_png_1265449509() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.as new file mode 100644 index 0000000..d71de64 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_eyebrow_png_1926538443() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.as new file mode 100644 index 0000000..8c15326 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_dec_png_330808245() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757.as new file mode 100644 index 0000000..2153ae8 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_face_png_1598125757() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.as new file mode 100644 index 0000000..562e830 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_glasses_png_1966638279() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273.as new file mode 100644 index 0000000..b8ae88b --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_hair_png_1438873273() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.as new file mode 100644 index 0000000..2d8302f --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_hand_png_1682020985() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.as new file mode 100644 index 0000000..7a13f89 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_lower_body_png_1025779659() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473.as new file mode 100644 index 0000000..b1df619 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_mouth_png_40052473() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.as new file mode 100644 index 0000000..0f59dea --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_mustache_png_57358789() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425.as new file mode 100644 index 0000000..33f66b2 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_nose_png_1570986425() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.as new file mode 100644 index 0000000..b58ba71 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_shoe_png_970889849() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535.as new file mode 100644 index 0000000..0351065 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_ico_upper_body_png_758638535() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.as new file mode 100644 index 0000000..4957cd7 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_assets_icon_upperbody_png_757352387() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.as new file mode 100644 index 0000000..d52654f --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_disabled_png_1974837925() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125.as new file mode 100644 index 0000000..f4dc1da --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_init_png_1539024125() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.as new file mode 100644 index 0000000..bf52390 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowl_over_png_2072948597() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.as new file mode 100644 index 0000000..1189119 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_disabled_png_1838034361() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.as new file mode 100644 index 0000000..f44b3e0 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_init_png_1537879481() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.as b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.as new file mode 100644 index 0000000..b406898 --- /dev/null +++ b/scripts/anifire/creator/components/TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481 extends BitmapAsset + { + + + public function TypeChooserSpark__embed_mxml__styles_images_typebar_step_arrowr_over_png_2076159481() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/facePreview.as b/scripts/anifire/creator/components/facePreview.as new file mode 100644 index 0000000..230a05e --- /dev/null +++ b/scripts/anifire/creator/components/facePreview.as @@ -0,0 +1,591 @@ +package anifire.creator.components +{ + import anifire.util.UtilDict; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.Rectangle; + import flash.utils.Proxy; + import flash.utils.getDefinitionByName; + import mx.binding.Binding; + import mx.binding.BindingManager; + import mx.binding.IBindingClient; + import mx.binding.IWatcherSetupUtil2; + import mx.core.IFlexModuleFactory; + import mx.core.mx_internal; + import mx.events.FlexEvent; + import mx.events.PropertyChangeEvent; + import mx.graphics.SolidColor; + import mx.graphics.SolidColorStroke; + import spark.components.Group; + import spark.effects.Fade; + import spark.effects.Move; + import spark.primitives.Line; + import spark.primitives.Rect; + + use namespace mx_internal; + + public class facePreview extends Group implements IBindingClient + { + + private static var _watcherSetupUtil:IWatcherSetupUtil2; + + + private var _1682788161bottomLine:Line; + + private var _789363156btnZoomIn:IconButton; + + private var _1299539841btnZoomOut:IconButton; + + private var _3135069face:CharPreviewer; + + private var _1282163838faceBg:Group; + + private var _1282133823fadeIn:Fade; + + private var _1091436750fadeOut:Fade; + + private var _104889325moveDown:Move; + + private var _1068263860moveUp:Move; + + private var _1059299688mymask:Group; + + private var __moduleFactoryInitialized:Boolean = false; + + private var _embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097:Class; + + private var _embed_mxml__styles_images_control_btn_zoomin_over_png_557062261:Class; + + private var _embed_mxml__styles_images_control_btn_zoomin_init_png_640989693:Class; + + private var _embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303:Class; + + mx_internal var _bindings:Array; + + mx_internal var _watchers:Array; + + mx_internal var _bindingsByDestination:Object; + + mx_internal var _bindingsBeginWithWord:Object; + + public function facePreview() + { + var target:Object = null; + var watcherSetupUtilClass:Object = null; + this._embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097 = facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097; + this._embed_mxml__styles_images_control_btn_zoomin_over_png_557062261 = facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261; + this._embed_mxml__styles_images_control_btn_zoomin_init_png_640989693 = facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693; + this._embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303 = facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303; + this._bindings = []; + this._watchers = []; + this._bindingsByDestination = {}; + this._bindingsBeginWithWord = {}; + super(); + mx_internal::_document = this; + var bindings:Array = this._facePreview_bindingsSetup(); + var watchers:Array = []; + target = this; + if(_watcherSetupUtil == null) + { + watcherSetupUtilClass = getDefinitionByName("_anifire_creator_components_facePreviewWatcherSetupUtil"); + watcherSetupUtilClass["init"](null); + } + _watcherSetupUtil.setup(this,function(param1:String):* + { + return target[param1]; + },function(param1:String):* + { + return facePreview[param1]; + },bindings,watchers); + mx_internal::_bindings = mx_internal::_bindings.concat(bindings); + mx_internal::_watchers = mx_internal::_watchers.concat(watchers); + this.width = 300; + this.percentHeight = 100; + this.mxmlContent = [this._facePreview_Group2_i(),this._facePreview_Group3_i(),this._facePreview_CharPreviewer1_i(),this._facePreview_IconButton1_i(),this._facePreview_IconButton2_i(),this._facePreview_Line1_i()]; + this._facePreview_Fade1_i(); + this._facePreview_Fade2_i(); + this._facePreview_Move2_i(); + this._facePreview_Move1_i(); + this.addEventListener("creationComplete",this.___facePreview_Group1_creationComplete); + var i:uint = 0; + while(i < bindings.length) + { + Binding(bindings[i]).execute(); + i++; + } + } + + public static function set watcherSetupUtil(param1:IWatcherSetupUtil2) : void + { + facePreview._watcherSetupUtil = param1; + } + + override public function set moduleFactory(param1:IFlexModuleFactory) : void + { + super.moduleFactory = param1; + if(this.__moduleFactoryInitialized) + { + return; + } + this.__moduleFactoryInitialized = true; + } + + override public function initialize() : void + { + super.initialize(); + } + + private function init() : void + { + this.face.mask = this.mymask; + this.face.visible = false; + this.faceBg.visible = false; + this.btnZoomOut.visible = false; + this.bottomLine.alpha = 0; + } + + private function onZoomInClick(param1:Event) : void + { + this.btnZoomIn.visible = false; + this.btnZoomOut.visible = true; + this.faceBg.visible = true; + this.face.visible = true; + this.moveUp.play(); + this.fadeIn.play(); + } + + private function onZoomOutClick(param1:Event) : void + { + this.btnZoomIn.visible = true; + this.btnZoomOut.visible = false; + this.moveDown.play(); + this.fadeOut.play(); + } + + private function _facePreview_Fade1_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.alphaFrom = 0; + _loc1_.alphaTo = 1; + _loc1_.duration = 200; + this.fadeIn = _loc1_; + BindingManager.executeBindings(this,"fadeIn",this.fadeIn); + return _loc1_; + } + + private function _facePreview_Fade2_i() : Fade + { + var _loc1_:Fade = new Fade(); + _loc1_.alphaFrom = 1; + _loc1_.alphaTo = 0; + _loc1_.duration = 500; + this.fadeOut = _loc1_; + BindingManager.executeBindings(this,"fadeOut",this.fadeOut); + return _loc1_; + } + + private function _facePreview_Move2_i() : Move + { + var _loc1_:Move = new Move(); + _loc1_.yFrom = 0; + _loc1_.yTo = 450; + _loc1_.duration = 500; + this.moveDown = _loc1_; + BindingManager.executeBindings(this,"moveDown",this.moveDown); + return _loc1_; + } + + private function _facePreview_Move1_i() : Move + { + var _loc1_:Move = new Move(); + _loc1_.yFrom = 450; + _loc1_.yTo = 0; + _loc1_.duration = 500; + this.moveUp = _loc1_; + BindingManager.executeBindings(this,"moveUp",this.moveUp); + return _loc1_; + } + + private function _facePreview_Group2_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 300; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._facePreview_Rect1_c()]; + _loc1_.id = "faceBg"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.faceBg = _loc1_; + BindingManager.executeBindings(this,"faceBg",this.faceBg); + return _loc1_; + } + + private function _facePreview_Rect1_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 300; + _loc1_.percentHeight = 100; + _loc1_.fill = this._facePreview_SolidColor1_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _facePreview_SolidColor1_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 15658734; + return _loc1_; + } + + private function _facePreview_Group3_i() : Group + { + var _loc1_:Group = new Group(); + _loc1_.width = 300; + _loc1_.percentHeight = 100; + _loc1_.mxmlContent = [this._facePreview_Rect2_c()]; + _loc1_.id = "mymask"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.mymask = _loc1_; + BindingManager.executeBindings(this,"mymask",this.mymask); + return _loc1_; + } + + private function _facePreview_Rect2_c() : Rect + { + var _loc1_:Rect = new Rect(); + _loc1_.width = 300; + _loc1_.percentHeight = 100; + _loc1_.fill = this._facePreview_SolidColor2_c(); + _loc1_.initialized(this,null); + return _loc1_; + } + + private function _facePreview_SolidColor2_c() : SolidColor + { + var _loc1_:SolidColor = new SolidColor(); + _loc1_.color = 16711680; + return _loc1_; + } + + private function _facePreview_CharPreviewer1_i() : CharPreviewer + { + var _loc1_:CharPreviewer = new CharPreviewer(); + _loc1_.width = 300; + _loc1_.percentHeight = 100; + _loc1_.scaleX = 2; + _loc1_.scaleY = 2; + _loc1_.horizontalCenter = 0; + _loc1_.verticalCenter = 0; + _loc1_.showFace = true; + _loc1_.id = "face"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.face = _loc1_; + BindingManager.executeBindings(this,"face",this.face); + return _loc1_; + } + + private function _facePreview_IconButton1_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.bottom = 0; + _loc1_.right = 15; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_control_btn_zoomin_init_png_640989693); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_control_btn_zoomin_over_png_557062261); + _loc1_.addEventListener("click",this.__btnZoomIn_click); + _loc1_.id = "btnZoomIn"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnZoomIn = _loc1_; + BindingManager.executeBindings(this,"btnZoomIn",this.btnZoomIn); + return _loc1_; + } + + public function __btnZoomIn_click(param1:MouseEvent) : void + { + this.onZoomInClick(param1); + } + + private function _facePreview_IconButton2_i() : IconButton + { + var _loc1_:IconButton = new IconButton(); + _loc1_.buttonMode = true; + _loc1_.enabled = true; + _loc1_.bottom = 0; + _loc1_.right = 15; + _loc1_.setStyle("icon",this._embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303); + _loc1_.setStyle("iconOver",this._embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097); + _loc1_.addEventListener("click",this.__btnZoomOut_click); + _loc1_.id = "btnZoomOut"; + if(!_loc1_.document) + { + _loc1_.document = this; + } + this.btnZoomOut = _loc1_; + BindingManager.executeBindings(this,"btnZoomOut",this.btnZoomOut); + return _loc1_; + } + + public function __btnZoomOut_click(param1:MouseEvent) : void + { + this.onZoomOutClick(param1); + } + + private function _facePreview_Line1_i() : Line + { + var _loc1_:Line = new Line(); + _loc1_.percentWidth = 100; + _loc1_.bottom = 0; + _loc1_.stroke = this._facePreview_SolidColorStroke1_c(); + _loc1_.initialized(this,"bottomLine"); + this.bottomLine = _loc1_; + BindingManager.executeBindings(this,"bottomLine",this.bottomLine); + return _loc1_; + } + + private function _facePreview_SolidColorStroke1_c() : SolidColorStroke + { + var _loc1_:SolidColorStroke = new SolidColorStroke(); + _loc1_.color = 13421772; + return _loc1_; + } + + public function ___facePreview_Group1_creationComplete(param1:FlexEvent) : void + { + this.init(); + } + + private function _facePreview_bindingsSetup() : Array + { + var result:Array = []; + result[0] = new Binding(this,function():Rectangle + { + return new Rectangle(0,0,this.width,this.height); + },null,"this.scrollRect"); + result[1] = new Binding(this,function():Array + { + var _loc1_:* = [faceBg,mymask]; + return _loc1_ == null || _loc1_ is Array || _loc1_ is Proxy?_loc1_:[_loc1_]; + },null,"moveUp.targets"); + result[2] = new Binding(this,function():Array + { + var _loc1_:* = [faceBg,mymask]; + return _loc1_ == null || _loc1_ is Array || _loc1_ is Proxy?_loc1_:[_loc1_]; + },null,"moveDown.targets"); + result[3] = new Binding(this,null,null,"fadeIn.target","bottomLine"); + result[4] = new Binding(this,null,null,"fadeOut.target","bottomLine"); + result[5] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Zoom In"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnZoomIn.label"); + result[6] = new Binding(this,function():String + { + var _loc1_:* = UtilDict.toDisplay("go","Zoom Out"); + return _loc1_ == undefined?null:String(_loc1_); + },null,"btnZoomOut.label"); + return result; + } + + [Bindable(event="propertyChange")] + public function get bottomLine() : Line + { + return this._1682788161bottomLine; + } + + public function set bottomLine(param1:Line) : void + { + var _loc2_:Object = this._1682788161bottomLine; + if(_loc2_ !== param1) + { + this._1682788161bottomLine = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"bottomLine",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnZoomIn() : IconButton + { + return this._789363156btnZoomIn; + } + + public function set btnZoomIn(param1:IconButton) : void + { + var _loc2_:Object = this._789363156btnZoomIn; + if(_loc2_ !== param1) + { + this._789363156btnZoomIn = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnZoomIn",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get btnZoomOut() : IconButton + { + return this._1299539841btnZoomOut; + } + + public function set btnZoomOut(param1:IconButton) : void + { + var _loc2_:Object = this._1299539841btnZoomOut; + if(_loc2_ !== param1) + { + this._1299539841btnZoomOut = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"btnZoomOut",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get face() : CharPreviewer + { + return this._3135069face; + } + + public function set face(param1:CharPreviewer) : void + { + var _loc2_:Object = this._3135069face; + if(_loc2_ !== param1) + { + this._3135069face = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"face",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get faceBg() : Group + { + return this._1282163838faceBg; + } + + public function set faceBg(param1:Group) : void + { + var _loc2_:Object = this._1282163838faceBg; + if(_loc2_ !== param1) + { + this._1282163838faceBg = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"faceBg",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get fadeIn() : Fade + { + return this._1282133823fadeIn; + } + + public function set fadeIn(param1:Fade) : void + { + var _loc2_:Object = this._1282133823fadeIn; + if(_loc2_ !== param1) + { + this._1282133823fadeIn = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fadeIn",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get fadeOut() : Fade + { + return this._1091436750fadeOut; + } + + public function set fadeOut(param1:Fade) : void + { + var _loc2_:Object = this._1091436750fadeOut; + if(_loc2_ !== param1) + { + this._1091436750fadeOut = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"fadeOut",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveDown() : Move + { + return this._104889325moveDown; + } + + public function set moveDown(param1:Move) : void + { + var _loc2_:Object = this._104889325moveDown; + if(_loc2_ !== param1) + { + this._104889325moveDown = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveDown",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get moveUp() : Move + { + return this._1068263860moveUp; + } + + public function set moveUp(param1:Move) : void + { + var _loc2_:Object = this._1068263860moveUp; + if(_loc2_ !== param1) + { + this._1068263860moveUp = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"moveUp",_loc2_,param1)); + } + } + } + + [Bindable(event="propertyChange")] + public function get mymask() : Group + { + return this._1059299688mymask; + } + + public function set mymask(param1:Group) : void + { + var _loc2_:Object = this._1059299688mymask; + if(_loc2_ !== param1) + { + this._1059299688mymask = param1; + if(this.hasEventListener("propertyChange")) + { + this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"mymask",_loc2_,param1)); + } + } + } + } +} diff --git a/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693.as b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693.as new file mode 100644 index 0000000..28d6b30 --- /dev/null +++ b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693 extends BitmapAsset + { + + + public function facePreview__embed_mxml__styles_images_control_btn_zoomin_init_png_640989693() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.as b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.as new file mode 100644 index 0000000..d94c9bd --- /dev/null +++ b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261 extends BitmapAsset + { + + + public function facePreview__embed_mxml__styles_images_control_btn_zoomin_over_png_557062261() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.as b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.as new file mode 100644 index 0000000..332b875 --- /dev/null +++ b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303 extends BitmapAsset + { + + + public function facePreview__embed_mxml__styles_images_control_btn_zoomout_init_png_1519735303() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097.as b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097.as new file mode 100644 index 0000000..fd9779b --- /dev/null +++ b/scripts/anifire/creator/components/facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097.as @@ -0,0 +1,14 @@ +package anifire.creator.components +{ + import mx.core.BitmapAsset; + + public class facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097 extends BitmapAsset + { + + + public function facePreview__embed_mxml__styles_images_control_btn_zoomout_over_png_1686087097() + { + super(); + } + } +} diff --git a/scripts/anifire/creator/config/GoAnimate.as b/scripts/anifire/creator/config/GoAnimate.as new file mode 100644 index 0000000..d351a3d --- /dev/null +++ b/scripts/anifire/creator/config/GoAnimate.as @@ -0,0 +1,65 @@ +package anifire.creator.config +{ + import anifire.constant.ServerConstants; + import anifire.constant.ThemeConstants; + import anifire.creator.interfaces.IConfiguration; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.utils.ComponentThumbFilter; + import anifire.managers.AppConfigManager; + import anifire.util.UtilUser; + + public class GoAnimate implements IConfiguration + { + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + + public function GoAnimate() + { + super(); + } + + private static function goTagFilter(param1:CcComponentThumb) : Boolean + { + var _loc2_:int = parseInt(_configManager.getValue("ut")); + var _loc3_:String = _configManager.getValue("siteId"); + var _loc4_:String = _configManager.getValue("userId"); + var _loc5_:String = _configManager.getValue("ft"); + if(!param1) + { + return false; + } + return (_loc2_ >= 60 || !param1.hasTag("_userrole_admin")) && (!_loc5_ || param1.hasTag(_loc5_)); + } + + public function scalingCharacterEnabled() : Boolean + { + if(_configManager.getValue(ServerConstants.PARAM_THEME_ID) == ThemeConstants.ANIME_THEME_ID) + { + if(UtilUser.hasAdminFeatures) + { + return true; + } + return false; + } + return true; + } + + public function templateSelectorEnabled() : Boolean + { + return false; + } + + public function loadPreMadeCharsEnabled() : Boolean + { + return true; + } + + public function get defaultThumbFilter() : ComponentThumbFilter + { + var _loc1_:ComponentThumbFilter = new ComponentThumbFilter(); + _loc1_.filter = goTagFilter; + return _loc1_; + } + } +} diff --git a/scripts/anifire/creator/core/CcCharEditorController.as b/scripts/anifire/creator/core/CcCharEditorController.as new file mode 100644 index 0000000..104cc1f --- /dev/null +++ b/scripts/anifire/creator/core/CcCharEditorController.as @@ -0,0 +1,931 @@ +package anifire.creator.core +{ + import anifire.constant.CcLibConstant; + import anifire.creator.events.CcBodyShapeChooserEvent; + import anifire.creator.events.CcButtonBarEvent; + import anifire.creator.events.CcColorPickerEvent; + import anifire.creator.events.CcComponentThumbChooserEvent; + import anifire.creator.events.CcComponentTypeChooserEvent; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.events.CcPreMadeCharChooserEvent; + import anifire.creator.events.CcScaleChosenEvent; + import anifire.creator.events.CcSelectedDecorationEvent; + import anifire.creator.events.CcThumbPropertyEvent; + import anifire.creator.events.CcThumbScaleEvent; + import anifire.creator.interfaces.ICcCharEditorContainer; + import anifire.creator.interfaces.IConfiguration; + import anifire.creator.models.CcBodyShape; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcColor; + import anifire.creator.models.CcComponent; + import anifire.creator.models.CcComponentThumb; + import anifire.creator.models.CcLibrary; + import anifire.creator.models.CcTemplate; + import anifire.creator.models.CcTheme; + import anifire.event.LoadEmbedMovieEvent; + import anifire.util.UtilHashArray; + import flash.display.BitmapData; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.geom.Point; + import flash.utils.ByteArray; + import mx.graphics.codec.PNGEncoder; + + public class CcCharEditorController extends EventDispatcher + { + + + private var _ccChar:CcCharacter; + + private var _currentTheme:CcTheme; + + private var _commands:Array; + + private var _currentCommandIndex:Number = -1; + + private var _moneyMode:int; + + private var _isUserLogined:Boolean; + + private var _ui_ce_container:ICcCharEditorContainer; + + private var _userLevel:int; + + private var _ccCharCopyForReset:CcCharacter; + + private var _currentComponentType:String; + + private var isNewCharInsteadOfExistingChar:Boolean; + + private var _cfg:IConfiguration; + + private var _coupon:int; + + public function CcCharEditorController(param1:IEventDispatcher = null) + { + this._commands = new Array(); + super(param1); + } + + public function get configuration() : IConfiguration + { + return this._cfg; + } + + public function set configuration(param1:IConfiguration) : void + { + this._cfg = param1; + } + + private function get coupon() : int + { + return this._coupon; + } + + private function get currentComponentType() : String + { + return this._currentComponentType; + } + + private function set currentComponentType(param1:String) : void + { + this._currentComponentType = param1; + } + + private function get ccCharCopyForReset() : CcCharacter + { + return this._ccCharCopyForReset; + } + + private function set ccCharCopyForReset(param1:CcCharacter) : void + { + this._ccCharCopyForReset = param1; + } + + private function get ui_ce_container() : ICcCharEditorContainer + { + return this._ui_ce_container; + } + + private function get isUserLogined() : Boolean + { + return this._isUserLogined; + } + + private function get moneyMode() : int + { + return this._moneyMode; + } + + private function get userLevel() : int + { + return this._userLevel; + } + + private function addCommand(param1:CcCharacter) : void + { + var _loc2_:Array = this._commands.slice(0,this._currentCommandIndex); + _loc2_.push(param1.clone()); + this._commands = _loc2_; + this._currentCommandIndex = this._commands.length; + this.ui_ce_container.ui_ce_buttonBar.btnUndo.enabled = this._commands.length > 1?true:false; + this.ui_ce_container.ui_ce_buttonBar.btnRedo.enabled = false; + } + + public function get ccChar() : CcCharacter + { + return this._ccChar; + } + + public function copyCcChar(param1:CcCharacter) : void + { + this._ccChar.cloneFromSourceToMe(param1); + } + + private function get currentTheme() : CcTheme + { + return this._currentTheme; + } + + public function initUi(param1:ICcCharEditorContainer) : void + { + this._ui_ce_container = param1; + this.ui_ce_container.ui_ce_buttonBar.btnRedo.enabled = this.ui_ce_container.ui_ce_buttonBar.btnUndo.enabled = false; + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.UNDO_BUTTON_CLICK,this.onUserClickUndoButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.REDO_BUTTON_CLICK,this.onUserClickRedoButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.PREVIEW_BUTTON_CLICK,this.onUserClickPreviewButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.MODIFY_BUTTON_CLICK,this.onUserClickModifyButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.SAVE_BUTTON_CLICK,this.onUserClickSaveButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.RANDOMIZE_BUTTON_CLICK,this.onUserClickRandomizeButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.SCALE_BUTTON_CLICK,this.onUserClickScaleButton); + this.ui_ce_container.ui_ce_buttonBar.addEventListener(CcButtonBarEvent.RESET_BUTTON_CLICK,this.onUserWantToReset); + this.ui_ce_container.ui_ce_componentTypeChooser.addEventListener(CcComponentTypeChooserEvent.COMPONENT_TYPE_CHOSEN,this.onUserChooseType); + this.ui_ce_container.ui_ce_componentTypeChooser.addEventListener(CcButtonBarEvent.SAVE_BUTTON_CLICK,this.onUserClickSaveButton); + this.ui_ce_container.ui_ce_colorPicker.addEventListener(CcColorPickerEvent.COLOR_CHOSEN,this.onUserChooseColor); + this.ui_ce_container.ui_ce_componentThumbChooser.thumbFilter = this._cfg.defaultThumbFilter; + this.ui_ce_container.ui_ce_componentThumbChooser.addEventListener(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this.onUserChooseThumb); + this.ui_ce_container.ui_ce_componentThumbChooser.addEventListener(CcComponentThumbChooserEvent.NONE_COMPONENT_THUMB_CHOSEN,this.onUserChooseNullThumb); + this.ui_ce_container.ui_ce_clothesChooser.addEventListener(CcComponentThumbChooserEvent.COMPONENT_THUMB_CHOSEN,this.onUserChooseCloth); + this.ui_ce_container.ui_ce_clothesChooser.addEventListener(CcThumbScaleEvent.CCTHUMB_SCALE_UPDATE,this.onUserEditScale); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEUP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEDOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEXUP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEXDOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEYUP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_SCALEYDOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_ROTATEUP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_ROTATEDOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_OFFSETUP_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_OFFSETDOWN_BUTTON_CLICK,this.onUserEditComponentProperty); + this.ui_ce_container.ui_ce_thumbPropertyInspector.addEventListener(CcThumbPropertyEvent.CCPROP_LOCATION_UPDATE,this.onUserUpdateComponentProperty); + this.ui_ce_container.ui_ce_selectedDecoration.addEventListener(CcSelectedDecorationEvent.DECORATION_CHOOSEN,this.onUserChooseDecoration); + this.ui_ce_container.ui_ce_selectedDecoration.addEventListener(CcSelectedDecorationEvent.DECORATION_MOUSE_OVER,this.onUserOverDecoration); + this.ui_ce_container.ui_ce_selectedDecoration.addEventListener(CcSelectedDecorationEvent.DECORATION_MOUSE_OUT,this.onUserOutDecoration); + this.ui_ce_container.ui_ce_selectedDecoration.addEventListener(CcSelectedDecorationEvent.DECORATION_DELETED,this.onUserDeleteDecoration); + this.ui_ce_container.ui_ce_charPreviewer.charCanvasHeight = 280; + } + + public function proceedToShow() : void + { + this.ui_ce_container.ui_ce_buttonBar.currentState = "editor"; + } + + public function resetCCAction() : void + { + this.ui_ce_container.ui_ce_charPreviewer.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.onResetCCActionComplete); + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + } + + private function onResetCCActionComplete(param1:Event) : void + { + this.ui_ce_container.ui_ce_charPreviewer.removeEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.onResetCCActionComplete); + this.dispatchEvent(param1); + } + + private function onUserClickScaleButton(param1:Event) : void + { + this.initScalePanel(); + this.ui_ce_container.ui_ce_charScaleChooser.show(); + } + + private function initScalePanel() : void + { + var _loc1_:Array = CcLibConstant.DEFAULT_HEADSCALES; + var _loc2_:Array = CcLibConstant.DEFAULT_BODYSCALES; + var _loc3_:Array = CcLibConstant.DEFAULT_HEADPOS; + this.ui_ce_container.ui_ce_charScaleChooser.updateSliders(this.ccChar.bodyScale.x * 100,this.ccChar.headScale.x * 100); + this.ui_ce_container.ui_ce_charScaleChooser.addEventListener(CcScaleChosenEvent.SCALE_CHOSEN,this.onUserSelectedScale); + } + + private function onUserSelectedScale(param1:CcScaleChosenEvent) : void + { + if(param1.head_scale) + { + this.ccChar.headScale = new Point(param1.head_scale,param1.head_scale); + this.ui_ce_container.ui_ce_charPreviewer.setHeadScale(this.ccChar.headScale.x,this.ccChar.headScale.y); + this.ui_ce_container.ui_ce_facePreviewer.setHeadScale(this.ccChar.headScale.x,this.ccChar.headScale.y); + } + if(param1.body_scale) + { + this.ccChar.bodyScale = new Point(param1.body_scale,param1.body_scale); + this.ui_ce_container.ui_ce_charPreviewer.setBodyScale(this.ccChar.bodyScale.x,this.ccChar.bodyScale.y); + this.ui_ce_container.ui_ce_facePreviewer.setBodyScale(this.ccChar.bodyScale.x,this.ccChar.bodyScale.y); + } + if(param1.head_pos) + { + this.ccChar.headShift = new Point(param1.head_pos.x,param1.head_pos.y); + this.ui_ce_container.ui_ce_charPreviewer.resetHeadPos(); + this.ui_ce_container.ui_ce_charPreviewer.setHeadPos(this.ccChar.headShift.x,this.ccChar.headShift.y); + this.ui_ce_container.ui_ce_facePreviewer.resetHeadPos(); + this.ui_ce_container.ui_ce_facePreviewer.setHeadPos(this.ccChar.headShift.x,this.ccChar.headShift.y); + } + if(param1.head_shift) + { + this.ui_ce_container.ui_ce_charPreviewer.setHeadPos(param1.head_shift.x,param1.head_shift.y); + this.ui_ce_container.ui_ce_facePreviewer.setHeadPos(param1.head_shift.x,param1.head_shift.y); + this.ccChar.headShift = this.ui_ce_container.ui_ce_charPreviewer.getHeadPos(); + } + this.ui_ce_container.ui_ce_charPreviewer.reloadSkin(); + this.ui_ce_container.ui_ce_facePreviewer.reloadSkin(); + } + + private function onUserWantToReset(param1:Event) : void + { + this.ccChar.cloneFromSourceToMe(this.ccCharCopyForReset); + this.propagateNewCharToUi(this.ccChar); + this.refreshCurrentUi(); + this.addCommand(this.ccChar); + } + + private function onUserOverDecoration(param1:CcSelectedDecorationEvent) : void + { + var _loc2_:CcComponent = param1.ccComponent; + this.ui_ce_container.ui_ce_charPreviewer.highlightComponent(_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.highlightComponent(_loc2_); + } + + private function onUserOutDecoration(param1:CcSelectedDecorationEvent) : void + { + var _loc2_:CcComponent = param1.ccComponent; + this.ui_ce_container.ui_ce_charPreviewer.removeHighlightComponent(_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.removeHighlightComponent(_loc2_); + } + + private function onUserChooseDecoration(param1:CcSelectedDecorationEvent) : void + { + var _loc2_:CcComponent = param1.ccComponent; + this.ui_ce_container.ui_ce_colorPicker.destroy(); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc2_,_loc2_.componentThumb.type,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc2_,_loc2_.componentThumb,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc2_,this.userLevel); + } + + private function onUserDeleteDecoration(param1:CcSelectedDecorationEvent) : void + { + var _loc2_:CcComponent = param1.ccComponent; + this.ui_ce_container.ui_ce_colorPicker.destroy(); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + this.ui_ce_container.ui_ce_charPreviewer.removeComponent(_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.removeComponent(_loc2_); + this.ccChar.removeUserChosenComponentById(_loc2_.id); + this.addCommand(this.ccChar); + } + + private function onUserChoosePreMadeChar(param1:CcPreMadeCharChooserEvent) : void + { + var _loc5_:CcComponent = null; + var _loc2_:CcCharacter = param1.ccCharChosen; + this.copyCcChar(_loc2_); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + var _loc3_:Number = this.ccChar.getUserChosenComponentSize(); + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = this.ccChar.getUserChosenComponentByIndex(_loc4_); + if(_loc5_.componentThumb.type == this.currentComponentType) + { + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc5_,this.userLevel); + } + _loc4_++; + } + this.propagateNewCharToUi(this.ccChar); + if(this.currentComponentType) + { + this.refreshCurrentUi(); + } + this.addCommand(this.ccChar); + } + + private function onUserEditComponentProperty(param1:CcThumbPropertyEvent) : void + { + switch(param1.type) + { + case CcThumbPropertyEvent.CCPROP_UP_BUTTON_CLICK: + param1.component.y--; + break; + case CcThumbPropertyEvent.CCPROP_DOWN_BUTTON_CLICK: + param1.component.y++; + break; + case CcThumbPropertyEvent.CCPROP_LEFT_BUTTON_CLICK: + param1.component.x++; + break; + case CcThumbPropertyEvent.CCPROP_RIGHT_BUTTON_CLICK: + param1.component.x--; + break; + case CcThumbPropertyEvent.CCPROP_SCALEUP_BUTTON_CLICK: + param1.component.xscale = param1.component.xscale + 0.01; + param1.component.yscale = param1.component.yscale + 0.01; + break; + case CcThumbPropertyEvent.CCPROP_SCALEDOWN_BUTTON_CLICK: + param1.component.xscale = param1.component.xscale - 0.01; + param1.component.yscale = param1.component.yscale - 0.01; + break; + case CcThumbPropertyEvent.CCPROP_SCALEXUP_BUTTON_CLICK: + param1.component.xscale = param1.component.xscale + 0.01; + break; + case CcThumbPropertyEvent.CCPROP_SCALEXDOWN_BUTTON_CLICK: + param1.component.xscale = param1.component.xscale - 0.01; + break; + case CcThumbPropertyEvent.CCPROP_SCALEYUP_BUTTON_CLICK: + param1.component.yscale = param1.component.yscale + 0.01; + break; + case CcThumbPropertyEvent.CCPROP_SCALEYDOWN_BUTTON_CLICK: + param1.component.yscale = param1.component.yscale - 0.01; + break; + case CcThumbPropertyEvent.CCPROP_ROTATEUP_BUTTON_CLICK: + param1.component.rotation = param1.component.rotation + 1; + break; + case CcThumbPropertyEvent.CCPROP_ROTATEDOWN_BUTTON_CLICK: + param1.component.rotation = param1.component.rotation - 1; + break; + case CcThumbPropertyEvent.CCPROP_OFFSETUP_BUTTON_CLICK: + param1.component.offset++; + break; + case CcThumbPropertyEvent.CCPROP_OFFSETDOWN_BUTTON_CLICK: + param1.component.offset--; + } + this.ui_ce_container.ui_ce_charPreviewer.updateLocation(param1.component); + this.ui_ce_container.ui_ce_facePreviewer.updateLocation(param1.component); + } + + private function onUserUpdateComponentProperty(param1:Event) : void + { + this.addCommand(this.ccChar); + } + + private function onUserClickUndoButton(param1:Event) : void + { + var _loc5_:CcComponent = null; + var _loc2_:CcCharacter = this._commands[this._currentCommandIndex - 2]; + this.copyCcChar(_loc2_.clone()); + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(this.ccChar,this.ccChar.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.initByCcChar(this.ccChar,this.ccChar.thumbnailActionId); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + var _loc3_:Number = this.ccChar.getUserChosenComponentSize(); + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = this.ccChar.getUserChosenComponentByIndex(_loc4_); + if(_loc5_.componentThumb.type == this.currentComponentType) + { + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc5_,this.userLevel); + } + _loc4_++; + } + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(this.currentComponentType) > -1) + { + this.ui_ce_container.ui_ce_selectedDecoration.initByCcChar(this.ccChar); + } + this._currentCommandIndex--; + if(this._currentCommandIndex == 1) + { + this.ui_ce_container.ui_ce_buttonBar.btnUndo.enabled = false; + } + else + { + this.ui_ce_container.ui_ce_buttonBar.btnUndo.enabled = true; + } + this.ui_ce_container.ui_ce_buttonBar.btnRedo.enabled = true; + this.refreshCurrentUi(); + } + + private function onUserClickRedoButton(param1:Event) : void + { + var _loc5_:CcComponent = null; + var _loc2_:CcCharacter = this._commands[this._currentCommandIndex]; + this.copyCcChar(_loc2_.clone()); + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(this.ccChar,this.ccChar.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.initByCcChar(this.ccChar,this.ccChar.thumbnailActionId); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + var _loc3_:Number = this.ccChar.getUserChosenComponentSize(); + var _loc4_:int = 0; + while(_loc4_ < _loc3_) + { + _loc5_ = this.ccChar.getUserChosenComponentByIndex(_loc4_); + if(_loc5_.componentThumb.type == this.currentComponentType) + { + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc5_,this.userLevel); + } + _loc4_++; + } + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(this.currentComponentType) > -1) + { + this.ui_ce_container.ui_ce_selectedDecoration.initByCcChar(this.ccChar); + } + this._currentCommandIndex++; + if(this._currentCommandIndex == this._commands.length) + { + this.ui_ce_container.ui_ce_buttonBar.btnRedo.enabled = false; + } + else + { + this.ui_ce_container.ui_ce_buttonBar.btnRedo.enabled = true; + } + this.ui_ce_container.ui_ce_buttonBar.btnUndo.enabled = true; + this.refreshCurrentUi(); + } + + private function onUserClickPreviewButton(param1:Event) : void + { + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.USER_WANT_TO_PREVIEW,this)); + } + + private function onUserClickModifyButton(param1:Event) : void + { + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.USER_WANT_TO_MODIFY,this)); + } + + private function onUserClickSaveButton(param1:Event) : void + { + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.USER_WANT_TO_SAVE,this)); + } + + private function onUserClickRandomizeButton(param1:Event) : void + { + var _loc4_:CcComponent = null; + this.ccChar.randomize(this.currentTheme,this.ccChar.bodyShape.bodyType); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + var _loc2_:Number = this.ccChar.getUserChosenComponentSize(); + var _loc3_:int = 0; + while(_loc3_ < _loc2_) + { + _loc4_ = this.ccChar.getUserChosenComponentByIndex(_loc3_); + if(_loc4_.componentThumb.type == this.currentComponentType) + { + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc4_,this.userLevel); + } + _loc3_++; + } + this.propagateNewCharToUi(this.ccChar); + this.refreshCurrentUi(); + this.addCommand(this.ccChar); + } + + private function propagateNewCharToUi(param1:CcCharacter) : void + { + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(param1,param1.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.initByCcChar(param1,param1.thumbnailActionId); + this.ui_ce_container.ui_ce_selectedDecoration.initByCcChar(this.ccChar); + } + + public function initTheme(param1:CcTheme) : void + { + this._currentTheme = param1; + } + + public function start(param1:CcCharacter, param2:Boolean) : void + { + this.ui_ce_container.ui_ce_bodyShapeChooser.init(this.currentTheme,this.moneyMode,param2); + this.initChar(param1); + this.isNewCharInsteadOfExistingChar = param2; + if(this.isNewCharInsteadOfExistingChar) + { + this.ui_ce_container.ui_ce_bodyShapeChooser.addEventListener(CcBodyShapeChooserEvent.BODY_SHAPE_CHOSEN,this.onUserChooseBodyShapeAtFirstTime); + } + else + { + this.ui_ce_container.ui_ce_bodyShapeChooser.addEventListener(CcBodyShapeChooserEvent.BODY_SHAPE_CHOSEN,this.onUserChooseBodyShape); + this.ccCharCopyForReset = this._ccChar.clone(); + this.addCommand(this.ccChar); + this.propagateNewCharToUi(this.ccChar); + this.ui_ce_container.ui_ce_componentTypeChooser.init(this.currentTheme,this.ccChar,false); + this.switchComponentType(this.ccChar.getComponentTypeOrdering()[0] as String,true); + } + } + + private function initChar(param1:CcCharacter) : void + { + this._ccChar = param1; + } + + public function initMode(param1:int, param2:Boolean, param3:int, param4:int = 0) : void + { + this._isUserLogined = param2; + this._moneyMode = param1; + this._userLevel = param3; + this._coupon = param4; + try + { + if(this.moneyMode != CcLibConstant.MONEY_MODE_SCHOOL) + { + } + return; + } + catch(e:Error) + { + return; + } + } + + private function onUserChooseBodyShapeAtFirstTime(param1:CcBodyShapeChooserEvent) : void + { + var _loc3_:XML = null; + var _loc4_:CcCharacter = null; + var _loc5_:UtilHashArray = null; + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onUserChooseBodyShapeAtFirstTime); + var _loc2_:CcBodyShape = param1.bodyShapeChosen; + if(_loc2_ != null && this.ccChar.getUserChosenComponentSize() == 0) + { + _loc3_ = _loc2_.getDefaultCharXml(); + _loc4_ = new CcCharacter(); + _loc5_ = new UtilHashArray(); + _loc5_.push(this.currentTheme.id,this.currentTheme); + _loc4_.deserialize(_loc3_,_loc5_); + this.ccChar.cloneFromSourceToMe(_loc4_); + this.onUserChooseBodyShapeCommon(); + } + else if(this.ccChar.getUserChosenComponentSize() > 0) + { + } + } + + private function onUserChooseBodyShape(param1:CcBodyShapeChooserEvent) : void + { + var _loc3_:XML = null; + var _loc4_:CcCharacter = null; + var _loc5_:UtilHashArray = null; + var _loc2_:CcBodyShape = param1.bodyShapeChosen; + if(_loc2_ != null) + { + if(CcLibConstant.LOAD_DEFAULT_ON_SWITCH_SHAPE) + { + _loc3_ = _loc2_.getDefaultCharXml(); + _loc4_ = new CcCharacter(); + _loc5_ = new UtilHashArray(); + _loc5_.push(this.currentTheme.id,this.currentTheme); + _loc4_.deserialize(_loc3_,_loc5_); + this.ccChar.cloneFromSourceToMe(_loc4_); + } + else + { + this.ccChar.transformBodyShape(_loc2_); + } + this.onUserChooseBodyShapeCommon(); + } + } + + private function onUserChooseBodyShapeCommon() : void + { + var _loc1_:UtilHashArray = null; + if(this.isNewCharInsteadOfExistingChar) + { + _loc1_ = new UtilHashArray(); + _loc1_.push(this.currentTheme.id,this.currentTheme); + this.ccCharCopyForReset = new CcCharacter(); + this.ccCharCopyForReset.deserialize(this.ccChar.bodyShape.getDefaultCharXml(),_loc1_); + } + this.propagateNewCharToUi(this.ccChar); + this.addCommand(this.ccChar); + this.ui_ce_container.ui_ce_componentTypeChooser.init(this.currentTheme,this.ccChar,false); + this.switchComponentType(this.ccChar.getComponentTypeOrdering()[0] as String,true); + } + + private function refreshCurrentUi() : void + { + this.switchComponentType(this.currentComponentType,true); + } + + private function switchComponentType(param1:String, param2:Boolean) : void + { + var _loc9_:CcComponent = null; + var _loc10_:CcLibrary = null; + var _loc3_:String = String(param1 == "componentGroupClothes"?"body":param1); + _loc3_ = _loc3_.charAt(0).toUpperCase() + _loc3_.substr(1); + this.currentComponentType = param1; + if(param2) + { + this.ui_ce_container.ui_ce_componentTypeChooser.switchToComponentType(param1,false); + } + var _loc4_:Array = CcLibConstant.USER_CHOOSE_ABLE_HEAD_COMPONENT_TYPES; + var _loc5_:Array = new Array(); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1) + { + this.ui_ce_container.ui_ce_selectedDecoration.visible = true; + } + else + { + this.ui_ce_container.ui_ce_selectedDecoration.visible = false; + } + if(param1 != CcLibConstant.COMPONENT_TYPE_BODYSHAPE) + { + if(param1 == CcLibConstant.COMPONENT_GROUP_UPPER_LOWER) + { + _loc5_.push(CcLibConstant.COMPONENT_TYPE_UPPER_BODY); + _loc5_.push(CcLibConstant.COMPONENT_TYPE_LOWER_BODY); + this.ui_ce_container.ui_ce_clothesChooser.init(this.ccChar,this.currentTheme,param1,this.moneyMode,false); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + } + else + { + _loc5_.push(param1); + this.ui_ce_container.ui_ce_componentThumbChooser.init(this.ccChar,this.currentTheme,param1,this.moneyMode,CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) > -1?false:true); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + } + } + this.ui_ce_container.ui_ce_colorPicker.destroy(); + var _loc6_:Number = this.ccChar.getUserChosenComponentSize(); + var _loc7_:int = 0; + while(_loc7_ < _loc6_) + { + _loc9_ = this.ccChar.getUserChosenComponentByIndex(_loc7_); + if(_loc5_.indexOf(_loc9_.componentThumb.type) >= 0 && CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1) == -1 || _loc9_.componentThumb.type == CcLibConstant.COMPONENT_TYPE_BODYSHAPE && _loc5_.indexOf(CcLibConstant.COMPONENT_TYPE_FACESHAPE) >= 0) + { + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc9_,_loc9_.componentThumb.type,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc9_,_loc9_.componentThumb,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(_loc9_,this.userLevel); + } + _loc7_++; + } + var _loc8_:int = 0; + while(_loc8_ < this.ccChar.getUserChosenLibraryNum()) + { + _loc10_ = this.ccChar.getUserChosenLibraryByIndex(_loc8_); + if(_loc5_.indexOf(_loc10_.type) > -1) + { + this.ui_ce_container.ui_ce_colorPicker.addLibraryType(_loc10_,this.currentTheme,this.ccChar); + } + _loc8_++; + } + } + + private function resetPanels() : void + { + this.ui_ce_container.ui_ce_charScaleChooser.close(); + this.ui_ce_container.ui_ce_thumbPropertyInspector.close(); + } + + private function onUserChooseType(param1:CcComponentTypeChooserEvent) : void + { + this.resetPanels(); + this.switchComponentType(param1.componentType,false); + } + + private function onUserChooseColor(param1:CcColorPickerEvent) : void + { + var _loc2_:CcColor = param1.colorChosen; + this.ui_ce_container.ui_ce_charPreviewer.updateColor(_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.updateColor(_loc2_); + this.ccChar.addUserChosenColor(_loc2_); + if(param1.undoable) + { + this.addCommand(this.ccChar); + } + } + + private function onUserChooseThumb(param1:CcComponentThumbChooserEvent) : void + { + var _loc3_:CcComponent = null; + this.resetPanels(); + var _loc2_:CcComponent = new CcComponent(); + _loc2_.componentThumb = param1.componentThumb; + this.onUserChooseThumbCommon(_loc2_); + this.ui_ce_container.ui_ce_colorPicker.destroy(); + if(_loc2_.componentThumb.type == CcLibConstant.COMPONENT_TYPE_FACESHAPE) + { + _loc3_ = this.ccChar.getUserChosenComponentByComponentType(CcLibConstant.COMPONENT_TYPE_BODYSHAPE)[0] as CcComponent; + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc3_,_loc3_.componentThumb.type,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc3_,_loc3_.componentThumb,this.currentTheme,this.ccChar); + } + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc2_,_loc2_.componentThumb.type,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc2_,_loc2_.componentThumb,this.currentTheme,this.ccChar); + } + + private function onUserEditScale(param1:CcThumbScaleEvent) : void + { + var _loc2_:Number = param1.scale / 100; + if(param1.part == CcLibConstant.COMPONENT_CAT_HEAD) + { + this.ccChar.headScale = new Point(_loc2_,_loc2_); + this.ui_ce_container.ui_ce_charPreviewer.setHeadScale(_loc2_,_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.setHeadScale(_loc2_,_loc2_); + } + else if(param1.part == CcLibConstant.COMPONENT_CAT_BODY) + { + this.ccChar.bodyScale = new Point(_loc2_,_loc2_); + this.ui_ce_container.ui_ce_charPreviewer.setBodyScale(_loc2_,_loc2_); + this.ui_ce_container.ui_ce_facePreviewer.setBodyScale(_loc2_,_loc2_); + } + } + + private function onUserChooseCloth(param1:CcComponentThumbChooserEvent) : void + { + var _loc3_:CcComponent = null; + this.resetPanels(); + var _loc2_:CcComponent = new CcComponent(); + _loc2_.componentThumb = param1.componentThumb; + this.onUserChooseThumbCommon(_loc2_); + this.ui_ce_container.ui_ce_colorPicker.destroy(); + _loc3_ = this.ccChar.getUserChosenComponentByComponentType(CcLibConstant.COMPONENT_TYPE_UPPER_BODY)[0] as CcComponent; + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc3_,CcLibConstant.COMPONENT_TYPE_UPPER_BODY,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc3_,_loc3_.componentThumb,this.currentTheme,this.ccChar); + _loc3_ = this.ccChar.getUserChosenComponentByComponentType(CcLibConstant.COMPONENT_TYPE_LOWER_BODY)[0] as CcComponent; + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc3_,CcLibConstant.COMPONENT_TYPE_LOWER_BODY,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_colorPicker.addComponentThumb(_loc3_,_loc3_.componentThumb,this.currentTheme,this.ccChar); + } + + private function convertComponentToLibrary(param1:CcComponent) : CcLibrary + { + var _loc2_:CcLibrary = new CcLibrary(); + _loc2_.type = param1.componentThumb.type; + _loc2_.theme_id = param1.componentThumb.themeId; + _loc2_.component_id = param1.componentThumb.componentId; + _loc2_.money = param1.componentThumb.money; + _loc2_.sharingPoint = param1.componentThumb.sharingPoint; + return _loc2_; + } + + private function convertLibraryToComponent(param1:CcLibrary) : CcComponent + { + var _loc2_:CcComponent = new CcComponent(); + var _loc3_:CcComponentThumb = new CcComponentThumb(); + _loc2_.componentThumb = this.currentTheme.getComponentThumbByType(param1.type).getValueByKey(param1.type + "_" + param1.component_id); + return _loc2_; + } + + private function onUserChooseThumbCommon(param1:CcComponent, param2:Boolean = false) : void + { + var _loc3_:Array = null; + var _loc4_:CcComponent = null; + var _loc5_:Array = null; + var _loc6_:UtilHashArray = null; + var _loc7_:String = null; + var _loc8_:CcComponentThumb = null; + var _loc9_:CcComponent = null; + var _loc10_:CcLibrary = null; + param1.xscale = param1.yscale = CcCharacter.getComponentScaling(this.ccChar.bodyShape.bodyType); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1.componentThumb.type) == -1) + { + _loc3_ = this.ccChar.getUserChosenComponentByComponentType(param1.componentThumb.type); + if(_loc3_.length > 0) + { + _loc4_ = _loc3_[0] as CcComponent; + param1.x = _loc4_.x; + param1.y = _loc4_.y; + param1.xscale = _loc4_.xscale; + param1.yscale = _loc4_.yscale; + param1.offset = _loc4_.offset; + param1.rotation = _loc4_.rotation; + } + } + if(CcLibConstant.IS_TAKE_ORIGINAL_COLOR(param1.componentThumb.type)) + { + _loc5_ = this.ui_ce_container.ui_ce_charPreviewer.removeColorOfThumb(param1,this.ccChar); + this.ui_ce_container.ui_ce_facePreviewer.removeColorByRefs(_loc5_); + } + if(param1.componentThumb.libType != "") + { + _loc6_ = this.ccChar.bodyShape.getComponentThumbByType(param1.componentThumb.libType); + if(_loc6_) + { + _loc7_ = param1.componentThumb.libType + "_" + param1.componentThumb.componentId; + _loc8_ = _loc6_.getValueByKey(_loc7_); + if(_loc8_) + { + _loc9_ = new CcComponent(); + _loc9_.componentThumb = _loc8_; + this.onUserChooseThumbCommon(_loc9_,true); + } + else + { + this.ccChar.removeUserChosenComponentByType(param1.componentThumb.libType); + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + } + } + } + if(param1.componentThumb.apply_template_id) + { + this.applyTemplate(param1.componentThumb.apply_template_id,param1.componentThumb.type); + } + if(CcLibConstant.ALL_LIBRARY_TYPES.indexOf(param1.componentThumb.type) > -1) + { + _loc10_ = this.convertComponentToLibrary(param1); + this.ccChar.addUserChosenLibrary(_loc10_); + this.ui_ce_container.ui_ce_charPreviewer.switchLibrary(param1,this.ccChar); + this.ui_ce_container.ui_ce_facePreviewer.switchLibrary(param1,this.ccChar); + } + else + { + this.ccChar.addUserChosenComponent(param1); + this.ui_ce_container.ui_ce_charPreviewer.switchComponent(param1,this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.switchComponent(param1,this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + } + this.ui_ce_container.ui_ce_thumbPropertyInspector.init(param1,this.userLevel); + if(CcLibConstant.ALL_MULTIPLE_COMPONENT_TYPES.indexOf(param1.componentThumb.type) > -1) + { + this.ui_ce_container.ui_ce_selectedDecoration.addComponent(param1); + } + if(!param2) + { + this.addCommand(this.ccChar); + } + } + + private function applyTemplate(param1:String, param2:String) : void + { + var _loc7_:int = 0; + var _loc8_:CcColor = null; + var _loc9_:CcComponent = null; + var _loc10_:CcLibrary = null; + var _loc3_:CcTemplate = this.currentTheme.getTemplateById(param1); + var _loc4_:int = _loc3_.getUserChosenColorNum(); + var _loc5_:int = _loc3_.getUserChosenComponentSize(); + var _loc6_:int = _loc3_.getUserChosenLibraryNum(); + _loc7_ = 0; + while(_loc7_ < _loc4_) + { + _loc8_ = _loc3_.getUserChosenColorByIndex(_loc7_); + this.ui_ce_container.ui_ce_charPreviewer.updateColor(_loc8_); + this.ui_ce_container.ui_ce_facePreviewer.updateColor(_loc8_); + this.ccChar.addUserChosenColor(_loc8_); + _loc7_++; + } + _loc7_ = 0; + while(_loc7_ < _loc5_) + { + _loc9_ = _loc3_.getUserChosenComponentByIndex(_loc7_); + if(_loc9_.componentThumb.type != param2) + { + this.onUserChooseThumbCommon(_loc9_); + } + _loc7_++; + } + _loc7_ = 0; + while(_loc7_ < _loc6_) + { + _loc10_ = _loc3_.getUserChosenLibraryByIndex(_loc7_); + if(_loc10_.type != param2) + { + this.onUserChooseThumbCommon(this.convertLibraryToComponent(_loc10_)); + } + _loc7_++; + } + } + + private function onUserChooseNullThumb(param1:CcComponentThumbChooserEvent) : void + { + this.resetPanels(); + var _loc2_:CcComponent = new CcComponent(); + _loc2_.xscale = _loc2_.yscale = CcCharacter.getComponentScaling(this.ccChar.bodyShape.bodyType); + _loc2_.componentThumb = param1.componentThumb; + if(CcLibConstant.GET_COMPONENT_RELATED_LIBRARY(param1.noneComponentThumbType)) + { + this.ccChar.removeUserChosenComponentByType(CcLibConstant.GET_COMPONENT_RELATED_LIBRARY(param1.noneComponentThumbType)); + } + this.ccChar.removeUserChosenComponentByType(param1.noneComponentThumbType); + this.ui_ce_container.ui_ce_charPreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + this.ui_ce_container.ui_ce_facePreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId); + this.ui_ce_container.ui_ce_colorPicker.destroy(); + this.ui_ce_container.ui_ce_colorPicker.addComponentType(_loc2_,param1.noneComponentThumbType,this.currentTheme,this.ccChar); + this.ui_ce_container.ui_ce_thumbPropertyInspector.destroy(); + this.addCommand(this.ccChar); + } + + public function updateTopButtonOnRole() : void + { + this.ui_ce_container.ui_ce_buttonBar.refreshRole(); + } + + public function saveSnapShot(param1:Boolean = false) : ByteArray + { + var _loc2_:BitmapData = null; + if(!param1) + { + _loc2_ = this.ui_ce_container.ui_ce_charPreviewer.capFaceAsBitmap(); + } + else + { + _loc2_ = this.ui_ce_container.ui_ce_charPreviewer.capCharAsBitmap(); + } + var _loc3_:PNGEncoder = new PNGEncoder(); + var _loc4_:ByteArray = _loc3_.encode(_loc2_); + return _loc4_; + } + } +} diff --git a/scripts/anifire/creator/core/CcConsole.as b/scripts/anifire/creator/core/CcConsole.as new file mode 100644 index 0000000..885fad5 --- /dev/null +++ b/scripts/anifire/creator/core/CcConsole.as @@ -0,0 +1,885 @@ +package anifire.creator.core +{ + import anifire.component.CCThumb; + import anifire.constant.CcLibConstant; + import anifire.constant.CcServerConstant; + import anifire.constant.LicenseConstants; + import anifire.constant.ServerConstants; + import anifire.creator.components.ConfirmPopUp; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.events.CcPointUpdateEvent; + import anifire.creator.events.CcSaveCharEvent; + import anifire.creator.interfaces.ICcCharEditorContainer; + import anifire.creator.interfaces.ICcMainUiContainer; + import anifire.creator.interfaces.ICcPreviewAndSaveContainer; + import anifire.creator.interfaces.IConfiguration; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcTheme; + import anifire.event.LoadEmbedMovieEvent; + import anifire.event.StudioEvent; + import anifire.managers.AmplitudeAnalyticsManager; + import anifire.managers.AppConfigManager; + import anifire.managers.ExternalLinkManager; + import anifire.managers.NativeCursorManager; + import anifire.managers.ServerConnector; + import anifire.util.UtilCrypto; + import anifire.util.UtilDict; + import anifire.util.UtilErrorLogger; + import anifire.util.UtilHashArray; + import anifire.util.UtilNetwork; + import anifire.util.UtilSite; + import anifire.util.UtilURLStream; + import anifire.util.UtilUser; + import com.adobe.serialization.json.JS0N; + import flash.display.DisplayObjectContainer; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.SecurityErrorEvent; + import flash.external.ExternalInterface; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.net.URLRequestMethod; + import flash.net.URLStream; + import flash.net.URLVariables; + import flash.utils.ByteArray; + import flash.utils.setTimeout; + import mx.core.FlexGlobals; + import mx.core.IFlexDisplayObject; + import mx.utils.Base64Encoder; + import mx.utils.StringUtil; + import nochump.util.zip.ZipEntry; + import spark.events.PopUpEvent; + + public class CcConsole implements IEventDispatcher + { + + private static var _cc_console:CcConsole; + + private static var _themeId:String = ""; + + private static var _cfg:IConfiguration; + + private static var _configManager:AppConfigManager = AppConfigManager.instance; + + private static var _updatePopUp:IFlexDisplayObject; + + + private var _eventDispatcher:EventDispatcher; + + private var _ccCharEditorController:CcCharEditorController; + + private var _ccPreviewAndSaveController:CcPreviewAndSaveController; + + private var _ccChar:CcCharacter; + + private var _themes:UtilHashArray; + + private var _currentThemeId:String; + + private var _ui_mainUiContainer:ICcMainUiContainer; + + private var _moneyMode:int; + + private var _isUserLogined:Boolean; + + private var _userLevel:int; + + private var _original_assetId:String; + + private var _coupon:int = 0; + + private var _upsellHookId:String; + + private var _expectedUserType:Number = -1; + + private var _serverConnector:ServerConnector; + + private var _modeInEdit:Boolean = true; + + public function CcConsole(param1:ICcMainUiContainer, param2:ICcCharEditorContainer, param3:ICcPreviewAndSaveContainer) + { + super(); + this._ui_mainUiContainer = param1; + this._eventDispatcher = new EventDispatcher(); + this._themes = new UtilHashArray(); + var _loc4_:String = _configManager.getValue(ServerConstants.PARAM_THEME_ID); + if(_loc4_ == null || _loc4_.length <= 0) + { + _loc4_ = "family"; + } + setThemeId(_loc4_); + this.originalAssetId = _configManager.getValue("original_asset_id") as String; + if(this.originalAssetId == null || this.originalAssetId.length <= 0) + { + this.originalAssetId = null; + } + var _loc5_:String = _configManager.getValue(ServerConstants.FLASHVAR_IS_USER_LOGIN_MODE) as String; + if(_loc5_ == "Y") + { + this._isUserLogined = true; + } + else + { + this._isUserLogined = false; + } + this.addCallBacks(); + var _loc6_:String = _configManager.getValue(ServerConstants.FLASHVAR_MONEY_MODE) as String; + this.initMoneyMode(_loc6_); + var _loc7_:String = _configManager.getValue(ServerConstants.FLASHVAR_IS_ADMIN) as String; + if(_loc7_ == "1") + { + this._userLevel = CcLibConstant.USER_LEVEL_SUPER; + } + else + { + this._userLevel = CcLibConstant.USER_LEVEL_NORMAL; + } + this._ccCharEditorController = new CcCharEditorController(); + this.ccCharEditorController.configuration = _cfg; + this.ccCharEditorController.initUi(param2); + this.ccCharEditorController.addEventListener(CcCoreEvent.USER_WANT_TO_PREVIEW,this.onUserWantToPreview); + this.ccCharEditorController.addEventListener(CcCoreEvent.USER_WANT_TO_MODIFY,this.onUserWantToModify); + this.ccCharEditorController.addEventListener(CcCoreEvent.USER_WANT_TO_SAVE,this.onUserWantToSave); + this._ccPreviewAndSaveController = new CcPreviewAndSaveController(); + this._ccPreviewAndSaveController.configuration = _cfg; + this.ccPreviewAndSaveController.initUi(param3); + this.ccPreviewAndSaveController.addEventListener(CcCoreEvent.USER_WANT_TO_CANCEL,this.onUserWantToEditAgain); + this.ccPreviewAndSaveController.addEventListener(CcCoreEvent.USER_WANT_TO_CONFIRM,this.onUserWantToConfirm); + this.ccPreviewAndSaveController.addEventListener(CcCoreEvent.USER_WANT_TO_MODIFY,this.onUserWantToModify); + this.ccPreviewAndSaveController.addEventListener(CcCoreEvent.USER_WANT_TO_SAVE,this.onUserWantToSave); + this._serverConnector = ServerConnector.instance; + this._serverConnector.addEventListener(StudioEvent.UPGRADE_PENDING,this.onUpgradePending); + this._serverConnector.addEventListener(StudioEvent.UPGRADE_COMPLETE,this.onUpgradeComplete); + this._serverConnector.addEventListener(StudioEvent.UPGRADE_ERROR,this.onUpgradeError); + this.loadCcThemeList(); + } + + public static function setThemeId(param1:String) : void + { + _themeId = param1; + } + + public static function setConfiguration(param1:IConfiguration) : void + { + _cfg = param1; + } + + public static function initializeCcConsole(param1:ICcMainUiContainer, param2:ICcCharEditorContainer, param3:ICcPreviewAndSaveContainer) : CcConsole + { + if(_cc_console == null) + { + _cc_console = new CcConsole(param1,param2,param3); + } + return _cc_console; + } + + public static function getCcConsole() : CcConsole + { + if(_cc_console != null) + { + return _cc_console; + } + throw new Error("CcConsole must be intialized first"); + } + + public function get configuration() : IConfiguration + { + return _cfg; + } + + private function get coupon() : int + { + return this._coupon; + } + + private function get originalAssetId() : String + { + return this._original_assetId; + } + + private function set originalAssetId(param1:String) : void + { + this._original_assetId = param1; + } + + private function get isUserLogined() : Boolean + { + return this._isUserLogined; + } + + private function get moneyMode() : int + { + return this._moneyMode; + } + + private function get userLevel() : int + { + return this._userLevel; + } + + private function get ui_mainUiContainer() : ICcMainUiContainer + { + return this._ui_mainUiContainer; + } + + private function get ccCharEditorController() : CcCharEditorController + { + return this._ccCharEditorController; + } + + private function get ccPreviewAndSaveController() : CcPreviewAndSaveController + { + return this._ccPreviewAndSaveController; + } + + private function get ccChar() : CcCharacter + { + return this._ccChar; + } + + public function resetExpectedUserType() : void + { + this._expectedUserType = -1; + this._upsellHookId = null; + } + + private function initMoneyMode(param1:String) : void + { + if(param1 == "free") + { + this._moneyMode = CcLibConstant.MONEY_MODE_NORMAL; + this._coupon = CcLibConstant.COUPON_VALUE; + } + else if(param1 == "noneed") + { + this._moneyMode = CcLibConstant.MONEY_MODE_DONT_NEED_MONEY; + } + else if(param1 == "school") + { + this._moneyMode = CcLibConstant.MONEY_MODE_SCHOOL; + } + else + { + this._moneyMode = CcLibConstant.MONEY_MODE_NORMAL; + } + } + + private function onUpgradeComplete(param1:Event) : void + { + this.ccCharEditorController.updateTopButtonOnRole(); + this.ccPreviewAndSaveController.updateTopButtonOnRole(); + } + + private function onUpgradeError(param1:Event) : void + { + UtilErrorLogger.getInstance().appendCustomError("Failed to refresh user type: " + param1); + } + + private function onUpgradePending(param1:Event) : void + { + var _loc2_:ConfirmPopUp = new ConfirmPopUp(); + _loc2_.message = UtilDict.toDisplay("go","Once you complete your purchase, please save this character."); + _loc2_.title = UtilDict.toDisplay("go","Refresh to Unlock Features"); + _loc2_.confirmText = UtilDict.toDisplay("go","OK"); + _loc2_.addEventListener(StudioEvent.POPUP_CONFIRM,this.onConfirmAlert); + _loc2_.showCancelButton = false; + _loc2_.showCloseButton = false; + _loc2_.open(FlexGlobals.topLevelApplication as DisplayObjectContainer,true); + } + + private function onConfirmAlert(param1:Event) : void + { + ServerConnector.instance.refreshUserType(); + } + + private function addCallBacks() : void + { + if(ExternalInterface.available) + { + ExternalInterface.addCallback("ccUpgradePending",this.onUpgradeActived); + } + } + + private function addTheme(param1:CcTheme) : void + { + this._themes.push(param1.id,param1); + } + + private function getTheme(param1:String) : CcTheme + { + return this._themes.getValueByKey(param1) as CcTheme; + } + + private function setCurrentThemeId(param1:String) : void + { + this._currentThemeId = param1; + } + + private function getCurrentThemeId() : String + { + return this._currentThemeId; + } + + private function loadCcThemeList() : void + { + this.onLoadCcThemeListComplete(); + } + + public function isCopyingChar() : Boolean + { + return this.originalAssetId == null?false:true; + } + + public function getTemplateCCPreMadeChars() : Array + { + var _loc1_:CcTheme = this.getTheme(this.getCurrentThemeId()); + return _loc1_.preMadeChars; + } + + public function refreshTemplateCCSelector(param1:Array, param2:String = "default") : void + { + var _console:CcConsole = null; + var char:CcCharacter = null; + var chars:Array = param1; + var tag:String = param2; + _console = this; + var _numCC:int = chars.length; + var numCCStarted:int = 0; + if(chars.length == 0) + { + return; + } + for each(char in chars) + { + function():void + { + var _ccChar:* = undefined; + var stream:* = undefined; + var request:* = undefined; + var _ccActionHandler:* = undefined; + _ccChar = char; + stream = new UtilURLStream(); + _ccActionHandler = function(param1:Event):void + { + stream.removeEventListener(Event.COMPLETE,_ccActionHandler); + parseCCActionZipEventHandler({ + "char":_ccChar, + "streamEvent":param1, + "tag":tag + }); + }; + request = UtilNetwork.getGetCcActionRequest(char.assetId,char.thumbnailActionId + ".zip"); + stream.addEventListener(Event.COMPLETE,_ccActionHandler); + addEventListener(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,function(param1:CcCoreEvent):void + { + if(--_numCC <= 0) + { + _console.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_CHARACTER_THUMB_ALL_COMPLETE,_console,{ + "tag":tag, + "total":chars.length + })); + } + }); + stream.load(request); + }(); + } + } + + private function onUserWantToStart(param1:Event) : void + { + this.ccCharEditorController.initTheme(this.getTheme(this.getCurrentThemeId())); + this.ccCharEditorController.initMode(this.moneyMode,this.isUserLogined,this.userLevel,this.coupon); + this.ccCharEditorController.start(this.ccChar,!this.isCopyingChar()); + this.ccPreviewAndSaveController.initTheme(this.getTheme(this.getCurrentThemeId())); + this.ccPreviewAndSaveController.initMode(); + this.ccPreviewAndSaveController.initChar(this.ccChar); + this._modeInEdit = true; + if(_configManager.getValue(ServerConstants.FLASHVAR_CC_START_PAGE) == "save") + { + this.onUserWantToPreview(param1); + } + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_EVERYTHING_COMPLETE,this)); + } + + private function onUserWantToModify(param1:Event) : void + { + this._modeInEdit = true; + this.ui_mainUiContainer.ui_main_ccCharEditor.visible = true; + this.ui_mainUiContainer.ui_main_ccCharPreviewAndSaveScreen.visible = false; + this.ccCharEditorController.proceedToShow(); + } + + private function onUserWantToPreview(param1:Event) : void + { + this._modeInEdit = false; + this.ui_mainUiContainer.ui_main_ccCharEditor.visible = false; + this.ui_mainUiContainer.ui_main_ccCharPreviewAndSaveScreen.visible = true; + this.ccPreviewAndSaveController.proceedToShow(); + } + + private function onUserWantToGoToStudio(param1:Event) : void + { + var _loc4_:Object = null; + if(UtilSite.siteId == UtilSite.YOUTUBE || UtilSite.siteId == UtilSite.SKOLETUBE) + { + ExternalLinkManager.instance.navigate(ServerConstants.YOUTUBE_CREATE_MOVIE_PATH); + return; + } + var _loc2_:CcTheme = this.getTheme(this.getCurrentThemeId()); + var _loc3_:String = ServerConstants.STUDIO_PAGE_PATH; + if(_loc2_.studioThemeId) + { + LicenseConstants.visitStudioByTheme(_loc2_.studioThemeId); + return; + } + if(param1 is CcCoreEvent) + { + _loc4_ = (param1 as CcCoreEvent).getData(); + if(_loc4_ != null && String(_loc4_) != "") + { + _loc3_ = String(_loc4_); + } + } + ExternalLinkManager.instance.navigateWithSession(_loc3_); + } + + private function doUpdatePreviewStatus(param1:CcPointUpdateEvent) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doUpdatePreviewStatus); + } + + private function doUpdatePreviewStatusAndConfirm(param1:CcPointUpdateEvent) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doUpdatePreviewStatusAndConfirm); + } + + private function onUserWantToConfirm(param1:Event) : void + { + if(CcLibConstant.IS_BUSINESS_THEME && !UtilUser.hasBusinessFeatures) + { + this._expectedUserType = UtilUser.PUBLISH_USER; + } + else if(UtilUser.userType == UtilUser.BASIC_USER) + { + this._expectedUserType = UtilUser.PLUS_USER; + } + if(this._expectedUserType > -1) + { + this._serverConnector.refreshUserType(); + return; + } + this.onUserWantToSave(null); + } + + private function onUserWantToSave(param1:Event) : void + { + this.addEventListener(CcSaveCharEvent.SAVE_CHAR_COMPLETE,this.doTellUserSaveStatus); + this.addEventListener(CcSaveCharEvent.SAVE_CHAR_NOT_ENOUGH_MONEY_POINT,this.doTellUserSaveStatus); + this.addEventListener(CcSaveCharEvent.SAVE_CHAR_ERROR_OCCUR,this.doTellUserSaveStatus); + if(this._modeInEdit) + { + this.ccCharEditorController.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.doSave); + this.ccCharEditorController.resetCCAction(); + } + else + { + this.ccPreviewAndSaveController.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,this.doSave); + this.ccPreviewAndSaveController.resetCCAction(); + } + } + + private function doSave(param1:Event) : void + { + NativeCursorManager.instance.setBusyCursor(); + FlexGlobals.topLevelApplication.enabled = false; + setTimeout(this.save,5000); + } + + private function doTellUserSaveStatus(param1:CcSaveCharEvent) : void + { + var isTemplate:Boolean = false; + var js:String = null; + var event:CcSaveCharEvent = param1; + this.removeEventListener(CcSaveCharEvent.SAVE_CHAR_COMPLETE,this.doTellUserSaveStatus); + this.removeEventListener(CcSaveCharEvent.SAVE_CHAR_NOT_ENOUGH_MONEY_POINT,this.doTellUserSaveStatus); + this.removeEventListener(CcSaveCharEvent.SAVE_CHAR_ERROR_OCCUR,this.doTellUserSaveStatus); + if(event.type == CcSaveCharEvent.SAVE_CHAR_COMPLETE) + { + this.ccPreviewAndSaveController.proceedToSaveComplete(event.gopoint,event.gobuck,event.assetId); + try + { + isTemplate = false; + if(this.ccChar.copiedFromTemplate) + { + try + { + isTemplate = !this.ccChar.isTemplateModified(); + } + catch(e2:Error) + { + } + } + js = StringUtil.substitute("CCStandaloneBannerAdUI.gaLogTx.logCCPartsNormal({0}, {1}, {2})",event.assetId,JS0N.encode(event.gaTrackModel.parts.filter(function(param1:*, param2:int, param3:Array):Boolean + { + return (["GoUpper","GoLower","upper_body","lower_body","hair"] as Array).indexOf(param1.ctype) >= 0; + })),!!isTemplate?this.ccChar.templateId:"0"); + ExternalInterface.call(js); + } + catch(e:Error) + { + } + } + else if(event.type == CcSaveCharEvent.SAVE_CHAR_NOT_ENOUGH_MONEY_POINT) + { + this.ccPreviewAndSaveController.proceedToSaveNotEnoughMoney(event.gopoint,event.gobuck); + } + else if(event.type == CcSaveCharEvent.SAVE_CHAR_ERROR_OCCUR) + { + this.ccPreviewAndSaveController.proceedToSaveError(); + } + } + + private function onUserWantToEditAgain(param1:Event) : void + { + } + + private function onLoadCcThemeListComplete() : void + { + this.setCurrentThemeId(_themeId); + this.addEventListener(CcCoreEvent.LOAD_THEME_COMPLETE,this.doLoadPreMadeChar); + this.loadCcTheme(this.getCurrentThemeId()); + } + + private function loadLatestPreMadeChars(param1:Event) : void + { + var e:Event = param1; + (e.currentTarget as CcTheme).removeEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.loadLatestPreMadeChars); + var preMadeChars:Array = (e.currentTarget as CcTheme).preMadeChars.slice().filter(function(param1:CcCharacter, param2:int, param3:Array):Boolean + { + return "professions" == param1.category; + }); + preMadeChars.sortOn("createDateTime",Array.DESCENDING); + this.refreshTemplateCCSelector(preMadeChars.slice(0,6),"latest"); + } + + private function loadRandomPreMadeChars(param1:Event) : void + { + var idx:int = 0; + var e:Event = param1; + (e.currentTarget as CcTheme).removeEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.loadRandomPreMadeChars); + var preMadeChars:Array = (e.currentTarget as CcTheme).preMadeChars.slice().filter(function(param1:CcCharacter, param2:int, param3:Array):Boolean + { + return "professions" == param1.category; + }); + var randCharList:Array = []; + if(preMadeChars.length <= 6) + { + randCharList = preMadeChars.slice(0,6); + } + else + { + while(randCharList.length < 6) + { + idx = int(Math.random() * preMadeChars.length); + if(randCharList.indexOf(preMadeChars[idx]) < 0) + { + randCharList.push(preMadeChars[idx]); + } + } + } + this.refreshTemplateCCSelector(randCharList,"latest"); + } + + private function doLoadPreMadeChar(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doLoadPreMadeChar); + var _loc2_:CcTheme = this.getTheme(this.getCurrentThemeId()); + if(this.originalAssetId != null) + { + _loc2_.addEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.doLoadExistingCcChar); + } + else + { + _loc2_.addEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.doPrepareCcChar); + } + _loc2_.addEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.doEnableUserToStartUseCC); + if(_cfg.loadPreMadeCharsEnabled()) + { + _loc2_.addEventListener(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this.loadLatestPreMadeChars); + _loc2_.initCcThemePreMadeChar(); + } + else + { + _loc2_.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_PRE_MADE_CHARACTER_COMPLETE,this,null)); + } + } + + private function doEnableUserToStartUseCC(param1:Event) : void + { + var self:CcConsole = null; + var proceedHandler:Function = null; + var event:Event = param1; + (event.target as IEventDispatcher).removeEventListener(event.type,this.doEnableUserToStartUseCC); + self = this; + proceedHandler = function(param1:CcCoreEvent):void + { + self.removeEventListener(CcCoreEvent.LOAD_EXISTING_CHAR_COMPLETE,proceedHandler); + onUserWantToStart(event); + }; + if(this.originalAssetId != null) + { + this.addEventListener(CcCoreEvent.LOAD_EXISTING_CHAR_COMPLETE,proceedHandler); + } + else + { + this.onUserWantToStart(event); + } + } + + private function doPrepareCcChar(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doPrepareCcChar); + this._ccChar = new CcCharacter(); + if(_themeId == "cc2" || _themeId == "chibi" || _themeId == "ninja") + { + this._ccChar.ver = 2; + } + var _loc2_:CcTheme = this.getTheme(this.getCurrentThemeId()); + var _loc3_:Array = _loc2_.getBodyShapeTypes(); + var _loc4_:String = _loc3_[int(Math.floor(Math.random() * _loc2_.getBodyShapeTypes().length))] as String; + } + + private function doLoadExistingCcChar(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doLoadExistingCcChar); + this.addEventListener(CcCoreEvent.LOAD_EXISTING_CHAR_COMPLETE,this.doPrepareExistingCcChar); + this.loadExistingCharCompositionXml(_configManager.getValue("original_asset_id") as String); + } + + private function prepareExistingCcChar(param1:String) : void + { + this._ccChar = new CcCharacter(); + var _loc2_:UtilHashArray = new UtilHashArray(); + _loc2_.push(this.getCurrentThemeId(),this.getTheme(this.getCurrentThemeId())); + this._ccChar.deserialize(new XML(param1),_loc2_); + } + + private function doPrepareExistingCcChar(param1:CcCoreEvent) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.doPrepareExistingCcChar); + this.prepareExistingCcChar(param1.getData() as String); + } + + private function save() : void + { + var _loc1_:ByteArray = null; + var _loc2_:Base64Encoder = null; + var _loc3_:ByteArray = null; + var _loc4_:Base64Encoder = null; + NativeCursorManager.instance.setBusyCursor(); + AmplitudeAnalyticsManager.instance.log(AmplitudeAnalyticsManager.EVENT_NAME_CREATED_CHARACTER); + if(this._modeInEdit) + { + _loc1_ = this._ccCharEditorController.saveSnapShot(); + _loc3_ = this._ccCharEditorController.saveSnapShot(true); + } + else + { + _loc1_ = this._ccPreviewAndSaveController.saveSnapShot(); + _loc3_ = this._ccPreviewAndSaveController.saveSnapShot(true); + } + _loc2_ = new Base64Encoder(); + _loc2_.encodeBytes(_loc1_); + _loc4_ = new Base64Encoder(); + _loc4_.encodeBytes(_loc3_); + var _loc5_:URLLoader = new URLLoader(); + var _loc6_:URLRequest = new URLRequest(CcServerConstant.ACTION_SAVE_CC_CHAR); + var _loc7_:URLVariables = new URLVariables(); + _configManager.appendURLVariables(_loc7_); + _loc7_["body"] = this.serialize(); + _loc7_["title"] = "Untitled"; + _loc7_["imagedata"] = _loc2_.flush(); + _loc7_["thumbdata"] = _loc4_.flush(); + if(this.ccChar.assetId != "") + { + _loc7_["assetId"] = this.ccChar.assetId; + } + _loc6_.data = _loc7_; + _loc6_.method = URLRequestMethod.POST; + _loc5_.dataFormat = URLLoaderDataFormat.TEXT; + _loc5_.addEventListener(Event.COMPLETE,this.saveCharacter_completeHandler); + _loc5_.addEventListener(IOErrorEvent.IO_ERROR,this.saveCharacter_errorHandler); + _loc5_.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.saveCharacter_errorHandler); + _loc5_.load(_loc6_); + } + + private function saveCharacter_completeHandler(param1:Event) : void + { + NativeCursorManager.instance.removeBusyCursor(); + var _loc2_:URLLoader = param1.target as URLLoader; + var _loc3_:String = _loc2_.data as String; + _loc2_.removeEventListener(Event.COMPLETE,this.saveCharacter_completeHandler); + _loc2_.removeEventListener(IOErrorEvent.IO_ERROR,this.saveCharacter_errorHandler); + _loc2_.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.saveCharacter_errorHandler); + var _loc4_:String = _loc3_.slice(0,1); + var _loc5_:String = _loc3_.slice(1); + if(_loc4_ == "1" && _loc5_ == ServerConstants.ERROR_CODE_LOGGED_OUT) + { + this.showLoggedOutPopUp(); + } + else if(ExternalInterface.available) + { + ExternalInterface.call("characterSaved"); + } + } + + private function saveCharacter_errorHandler(param1:Event) : void + { + var _loc2_:URLLoader = param1.target as URLLoader; + _loc2_.removeEventListener(Event.COMPLETE,this.saveCharacter_completeHandler); + _loc2_.removeEventListener(IOErrorEvent.IO_ERROR,this.saveCharacter_errorHandler); + _loc2_.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,this.saveCharacter_errorHandler); + this.dispatchEvent(new CcSaveCharEvent(CcSaveCharEvent.SAVE_CHAR_ERROR_OCCUR,this)); + } + + private function showLoggedOutPopUp() : void + { + var _loc1_:ConfirmPopUp = new ConfirmPopUp(); + _loc1_.title = UtilDict.translate("Logged out"); + _loc1_.message = UtilDict.translate("Login again to continue.\nUnsaved changes may have been lost."); + _loc1_.confirmText = UtilDict.translate("Login"); + _loc1_.iconType = ConfirmPopUp.CONFIRM_POPUP_NO_ICON; + _loc1_.showCancelButton = false; + _loc1_.showCloseButton = false; + _loc1_.addEventListener(PopUpEvent.CLOSE,this.loggedOutPopUp_closeHandler); + _loc1_.open(FlexGlobals.topLevelApplication as DisplayObjectContainer,true); + } + + private function loggedOutPopUp_closeHandler(param1:PopUpEvent) : void + { + ExternalLinkManager.instance.navigate(ServerConstants.LOGIN_PAGE_PATH); + } + + private function serialize() : String + { + var _loc1_:String = "" + this.ccChar.serialize(); + return _loc1_; + } + + private function loadCcTheme(param1:String) : void + { + var _loc2_:CcTheme = new CcTheme(); + _loc2_.id = param1; + this.addTheme(_loc2_); + _loc2_.addEventListener(CcCoreEvent.LOAD_THEME_COMPLETE,this.onLoadCcThemeComplete); + _loc2_.initCcThemeByLoadThemeFile(param1); + } + + private function onLoadCcThemeComplete(param1:Event) : void + { + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadCcThemeComplete); + this.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_THEME_COMPLETE,this)); + } + + private function loadExistingCharCompositionXml(param1:String) : void + { + var _loc2_:URLRequest = null; + var _loc3_:URLLoader = null; + _loc2_ = new URLRequest(ServerConstants.ACTION_GET_CC_CHAR_COMPOSITION_XML); + _loc2_.method = URLRequestMethod.POST; + var _loc4_:URLVariables = new URLVariables(); + _configManager.appendURLVariables(_loc4_); + _loc4_["assetId"] = param1; + _loc2_.data = _loc4_; + _loc3_ = new URLLoader(); + _loc3_.dataFormat = URLLoaderDataFormat.TEXT; + _loc3_.addEventListener(Event.COMPLETE,this.onLoadExistingCharCompositionXmlComplete); + _loc3_.load(_loc2_); + } + + private function onLoadExistingCharCompositionXmlComplete(param1:Event) : void + { + var _loc4_:String = null; + var _loc5_:CcCoreEvent = null; + (param1.target as IEventDispatcher).removeEventListener(param1.type,this.onLoadExistingCharCompositionXmlComplete); + var _loc2_:URLLoader = param1.target as URLLoader; + var _loc3_:String = _loc2_.data as String; + if(_loc3_.charAt(0) == "0") + { + _loc4_ = _loc3_.substr(1); + _loc5_ = new CcCoreEvent(CcCoreEvent.LOAD_EXISTING_CHAR_COMPLETE,this,_loc4_); + this.dispatchEvent(_loc5_); + } + } + + public function parseCCActionZipEventHandler(param1:Object) : void + { + var ccChar:CcCharacter = null; + var decryptEngine:UtilCrypto = null; + var swfBytes:ByteArray = null; + var j:int = 0; + var ccZipEntry:ZipEntry = null; + var args:Object = null; + var thumb:CCThumb = null; + var ccConsole:CcConsole = null; + var data:Object = param1; + ccChar = data.char as CcCharacter; + var event:Event = data.streamEvent as Event; + var stream:URLStream = URLStream(event.target); + swfBytes = new ByteArray(); + stream.readBytes(swfBytes,0,stream.bytesAvailable); + try + { + args = new Object(); + thumb = new CCThumb(); + ccConsole = this; + thumb.cellWidth = thumb.cellHeight = CcLibConstant.TEMPLATE_CCTHUMB_WIDTH; + thumb.initByXml(XML(swfBytes)); + } + catch(e:Error) + { + thumb.initByXml(XML(swfBytes)); + } + thumb.addEventListener(LoadEmbedMovieEvent.COMPLETE_EVENT,function(param1:Event):void + { + ccConsole.dispatchEvent(new CcCoreEvent(CcCoreEvent.LOAD_CHARACTER_THUMB_COMPLETE,this,{ + "char":ccChar, + "thumbnail":thumb, + "tag":data.tag + })); + }); + } + + public function addEventListener(param1:String, param2:Function, param3:Boolean = false, param4:int = 0, param5:Boolean = false) : void + { + this._eventDispatcher.addEventListener(param1,param2,param3,param4,param5); + } + + public function dispatchEvent(param1:Event) : Boolean + { + return this._eventDispatcher.dispatchEvent(param1); + } + + public function hasEventListener(param1:String) : Boolean + { + return this._eventDispatcher.hasEventListener(param1); + } + + public function removeEventListener(param1:String, param2:Function, param3:Boolean = false) : void + { + return this._eventDispatcher.removeEventListener(param1,param2,param3); + } + + public function willTrigger(param1:String) : Boolean + { + return this._eventDispatcher.willTrigger(param1); + } + + private function onUpgradeActived(param1:Event = null) : void + { + } + } +} diff --git a/scripts/anifire/creator/core/CcPreviewAndSaveController.as b/scripts/anifire/creator/core/CcPreviewAndSaveController.as new file mode 100644 index 0000000..20cd16a --- /dev/null +++ b/scripts/anifire/creator/core/CcPreviewAndSaveController.as @@ -0,0 +1,178 @@ +package anifire.creator.core +{ + import anifire.creator.events.CcActionChosenEvent; + import anifire.creator.events.CcButtonBarEvent; + import anifire.creator.events.CcCoreEvent; + import anifire.creator.interfaces.ICcPreviewAndSaveContainer; + import anifire.creator.interfaces.IConfiguration; + import anifire.creator.models.CcCharacter; + import anifire.creator.models.CcTheme; + import anifire.event.LoadEmbedMovieEvent; + import anifire.util.UtilDict; + import flash.display.BitmapData; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.utils.ByteArray; + import mx.graphics.codec.PNGEncoder; + + public class CcPreviewAndSaveController extends EventDispatcher + { + + + private var ui_ps_container:ICcPreviewAndSaveContainer; + + private var _ccChar:CcCharacter; + + private var _ccTheme:CcTheme; + + private var _assetId:String; + + private var _cfg:IConfiguration; + + private var _lastSavedAssetId:String = null; + + public function CcPreviewAndSaveController() + { + super(); + } + + public function get assetId() : String + { + return this._assetId; + } + + public function get configuration() : IConfiguration + { + return this._cfg; + } + + public function set configuration(param1:IConfiguration) : void + { + this._cfg = param1; + } + + public function get ccChar() : CcCharacter + { + return this._ccChar; + } + + public function get ccTheme() : CcTheme + { + return this._ccTheme; + } + + public function initUi(param1:ICcPreviewAndSaveContainer) : void + { + this.ui_ps_container = param1; + this.ui_ps_container.ui_ps_buttonBar.addEventListener(CcButtonBarEvent.MODIFY_BUTTON_CLICK,this.onUserClickModify); + this.ui_ps_container.ui_ps_buttonBar.addEventListener(CcButtonBarEvent.SAVE_BUTTON_CLICK,this.onUserClickSave); + this.ui_ps_container.ui_ps_charPreviewOptionBox.addEventListener(CcActionChosenEvent.ACTION_CHOSEN,this.onUserChooseAction); + this.ui_ps_container.ui_ps_charPreviewOptionBox.addEventListener(CcActionChosenEvent.FACIAL_CHOSEN,this.onUserChooseFacial); + this.ui_ps_container.ui_ps_charPreviewer.charCanvasHeight = 280; + } + + private function onUserClickModify(param1:Event) : void + { + dispatchEvent(new CcCoreEvent(CcCoreEvent.USER_WANT_TO_MODIFY,this)); + } + + private function onUserClickSave(param1:Event) : void + { + dispatchEvent(new CcCoreEvent(CcCoreEvent.USER_WANT_TO_SAVE,this)); + } + + public function initChar(param1:CcCharacter) : void + { + this._ccChar = param1; + } + + public function initTheme(param1:CcTheme) : void + { + this._ccTheme = param1; + } + + public function initMode() : void + { + } + + public function proceedToShow() : void + { + this.ui_ps_container.ui_ps_charPreviewer.initByCcChar(this.ccChar,this.ccChar.bodyShape.thumbnailActionId,this.ccChar.bodyShape.thumbnailFacialId); + this.ui_ps_container.ui_ps_charPreviewOptionBox.init(this.ccChar,this.ccTheme); + this.ui_ps_container.ui_ps_charPreviewOptionBox.action = this.ccChar.bodyShape.thumbnailActionId; + this.ui_ps_container.ui_ps_charPreviewOptionBox.facial = this.ccChar.bodyShape.thumbnailFacialId; + this.ui_ps_container.ui_ps_charPreviewOptionBox.saveEnabled = true; + this.ui_ps_container.ui_ps_buttonBar.currentState = "preview"; + } + + public function goConfirmBox(param1:Number, param2:Number) : void + { + } + + private function onUserChooseAction(param1:CcActionChosenEvent) : void + { + this.ui_ps_container.ui_ps_charPreviewer.initByCcChar(this.ccChar,param1.action_id,param1.facial_id); + } + + private function onUserChooseFacial(param1:CcActionChosenEvent) : void + { + this.ui_ps_container.ui_ps_charPreviewer.initByCcChar(this.ccChar,param1.action_id,param1.facial_id); + } + + public function proceedToSaveComplete(param1:Number, param2:Number, param3:String) : void + { + this._assetId = param3; + this._lastSavedAssetId = param3; + } + + public function proceedToSaveNotEnoughMoney(param1:Number, param2:Number) : void + { + var _loc3_:String = UtilDict.toDisplay("cc","