Showing
61 changed files
with
1060 additions
and
60 deletions
| @@ -268,6 +268,18 @@ | @@ -268,6 +268,18 @@ | ||
| 268 | ] | 268 | ] |
| 269 | } | 269 | } |
| 270 | ] | 270 | ] |
| 271 | + }, | ||
| 272 | + { | ||
| 273 | + "name": "wdTracking", | ||
| 274 | + "srcPath": "./features/wdTracking", | ||
| 275 | + "targets": [ | ||
| 276 | + { | ||
| 277 | + "name": "default", | ||
| 278 | + "applyToProducts": [ | ||
| 279 | + "default" | ||
| 280 | + ] | ||
| 281 | + } | ||
| 282 | + ] | ||
| 271 | } | 283 | } |
| 272 | ] | 284 | ] |
| 273 | } | 285 | } |
| @@ -49,3 +49,5 @@ export { NetworkUtil } from './src/main/ets/utils/NetworkUtil' | @@ -49,3 +49,5 @@ export { NetworkUtil } from './src/main/ets/utils/NetworkUtil' | ||
| 49 | export { NetworkManager } from './src/main/ets/network/NetworkManager' | 49 | export { NetworkManager } from './src/main/ets/network/NetworkManager' |
| 50 | 50 | ||
| 51 | export { NetworkType } from './src/main/ets/network/NetworkType' | 51 | export { NetworkType } from './src/main/ets/network/NetworkType' |
| 52 | + | ||
| 53 | +export { UmengStats } from "./src/main/ets/umeng/UmengStats" |
| @@ -6,5 +6,8 @@ | @@ -6,5 +6,8 @@ | ||
| 6 | "description": "Please describe the basic information.", | 6 | "description": "Please describe the basic information.", |
| 7 | "main": "Index.ets", | 7 | "main": "Index.ets", |
| 8 | "version": "1.0.0", | 8 | "version": "1.0.0", |
| 9 | - "dependencies": {} | 9 | + "dependencies": { |
| 10 | + "@umeng/common": "^1.0.21", | ||
| 11 | + "@umeng/analytics": "^1.0.19" | ||
| 12 | + } | ||
| 10 | } | 13 | } |
| 1 | +import { preInit, InternalPlugin, setLogEnabled, init, onEventObject, onProfileSignOff, | ||
| 2 | + onProfileSignIn } from '@umeng/analytics'; | ||
| 3 | +import { common } from '@kit.AbilityKit'; | ||
| 4 | +import { AccountManagerUtils } from '../utils/AccountManagerUtils'; | ||
| 5 | +import { UserDataLocal } from '../utils/UserDataLocal'; | ||
| 6 | +import { EmitterUtils } from '../utils/EmitterUtils'; | ||
| 7 | + | ||
| 8 | +export class UmengStats { | ||
| 9 | + | ||
| 10 | + private static _inited = false | ||
| 11 | + | ||
| 12 | + // 启动时调用 | ||
| 13 | + static preInit(context: common.UIAbilityContext) { | ||
| 14 | + | ||
| 15 | + // 需在 AppScope/resources/rawfile/umconfig.json 配置key和channel | ||
| 16 | + preInit({ | ||
| 17 | + context: context.getApplicationContext(), | ||
| 18 | + plugins: [new InternalPlugin()], | ||
| 19 | + enableLog: true | ||
| 20 | + | ||
| 21 | + }); | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + // 在用户同意隐私政策后再调用此方法 | ||
| 25 | + static initAfterAgreeProtocol() { | ||
| 26 | + init(); | ||
| 27 | + UmengStats._inited = true | ||
| 28 | + | ||
| 29 | + UmengStats.onLogin() | ||
| 30 | + UmengStats.event("testHarmony", {"key1": "value1"}) | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + // TODO: 登录成功调用 | ||
| 34 | + static onLogin() { | ||
| 35 | + AccountManagerUtils.isLogin().then((login) => { | ||
| 36 | + if (!login) { return } | ||
| 37 | + | ||
| 38 | + let userId = UserDataLocal.getUserId() | ||
| 39 | + if (userId.length > 0) { | ||
| 40 | + onProfileSignIn("USER", userId) | ||
| 41 | + } | ||
| 42 | + }) | ||
| 43 | + } | ||
| 44 | + // TODO: 退出登录调用 | ||
| 45 | + static onLogout() { | ||
| 46 | + onProfileSignOff() | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + // 属性key,128位以内的非空字符串,value为256位以内的数值或字符串 | ||
| 50 | + static event(eventId: string, param?: Record<string, string | number>) { | ||
| 51 | + if (!UmengStats._inited) { | ||
| 52 | + return | ||
| 53 | + } | ||
| 54 | + onEventObject(eventId, param); | ||
| 55 | + } | ||
| 56 | +} |
| @@ -73,7 +73,6 @@ export class DeviceUtil { | @@ -73,7 +73,6 @@ export class DeviceUtil { | ||
| 73 | * 客户端日志链路追踪traceid生成:在每个请求头加上参数Key:EagleEye-TraceID ,value为32位生成随机值 | 73 | * 客户端日志链路追踪traceid生成:在每个请求头加上参数Key:EagleEye-TraceID ,value为32位生成随机值 |
| 74 | */ | 74 | */ |
| 75 | static getRandomUUIDForTraceID(): string { | 75 | static getRandomUUIDForTraceID(): string { |
| 76 | - deviceInfo.productModel | ||
| 77 | - return util.generateRandomUUID().toUpperCase().replace('-', '') | 76 | + return util.generateRandomUUID().toUpperCase().replace(/-/g, '') |
| 78 | } | 77 | } |
| 79 | } | 78 | } |
| 1 | import { SpConstants } from 'wdConstant'; | 1 | import { SpConstants } from 'wdConstant'; |
| 2 | -import { DateTimeUtils, DeviceUtil, SPHelper, StringUtils } from 'wdKit'; | 2 | +import { AppUtils, DateTimeUtils, DeviceUtil, SPHelper, StringUtils } from 'wdKit'; |
| 3 | import { HttpUtils } from '../utils/HttpUtils'; | 3 | import { HttpUtils } from '../utils/HttpUtils'; |
| 4 | import { HostEnum, HostManager } from './HttpHostManager'; | 4 | import { HostEnum, HostManager } from './HttpHostManager'; |
| 5 | 5 | ||
| @@ -19,8 +19,8 @@ export class HttpParams { | @@ -19,8 +19,8 @@ export class HttpParams { | ||
| 19 | headers['adcode'] = HttpUtils.getProvinceCode() | 19 | headers['adcode'] = HttpUtils.getProvinceCode() |
| 20 | headers['os_version'] = DeviceUtil.getOsVersion() | 20 | headers['os_version'] = DeviceUtil.getOsVersion() |
| 21 | headers['system'] = 'Android' // TODO 后续是否新增鸿蒙标识 | 21 | headers['system'] = 'Android' // TODO 后续是否新增鸿蒙标识 |
| 22 | - headers['versionCode'] = HttpParams.getVersionCode() | ||
| 23 | - headers['version_name'] = HttpParams.getVersionName() | 22 | + headers['versionCode'] = AppUtils.getAppVersionCode() |
| 23 | + headers['version_name'] = AppUtils.getAppVersionName() | ||
| 24 | headers['EagleEye-TraceID'] = DeviceUtil.getRandomUUIDForTraceID() | 24 | headers['EagleEye-TraceID'] = DeviceUtil.getRandomUUIDForTraceID() |
| 25 | headers['imei'] = DeviceUtil.clientId() | 25 | headers['imei'] = DeviceUtil.clientId() |
| 26 | headers['Accept-Language'] = 'zh' | 26 | headers['Accept-Language'] = 'zh' |
| @@ -4,6 +4,7 @@ import { Logger } from 'wdKit/Index'; | @@ -4,6 +4,7 @@ import { Logger } from 'wdKit/Index'; | ||
| 4 | import { performJSCallNative } from './JsBridgeBiz'; | 4 | import { performJSCallNative } from './JsBridgeBiz'; |
| 5 | import { H5CallNativeType } from './H5CallNativeType'; | 5 | import { H5CallNativeType } from './H5CallNativeType'; |
| 6 | import { Message } from 'wdJsBridge/src/main/ets/bean/Message'; | 6 | import { Message } from 'wdJsBridge/src/main/ets/bean/Message'; |
| 7 | +import { DateTimeUtils } from 'wdKit' | ||
| 7 | 8 | ||
| 8 | const TAG = 'WdWebLocalComponent'; | 9 | const TAG = 'WdWebLocalComponent'; |
| 9 | 10 | ||
| @@ -22,6 +23,13 @@ export struct WdWebLocalComponent { | @@ -22,6 +23,13 @@ export struct WdWebLocalComponent { | ||
| 22 | @State positionLeft: number = 0 | 23 | @State positionLeft: number = 0 |
| 23 | @State positionTop: number = 0 | 24 | @State positionTop: number = 0 |
| 24 | @State videoLandscape: string = '1' | 25 | @State videoLandscape: string = '1' |
| 26 | + @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X | ||
| 27 | + @State sliderStartTime: string = ''; | ||
| 28 | + @State currentTime: number = 0; | ||
| 29 | + @State durationTime: number = 0; | ||
| 30 | + @State durationStringTime: string = ''; | ||
| 31 | + @State isPause: boolean = true; | ||
| 32 | + controller: VideoController = new VideoController() | ||
| 25 | 33 | ||
| 26 | build() { | 34 | build() { |
| 27 | Column() { | 35 | Column() { |
| @@ -77,22 +85,87 @@ export struct WdWebLocalComponent { | @@ -77,22 +85,87 @@ export struct WdWebLocalComponent { | ||
| 77 | }) | 85 | }) |
| 78 | 86 | ||
| 79 | if (this.videoUrl) { | 87 | if (this.videoUrl) { |
| 80 | - Video({ src: this.videoUrl }) | ||
| 81 | - .autoPlay(true) | ||
| 82 | - .objectFit(ImageFit.Contain) | ||
| 83 | - .width(this.positionWidth) | ||
| 84 | - .height(this.positionHeight) | ||
| 85 | - .borderRadius(5) | ||
| 86 | - .alignRules({ | ||
| 87 | - top: { anchor: "__container__", align: VerticalAlign.Top }, | 88 | + Stack({ alignContent: Alignment.Bottom }) { |
| 89 | + Video({ | ||
| 90 | + src: this.videoUrl, | ||
| 91 | + currentProgressRate: this.curRate, | ||
| 92 | + controller: this.controller | ||
| 88 | }) | 93 | }) |
| 89 | - .offset({ | ||
| 90 | - x: this.positionLeft, | ||
| 91 | - y: this.positionTop | ||
| 92 | - }) | ||
| 93 | - .id("video") | ||
| 94 | - } | 94 | + .borderRadius(5) |
| 95 | + .controls(false) | ||
| 96 | + .autoPlay(true) | ||
| 97 | + .objectFit(ImageFit.Contain) | ||
| 98 | + .onStart(() => { | ||
| 99 | + this.isPause = false | ||
| 100 | + }) | ||
| 101 | + .onPause(() => { | ||
| 102 | + this.isPause = true | ||
| 103 | + }) | ||
| 104 | + .onPrepared((event) => { | ||
| 105 | + if (event) { | ||
| 106 | + this.durationTime = event.duration | ||
| 107 | + } | ||
| 108 | + }) | ||
| 109 | + .onUpdate((event) => { | ||
| 110 | + if (event) { | ||
| 111 | + this.currentTime = event.time | ||
| 112 | + } | ||
| 113 | + }) | ||
| 114 | + Row() { | ||
| 115 | + Image($r(this.isPause ? 'app.media.icon_play' : 'app.media.icon_pause')) | ||
| 116 | + .width(24) | ||
| 117 | + .height(24) | ||
| 118 | + .onClick(()=>{ | ||
| 119 | + if(this.isPause){ | ||
| 120 | + this.controller.start() | ||
| 121 | + }else{ | ||
| 122 | + this.controller.pause() | ||
| 123 | + } | ||
| 124 | + }) | ||
| 125 | + Row() { | ||
| 126 | + Text(DateTimeUtils.getFormattedDuration(this.currentTime * 1000)).fontSize(12).fontColor(Color.White).fontWeight(600) | ||
| 127 | + Slider({ | ||
| 128 | + value: this.currentTime, | ||
| 129 | + min: 0, | ||
| 130 | + max: this.durationTime | ||
| 131 | + }) | ||
| 132 | + .width("50%") | ||
| 133 | + .selectedColor('#ED2800') | ||
| 134 | + .margin({ left: 4, right: 4 }) | ||
| 135 | + // .blockStyle({ | ||
| 136 | + // type: SliderBlockType.IMAGE, | ||
| 137 | + // image: $r('app.media.slider_block') | ||
| 138 | + // }) | ||
| 139 | + // .blockSize({ width: 18, height: 12 }) | ||
| 140 | + .onChange((value: number, mode: SliderChangeMode) => { | ||
| 141 | + this.controller.setCurrentTime(value); | ||
| 142 | + }) | ||
| 143 | + Text(DateTimeUtils.getFormattedDuration(this.durationTime * 1000)).fontSize(12).fontColor(Color.White).fontWeight(600) | ||
| 144 | + } | ||
| 145 | + .justifyContent(FlexAlign.Center) | ||
| 95 | 146 | ||
| 147 | + Image($r('app.media.icon_full_screen')) | ||
| 148 | + .width(24) | ||
| 149 | + .height(24) | ||
| 150 | + .onClick(()=>{ | ||
| 151 | + this.controller.requestFullscreen(true) | ||
| 152 | + }) | ||
| 153 | + } | ||
| 154 | + .opacity(0.8) | ||
| 155 | + .width("100%") | ||
| 156 | + .justifyContent(FlexAlign.SpaceAround) | ||
| 157 | + } | ||
| 158 | + .width(this.positionWidth) | ||
| 159 | + .height(this.positionHeight) | ||
| 160 | + .alignRules({ | ||
| 161 | + top: { anchor: "__container__", align: VerticalAlign.Top }, | ||
| 162 | + }) | ||
| 163 | + .offset({ | ||
| 164 | + x: this.positionLeft, | ||
| 165 | + y: this.positionTop | ||
| 166 | + }) | ||
| 167 | + .id("video") | ||
| 168 | + } | ||
| 96 | } | 169 | } |
| 97 | }.width('100%') | 170 | }.width('100%') |
| 98 | .height(this.webHeight) | 171 | .height(this.webHeight) |
289 Bytes
339 Bytes
293 Bytes
1.79 KB
497 Bytes
| 1 | -import { Logger, NumberFormatterUtils, DateTimeUtils, EmitterUtils, EmitterEventId, NetworkUtil } from 'wdKit'; | 1 | +import { |
| 2 | + Logger, | ||
| 3 | + NumberFormatterUtils, | ||
| 4 | + DateTimeUtils, | ||
| 5 | + EmitterUtils, | ||
| 6 | + EmitterEventId, | ||
| 7 | + NetworkUtil, | ||
| 8 | + DisplayUtils | ||
| 9 | +} from 'wdKit'; | ||
| 2 | import { | 10 | import { |
| 3 | Action, | 11 | Action, |
| 4 | ContentDetailDTO, | 12 | ContentDetailDTO, |
| @@ -41,6 +49,7 @@ export struct ImageAndTextPageComponent { | @@ -41,6 +49,7 @@ export struct ImageAndTextPageComponent { | ||
| 41 | @State publishCommentModel: publishCommentModel = new publishCommentModel() | 49 | @State publishCommentModel: publishCommentModel = new publishCommentModel() |
| 42 | @State operationButtonList: string[] = ['comment', 'collect', 'share'] | 50 | @State operationButtonList: string[] = ['comment', 'collect', 'share'] |
| 43 | @State isNetConnected: boolean = true | 51 | @State isNetConnected: boolean = true |
| 52 | + @State info: Area | null = null | ||
| 44 | 53 | ||
| 45 | build() { | 54 | build() { |
| 46 | Column() { | 55 | Column() { |
| @@ -131,8 +140,11 @@ export struct ImageAndTextPageComponent { | @@ -131,8 +140,11 @@ export struct ImageAndTextPageComponent { | ||
| 131 | Divider().strokeWidth(6).color('#f5f5f5') | 140 | Divider().strokeWidth(6).color('#f5f5f5') |
| 132 | CommentComponent({ | 141 | CommentComponent({ |
| 133 | publishCommentModel: this.publishCommentModel | 142 | publishCommentModel: this.publishCommentModel |
| 143 | + }).onAreaChange((oldValue: Area, newValue: Area) => { | ||
| 144 | + this.info = newValue | ||
| 134 | }) | 145 | }) |
| 135 | // .onMeasureSize() | 146 | // .onMeasureSize() |
| 147 | + | ||
| 136 | } | 148 | } |
| 137 | } | 149 | } |
| 138 | } | 150 | } |
| @@ -144,28 +156,25 @@ export struct ImageAndTextPageComponent { | @@ -144,28 +156,25 @@ export struct ImageAndTextPageComponent { | ||
| 144 | .scrollBar(BarState.Off) | 156 | .scrollBar(BarState.Off) |
| 145 | .align(Alignment.Top) | 157 | .align(Alignment.Top) |
| 146 | 158 | ||
| 147 | - if(!this.isNetConnected) { | 159 | + if (!this.isNetConnected) { |
| 148 | EmptyComponent({ | 160 | EmptyComponent({ |
| 149 | emptyType: 1, | 161 | emptyType: 1, |
| 150 | emptyButton: true, | 162 | emptyButton: true, |
| 151 | retry: () => { | 163 | retry: () => { |
| 152 | this.getDetail() | 164 | this.getDetail() |
| 153 | } | 165 | } |
| 154 | - }) | ||
| 155 | - }else{ | 166 | + }).padding({ bottom: 200 }) |
| 167 | + } else { | ||
| 156 | if (!this.isPageEnd) { | 168 | if (!this.isPageEnd) { |
| 157 | detailedSkeleton() | 169 | detailedSkeleton() |
| 158 | } | 170 | } |
| 159 | } | 171 | } |
| 160 | - | ||
| 161 | //底部交互区 | 172 | //底部交互区 |
| 162 | - if (this.contentDetailData?.length) { | ||
| 163 | - OperRowListView({ | ||
| 164 | - contentDetailData: this.contentDetailData[0], | ||
| 165 | - publishCommentModel: this.publishCommentModel, | ||
| 166 | - operationButtonList: this.operationButtonList, | ||
| 167 | - }) | ||
| 168 | - } | 173 | + OperRowListView({ |
| 174 | + contentDetailData: this.contentDetailData[0], | ||
| 175 | + publishCommentModel: this.publishCommentModel, | ||
| 176 | + operationButtonList: this.operationButtonList, | ||
| 177 | + }) | ||
| 169 | } | 178 | } |
| 170 | 179 | ||
| 171 | } | 180 | } |
| @@ -308,7 +317,16 @@ export struct ImageAndTextPageComponent { | @@ -308,7 +317,16 @@ export struct ImageAndTextPageComponent { | ||
| 308 | if (targetId) { | 317 | if (targetId) { |
| 309 | if (targetId == this.publishCommentModel.targetId) { | 318 | if (targetId == this.publishCommentModel.targetId) { |
| 310 | // 滚动到评论列表 | 319 | // 滚动到评论列表 |
| 311 | - | 320 | + if (this.info) { |
| 321 | + // let height = DisplayUtils.getDeviceHeight() / 2 | ||
| 322 | + let offSetY = this.info?.globalPosition.y as number | ||
| 323 | + //头部距离48 | ||
| 324 | + this.scroller.scrollTo({ | ||
| 325 | + yOffset: offSetY - 100, | ||
| 326 | + xOffset: 0, | ||
| 327 | + animation: { duration: 1000, curve: Curve.Ease } | ||
| 328 | + }) | ||
| 329 | + } | ||
| 312 | } | 330 | } |
| 313 | } | 331 | } |
| 314 | }) | 332 | }) |
| @@ -182,9 +182,6 @@ export struct CommentComponent { | @@ -182,9 +182,6 @@ export struct CommentComponent { | ||
| 182 | if (this.hasMore === false) NoMoreLayout() | 182 | if (this.hasMore === false) NoMoreLayout() |
| 183 | } | 183 | } |
| 184 | } | 184 | } |
| 185 | -// .onScrollFrameBegin((offset: number, state: ScrollState)=>{ | ||
| 186 | -// | ||
| 187 | -// }) | ||
| 188 | .onReachEnd(()=>{ | 185 | .onReachEnd(()=>{ |
| 189 | if (this.hasMore) { | 186 | if (this.hasMore) { |
| 190 | this.getData() | 187 | this.getData() |
| @@ -319,7 +319,7 @@ struct ChannelDialog { | @@ -319,7 +319,7 @@ struct ChannelDialog { | ||
| 319 | } | 319 | } |
| 320 | } | 320 | } |
| 321 | }), | 321 | }), |
| 322 | - PanGesture({ fingers: 1, direction: null, distance: 0 }) | 322 | + PanGesture({ fingers: 1, direction: this.isEditIng ? PanDirection.All:PanDirection.None, distance: 0 }) |
| 323 | .onActionStart((event: GestureEvent) => { | 323 | .onActionStart((event: GestureEvent) => { |
| 324 | this.dragItem = item.num | 324 | this.dragItem = item.num |
| 325 | this.dragRefOffsetX = 0 | 325 | this.dragRefOffsetX = 0 |
| @@ -3,6 +3,7 @@ import { RefreshLayoutBean } from './RefreshLayoutBean'; | @@ -3,6 +3,7 @@ import { RefreshLayoutBean } from './RefreshLayoutBean'; | ||
| 3 | 3 | ||
| 4 | /** | 4 | /** |
| 5 | * Custom layout to show refresh or load. | 5 | * Custom layout to show refresh or load. |
| 6 | + * @deprecated | ||
| 6 | */ | 7 | */ |
| 7 | @Component | 8 | @Component |
| 8 | export default struct CustomLayout { | 9 | export default struct CustomLayout { |
| @@ -3,8 +3,6 @@ import { Logger } from 'wdKit'; | @@ -3,8 +3,6 @@ import { Logger } from 'wdKit'; | ||
| 3 | import { EmptyComponent } from '../view/EmptyComponent'; | 3 | import { EmptyComponent } from '../view/EmptyComponent'; |
| 4 | import PageModel from '../../viewmodel/PageModel'; | 4 | import PageModel from '../../viewmodel/PageModel'; |
| 5 | import { autoRefresh, listTouchEvent } from '../../utils/PullDownRefresh'; | 5 | import { autoRefresh, listTouchEvent } from '../../utils/PullDownRefresh'; |
| 6 | -import RefreshLayout from './RefreshLayout'; | ||
| 7 | -import { RefreshLayoutBean } from './RefreshLayoutBean'; | ||
| 8 | import LoadMoreLayout from './LoadMoreLayout'; | 6 | import LoadMoreLayout from './LoadMoreLayout'; |
| 9 | import { CompParser } from '../CompParser'; | 7 | import { CompParser } from '../CompParser'; |
| 10 | import { CompDTO } from 'wdBean'; | 8 | import { CompDTO } from 'wdBean'; |
| @@ -14,6 +12,8 @@ import { ProcessUtils } from 'wdRouter/Index'; | @@ -14,6 +12,8 @@ import { ProcessUtils } from 'wdRouter/Index'; | ||
| 14 | import PageAdModel from '../../viewmodel/PageAdvModel'; | 12 | import PageAdModel from '../../viewmodel/PageAdvModel'; |
| 15 | import PageNoMoreLayout from './PageNoMoreLayout'; | 13 | import PageNoMoreLayout from './PageNoMoreLayout'; |
| 16 | import { NoMoreBean } from './NoMoreBean'; | 14 | import { NoMoreBean } from './NoMoreBean'; |
| 15 | +import { RefreshLayoutBean } from '../refresh/RefreshLayoutBean'; | ||
| 16 | +import RefreshLayout from '../refresh/RefreshLayout'; | ||
| 17 | 17 | ||
| 18 | const TAG = 'PageComponent'; | 18 | const TAG = 'PageComponent'; |
| 19 | 19 | ||
| @@ -66,8 +66,8 @@ export struct PageComponent { | @@ -66,8 +66,8 @@ export struct PageComponent { | ||
| 66 | // 下拉刷新 | 66 | // 下拉刷新 |
| 67 | ListItem() { | 67 | ListItem() { |
| 68 | RefreshLayout({ | 68 | RefreshLayout({ |
| 69 | - refreshBean: new RefreshLayoutBean(this.pageModel.isVisiblePullDown, this.pageModel.pullDownRefreshImage, | ||
| 70 | - this.pageModel.pullDownRefreshText, this.pageModel.pullDownRefreshHeight) | 69 | + refreshBean: new RefreshLayoutBean(this.pageModel.isVisiblePullDown, this.pageModel.load, |
| 70 | + this.pageModel.offsetY) | ||
| 71 | }) | 71 | }) |
| 72 | } | 72 | } |
| 73 | 73 |
| @@ -3,6 +3,7 @@ import { RefreshLayoutBean } from './RefreshLayoutBean'; | @@ -3,6 +3,7 @@ import { RefreshLayoutBean } from './RefreshLayoutBean'; | ||
| 3 | 3 | ||
| 4 | /** | 4 | /** |
| 5 | * The refresh layout component. | 5 | * The refresh layout component. |
| 6 | + * @deprecated | ||
| 6 | */ | 7 | */ |
| 7 | @Component | 8 | @Component |
| 8 | export default struct RefreshLayout { | 9 | export default struct RefreshLayout { |
| 1 | +import { RefreshLayoutBean } from '../refresh/RefreshLayoutBean'; | ||
| 2 | +import RefreshLoadLayout from '../refresh/RefreshLoadLayout'; | ||
| 3 | + | ||
| 4 | +/** | ||
| 5 | + * The refresh layout component. | ||
| 6 | + */ | ||
| 7 | +@Component | ||
| 8 | +export default struct RefreshLayout { | ||
| 9 | + @ObjectLink refreshBean: RefreshLayoutBean; | ||
| 10 | + | ||
| 11 | + build() { | ||
| 12 | + Column() { | ||
| 13 | + if (this.refreshBean.isVisible) { | ||
| 14 | + RefreshLoadLayout({ | ||
| 15 | + refreshBean: new RefreshLayoutBean(this.refreshBean.isVisible, this.refreshBean.loadStatus, this.refreshBean.offset) | ||
| 16 | + }) | ||
| 17 | + } | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | +} |
| 1 | +/** | ||
| 2 | + * 下拉刷新数据bean. | ||
| 3 | + */ | ||
| 4 | +@Observed | ||
| 5 | +export class RefreshLayoutBean { | ||
| 6 | + /** | ||
| 7 | + * Custom refresh load layout isVisible. | ||
| 8 | + */ | ||
| 9 | + isVisible: boolean; | ||
| 10 | + loadStatus: number; // 1-下拉刷新 2-松开刷新 3-刷新完成 | ||
| 11 | + | ||
| 12 | + offset: number; | ||
| 13 | + | ||
| 14 | + constructor(isVisible: boolean, loadStatus: LoadStatus, offset: number) { | ||
| 15 | + this.isVisible = isVisible; | ||
| 16 | + this.loadStatus = loadStatus; | ||
| 17 | + this.offset = offset; | ||
| 18 | + } | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +export const enum LoadStatus { | ||
| 22 | + /** | ||
| 23 | + * 触发刷新前,有下拉动作了 | ||
| 24 | + */ | ||
| 25 | + IDLE, | ||
| 26 | + /** | ||
| 27 | + * 触发刷新前,有下拉动作了 | ||
| 28 | + */ | ||
| 29 | + PRELOAD, | ||
| 30 | + /** | ||
| 31 | + * 刷新中 | ||
| 32 | + */ | ||
| 33 | + LOADING, | ||
| 34 | + /** | ||
| 35 | + * 触发刷新结束,展示‘已更新最新’ | ||
| 36 | + */ | ||
| 37 | + LOADED, | ||
| 38 | +} |
| 1 | +import lottie, { AnimationItem } from '@ohos/lottie'; | ||
| 2 | +import { LoadStatus, RefreshLayoutBean } from './RefreshLayoutBean'; | ||
| 3 | + | ||
| 4 | +/** | ||
| 5 | + * Custom layout to show refresh or load. | ||
| 6 | + * TODO 待优化 | ||
| 7 | + */ | ||
| 8 | +@Component | ||
| 9 | +export default struct CustomLayout { | ||
| 10 | + // 设置刷新view高度 | ||
| 11 | + static readonly REFRESH_HEIGHT: number = 90; | ||
| 12 | + @ObjectLink @Watch('onOffsetChange') refreshBean: RefreshLayoutBean; | ||
| 13 | + private mainRenderingSettings: RenderingContextSettings = new RenderingContextSettings(true) | ||
| 14 | + private mainCanvasRenderingContext: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.mainRenderingSettings) | ||
| 15 | + private mainRenderingSettings2: RenderingContextSettings = new RenderingContextSettings(true) | ||
| 16 | + private mainCanvasRenderingContext2: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.mainRenderingSettings2) | ||
| 17 | + private animateItem: AnimationItem | null = null; | ||
| 18 | + private animateItem2: AnimationItem | null = null; | ||
| 19 | + private animateName: string = "refresh"; | ||
| 20 | + private animateName2: string = "refreshing"; | ||
| 21 | + @State private layoutHeight: number = 0; | ||
| 22 | + | ||
| 23 | + build() { | ||
| 24 | + Stack({ alignContent: Alignment.Center }) { | ||
| 25 | + Canvas(this.mainCanvasRenderingContext) | ||
| 26 | + .width(60) | ||
| 27 | + .height(60) | ||
| 28 | + .backgroundColor(Color.Transparent) | ||
| 29 | + .onReady(() => { | ||
| 30 | + // 可在此生命回调周期中加载动画,可以保证动画尺寸正确 | ||
| 31 | + //抗锯齿的设置 | ||
| 32 | + this.mainCanvasRenderingContext.imageSmoothingEnabled = true; | ||
| 33 | + this.mainCanvasRenderingContext.imageSmoothingQuality = 'medium' | ||
| 34 | + }) | ||
| 35 | + .onDisAppear(() => { | ||
| 36 | + lottie.destroy(this.animateName); | ||
| 37 | + }) | ||
| 38 | + .visibility(this.refreshBean.loadStatus === LoadStatus.PRELOAD ? Visibility.Visible : Visibility.Hidden) | ||
| 39 | + | ||
| 40 | + Canvas(this.mainCanvasRenderingContext2) | ||
| 41 | + .width(60) | ||
| 42 | + .height(60) | ||
| 43 | + .backgroundColor(Color.Transparent) | ||
| 44 | + .onReady(() => { | ||
| 45 | + // 可在此生命回调周期中加载动画,可以保证动画尺寸正确 | ||
| 46 | + //抗锯齿的设置 | ||
| 47 | + this.mainCanvasRenderingContext2.imageSmoothingEnabled = true; | ||
| 48 | + this.mainCanvasRenderingContext2.imageSmoothingQuality = 'medium' | ||
| 49 | + }) | ||
| 50 | + .onDisAppear(() => { | ||
| 51 | + lottie.destroy(this.animateName2); | ||
| 52 | + }) | ||
| 53 | + .visibility(this.refreshBean.loadStatus === LoadStatus.LOADING ? Visibility.Visible : Visibility.Hidden) | ||
| 54 | + | ||
| 55 | + Text('已更新至最新') | ||
| 56 | + .fontSize(17) | ||
| 57 | + .textAlign(TextAlign.Center) | ||
| 58 | + .fontColor('#bbbbbb') | ||
| 59 | + .visibility(this.refreshBean.loadStatus != LoadStatus.LOADED ? Visibility.Hidden : Visibility.Visible) | ||
| 60 | + | ||
| 61 | + } | ||
| 62 | + .clip(true) | ||
| 63 | + .width('100%') | ||
| 64 | + .height(this.layoutHeight) | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + animate1(offset: number) { | ||
| 68 | + if (this.animateItem == null) { | ||
| 69 | + this.animateItem = lottie.loadAnimation({ | ||
| 70 | + container: this.mainCanvasRenderingContext, | ||
| 71 | + renderer: 'canvas', // canvas 渲染模式 | ||
| 72 | + loop: 1, | ||
| 73 | + autoplay: true, | ||
| 74 | + name: this.animateName, | ||
| 75 | + path: "lottie/refresh_step1.json", // 路径加载动画只支持entry/src/main/ets 文件夹下的相对路径 | ||
| 76 | + }) | ||
| 77 | + } | ||
| 78 | + this.animateItem.goToAndStop(1) | ||
| 79 | + let total = CustomLayout.REFRESH_HEIGHT | ||
| 80 | + let progress = offset * 100 / total | ||
| 81 | + this.animateItem?.goToAndStop(this.getFramesByProgress(progress), true); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + animate2() { | ||
| 85 | + if (this.animateItem2 == null) { | ||
| 86 | + this.animateItem2 = lottie.loadAnimation({ | ||
| 87 | + container: this.mainCanvasRenderingContext2, | ||
| 88 | + renderer: 'canvas', // canvas 渲染模式 | ||
| 89 | + loop: 10, | ||
| 90 | + autoplay: true, | ||
| 91 | + name: this.animateName2, | ||
| 92 | + path: "lottie/refresh_step2.json", // 路径加载动画只支持entry/src/main/ets 文件夹下的相对路径 | ||
| 93 | + }) | ||
| 94 | + } | ||
| 95 | + // this.animateItem2.isLoaded | ||
| 96 | + // TODO 是否拦截重复触发 | ||
| 97 | + this.animateItem2.goToAndPlay(1) | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + getFramesByProgress(progress: number): number { | ||
| 101 | + if (this.animateItem == null) { | ||
| 102 | + return 1; | ||
| 103 | + } | ||
| 104 | + let progressTmp = progress | ||
| 105 | + let total = this.animateItem.totalFrames; | ||
| 106 | + let frame = Math.floor(total * progressTmp / 100); | ||
| 107 | + if (frame >= total - 1) { | ||
| 108 | + frame = total - 1 | ||
| 109 | + } | ||
| 110 | + return frame; | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + onOffsetChange() { | ||
| 114 | + if (!this.refreshBean.isVisible) { | ||
| 115 | + return | ||
| 116 | + } | ||
| 117 | + if (this.refreshBean.loadStatus === LoadStatus.PRELOAD) { | ||
| 118 | + // 下拉刷新 | ||
| 119 | + this.animate1(this.refreshBean.offset) | ||
| 120 | + } else if (this.refreshBean.loadStatus == LoadStatus.LOADING) { | ||
| 121 | + // 正在刷新 | ||
| 122 | + this.animate2() | ||
| 123 | + } else { | ||
| 124 | + // 刷新完成 | ||
| 125 | + lottie.destroy() | ||
| 126 | + } | ||
| 127 | + let maxH = CustomLayout.REFRESH_HEIGHT | ||
| 128 | + let tmpHeight = this.refreshBean.offset > maxH ? maxH : this.refreshBean.offset | ||
| 129 | + if (this.refreshBean.loadStatus === LoadStatus.LOADED) { | ||
| 130 | + if (tmpHeight <= 0) { | ||
| 131 | + setTimeout(() => { | ||
| 132 | + // 延时设置0,让“已更新到最新”展示 | ||
| 133 | + this.layoutHeight = 0 | ||
| 134 | + }, 1500) | ||
| 135 | + } | ||
| 136 | + } else { | ||
| 137 | + // 直接设置高度 | ||
| 138 | + this.layoutHeight = tmpHeight | ||
| 139 | + } | ||
| 140 | + } | ||
| 141 | +} |
| @@ -231,7 +231,7 @@ export struct EmptyComponent { | @@ -231,7 +231,7 @@ export struct EmptyComponent { | ||
| 231 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoSearchResult) { | 231 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoSearchResult) { |
| 232 | imageString = $r('app.media.icon_no_result') | 232 | imageString = $r('app.media.icon_no_result') |
| 233 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoNetwork) { | 233 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoNetwork) { |
| 234 | - imageString = $r('app.media.icon_no_net') | 234 | + imageString = $r('app.media.icon_no_net1') |
| 235 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_ContentFailed) { | 235 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_ContentFailed) { |
| 236 | imageString = $r('app.media.icon_no_content') | 236 | imageString = $r('app.media.icon_no_content') |
| 237 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoCreation) { | 237 | } else if (this.emptyType === WDViewDefaultType.WDViewDefaultType_NoCreation) { |
| @@ -3,6 +3,7 @@ import { touchMoveLoadMore, touchUpLoadMore } from './PullUpLoadMore'; | @@ -3,6 +3,7 @@ import { touchMoveLoadMore, touchUpLoadMore } from './PullUpLoadMore'; | ||
| 3 | import PageModel from '../viewmodel/PageModel'; | 3 | import PageModel from '../viewmodel/PageModel'; |
| 4 | import PageHelper from '../viewmodel/PageHelper'; | 4 | import PageHelper from '../viewmodel/PageHelper'; |
| 5 | import PageAdModel from '../viewmodel/PageAdvModel'; | 5 | import PageAdModel from '../viewmodel/PageAdvModel'; |
| 6 | +import { LoadStatus } from '../components/refresh/RefreshLayoutBean'; | ||
| 6 | 7 | ||
| 7 | export function listTouchEvent(pageModel: PageModel, pageAdvModel: PageAdModel, event: TouchEvent) { | 8 | export function listTouchEvent(pageModel: PageModel, pageAdvModel: PageAdModel, event: TouchEvent) { |
| 8 | switch (event.type) { | 9 | switch (event.type) { |
| @@ -46,7 +47,7 @@ export function listTouchEvent(pageModel: PageModel, pageAdvModel: PageAdModel, | @@ -46,7 +47,7 @@ export function listTouchEvent(pageModel: PageModel, pageAdvModel: PageAdModel, | ||
| 46 | export function touchMovePullRefresh(pageModel: PageModel, event: TouchEvent) { | 47 | export function touchMovePullRefresh(pageModel: PageModel, event: TouchEvent) { |
| 47 | if (pageModel.startIndex === 0) { | 48 | if (pageModel.startIndex === 0) { |
| 48 | pageModel.isPullRefreshOperation = true; | 49 | pageModel.isPullRefreshOperation = true; |
| 49 | - let height = vp2px(pageModel.pullDownRefreshHeight); | 50 | + let height = vp2px(Const.CUSTOM_REFRESH_DECIDE_HEIGHT); |
| 50 | pageModel.offsetY = event.touches[0].y - pageModel.downY; | 51 | pageModel.offsetY = event.touches[0].y - pageModel.downY; |
| 51 | // The sliding offset is greater than the pull-down refresh layout height, and the refresh condition is met. | 52 | // The sliding offset is greater than the pull-down refresh layout height, and the refresh condition is met. |
| 52 | if (pageModel.offsetY >= height) { | 53 | if (pageModel.offsetY >= height) { |
| @@ -98,12 +99,14 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | @@ -98,12 +99,14 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | ||
| 98 | pageModel.isCanRefresh = false; | 99 | pageModel.isCanRefresh = false; |
| 99 | pageModel.isRefreshing = false; | 100 | pageModel.isRefreshing = false; |
| 100 | pageModel.isVisiblePullDown = true; | 101 | pageModel.isVisiblePullDown = true; |
| 102 | + pageModel.load = LoadStatus.PRELOAD | ||
| 101 | break; | 103 | break; |
| 102 | case RefreshState.Release: | 104 | case RefreshState.Release: |
| 103 | pageModel.pullDownRefreshText = $r('app.string.release_refresh_text'); | 105 | pageModel.pullDownRefreshText = $r('app.string.release_refresh_text'); |
| 104 | pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_refresh'); | 106 | pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_refresh'); |
| 105 | pageModel.isCanRefresh = true; | 107 | pageModel.isCanRefresh = true; |
| 106 | pageModel.isRefreshing = false; | 108 | pageModel.isRefreshing = false; |
| 109 | + pageModel.load = LoadStatus.PRELOAD | ||
| 107 | break; | 110 | break; |
| 108 | case RefreshState.Refreshing: | 111 | case RefreshState.Refreshing: |
| 109 | pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight); | 112 | pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight); |
| @@ -111,18 +114,21 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | @@ -111,18 +114,21 @@ export function pullRefreshState(pageModel: PageModel, state: number) { | ||
| 111 | pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_load'); | 114 | pageModel.pullDownRefreshImage = $r('app.media.ic_pull_up_load'); |
| 112 | pageModel.isCanRefresh = true; | 115 | pageModel.isCanRefresh = true; |
| 113 | pageModel.isRefreshing = true; | 116 | pageModel.isRefreshing = true; |
| 117 | + pageModel.load = LoadStatus.LOADING | ||
| 114 | break; | 118 | break; |
| 115 | case RefreshState.Success: | 119 | case RefreshState.Success: |
| 116 | pageModel.pullDownRefreshText = $r('app.string.refresh_success_text'); | 120 | pageModel.pullDownRefreshText = $r('app.string.refresh_success_text'); |
| 117 | pageModel.pullDownRefreshImage = $r('app.media.ic_succeed_refresh'); | 121 | pageModel.pullDownRefreshImage = $r('app.media.ic_succeed_refresh'); |
| 118 | pageModel.isCanRefresh = true; | 122 | pageModel.isCanRefresh = true; |
| 119 | pageModel.isRefreshing = true; | 123 | pageModel.isRefreshing = true; |
| 124 | + pageModel.load = LoadStatus.LOADED | ||
| 120 | break; | 125 | break; |
| 121 | case RefreshState.Fail: | 126 | case RefreshState.Fail: |
| 122 | pageModel.pullDownRefreshText = $r('app.string.refresh_fail_text'); | 127 | pageModel.pullDownRefreshText = $r('app.string.refresh_fail_text'); |
| 123 | pageModel.pullDownRefreshImage = $r('app.media.ic_fail_refresh'); | 128 | pageModel.pullDownRefreshImage = $r('app.media.ic_fail_refresh'); |
| 124 | pageModel.isCanRefresh = true; | 129 | pageModel.isCanRefresh = true; |
| 125 | pageModel.isRefreshing = true; | 130 | pageModel.isRefreshing = true; |
| 131 | + pageModel.load = LoadStatus.LOADED | ||
| 126 | break; | 132 | break; |
| 127 | default: | 133 | default: |
| 128 | break; | 134 | break; |
| @@ -36,6 +36,10 @@ export class RefreshConstants { | @@ -36,6 +36,10 @@ export class RefreshConstants { | ||
| 36 | */ | 36 | */ |
| 37 | static readonly CUSTOM_LAYOUT_HEIGHT: number = 80; | 37 | static readonly CUSTOM_LAYOUT_HEIGHT: number = 80; |
| 38 | /** | 38 | /** |
| 39 | + * 下拉刷新,判定距离 | ||
| 40 | + */ | ||
| 41 | + static readonly CUSTOM_REFRESH_DECIDE_HEIGHT: number = 20; | ||
| 42 | + /** | ||
| 39 | * Full the width. | 43 | * Full the width. |
| 40 | */ | 44 | */ |
| 41 | static readonly FULL_WIDTH: string = '100%'; | 45 | static readonly FULL_WIDTH: string = '100%'; |
| @@ -6,6 +6,7 @@ import { PageUIReqBean } from '../components/page/bean/PageUIReqBean'; | @@ -6,6 +6,7 @@ import { PageUIReqBean } from '../components/page/bean/PageUIReqBean'; | ||
| 6 | import { GroupInfoDTO, PageInfoDTO } from 'wdBean/src/main/ets/bean/navigation/PageInfoDTO'; | 6 | import { GroupInfoDTO, PageInfoDTO } from 'wdBean/src/main/ets/bean/navigation/PageInfoDTO'; |
| 7 | import { AdvRuleBean, CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean'; | 7 | import { AdvRuleBean, CompAdvBean } from 'wdBean/src/main/ets/bean/adv/AdvsRuleBean'; |
| 8 | import { WDViewDefaultType } from '../components/view/EmptyComponent'; | 8 | import { WDViewDefaultType } from '../components/view/EmptyComponent'; |
| 9 | +import { LoadStatus } from '../components/refresh/RefreshLayoutBean'; | ||
| 9 | 10 | ||
| 10 | /** | 11 | /** |
| 11 | * 页面下拉刷新、上拉加载数据bean。 | 12 | * 页面下拉刷新、上拉加载数据bean。 |
| @@ -33,6 +34,7 @@ export default class PageModel { | @@ -33,6 +34,7 @@ export default class PageModel { | ||
| 33 | pullDownRefreshImage: Resource = $r('app.media.ic_pull_down_refresh'); | 34 | pullDownRefreshImage: Resource = $r('app.media.ic_pull_down_refresh'); |
| 34 | pullDownRefreshHeight: number = Const.CUSTOM_LAYOUT_HEIGHT; | 35 | pullDownRefreshHeight: number = Const.CUSTOM_LAYOUT_HEIGHT; |
| 35 | isVisiblePullDown: boolean = false; | 36 | isVisiblePullDown: boolean = false; |
| 37 | + load: LoadStatus = LoadStatus.IDLE; | ||
| 36 | pullUpLoadText: Resource = $r('app.string.pull_up_load_text'); | 38 | pullUpLoadText: Resource = $r('app.string.pull_up_load_text'); |
| 37 | pullUpLoadImage: Resource = $r('app.media.ic_pull_up_load'); | 39 | pullUpLoadImage: Resource = $r('app.media.ic_pull_up_load'); |
| 38 | pullUpLoadHeight: number = Const.CUSTOM_LAYOUT_HEIGHT; | 40 | pullUpLoadHeight: number = Const.CUSTOM_LAYOUT_HEIGHT; |
| 1 | export { add } from "./src/main/ets/utils/Calc" | 1 | export { add } from "./src/main/ets/utils/Calc" |
| 2 | 2 | ||
| 3 | -export { HWLocationUtils } from './src/main/ets/location/HWLocationUtils' | ||
| 3 | +export { HWLocationUtils } from './src/main/ets/location/HWLocationUtils' | ||
| 4 | + | ||
| 5 | +export { WDPushNotificationManager } from "./src/main/ets/notification/WDPushNotificationManager" |
sight_harmony/features/wdHwAbility/src/main/ets/notification/WDPushNotificationManager.ets
0 → 100644
| 1 | + | ||
| 2 | +import { pushCommon, pushService } from '@kit.PushKit'; | ||
| 3 | +import { AAID } from '@kit.PushKit'; | ||
| 4 | +import { AccountManagerUtils, Logger, SPHelper, UserDataLocal } from 'wdKit/Index'; | ||
| 5 | +import { BusinessError } from '@kit.BasicServicesKit'; | ||
| 6 | +import notificationManager from '@ohos.notificationManager'; | ||
| 7 | +import { common, Want } from '@kit.AbilityKit'; | ||
| 8 | + | ||
| 9 | +const TAG = "NotificationManager" | ||
| 10 | + | ||
| 11 | +/* | ||
| 12 | + * 远程推送通知管理类 | ||
| 13 | + * Push Kit: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-introduction-0000001726287974 | ||
| 14 | + * Notification Kit: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/notification-overview-0000001822162741 | ||
| 15 | + * */ | ||
| 16 | +export class WDPushNotificationManager { | ||
| 17 | + | ||
| 18 | + private static instance: WDPushNotificationManager | ||
| 19 | + static getInstance() : WDPushNotificationManager { | ||
| 20 | + if (!WDPushNotificationManager.instance) { | ||
| 21 | + WDPushNotificationManager.instance = new WDPushNotificationManager() | ||
| 22 | + } | ||
| 23 | + return WDPushNotificationManager.instance | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + async requestEnableNotifications(context: common.UIAbilityContext) : Promise<boolean> { | ||
| 27 | + let enabled = await notificationManager.isNotificationEnabled() | ||
| 28 | + if (!enabled) { | ||
| 29 | + try { | ||
| 30 | + await notificationManager.requestEnableNotification(context) | ||
| 31 | + enabled = true | ||
| 32 | + } catch (err) { | ||
| 33 | + Logger.error(TAG, "请求通知权限报错: " + JSON.stringify(err)) | ||
| 34 | + let error = err as BusinessError | ||
| 35 | + if (error.code == 1600004) { | ||
| 36 | + Logger.error(TAG, "请求通知权限 - 用户已拒绝") | ||
| 37 | + } | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | + Logger.info(TAG, "推送 enabled " + enabled) | ||
| 41 | + return enabled | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + async fetchTokenAndBindProfileId() { | ||
| 45 | + try { | ||
| 46 | + const pushToken: string = await pushService.getToken(); | ||
| 47 | + Logger.info(TAG, "获取推送token: " + pushToken) | ||
| 48 | + | ||
| 49 | + //TODO: pushToken 上传至服务器 | ||
| 50 | + SPHelper.default.save("devicePushToken", pushToken) | ||
| 51 | + | ||
| 52 | + if (AccountManagerUtils.isLoginSync()) { | ||
| 53 | + this.bindUserProfileId(UserDataLocal.getUserId()) | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + } catch (err) { | ||
| 57 | + Logger.error(TAG, "获取推送token失败: " + JSON.stringify(err)) | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + // 禁止推送 | ||
| 62 | + stopPush() { | ||
| 63 | + pushService.deleteToken() | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + /// 应用匿名标识符 | ||
| 67 | + async getAAID() { | ||
| 68 | + let aaid: string = "" | ||
| 69 | + try { | ||
| 70 | + aaid = await AAID.getAAID(); | ||
| 71 | + Logger.info(TAG, "获取应用匿名标识符AAID: " + aaid) | ||
| 72 | + } catch (err) { | ||
| 73 | + Logger.error(TAG, "获取应用匿名标识符AAID失败: " + JSON.stringify(err)) | ||
| 74 | + } | ||
| 75 | + return aaid | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + // TODO: 登录时调用 | ||
| 79 | + bindUserProfileId(profileId: string) { | ||
| 80 | + pushService.bindAppProfileId(pushCommon.AppProfileType.PROFILE_TYPE_APPLICATION_ACCOUNT, profileId).then(() => { | ||
| 81 | + Logger.info(TAG, "推送绑定profileId 成功: " + profileId) | ||
| 82 | + }).catch((err: BusinessError) => { | ||
| 83 | + Logger.error(TAG, "推送绑定profileId失败: " + profileId + " " + JSON.stringify(err)) | ||
| 84 | + }); | ||
| 85 | + } | ||
| 86 | + unbindUserProfileId(profileId: string) { | ||
| 87 | + pushService.unbindAppProfileId(profileId).then(() => { | ||
| 88 | + Logger.info(TAG, "推送解绑profileId 成功: " + profileId) | ||
| 89 | + }).catch((err: BusinessError) => { | ||
| 90 | + Logger.error(TAG, "推送解绑profileId失败: " + profileId + " " + JSON.stringify(err)) | ||
| 91 | + }); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + sendLocalNotification() { | ||
| 95 | + let notificationRequest: notificationManager.NotificationRequest = { | ||
| 96 | + id: 1, | ||
| 97 | + content: { | ||
| 98 | + notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, | ||
| 99 | + normal: { | ||
| 100 | + title: "test_title", | ||
| 101 | + text: "test_text", | ||
| 102 | + additionalText: "test_additionalText" | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | + }; | ||
| 106 | + notificationManager.publish(notificationRequest).then(() => { | ||
| 107 | + console.info("publish success"); | ||
| 108 | + }).catch((err: BusinessError) => { | ||
| 109 | + console.error(`publish fail: ${JSON.stringify(err)}`); | ||
| 110 | + }); | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + setBadgeNumber(number: number) : Promise<void> { | ||
| 114 | + return notificationManager.setBadgeNumber(number) | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + // 接收推送数据,包括启动和二次点击拉起 | ||
| 118 | + // 参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-dev-0000001727885258 | ||
| 119 | + onWant(want: Want) { | ||
| 120 | + Logger.info(TAG, "接收到推送?: " + JSON.stringify(want.parameters)) | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | +} |
| 1 | -import { Logger, EmitterEventId, EmitterUtils } from 'wdKit' | 1 | +import { Logger, EmitterEventId, EmitterUtils, DateTimeUtils } from 'wdKit' |
| 2 | import { CustomProtocolDialog } from './CustomProtocolDialog' | 2 | import { CustomProtocolDialog } from './CustomProtocolDialog' |
| 3 | import router from '@ohos.router' | 3 | import router from '@ohos.router' |
| 4 | import { LoginViewModel } from './LoginViewModel' | 4 | import { LoginViewModel } from './LoginViewModel' |
| @@ -45,6 +45,7 @@ struct LoginPage { | @@ -45,6 +45,7 @@ struct LoginPage { | ||
| 45 | @State checkCodePage: boolean = true //判断是否是验证码页面 默认验证码登录 | 45 | @State checkCodePage: boolean = true //判断是否是验证码页面 默认验证码登录 |
| 46 | @State passwordSwitch: boolean = true //密码显示 | 46 | @State passwordSwitch: boolean = true //密码显示 |
| 47 | // @State isPasswordSubmit: boolean = false //账户密码状态 是否出发登录 | 47 | // @State isPasswordSubmit: boolean = false //账户密码状态 是否出发登录 |
| 48 | + lastTime: number = 0 | ||
| 48 | 49 | ||
| 49 | dialogController: CustomDialogController = new CustomDialogController({ | 50 | dialogController: CustomDialogController = new CustomDialogController({ |
| 50 | builder: CustomProtocolDialog({ | 51 | builder: CustomProtocolDialog({ |
| @@ -136,7 +137,12 @@ struct LoginPage { | @@ -136,7 +137,12 @@ struct LoginPage { | ||
| 136 | if (!this.isSubmit) { | 137 | if (!this.isSubmit) { |
| 137 | return | 138 | return |
| 138 | } | 139 | } |
| 139 | - this.loginSubmit() | 140 | + let currentTime = DateTimeUtils.getTimeStamp() |
| 141 | + if (currentTime - this.lastTime > 500) { | ||
| 142 | + this.lastTime = currentTime | ||
| 143 | + this.loginSubmit() | ||
| 144 | + } | ||
| 145 | + | ||
| 140 | 146 | ||
| 141 | }) | 147 | }) |
| 142 | }.padding({ left: 25, right: 25 }).width('100%') | 148 | }.padding({ left: 25, right: 25 }).width('100%') |
| @@ -3,6 +3,7 @@ import { Params } from 'wdBean/Index' | @@ -3,6 +3,7 @@ import { Params } from 'wdBean/Index' | ||
| 3 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' | 3 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' |
| 4 | import HuaweiAuth from '../../utils/HuaweiAuth' | 4 | import HuaweiAuth from '../../utils/HuaweiAuth' |
| 5 | import { BusinessError } from '@kit.BasicServicesKit' | 5 | import { BusinessError } from '@kit.BasicServicesKit' |
| 6 | +import { ToastUtils } from 'wdKit/Index' | ||
| 6 | 7 | ||
| 7 | @Entry | 8 | @Entry |
| 8 | @Component | 9 | @Component |
| @@ -44,8 +45,13 @@ struct OneKeyLoginPage { | @@ -44,8 +45,13 @@ struct OneKeyLoginPage { | ||
| 44 | return | 45 | return |
| 45 | } | 46 | } |
| 46 | HuaweiAuth.sharedInstance().oneKeyLogin().then((authorizeCode) => { | 47 | HuaweiAuth.sharedInstance().oneKeyLogin().then((authorizeCode) => { |
| 47 | - | ||
| 48 | //TODO: 调用服务端接口登录 | 48 | //TODO: 调用服务端接口登录 |
| 49 | + | ||
| 50 | + ToastUtils.shortToast("获取到授权code: " + authorizeCode + ",由于需要后台接口支持,暂时先跳转其他登录方式") | ||
| 51 | + setTimeout(() => { | ||
| 52 | + router.replaceUrl({url: WDRouterPage.loginPage.url()}) | ||
| 53 | + }, 3000) | ||
| 54 | + | ||
| 49 | }).catch((error: BusinessError) => { | 55 | }).catch((error: BusinessError) => { |
| 50 | 56 | ||
| 51 | }) | 57 | }) |
| @@ -9,7 +9,7 @@ const TAG = "HuaweiOneKeyAuth" | @@ -9,7 +9,7 @@ const TAG = "HuaweiOneKeyAuth" | ||
| 9 | export default class HuaweiAuth { | 9 | export default class HuaweiAuth { |
| 10 | 10 | ||
| 11 | // 是否开启 | 11 | // 是否开启 |
| 12 | - static enable = false | 12 | + static enable = true |
| 13 | // 匿名手机号 | 13 | // 匿名手机号 |
| 14 | private _anonymousPhone?: string | 14 | private _anonymousPhone?: string |
| 15 | get anonymousPhone() { | 15 | get anonymousPhone() { |
| @@ -15,12 +15,12 @@ enum LogLevel { | @@ -15,12 +15,12 @@ enum LogLevel { | ||
| 15 | 15 | ||
| 16 | /** | 16 | /** |
| 17 | * Common log for all features. | 17 | * Common log for all features. |
| 18 | - * | 18 | + * @deprecated 弃用 |
| 19 | * @param {string} prefix Identifies the log tag. | 19 | * @param {string} prefix Identifies the log tag. |
| 20 | */ | 20 | */ |
| 21 | export class Logger { | 21 | export class Logger { |
| 22 | private static domain: number = 0xFF00; | 22 | private static domain: number = 0xFF00; |
| 23 | - private static prefix: string = 'MiguVideoApp'; | 23 | + private static prefix: string = 'SightApp'; |
| 24 | private static format: string = `%{public}s, %{public}s`; | 24 | private static format: string = `%{public}s, %{public}s`; |
| 25 | 25 | ||
| 26 | /** | 26 | /** |
| @@ -29,7 +29,7 @@ export class Logger { | @@ -29,7 +29,7 @@ export class Logger { | ||
| 29 | * @param Prefix Identifies the log tag. | 29 | * @param Prefix Identifies the log tag. |
| 30 | * @param domain Domain Indicates the service domain, which is a hexadecimal integer ranging from 0x0 to 0xFFFFF. | 30 | * @param domain Domain Indicates the service domain, which is a hexadecimal integer ranging from 0x0 to 0xFFFFF. |
| 31 | */ | 31 | */ |
| 32 | - constructor(prefix: string = 'MiguVideoApp', domain: number = 0xFF00) { | 32 | + constructor(prefix: string = 'SightApp', domain: number = 0xFF00) { |
| 33 | Logger.prefix = prefix; | 33 | Logger.prefix = prefix; |
| 34 | Logger.domain = domain; | 34 | Logger.domain = domain; |
| 35 | } | 35 | } |
| @@ -59,4 +59,4 @@ export class Logger { | @@ -59,4 +59,4 @@ export class Logger { | ||
| 59 | } | 59 | } |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | -export default new Logger('MiguVideoApp', 0xFF00) | ||
| 62 | +export default new Logger('SightApp', 0xFF00) |
sight_harmony/features/wdTracking/.gitignore
0 → 100644
sight_harmony/features/wdTracking/Index.ets
0 → 100644
| 1 | +export { TrackingModule } from "./src/main/ets/TrackingModule" |
| 1 | +{ | ||
| 2 | + "apiType": "stageMode", | ||
| 3 | + "buildOption": { | ||
| 4 | + }, | ||
| 5 | + "buildOptionSet": [ | ||
| 6 | + { | ||
| 7 | + "name": "release", | ||
| 8 | + "arkOptions": { | ||
| 9 | + "obfuscation": { | ||
| 10 | + "ruleOptions": { | ||
| 11 | + "enable": true, | ||
| 12 | + "files": [ | ||
| 13 | + "./obfuscation-rules.txt" | ||
| 14 | + ] | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | + }, | ||
| 18 | + }, | ||
| 19 | + ], | ||
| 20 | + "targets": [ | ||
| 21 | + { | ||
| 22 | + "name": "default" | ||
| 23 | + } | ||
| 24 | + ] | ||
| 25 | +} |
| 1 | +# Define project specific obfuscation rules here. | ||
| 2 | +# You can include the obfuscation configuration files in the current module's build-profile.json5. | ||
| 3 | +# | ||
| 4 | +# For more details, see | ||
| 5 | +# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md | ||
| 6 | + | ||
| 7 | +# Obfuscation options: | ||
| 8 | +# -disable-obfuscation: disable all obfuscations | ||
| 9 | +# -enable-property-obfuscation: obfuscate the property names | ||
| 10 | +# -enable-toplevel-obfuscation: obfuscate the names in the global scope | ||
| 11 | +# -compact: remove unnecessary blank spaces and all line feeds | ||
| 12 | +# -remove-log: remove all console.* statements | ||
| 13 | +# -print-namecache: print the name cache that contains the mapping from the old names to new names | ||
| 14 | +# -apply-namecache: reuse the given cache file | ||
| 15 | + | ||
| 16 | +# Keep options: | ||
| 17 | +# -keep-property-name: specifies property names that you want to keep | ||
| 18 | +# -keep-global-name: specifies names that you want to keep in the global scope |
| 1 | +{ | ||
| 2 | + "meta": { | ||
| 3 | + "stableOrder": true | ||
| 4 | + }, | ||
| 5 | + "lockfileVersion": 3, | ||
| 6 | + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", | ||
| 7 | + "specifiers": { | ||
| 8 | + "@ohos/axios@^2.1.1": "@ohos/axios@2.2.0", | ||
| 9 | + "@sensorsdata/analytics@^0.0.2": "@sensorsdata/analytics@0.0.2", | ||
| 10 | + "@umeng/analytics@^1.0.19": "@umeng/analytics@1.0.19", | ||
| 11 | + "@umeng/common@^1.0.21": "@umeng/common@1.0.21", | ||
| 12 | + "libcommon.so@../../oh_modules/.ohpm/@umeng+common@1.0.21/oh_modules/@umeng/common/src/main/cpp/types/libcommon": "libcommon.so@../../oh_modules/.ohpm/@umeng+common@1.0.21/oh_modules/@umeng/common/src/main/cpp/types/libcommon", | ||
| 13 | + "wdBean@../wdBean": "wdBean@../wdBean", | ||
| 14 | + "wdConstant@../../commons/wdConstant": "wdConstant@../../commons/wdConstant", | ||
| 15 | + "wdHwAbility@../wdHwAbility": "wdHwAbility@../wdHwAbility", | ||
| 16 | + "wdJsBridge@../../commons/wdJsBridge": "wdJsBridge@../../commons/wdJsBridge", | ||
| 17 | + "wdKit@../../commons/wdKit": "wdKit@../../commons/wdKit", | ||
| 18 | + "wdLogin@../wdLogin": "wdLogin@../wdLogin", | ||
| 19 | + "wdNetwork@../../commons/wdNetwork": "wdNetwork@../../commons/wdNetwork", | ||
| 20 | + "wdRouter@../../commons/wdRouter": "wdRouter@../../commons/wdRouter", | ||
| 21 | + "wdWebComponent@../../commons/wdWebComponent": "wdWebComponent@../../commons/wdWebComponent" | ||
| 22 | + }, | ||
| 23 | + "packages": { | ||
| 24 | + "@ohos/axios@2.2.0": { | ||
| 25 | + "name": "@ohos/axios", | ||
| 26 | + "integrity": "sha512-v1QBWk6DfcN8wUW3D0ieFbHTR1taSI5cOgxp5l6B5cegXuNYhSc8ggKlAIXe6h/14LsfM+NW0ZGfSXcNEIM5yA==", | ||
| 27 | + "resolved": "https://repo.harmonyos.com/ohpm/@ohos/axios/-/axios-2.2.0.har", | ||
| 28 | + "registryType": "ohpm" | ||
| 29 | + }, | ||
| 30 | + "@sensorsdata/analytics@0.0.2": { | ||
| 31 | + "name": "@sensorsdata/analytics", | ||
| 32 | + "integrity": "sha512-SQCEmOw8ftGJmKtPl/1qUczZqu/yoQ4F2QHpK2Mayk+XctvNDSHn4QWengHj/pg36AopvuVfa0i6KR9c4KiIuQ==", | ||
| 33 | + "resolved": "https://ohpm.openharmony.cn/ohpm/@sensorsdata/analytics/-/analytics-0.0.2.har", | ||
| 34 | + "registryType": "ohpm" | ||
| 35 | + }, | ||
| 36 | + "@umeng/analytics@1.0.19": { | ||
| 37 | + "name": "@umeng/analytics", | ||
| 38 | + "integrity": "sha512-0m9z5l8to+POjDl9UkCQC8s4P+e2E1OILwUglC7ME4QwqfH44e59GLJtQdwF0h6kwpsy3YBft4SoWK8MYbuP7g==", | ||
| 39 | + "resolved": "https://ohpm.openharmony.cn/ohpm/@umeng/analytics/-/analytics-1.0.19.har", | ||
| 40 | + "registryType": "ohpm" | ||
| 41 | + }, | ||
| 42 | + "@umeng/common@1.0.21": { | ||
| 43 | + "name": "@umeng/common", | ||
| 44 | + "integrity": "sha512-EbXsd4OoRisTQf5egNY/+z1D2bvrYw9VwC2xu3EJA9TiDPSbnaJZ5+yltA/Se6yZ4oCcFvq6e5/AAfPuumunbw==", | ||
| 45 | + "resolved": "https://ohpm.openharmony.cn/ohpm/@umeng/common/-/common-1.0.21.har", | ||
| 46 | + "registryType": "ohpm", | ||
| 47 | + "dependencies": { | ||
| 48 | + "libcommon.so": "./src/main/cpp/types/libcommon" | ||
| 49 | + } | ||
| 50 | + }, | ||
| 51 | + "libcommon.so@../../oh_modules/.ohpm/@umeng+common@1.0.21/oh_modules/@umeng/common/src/main/cpp/types/libcommon": { | ||
| 52 | + "name": "libcommon.so", | ||
| 53 | + "resolved": "../../oh_modules/.ohpm/@umeng+common@1.0.21/oh_modules/@umeng/common/src/main/cpp/types/libcommon", | ||
| 54 | + "registryType": "local" | ||
| 55 | + }, | ||
| 56 | + "wdBean@../wdBean": { | ||
| 57 | + "name": "wdbean", | ||
| 58 | + "resolved": "../wdBean", | ||
| 59 | + "registryType": "local" | ||
| 60 | + }, | ||
| 61 | + "wdConstant@../../commons/wdConstant": { | ||
| 62 | + "name": "wdconstant", | ||
| 63 | + "resolved": "../../commons/wdConstant", | ||
| 64 | + "registryType": "local" | ||
| 65 | + }, | ||
| 66 | + "wdHwAbility@../wdHwAbility": { | ||
| 67 | + "name": "wdhwability", | ||
| 68 | + "resolved": "../wdHwAbility", | ||
| 69 | + "registryType": "local", | ||
| 70 | + "dependencies": { | ||
| 71 | + "wdConstant": "file:../../commons/wdConstant", | ||
| 72 | + "wdLogin": "file:../../features/wdLogin", | ||
| 73 | + "wdKit": "file:../../commons/wdKit", | ||
| 74 | + "wdBean": "file:../../features/wdBean", | ||
| 75 | + "wdNetwork": "file:../../commons/wdNetwork" | ||
| 76 | + }, | ||
| 77 | + "packageType": "InterfaceHar" | ||
| 78 | + }, | ||
| 79 | + "wdJsBridge@../../commons/wdJsBridge": { | ||
| 80 | + "name": "wdjsbridge", | ||
| 81 | + "resolved": "../../commons/wdJsBridge", | ||
| 82 | + "registryType": "local" | ||
| 83 | + }, | ||
| 84 | + "wdKit@../../commons/wdKit": { | ||
| 85 | + "name": "wdkit", | ||
| 86 | + "resolved": "../../commons/wdKit", | ||
| 87 | + "registryType": "local", | ||
| 88 | + "dependencies": { | ||
| 89 | + "@umeng/common": "^1.0.21", | ||
| 90 | + "@umeng/analytics": "^1.0.19" | ||
| 91 | + } | ||
| 92 | + }, | ||
| 93 | + "wdLogin@../wdLogin": { | ||
| 94 | + "name": "wdlogin", | ||
| 95 | + "resolved": "../wdLogin", | ||
| 96 | + "registryType": "local", | ||
| 97 | + "dependencies": { | ||
| 98 | + "wdConstant": "file:../../commons/wdConstant", | ||
| 99 | + "wdKit": "file:../../commons/wdKit", | ||
| 100 | + "wdWebComponent": "file:../../commons/wdWebComponent", | ||
| 101 | + "wdBean": "file:../../features/wdBean", | ||
| 102 | + "wdRouter": "file:../../commons/wdRouter", | ||
| 103 | + "wdNetwork": "file:../../commons/wdNetwork" | ||
| 104 | + } | ||
| 105 | + }, | ||
| 106 | + "wdNetwork@../../commons/wdNetwork": { | ||
| 107 | + "name": "wdnetwork", | ||
| 108 | + "resolved": "../../commons/wdNetwork", | ||
| 109 | + "registryType": "local", | ||
| 110 | + "dependencies": { | ||
| 111 | + "wdConstant": "file:../wdConstant", | ||
| 112 | + "wdKit": "file:../wdKit", | ||
| 113 | + "@ohos/axios": "^2.1.1" | ||
| 114 | + } | ||
| 115 | + }, | ||
| 116 | + "wdRouter@../../commons/wdRouter": { | ||
| 117 | + "name": "wdrouter", | ||
| 118 | + "resolved": "../../commons/wdRouter", | ||
| 119 | + "registryType": "local", | ||
| 120 | + "dependencies": { | ||
| 121 | + "wdKit": "file:../wdKit", | ||
| 122 | + "wdBean": "file:../../features/wdBean", | ||
| 123 | + "wdNetwork": "file:../../commons/wdNetwork", | ||
| 124 | + "wdConstant": "file:../../commons/wdConstant" | ||
| 125 | + } | ||
| 126 | + }, | ||
| 127 | + "wdWebComponent@../../commons/wdWebComponent": { | ||
| 128 | + "name": "wdwebcomponent", | ||
| 129 | + "resolved": "../../commons/wdWebComponent", | ||
| 130 | + "registryType": "local", | ||
| 131 | + "dependencies": { | ||
| 132 | + "wdConstant": "file:../wdConstant", | ||
| 133 | + "wdKit": "file:../wdKit", | ||
| 134 | + "wdJsBridge": "file:../wdJsBridge", | ||
| 135 | + "wdBean": "file:../../features/wdBean", | ||
| 136 | + "wdRouter": "file:../wdRouter", | ||
| 137 | + "wdNetwork": "file:../wdNetwork" | ||
| 138 | + } | ||
| 139 | + } | ||
| 140 | + } | ||
| 141 | +} |
| 1 | +{ | ||
| 2 | + "name": "wdtracking", | ||
| 3 | + "version": "1.0.0", | ||
| 4 | + "description": "Please describe the basic information.", | ||
| 5 | + "main": "Index.ets", | ||
| 6 | + "author": "", | ||
| 7 | + "license": "Apache-2.0", | ||
| 8 | + "packageType": "InterfaceHar", | ||
| 9 | + "dependencies": { | ||
| 10 | + "@sensorsdata/analytics": "^0.0.2", | ||
| 11 | + "wdKit": "file:../../commons/wdKit", | ||
| 12 | + "wdBean": "file:../../features/wdBean", | ||
| 13 | + "wdNetwork": "file:../../commons/wdNetwork", | ||
| 14 | +// "wdHwAbility": "file:../../features/wdHwAbility", | ||
| 15 | + "wdConstant": "file:../../commons/wdConstant" | ||
| 16 | + } | ||
| 17 | +} |
| 1 | +import sensors from '@sensorsdata/analytics'; | ||
| 2 | +import { common } from '@kit.AbilityKit'; | ||
| 3 | +import { HostEnum, HostManager } from 'wdNetwork/Index'; | ||
| 4 | + | ||
| 5 | +/// 统计埋点模块 | ||
| 6 | +export class TrackingModule { | ||
| 7 | + | ||
| 8 | + private static _init = false | ||
| 9 | + static getHasInit() { | ||
| 10 | + return TrackingModule._init; | ||
| 11 | + } | ||
| 12 | + | ||
| 13 | + /// 初始化 | ||
| 14 | + static startup(context: common.UIAbilityContext) { | ||
| 15 | + | ||
| 16 | + // const isOnlineEnv = HostManager.getHost() === HostEnum.HOST_PRODUCT | ||
| 17 | + // | ||
| 18 | + // sensors.init({ | ||
| 19 | + // // 服务器接收地址 | ||
| 20 | + // server_url: isOnlineEnv ? '正式地址' : "测试地址", | ||
| 21 | + // // Ability 上下文 | ||
| 22 | + // context: context, | ||
| 23 | + // // 是否显示日志 | ||
| 24 | + // show_log: true, | ||
| 25 | + // // 是否开启采集位置信息,需要 app 授权,默认 false | ||
| 26 | + // enable_track_location: true, | ||
| 27 | + // // 是否开启批量发送,默认 false | ||
| 28 | + // batch_send: true, | ||
| 29 | + // // 数据发送超时时间 | ||
| 30 | + // datasend_timeout: 10000, | ||
| 31 | + // // 开启 App 打通 H5 | ||
| 32 | + // app_js_bridge: false | ||
| 33 | + // }); | ||
| 34 | + // TrackingModule._init = true | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + | ||
| 38 | +} |
| 1 | +import { SpConstants } from 'wdConstant/Index'; | ||
| 2 | +import { DeviceUtil, SPHelper, StringUtils } from 'wdKit/Index'; | ||
| 3 | +import { HostEnum, HostManager } from 'wdNetwork/Index'; | ||
| 4 | + | ||
| 5 | +export type ParamType = Record<string, string | number | boolean | Array<string>> | ||
| 6 | + | ||
| 7 | +export class PublicParams { | ||
| 8 | + | ||
| 9 | + getPublicParams() : Promise<ParamType> { | ||
| 10 | + return new Promise((resolve) => { | ||
| 11 | + | ||
| 12 | + let pub: ParamType = { | ||
| 13 | + "userName":"", | ||
| 14 | + "pdUseId":"", | ||
| 15 | + "creatorId":"", | ||
| 16 | + "pdCnsBirthday":"", | ||
| 17 | + "city": PublicParams.getLocationCity(), | ||
| 18 | + "sex":"", | ||
| 19 | + "isSign":"0", | ||
| 20 | + "environment": PublicParams.getEnv(), | ||
| 21 | + "os": "harmonyos", | ||
| 22 | + "actionTime": new Date().getTime() * 0.001, | ||
| 23 | + "channel": "rmrb_china_0000", | ||
| 24 | + "version": PublicParams.getVersionName(), | ||
| 25 | + "deviceId": DeviceUtil.clientId(), | ||
| 26 | + "model":"", | ||
| 27 | + "mpaasId": PublicParams.getMpaasId(), | ||
| 28 | + } | ||
| 29 | + resolve(pub) | ||
| 30 | + }) | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + private static getEnv() { | ||
| 34 | + switch (HostManager.getHost()) { | ||
| 35 | + case HostEnum.HOST_UAT: | ||
| 36 | + return "uat" | ||
| 37 | + case HostEnum.HOST_SIT: | ||
| 38 | + return "sit" | ||
| 39 | + case HostEnum.HOST_PRODUCT: | ||
| 40 | + return "prod" | ||
| 41 | + case HostEnum.HOST_DEV: | ||
| 42 | + return "dev" | ||
| 43 | + default: | ||
| 44 | + return "prod" | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + private static getLocationCity() { | ||
| 49 | + let cityName = SPHelper.default.getSync(SpConstants.LOCATION_CITY_NAME, '') as string | ||
| 50 | + if (StringUtils.isNotEmpty(cityName)) { | ||
| 51 | + return encodeURI(cityName) | ||
| 52 | + } | ||
| 53 | + return "" | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + private static getBuildVersion() { | ||
| 57 | + // TODO | ||
| 58 | + return '202401242103'; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + private static getVersionCode() { | ||
| 62 | + // TODO | ||
| 63 | + return '10000'; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + private static getVersionName() { | ||
| 67 | + // TODO 读取配置 | ||
| 68 | + return '1.0.0'; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + private static getMpaasId() { | ||
| 72 | + // TODO | ||
| 73 | + return 'alsjdflajxaljdlfjaldjfa'; | ||
| 74 | + } | ||
| 75 | +} |
| 1 | +import { Logger } from 'wdKit/Index'; | ||
| 2 | +import { TrackingModule } from '../TrackingModule'; | ||
| 3 | +import sensors from '@sensorsdata/analytics'; | ||
| 4 | +import { ParamType, PublicParams } from './PublicParams'; | ||
| 5 | +import { HashMap } from '@kit.ArkTS'; | ||
| 6 | + | ||
| 7 | +const TAG = "WDTracking" | ||
| 8 | + | ||
| 9 | +export class Tracking { | ||
| 10 | + | ||
| 11 | + static event(eventId: string, params?: ParamType) { | ||
| 12 | + | ||
| 13 | + if (!TrackingModule.getHasInit()) { | ||
| 14 | + Logger.warn(TAG, "还没有初始化 " + eventId + " " + JSON.stringify(params)) | ||
| 15 | + return | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + //TODO: 添加运行单独线程? | ||
| 19 | + | ||
| 20 | + let publicParams = new PublicParams() | ||
| 21 | + publicParams.getPublicParams().then((pubParams) => { | ||
| 22 | + | ||
| 23 | + if (params) { | ||
| 24 | + for (const obj of Object.entries(params)) { | ||
| 25 | + Logger.info(TAG, ` ${obj[0]} => ` + `${obj[1]}`); | ||
| 26 | + pubParams[obj[0]] = obj[1] | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + sensors.track(eventId, pubParams) | ||
| 31 | + }) | ||
| 32 | + } | ||
| 33 | +} |
| 1 | +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; | ||
| 2 | + | ||
| 3 | +export default function localUnitTest() { | ||
| 4 | + describe('localUnitTest',() => { | ||
| 5 | + // Defines a test suite. Two parameters are supported: test suite name and test suite function. | ||
| 6 | + beforeAll(() => { | ||
| 7 | + // Presets an action, which is performed only once before all test cases of the test suite start. | ||
| 8 | + // This API supports only one parameter: preset action function. | ||
| 9 | + }); | ||
| 10 | + beforeEach(() => { | ||
| 11 | + // Presets an action, which is performed before each unit test case starts. | ||
| 12 | + // The number of execution times is the same as the number of test cases defined by **it**. | ||
| 13 | + // This API supports only one parameter: preset action function. | ||
| 14 | + }); | ||
| 15 | + afterEach(() => { | ||
| 16 | + // Presets a clear action, which is performed after each unit test case ends. | ||
| 17 | + // The number of execution times is the same as the number of test cases defined by **it**. | ||
| 18 | + // This API supports only one parameter: clear action function. | ||
| 19 | + }); | ||
| 20 | + afterAll(() => { | ||
| 21 | + // Presets a clear action, which is performed after all test cases of the test suite end. | ||
| 22 | + // This API supports only one parameter: clear action function. | ||
| 23 | + }); | ||
| 24 | + it('assertContain', 0, () => { | ||
| 25 | + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. | ||
| 26 | + let a = 'abc'; | ||
| 27 | + let b = 'b'; | ||
| 28 | + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. | ||
| 29 | + expect(a).assertContain(b); | ||
| 30 | + expect(a).assertEqual(a); | ||
| 31 | + }); | ||
| 32 | + }); | ||
| 33 | +} |
| @@ -17,6 +17,7 @@ | @@ -17,6 +17,7 @@ | ||
| 17 | "wdNetwork": "file:../../commons/wdNetwork", | 17 | "wdNetwork": "file:../../commons/wdNetwork", |
| 18 | "wdHwAbility": "file:../../features/wdHwAbility", | 18 | "wdHwAbility": "file:../../features/wdHwAbility", |
| 19 | "wdJsBridge": "file:../../commons/wdJsBridge", | 19 | "wdJsBridge": "file:../../commons/wdJsBridge", |
| 20 | - "wdLogin": "file:../../features/wdLogin" | 20 | + "wdLogin": "file:../../features/wdLogin", |
| 21 | + "wdTracking": "file:../../features/wdTracking" | ||
| 21 | } | 22 | } |
| 22 | } | 23 | } |
| @@ -12,14 +12,17 @@ import { | @@ -12,14 +12,17 @@ import { | ||
| 12 | NetworkType, | 12 | NetworkType, |
| 13 | SPHelper, | 13 | SPHelper, |
| 14 | StringUtils, | 14 | StringUtils, |
| 15 | + UmengStats, | ||
| 15 | WindowModel | 16 | WindowModel |
| 16 | } from 'wdKit'; | 17 | } from 'wdKit'; |
| 17 | import { HostEnum, HostManager, WDHttp } from 'wdNetwork'; | 18 | import { HostEnum, HostManager, WDHttp } from 'wdNetwork'; |
| 18 | import { LoginModule } from 'wdLogin/src/main/ets/LoginModule'; | 19 | import { LoginModule } from 'wdLogin/src/main/ets/LoginModule'; |
| 19 | import { ConfigurationConstant } from '@kit.AbilityKit'; | 20 | import { ConfigurationConstant } from '@kit.AbilityKit'; |
| 21 | +import { WDPushNotificationManager } from 'wdHwAbility/Index'; | ||
| 20 | 22 | ||
| 21 | export default class EntryAbility extends UIAbility { | 23 | export default class EntryAbility extends UIAbility { |
| 22 | onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { | 24 | onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { |
| 25 | + UmengStats.preInit(this.context) | ||
| 23 | SPHelper.init(this.context); | 26 | SPHelper.init(this.context); |
| 24 | hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); | 27 | hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); |
| 25 | registerRouter(); | 28 | registerRouter(); |
| @@ -44,6 +47,13 @@ export default class EntryAbility extends UIAbility { | @@ -44,6 +47,13 @@ export default class EntryAbility extends UIAbility { | ||
| 44 | EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => { | 47 | EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => { |
| 45 | Logger.info('network disconnected') | 48 | Logger.info('network disconnected') |
| 46 | })) | 49 | })) |
| 50 | + | ||
| 51 | + WDPushNotificationManager.getInstance().onWant(want) | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + // App活着情况下,点击推送通知进入 | ||
| 55 | + onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void { | ||
| 56 | + WDPushNotificationManager.getInstance().onWant(want) | ||
| 47 | } | 57 | } |
| 48 | 58 | ||
| 49 | onDestroy(): void { | 59 | onDestroy(): void { |
| 1 | +{"v":"5.6.10","fr":60,"ip":0,"op":61,"w":216,"h":216,"nm":"阶段1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":22,"s":[0]},{"t":30,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[108,105.128,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":26,"s":[2,2]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":30,"s":[32,32]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":40,"s":[32,32]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":60,"s":[72,72]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":70,"s":[80,80]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":80,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":90,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":170,"s":[0,0]},{"t":180,"s":[80,80]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[0,0],"to":[0,0],"ti":[0,0]},{"t":180,"s":[0,0]}],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[30]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":170,"s":[40]},{"t":180,"s":[12]}],"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":22,"s":[0]},{"t":30,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[108,105.128,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":55,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":60,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":65,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":70,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":80,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":85,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":160,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":170,"s":[8,8]},{"t":180,"s":[32,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[0,0],"to":[-0.675,0],"ti":[1.667,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[0,0],"to":[-1.625,0],"ti":[0.74,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[-8,0],"to":[-0.47,0],"ti":[0.293,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[-8,0],"to":[-0.643,0],"ti":[-0.916,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[-9,0],"to":[1.333,0],"ti":[-1.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":160,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":170,"s":[0,0],"to":[-1.333,0],"ti":[1.333,0]},{"t":180,"s":[-8,0]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 4","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":40,"s":[0,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":60,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":65,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":70,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":80,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":90,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":100,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":110,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":115,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":135,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":140,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":150,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":160,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":170,"s":[24,8]},{"t":180,"s":[50,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[0,0],"to":[13.333,0],"ti":[0,3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[80,0],"to":[0,-3],"ti":[13.333,3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[0,-18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[-16,-18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[0,-18],"to":[-13.333,3],"ti":[-13.333,-3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[-80,0],"to":[6.982,1.571],"ti":[-36.763,0.427]},{"t":90,"s":[-4.023,11],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":100,"s":[-0.023,11],"to":[33.441,-0.389],"ti":[-12.702,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":110,"s":[80,0],"to":[26.667,0],"ti":[-36.763,0.427]},{"t":120,"s":[-5,1],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":130,"s":[-0.023,1],"to":[33.441,-0.389],"ti":[-12.702,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":140,"s":[80,0],"to":[26.667,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":150,"s":[-4,-20],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":160,"s":[-4,-20],"to":[0,0],"ti":[-12.702,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":170,"s":[80,0],"to":[26.667,0],"ti":[13.333,3]},{"t":180,"s":[0,-18]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 3","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":40,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":60,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":65,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":70,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":80,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":90,"s":[0,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":100,"s":[0,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":110,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":115,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":135,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":140,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":150,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":160,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":170,"s":[24,8]},{"t":180,"s":[24,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[0,0],"to":[-13.333,0],"ti":[2,-3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[-80,0],"to":[-2,3],"ti":[-11.333,-3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[-12,18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[0,18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[-12,18],"to":[15.333,-3],"ti":[11.333,3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[80,0],"to":[-5.54,-1.466],"ti":[34.366,0.891]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":89,"s":[-9,-10.939],"to":[-2.687,-0.07],"ti":[2.705,-0.032]},{"t":90,"s":[0,-11],"h":1},{"i":{"x":0.833,"y":0.813},"o":{"x":0.167,"y":0.167},"t":100,"s":[-0.023,-11],"to":[-33.471,0.39],"ti":[12.613,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.151},"t":110,"s":[-80,0],"to":[-26.667,0],"ti":[37.293,-0.434]},{"t":120,"s":[-1,-18],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":130,"s":[-1,-18],"to":[-33.471,0.39],"ti":[12.613,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":140,"s":[-80,0],"to":[-26.667,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":150,"s":[12,-20],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":160,"s":[12,-20],"to":[0,0],"ti":[12.613,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":170,"s":[-80,0],"to":[-26.667,0],"ti":[-11.333,-3]},{"t":180,"s":[-12,18]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 5","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"rc","d":1,"s":{"a":0,"k":[80,80],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 6","mn":"ADBE Vector Shape - Rect","hd":false}],"ip":0,"op":61,"st":0,"bm":0}],"markers":[]} |
| 1 | +{"v":"5.6.10","fr":30,"ip":0,"op":61,"w":216,"h":216,"nm":"循环","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"空 17","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[108,108,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 9","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":62,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"形状图层 10","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":62,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"形状图层 8","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":62,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"形状图层 4","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[-128.719,-846.25,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[-116.052,-812.547]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-156.667,-856.417],[-157,-887.5],[-72.188,-887.5],[-72.25,-805],[-157,-805],[-157,-857.25],[-185.062,-876.875],[-185.25,-808.375],[-158,-828.688]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"圆角 1","r":{"a":0,"k":6,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[0]},{"t":55,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"修剪路径 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":5,"nm":"修剪路径 2","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":40,"op":62,"st":-30,"bm":0},{"ddd":0,"ind":7,"ty":3,"nm":"空 10","parent":1,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":62,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"形状图层 6","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":62,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"形状图层 3","parent":7,"sr":0.55,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[-29.233,-8.102,0],"to":[5.206,0,0],"ti":[-5.206,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27.5,"s":[2,-8.102,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30.000244140625,"s":[2,-8.102,0]}],"ix":2},"a":{"a":0,"k":[-161.25,-836.25,0],"ix":1},"s":{"a":0,"k":[75,75,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.05,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-122.168,-825.454],[-122.187,-825.562],[-121.982,-825.563],[-122.169,-825.459],[-122.458,-825.25],[-122.125,-825.833],[-122.302,-825.428],[-122.263,-825.404],[-122.177,-825.24],[-122.129,-825.547],[-122.557,-825.307],[-122.006,-825.241],[-122.323,-825.531],[-122.287,-825.286],[-122.111,-825.556],[-122.067,-825.434],[-122.399,-825.651],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.325,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-122.168,-825.454],[-122.187,-825.562],[-121.982,-825.563],[-122.169,-825.459],[-122.458,-825.25],[-122.125,-825.833],[-122.302,-825.428],[-122.263,-825.404],[-122.177,-825.24],[-122.129,-825.547],[-122.557,-825.307],[-122.006,-825.241],[-122.323,-825.531],[-122.287,-825.286],[-122.111,-825.556],[-122.067,-825.434],[-122.399,-825.651],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.002,-0.002],[0.004,-0.004],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.008,0.008],[-0.012,0.012],[0,0]],"v":[[-104.503,-842.815],[-104.523,-842.923],[-104.317,-842.923],[-104.504,-842.819],[-104.794,-842.61],[-104.46,-843.194],[-104.637,-842.788],[-104.598,-842.765],[-104.512,-842.6],[-104.464,-842.908],[-104.892,-842.667],[-104.341,-842.602],[-104.658,-842.892],[-104.622,-842.647],[-104.446,-842.917],[-104.403,-842.794],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25.875,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.788,-0.816],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.118,4.266],[-5.943,5.974],[0,0]],"v":[[-105.501,-856.621],[-105.521,-856.729],[-105.315,-856.73],[-105.502,-856.625],[-105.792,-856.417],[-105.458,-857],[-105.635,-856.594],[-105.596,-856.571],[-105.51,-856.406],[-105.462,-856.714],[-105.89,-856.473],[-105.339,-856.408],[-105.656,-856.698],[-105.621,-856.453],[-105.444,-856.723],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26.15,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-128.668,-879.788],[-128.687,-879.896],[-128.482,-879.896],[-128.669,-879.792],[-128.958,-879.583],[-128.625,-880.167],[-128.802,-879.761],[-128.763,-879.738],[-128.677,-879.573],[-128.629,-879.881],[-129.057,-879.64],[-128.506,-879.574],[-128.823,-879.865],[-128.787,-879.62],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26.425,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.899,0.868],[-3.133,-3.104],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.047,-2.941],[6.288,6.23],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-141.642,-879.455],[-141.662,-879.563],[-141.456,-879.564],[-141.643,-879.459],[-141.933,-879.251],[-141.6,-879.834],[-141.776,-879.428],[-141.738,-879.405],[-141.652,-879.24],[-141.603,-879.548],[-142.032,-879.307],[-141.481,-879.242],[-141.797,-879.532],[-141.762,-879.287],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26.7,"s":[{"i":[[0,0],[-0.032,0.018],[-0.012,-0.068],[0.06,-0.039],[-0.014,0.118],[-0.148,0.168],[0.045,-0.14],[-0.008,-0.013],[-0.042,0.045],[0.102,0.018],[-0.118,0.114],[0,0],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,-0.036],[0.059,-0.035],[0.013,0.07],[-0.099,0.065],[0.026,-0.222],[0.097,-0.111],[-0.005,0.014],[0.034,0.052],[0.071,-0.076],[-0.161,-0.028],[2.702,-2.61],[0,0],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-161.668,-860.288],[-161.687,-860.396],[-161.482,-860.396],[-161.669,-860.292],[-161.958,-860.083],[-161.625,-860.667],[-161.802,-860.261],[-161.763,-860.238],[-161.677,-860.073],[-161.629,-860.381],[-162.057,-860.14],[-161.506,-860.074],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26.975,"s":[{"i":[[0,0],[-0.032,0.018],[-0.012,-0.067],[0.06,-0.039],[-0.014,0.118],[-0.148,0.168],[0.045,-0.14],[-0.008,-0.013],[-0.042,0.045],[0.102,0.018],[-0.131,-0.098],[-0.007,-0.007],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,-0.036],[0.059,-0.035],[0.013,0.07],[-0.099,0.065],[0.026,-0.222],[0.097,-0.11],[-0.005,0.014],[0.034,0.052],[0.071,-0.076],[-0.161,-0.028],[2.205,1.713],[0.015,0.015],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-182.524,-880.121],[-182.544,-880.229],[-182.338,-880.23],[-182.525,-880.125],[-182.815,-879.917],[-182.481,-880.5],[-182.658,-880.094],[-182.62,-880.071],[-182.533,-879.906],[-182.485,-880.214],[-182.913,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27.25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.131,1.223],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-194.334,-880.121],[-194.354,-880.229],[-194.148,-880.23],[-194.335,-880.125],[-194.625,-879.917],[-194.292,-880.5],[-194.468,-880.094],[-194.43,-880.071],[-194.344,-879.906],[-194.296,-880.214],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27.525,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-217.668,-856.788],[-217.687,-856.896],[-217.482,-856.896],[-217.669,-856.792],[-217.958,-856.583],[-217.625,-857.167],[-217.802,-856.761],[-217.763,-856.738],[-217.677,-856.573],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27.8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.319,1.32],[-4.389,4.46],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.515,-2.517],[6.73,-6.839],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-217.501,-841.983],[-217.521,-842.091],[-217.315,-842.092],[-217.502,-841.988],[-217.792,-841.779],[-217.459,-842.362],[-217.635,-841.957],[-217.597,-841.933],[-217.511,-841.769],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.075,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-169.334,-794.121],[-169.354,-794.229],[-169.148,-794.23],[-169.335,-794.125],[-169.625,-793.917],[-169.292,-794.5],[-169.468,-794.094],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.35,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[2.003,-2.004],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.875,4.877],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-153.487,-794.01],[-153.507,-794.118],[-153.301,-794.119],[-153.488,-794.015],[-153.778,-793.806],[-153.444,-794.389],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.625,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-125.043,-822.621],[-125.062,-822.729],[-124.857,-822.73],[-125.044,-822.625],[-125.333,-822.417],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28.9,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-148.209,-846.954],[-148.229,-847.062],[-148.023,-847.063],[-148.21,-846.959],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29.175,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-159.022,-836.308],[-159.041,-836.417],[-158.835,-836.417],[-159.023,-836.313],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29.45,"s":[{"i":[[0,0],[0,0],[-2.624,-2.5],[-1.61,1.597],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.772,1.688],[3.515,-3.486],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-169.043,-836.788],[-169.062,-836.396],[-169.19,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29.725,"s":[{"i":[[0,0],[0,0],[-2.624,-2.5],[-1.61,1.597],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.772,1.688],[3.515,-3.486],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-177.018,-844.48],[-177.062,-844.062],[-169.19,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[-2.624,-2.5],[-1.61,1.597],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.772,1.688],[3.515,-3.486],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-164.376,-857.788],[-177.062,-844.062],[-169.19,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34.825,"s":[{"i":[[0,0],[0,0],[-2.624,-2.5],[-1.61,1.597],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.772,1.688],[3.515,-3.486],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-164.376,-857.788],[-177.062,-844.062],[-169.19,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35.325,"s":[{"i":[[0,0],[0,0],[-2.624,-2.5],[-1.61,1.597],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.772,1.688],[3.515,-3.486],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-164.376,-857.788],[-177.062,-844.062],[-169.19,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35.6,"s":[{"i":[[0,0],[0,0],[-2.619,-2.495],[-1.607,1.594],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[1.768,1.684],[3.508,-3.479],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-169.023,-836.787],[-169.043,-836.396],[-169.17,-836.563],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35.875,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-159.043,-836.288],[-159.062,-836.396],[-158.857,-836.396],[-159.044,-836.292],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36.15,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-148.209,-846.954],[-148.229,-847.062],[-148.023,-847.063],[-148.21,-846.959],[-148.5,-846.75],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36.425,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[9.521,-9.728],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.823,4.928],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-125.088,-822.669],[-125.108,-822.777],[-124.902,-822.777],[-125.089,-822.673],[-125.379,-822.464],[-125,-823],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36.7,"s":[{"i":[[0,0],[0.072,-0.109],[0,0],[0,0],[0,0],[0,0],[1.988,-1.989],[4.844,4.778],[13.374,13.191],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,0.131],[-0.038,0.059],[0,0],[0,0],[0,0],[0,0],[-4.875,4.877],[-12.044,-11.879],[-2.538,-2.503],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-153.543,-793.954],[-153.562,-794.062],[-153.357,-794.063],[-153.544,-793.959],[-153.833,-793.75],[-153.5,-794.333],[-153.677,-793.928],[-169.43,-794.071],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36.975,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[13.351,13.168],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.538,-2.504],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-169.429,-794.215],[-169.448,-794.323],[-169.242,-794.323],[-169.429,-794.219],[-169.719,-794.01],[-169.386,-794.593],[-169.562,-794.188],[-169.524,-794.165],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37.25,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.322,1.323],[-4.398,4.469],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.52,-2.522],[6.743,-6.853],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-217.501,-841.954],[-217.521,-842.062],[-217.315,-842.063],[-217.502,-841.959],[-217.792,-841.75],[-217.458,-842.333],[-217.635,-841.928],[-217.596,-841.904],[-217.51,-841.74],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37.525,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-6.365,6.314],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-217.668,-856.788],[-217.687,-856.896],[-217.482,-856.896],[-217.669,-856.792],[-217.958,-856.583],[-217.625,-857.167],[-217.802,-856.761],[-217.763,-856.738],[-217.677,-856.573],[-217.629,-856.881],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37.8,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.142,1.233],[-3.502,-3.39],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.78,-3.749],[7.835,7.585],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-194.38,-880.076],[-194.4,-880.184],[-194.194,-880.184],[-194.381,-880.08],[-194.671,-879.871],[-194.337,-880.454],[-194.514,-880.049],[-194.475,-880.026],[-194.389,-879.861],[-194.341,-880.169],[-194.724,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38.075,"s":[{"i":[[0,0],[-0.032,0.018],[-0.012,-0.068],[0.06,-0.039],[-0.014,0.118],[-0.148,0.168],[0.045,-0.14],[-0.008,-0.013],[-0.042,0.045],[0.102,0.018],[-0.129,-0.101],[0,0],[0,0],[-6.474,6.677],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,-0.036],[0.059,-0.035],[0.013,0.07],[-0.099,0.065],[0.026,-0.222],[0.097,-0.111],[-0.005,0.014],[0.034,0.052],[0.071,-0.076],[-0.161,-0.028],[2.202,1.723],[0,0],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-182.501,-880.121],[-182.521,-880.229],[-182.315,-880.23],[-182.502,-880.125],[-182.792,-879.917],[-182.458,-880.5],[-182.635,-880.094],[-182.596,-880.071],[-182.51,-879.906],[-182.462,-880.214],[-182.89,-879.973],[-182.339,-879.908],[-161.823,-860.365],[-141.954,-879.953],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38.35,"s":[{"i":[[0,0],[-0.032,0.018],[-0.012,-0.067],[0.06,-0.039],[-0.014,0.118],[-0.148,0.168],[0.045,-0.14],[-0.008,-0.013],[-0.042,0.045],[0.102,0.018],[-0.117,0.113],[0,0],[0,0],[-6.463,6.666],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[-0.007,-0.036],[0.059,-0.035],[0.013,0.07],[-0.099,0.065],[0.026,-0.222],[0.097,-0.11],[-0.005,0.014],[0.034,0.052],[0.071,-0.076],[-0.161,-0.028],[2.697,-2.605],[0,0],[0,0],[2.954,-3.047],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-161.629,-860.325],[-161.648,-860.433],[-161.443,-860.434],[-161.63,-860.329],[-161.919,-860.121],[-161.586,-860.704],[-161.763,-860.299],[-161.724,-860.275],[-161.638,-860.11],[-161.59,-860.418],[-162.018,-860.177],[-161.467,-860.112],[-161.784,-860.402],[-141.954,-879.952],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38.625,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.901,0.87],[-3.139,-3.11],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[3.053,-2.947],[6.3,6.242],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-141.668,-879.454],[-141.687,-879.563],[-141.482,-879.563],[-141.669,-879.459],[-141.958,-879.25],[-141.625,-879.833],[-141.802,-879.428],[-141.763,-879.404],[-141.677,-879.24],[-141.629,-879.548],[-142.057,-879.307],[-141.506,-879.241],[-141.823,-879.532],[-141.787,-879.287],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38.9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-6.79,-6.854],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.173,4.212],[-5.943,5.974],[0,0]],"v":[[-128.668,-879.788],[-128.687,-879.896],[-128.482,-879.896],[-128.669,-879.792],[-128.958,-879.583],[-128.625,-880.167],[-128.802,-879.761],[-128.763,-879.738],[-128.677,-879.573],[-128.629,-879.881],[-129.057,-879.64],[-128.506,-879.574],[-128.823,-879.865],[-128.787,-879.62],[-128.611,-879.89],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39.175,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.799,-0.828],[2.14,-2.151],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[4.118,4.266],[-5.943,5.974],[0,0]],"v":[[-105.546,-856.666],[-105.566,-856.774],[-105.36,-856.775],[-105.547,-856.671],[-105.837,-856.462],[-105.504,-857.045],[-105.68,-856.64],[-105.642,-856.616],[-105.556,-856.451],[-105.507,-856.759],[-105.935,-856.519],[-105.385,-856.453],[-105.701,-856.743],[-105.666,-856.498],[-105.489,-856.768],[-105.401,-856.601],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39.45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-104.501,-842.788],[-104.521,-842.896],[-104.315,-842.896],[-104.502,-842.792],[-104.792,-842.583],[-104.458,-843.167],[-104.635,-842.761],[-104.596,-842.738],[-104.51,-842.573],[-104.462,-842.881],[-104.89,-842.64],[-104.339,-842.574],[-104.656,-842.865],[-104.621,-842.62],[-104.444,-842.89],[-104.401,-842.767],[-104.733,-842.984],[-122.562,-825.062]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39.725,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-122.168,-825.454],[-122.187,-825.562],[-121.982,-825.563],[-122.169,-825.459],[-122.458,-825.25],[-122.125,-825.833],[-122.302,-825.428],[-122.263,-825.404],[-122.177,-825.24],[-122.129,-825.547],[-122.557,-825.307],[-122.006,-825.241],[-122.323,-825.531],[-122.287,-825.286],[-122.111,-825.556],[-122.067,-825.434],[-122.399,-825.651],[-122.562,-825.062]],"c":false}]},{"t":40.000146484375,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-122.168,-825.454],[-122.187,-825.562],[-121.982,-825.563],[-122.169,-825.459],[-122.458,-825.25],[-122.125,-825.833],[-122.302,-825.428],[-122.263,-825.404],[-122.177,-825.24],[-122.129,-825.547],[-122.557,-825.307],[-122.006,-825.241],[-122.323,-825.531],[-122.287,-825.286],[-122.111,-825.556],[-122.067,-825.434],[-122.399,-825.651],[-122.562,-825.062]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"圆角 1","r":{"a":0,"k":0,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":25,"op":40,"st":-5.5,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"形状图层 2","parent":1,"sr":0.5,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-4,1,0],"ix":2},"a":{"a":0,"k":[-100,-843.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-92.444,-835.25],[-92.525,-835.206],[-92.45,-835.2],[-92.35,-835.3],[-92.4,-835.25],[-92.36,-835.214],[-92.339,-835.211],[-92.389,-835.226]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-120.364,-835.25],[-120.38,-835.233],[-120.305,-835.227],[-120.205,-835.326],[-120.255,-835.277],[-120.215,-835.24],[-120.194,-835.238],[-120.244,-835.253]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.25,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-130.55,-836.9],[-130.45,-837],[-130.5,-836.95],[-130.46,-836.914],[-130.439,-836.911],[-130.489,-836.927]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.5,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-129.15,-840.1],[-129.2,-840.05],[-129.16,-840.014],[-129.139,-840.011],[-129.189,-840.027]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11.25,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-70.5,-877.25],[-70.06,-877.614],[-69.939,-877.611],[-69.889,-877.726]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11.5,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.048,-1.1],[0.15,0.2],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.015,0.338],[-0.223,-0.297],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-67.008,-872.753],[-66.525,-872.625],[-66.75,-872.013]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11.75,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-66.983,-873.003],[-67,-873],[-67.083,-872.938]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12.75,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.386,-8.798],[0,0],[0.139,0.19]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.119,2.705],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.183,-825.003],[-69.45,-818.25],[-69.267,-818.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.483,-10.997],[0,0],[0.173,0.238]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.148,3.381],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.733,-813.003],[-74.75,-811.75],[-74.5,-811.688]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.483,-10.997],[1.5,2],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.148,3.381],[-2.23,-2.973],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.733,-813.003],[-74.75,-811.75],[-106.25,-853.688]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.483,-10.997],[1.5,2],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.148,3.381],[-2.23,-2.973],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.733,-813.003],[-74.75,-811.75],[-106.25,-853.688]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.483,-10.997],[0,0],[0.173,0.238]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.148,3.381],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.733,-813.003],[-74.75,-811.75],[-74.5,-811.688]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.25,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.386,-8.798],[0,0],[0.139,0.19]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.119,2.705],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-69.183,-825.003],[-69.45,-818.25],[-69.267,-818.188]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21.25,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-66.983,-873.003],[-67,-873],[-67.083,-872.938]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21.5,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0.257,-4.242],[0.048,-1.1],[0.15,0.2],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[-0.25,4.125],[-0.015,0.338],[-0.223,-0.297],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-67,-873.5],[-67.008,-872.753],[-66.525,-872.625],[-66.75,-872.013]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21.75,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-70.75,-877],[-70.5,-877.25],[-70.06,-877.614],[-69.939,-877.611],[-69.889,-877.726]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.5,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-129.25,-840],[-129.15,-840.1],[-129.2,-840.05],[-129.16,-840.014],[-129.139,-840.011],[-129.189,-840.027]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.75,"s":[{"i":[[0,0],[0,0],[0.75,1.906],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.782,-1.988],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-127.344,-835.25],[-130.625,-836.906],[-130.55,-836.9],[-130.45,-837],[-130.5,-836.95],[-130.46,-836.914],[-130.439,-836.911],[-130.489,-836.927]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-120.364,-835.25],[-120.38,-835.233],[-120.305,-835.227],[-120.205,-835.326],[-120.255,-835.277],[-120.215,-835.24],[-120.194,-835.238],[-120.244,-835.253]],"c":false}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-92.5,-835.156],[-92.444,-835.25],[-92.525,-835.206],[-92.45,-835.2],[-92.35,-835.3],[-92.4,-835.25],[-92.36,-835.214],[-92.339,-835.211],[-92.389,-835.226]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8.5,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[8]},{"t":9.5,"s":[8]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":24.5,"st":-7.5,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"外框","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-19.5,"s":[0]},{"t":-15.5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":-10.5,"s":[32,32]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":-5.5,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":-0.5,"s":[72,72]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":4.5,"s":[72,72]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":9.5,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":14.5,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":54.5,"s":[0,0]},{"t":59.5,"s":[72,72]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-0.5,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4.5,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9.5,"s":[0,0],"to":[0,0],"ti":[0,0]},{"t":59.5,"s":[0,0]}],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-10.5,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-5.5,"s":[30]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-0.5,"s":[12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4.5,"s":[12]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9.5,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":54.5,"s":[40]},{"t":59.5,"s":[12]}],"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":-0.5,"op":62,"st":-30.5,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"形状图层 5","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-19,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-15,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14.5,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[0]},{"t":17.5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":-5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":2.5,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":5,"s":[32,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":9.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":12.5,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[0,0]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":55,"s":[8,8]},{"t":60,"s":[32,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-5,"s":[0,0],"to":[-1.333,0],"ti":[1.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[-8,0],"to":[-0.47,0],"ti":[0.293,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2.5,"s":[-8,0],"to":[-0.643,0],"ti":[-0.916,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[-9,0],"to":[1.333,0],"ti":[-1.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9.5,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[0,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[0,0],"to":[-1.333,0],"ti":[1.333,0]},{"t":60,"s":[-8,0]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 4","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":-5,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":2.5,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":5,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":10,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":14.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":17.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":20,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":25,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":27.5,"s":[6,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":30,"s":[6,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":35,"s":[6,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":40,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":45,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[16,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":55,"s":[24,8]},{"t":60,"s":[50,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-5,"s":[80,0],"to":[-13.333,-3],"ti":[13.333,3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2.5,"s":[-16,-18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[0,-18],"to":[-13.333,3],"ti":[-13.333,-3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[-80,0],"to":[2.36,0.531],"ti":[-8.775,0.054]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.5,"s":[-25.6,0.037],"to":[1.115,-0.007],"ti":[-1.57,0.018]},{"t":17.5,"s":[28,0],"h":1},{"t":19,"s":[33,0],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[38,0],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[80,0],"to":[21.757,-0.253],"ti":[31.158,-0.084]},{"t":27.5,"s":[40,0],"h":1},{"t":30,"s":[39,0],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[39,0],"to":[-9.983,0.027],"ti":[-5.123,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[80,0],"to":[26.667,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[-4,-16],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[-4,-16],"to":[0,0],"ti":[-12.702,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[80,0],"to":[26.667,0],"ti":[13.333,3]},{"t":60,"s":[0,-18]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 3","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":2.5,"s":[50,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":5,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":10,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":14.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":17.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":20,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":25,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":27.5,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":30,"s":[6,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":35,"s":[6,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":40,"s":[24,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":45,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":50,"s":[8,8]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":55,"s":[24,8]},{"t":60,"s":[24,8]}],"ix":2},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-5,"s":[-80,0],"to":[11.333,3],"ti":[-11.333,-3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[-12,18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2.5,"s":[0,18],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[-12,18],"to":[15.333,-3],"ti":[11.333,3]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[80,0],"to":[-5.54,-1.466],"ti":[34.366,0.891]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.5,"s":[28,0],"to":[-2.687,-0.07],"ti":[37.293,-0.434]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17.5,"s":[-25,0],"to":[-21.127,0.246],"ti":[-5.31,0.1]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[-31,-0.091],"to":[3.103,-0.058],"ti":[13.753,-0.16]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[-38,0],"to":[-33.471,0.39],"ti":[12.613,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[-80,0],"to":[-8.727,0],"ti":[-18.481,-0.021]},{"t":27.5,"s":[-40,0],"h":1},{"t":30,"s":[-36,0],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[-36,0],"to":[5.828,-0.956],"ti":[-3.003,1.787]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[-80,0],"to":[9.053,-5.387],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[12,-16],"to":[0,0],"ti":[0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[12,-16],"to":[0,0],"ti":[12.613,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[-80,0],"to":[-26.667,0],"ti":[-11.333,-3]},{"t":60,"s":[-12,18]}],"ix":3},"r":{"a":0,"k":4,"ix":4},"nm":"矩形路径 5","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.854901960784,0.854901960784,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"rc","d":1,"s":{"a":0,"k":[80,80],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 6","mn":"ADBE Vector Shape - Rect","hd":false}],"ip":0,"op":62,"st":-30,"bm":0}],"markers":[]} |
| @@ -4,7 +4,8 @@ import { BreakpointConstants } from 'wdConstant'; | @@ -4,7 +4,8 @@ import { BreakpointConstants } from 'wdConstant'; | ||
| 4 | import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger } from 'wdKit'; | 4 | import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger } from 'wdKit'; |
| 5 | import router from '@ohos.router'; | 5 | import router from '@ohos.router'; |
| 6 | import { promptAction } from '@kit.ArkUI'; | 6 | import { promptAction } from '@kit.ArkUI'; |
| 7 | -import { HWLocationUtils } from 'wdHwAbility/Index'; | 7 | +import { HWLocationUtils, WDPushNotificationManager } from 'wdHwAbility/Index'; |
| 8 | +import { common } from '@kit.AbilityKit'; | ||
| 8 | 9 | ||
| 9 | 10 | ||
| 10 | const TAG = 'MainPage'; | 11 | const TAG = 'MainPage'; |
| @@ -24,6 +25,16 @@ struct MainPage { | @@ -24,6 +25,16 @@ struct MainPage { | ||
| 24 | aboutToAppear() { | 25 | aboutToAppear() { |
| 25 | HWLocationUtils.startLocationService() | 26 | HWLocationUtils.startLocationService() |
| 26 | this.breakpointSystem.register() | 27 | this.breakpointSystem.register() |
| 28 | + | ||
| 29 | + let context = getContext(this) as common.UIAbilityContext | ||
| 30 | + WDPushNotificationManager.getInstance().requestEnableNotifications(context).then((enabled) => { | ||
| 31 | + if (enabled) { | ||
| 32 | + WDPushNotificationManager.getInstance().fetchTokenAndBindProfileId() | ||
| 33 | + | ||
| 34 | + // WDPushNotificationManager.getInstance().sendLocalNotification() | ||
| 35 | + } | ||
| 36 | + }) | ||
| 37 | + | ||
| 27 | Logger.info(TAG, `aboutToAppear `); | 38 | Logger.info(TAG, `aboutToAppear `); |
| 28 | EmitterUtils.receiveEvent(EmitterEventId.FORCE_USER_LOGIN_OUT, () => { | 39 | EmitterUtils.receiveEvent(EmitterEventId.FORCE_USER_LOGIN_OUT, () => { |
| 29 | LogoutViewModel.clearLoginInfo() | 40 | LogoutViewModel.clearLoginInfo() |
| @@ -39,11 +39,13 @@ struct SpacialTopicPage { | @@ -39,11 +39,13 @@ struct SpacialTopicPage { | ||
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | onPageShow() { | 41 | onPageShow() { |
| 42 | + WindowModel.shared.setWindowLayoutFullScreen(true) | ||
| 42 | Logger.info(TAG, 'onPageShow'); | 43 | Logger.info(TAG, 'onPageShow'); |
| 43 | } | 44 | } |
| 44 | 45 | ||
| 45 | onPageHide() { | 46 | onPageHide() { |
| 46 | Logger.info(TAG, 'onPageHide'); | 47 | Logger.info(TAG, 'onPageHide'); |
| 48 | + WindowModel.shared.setWindowLayoutFullScreen(false) | ||
| 47 | } | 49 | } |
| 48 | 50 | ||
| 49 | onBackPress() { | 51 | onBackPress() { |
| @@ -11,8 +11,9 @@ import { WDRouterPage } from 'wdRouter'; | @@ -11,8 +11,9 @@ import { WDRouterPage } from 'wdRouter'; | ||
| 11 | import { LaunchModel } from '../viewModel/LaunchModel' | 11 | import { LaunchModel } from '../viewModel/LaunchModel' |
| 12 | import { LaunchPageModel } from '../viewModel/LaunchPageModel' | 12 | import { LaunchPageModel } from '../viewModel/LaunchPageModel' |
| 13 | import LaunchDataModel from '../viewModel/LaunchDataModel' | 13 | import LaunchDataModel from '../viewModel/LaunchDataModel' |
| 14 | -import { Logger, SPHelper } from 'wdKit/Index'; | 14 | +import { Logger, SPHelper, UmengStats } from 'wdKit/Index'; |
| 15 | import { SpConstants } from 'wdConstant/Index'; | 15 | import { SpConstants } from 'wdConstant/Index'; |
| 16 | +import { TrackingModule } from 'wdTracking/Index' | ||
| 16 | 17 | ||
| 17 | @Entry | 18 | @Entry |
| 18 | @Component | 19 | @Component |
| @@ -44,6 +45,8 @@ struct LaunchPage { | @@ -44,6 +45,8 @@ struct LaunchPage { | ||
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | onConfirm() { | 47 | onConfirm() { |
| 48 | + UmengStats.initAfterAgreeProtocol() | ||
| 49 | + TrackingModule.startup(getContext(this) as common.UIAbilityContext) | ||
| 47 | // Save privacy agreement status. | 50 | // Save privacy agreement status. |
| 48 | this.saveIsPrivacy(); | 51 | this.saveIsPrivacy(); |
| 49 | //跳转引导页 | 52 | //跳转引导页 |
| @@ -94,6 +97,10 @@ struct LaunchPage { | @@ -94,6 +97,10 @@ struct LaunchPage { | ||
| 94 | this.dialogController.open(); | 97 | this.dialogController.open(); |
| 95 | // } | 98 | // } |
| 96 | } else { | 99 | } else { |
| 100 | + | ||
| 101 | + UmengStats.initAfterAgreeProtocol() | ||
| 102 | + TrackingModule.startup(getContext(this) as common.UIAbilityContext) | ||
| 103 | + | ||
| 97 | //需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页 | 104 | //需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页 |
| 98 | //获取本地存储的启动页数据 | 105 | //获取本地存储的启动页数据 |
| 99 | 106 |
-
Please register or login to post a comment