From 4665bdda33ce2a66ecb6305bb6ecaf22f873987a Mon Sep 17 00:00:00 2001
From: xiaochong0302
Date: Sun, 14 Jun 2020 19:56:14 +0800
Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=92=AD=E8=AF=BE=E6=97=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Admin/Controllers/PublicController.php | 10 +-
app/Http/Admin/Services/Role.php | 2 +-
app/Http/Admin/Views/layouts/error.volt | 14 +
.../Web/Controllers/ChapterController.php | 16 +-
app/Http/Web/Views/chapter/menu.volt | 23 +
app/Http/Web/Views/chapter/show.volt | 12 +
app/Http/Web/Views/chapter/show_live.volt | 0
app/Http/Web/Views/chapter/show_read.volt | 0
app/Http/Web/Views/chapter/show_vod.volt | 92 +
app/Http/Web/Views/course/chapters.volt | 9 +-
app/Http/Web/Views/templates/chapter.volt | 82 +
.../Frontend/Chapter/ChapterBasic.php | 136 +
app/Services/Frontend/Chapter/ChapterInfo.php | 39 +-
app/Services/Frontend/Course/CourseBasic.php | 48 +
public/static/crossdomain.xml | 4 +
public/static/lib/ckplayer/ckplayer.js | 8673 ++++++++
public/static/lib/ckplayer/ckplayer.min.js | 120 +
public/static/lib/ckplayer/ckplayer.swf | Bin 0 -> 148788 bytes
public/static/lib/ckplayer/ckplayer.xml | 116 +
public/static/lib/ckplayer/hls/LICENSE | 28 +
public/static/lib/ckplayer/hls/hls.js | 16470 ++++++++++++++++
public/static/lib/ckplayer/hls/hls.min.js | 7 +
public/static/lib/ckplayer/language.xml | 46 +
public/static/lib/ckplayer/style.xml | 833 +
public/static/web/css/common.css | 118 +
25 files changed, 26888 insertions(+), 10 deletions(-)
create mode 100644 app/Http/Admin/Views/layouts/error.volt
create mode 100644 app/Http/Web/Views/chapter/menu.volt
create mode 100644 app/Http/Web/Views/chapter/show.volt
create mode 100644 app/Http/Web/Views/chapter/show_live.volt
create mode 100644 app/Http/Web/Views/chapter/show_read.volt
create mode 100644 app/Http/Web/Views/chapter/show_vod.volt
create mode 100644 app/Http/Web/Views/templates/chapter.volt
create mode 100644 app/Services/Frontend/Chapter/ChapterBasic.php
create mode 100644 app/Services/Frontend/Course/CourseBasic.php
create mode 100644 public/static/crossdomain.xml
create mode 100644 public/static/lib/ckplayer/ckplayer.js
create mode 100644 public/static/lib/ckplayer/ckplayer.min.js
create mode 100644 public/static/lib/ckplayer/ckplayer.swf
create mode 100644 public/static/lib/ckplayer/ckplayer.xml
create mode 100644 public/static/lib/ckplayer/hls/LICENSE
create mode 100644 public/static/lib/ckplayer/hls/hls.js
create mode 100644 public/static/lib/ckplayer/hls/hls.min.js
create mode 100644 public/static/lib/ckplayer/language.xml
create mode 100644 public/static/lib/ckplayer/style.xml
diff --git a/app/Http/Admin/Controllers/PublicController.php b/app/Http/Admin/Controllers/PublicController.php
index 881d657e..fe3795a8 100644
--- a/app/Http/Admin/Controllers/PublicController.php
+++ b/app/Http/Admin/Controllers/PublicController.php
@@ -3,6 +3,7 @@
namespace App\Http\Admin\Controllers;
use App\Traits\Response as ResponseTrait;
+use Phalcon\Mvc\View;
/**
* @RoutePrefix("/admin")
@@ -13,7 +14,7 @@ class PublicController extends \Phalcon\Mvc\Controller
use ResponseTrait;
/**
- * @Route("/auth", name="admin.auth")
+ * @Get("/auth", name="admin.auth")
*/
public function authAction()
{
@@ -25,17 +26,20 @@ class PublicController extends \Phalcon\Mvc\Controller
}
/**
- * @Route("/forbidden", name="admin.forbidden")
+ * @Get("/forbidden", name="admin.forbidden")
*/
public function forbiddenAction()
{
+ $this->view->setRenderLevel(View::LEVEL_LAYOUT);
+ $this->view->setLayout('error');
+
if ($this->request->isAjax()) {
return $this->jsonError(['msg' => '无相关操作权限']);
}
}
/**
- * @Route("/ip2region", name="admin.ip2region")
+ * @Get("/ip2region", name="admin.ip2region")
*/
public function ip2regionAction()
{
diff --git a/app/Http/Admin/Services/Role.php b/app/Http/Admin/Services/Role.php
index c33bfbc7..89df2ce2 100644
--- a/app/Http/Admin/Services/Role.php
+++ b/app/Http/Admin/Services/Role.php
@@ -137,7 +137,7 @@ class Role extends Service
if (in_array('admin.course.list', $routes)) {
$list[] = 'admin.course.chapters';
- $list[] = 'admin.chapter.sections';
+ $list[] = 'admin.chapter.lessons';
}
if (array_intersect(['admin.course.add', 'admin.course.edit'], $routes)) {
diff --git a/app/Http/Admin/Views/layouts/error.volt b/app/Http/Admin/Views/layouts/error.volt
new file mode 100644
index 00000000..a53da4b2
--- /dev/null
+++ b/app/Http/Admin/Views/layouts/error.volt
@@ -0,0 +1,14 @@
+
+
+
+
+
+ 出错啦
+ {{ icon_link("favicon.ico") }}
+ {{ css_link("lib/layui/css/layui.css") }}
+ {{ css_link("web/css/error.css") }}
+
+
+{{ content() }}
+
+
\ No newline at end of file
diff --git a/app/Http/Web/Controllers/ChapterController.php b/app/Http/Web/Controllers/ChapterController.php
index 8cc265e5..b8c065fd 100644
--- a/app/Http/Web/Controllers/ChapterController.php
+++ b/app/Http/Web/Controllers/ChapterController.php
@@ -7,6 +7,7 @@ use App\Services\Frontend\Chapter\ChapterInfo as ChapterInfoService;
use App\Services\Frontend\Chapter\CommentList as ChapterCommentListService;
use App\Services\Frontend\Chapter\Learning as ChapterLearningService;
use App\Services\Frontend\Chapter\OpposeVote as ChapterOpposeVoteService;
+use App\Services\Frontend\Course\ChapterList as CourseChapterListService;
/**
* @RoutePrefix("/chapter")
@@ -23,7 +24,20 @@ class ChapterController extends Controller
$chapter = $service->handle($id);
- $this->view->chapter = $chapter;
+ $service = new CourseChapterListService();
+
+ $chapters = $service->handle($chapter['course']['id']);
+
+ if ($chapter['model'] == 'vod') {
+ $this->view->pick('chapter/show_vod');
+ } elseif ($chapter['model'] == 'live') {
+ $this->view->pick('chapter/show_live');
+ } elseif ($chapter['model'] == 'read') {
+ $this->view->pick('chapter/show_read');
+ }
+
+ $this->view->setVar('chapter', $chapter);
+ $this->view->setVar('chapters', $chapters);
}
/**
diff --git a/app/Http/Web/Views/chapter/menu.volt b/app/Http/Web/Views/chapter/menu.volt
new file mode 100644
index 00000000..b0371c92
--- /dev/null
+++ b/app/Http/Web/Views/chapter/menu.volt
@@ -0,0 +1,23 @@
+
diff --git a/app/Http/Web/Views/chapter/show.volt b/app/Http/Web/Views/chapter/show.volt
new file mode 100644
index 00000000..c4d52d73
--- /dev/null
+++ b/app/Http/Web/Views/chapter/show.volt
@@ -0,0 +1,12 @@
+{% extends 'templates/full.volt' %}
+
+{% block content %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/app/Http/Web/Views/chapter/show_live.volt b/app/Http/Web/Views/chapter/show_live.volt
new file mode 100644
index 00000000..e69de29b
diff --git a/app/Http/Web/Views/chapter/show_read.volt b/app/Http/Web/Views/chapter/show_read.volt
new file mode 100644
index 00000000..e69de29b
diff --git a/app/Http/Web/Views/chapter/show_vod.volt b/app/Http/Web/Views/chapter/show_vod.volt
new file mode 100644
index 00000000..a1c40968
--- /dev/null
+++ b/app/Http/Web/Views/chapter/show_vod.volt
@@ -0,0 +1,92 @@
+{% extends 'templates/full.volt' %}
+
+{% block content %}
+
+ {% set course_url = url({'for':'web.course.show','id':chapter.course.id}) %}
+
+
+
+
+
+{% endblock %}
+
+{% block inline_js %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/app/Http/Web/Views/course/chapters.volt b/app/Http/Web/Views/course/chapters.volt
index b2543859..6b618202 100644
--- a/app/Http/Web/Views/course/chapters.volt
+++ b/app/Http/Web/Views/course/chapters.volt
@@ -1,6 +1,7 @@
{%- macro vod_lesson_info(lesson) %}
{% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %}
-
+ {% set priv = lesson.me.owned ? 'allow' : 'deny' %}
+
{{ lesson.title }}
{% if lesson.free == 1 %}
@@ -15,8 +16,9 @@
{%- macro live_lesson_info(lesson) %}
{% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %}
+ {% set priv = lesson.me.owned ? 'allow' : 'deny' %}
{% set over_flag = lesson.attrs.end_time < time() ? '已结束' : '' %}
-
+
{{ lesson.title }}
{% if lesson.free == 1 %}
@@ -31,7 +33,8 @@
{%- macro read_lesson_info(lesson) %}
{% set url = lesson.me.owned ? url({'for':'web.chapter.show','id':lesson.id}) : 'javascript:' %}
-
+ {% set priv = lesson.me.owned ? 'allow' : 'deny' %}
+
{{ lesson.title|e }}
{% if lesson.free == 1 %}
diff --git a/app/Http/Web/Views/templates/chapter.volt b/app/Http/Web/Views/templates/chapter.volt
new file mode 100644
index 00000000..7d1954a3
--- /dev/null
+++ b/app/Http/Web/Views/templates/chapter.volt
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+ {{ site_seo.getTitle() }}
+ {{ icon_link('favicon.ico') }}
+ {{ css_link('lib/layui/css/layui.css') }}
+ {{ css_link('web/css/common.css') }}
+ {% block link_css %}{% endblock %}
+ {% block inline_css %}{% endblock %}
+
+
+{% set course_url = url({'for':'web.course.show','id':chapter.course.id}) %}
+
+
+
+
+
+ {% block content %}{% endblock %}
+
+
+
+
+{{ js_include('lib/layui/layui.all.js') }}
+{{ js_include('web/js/common.js') }}
+
+
+{% block include_js %}{% endblock %}
+{% block inline_js %}{% endblock %}
+
+
\ No newline at end of file
diff --git a/app/Services/Frontend/Chapter/ChapterBasic.php b/app/Services/Frontend/Chapter/ChapterBasic.php
new file mode 100644
index 00000000..cb59acb0
--- /dev/null
+++ b/app/Services/Frontend/Chapter/ChapterBasic.php
@@ -0,0 +1,136 @@
+checkChapterCache($id);
+
+ return $this->handleChapter($chapter);
+ }
+
+ protected function handleChapter(ChapterModel $chapter)
+ {
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
+ $result = [];
+
+ switch ($attrs['model']) {
+ case CourseModel::MODEL_VOD:
+ $result = $this->formatChapterVod($chapter);
+ break;
+ case CourseModel::MODEL_LIVE:
+ $result = $this->formatChapterLive($chapter);
+ break;
+ case CourseModel::MODEL_READ:
+ $result = $this->formatChapterRead($chapter);
+ break;
+ }
+
+ return $result;
+ }
+
+ protected function formatChapterVod(ChapterModel $chapter)
+ {
+ $chapterVodService = new ChapterVodService();
+
+ $playUrls = $chapterVodService->getPlayUrls($chapter->id);
+
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
+ return [
+ 'id' => $chapter->id,
+ 'title' => $chapter->title,
+ 'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
+ 'play_urls' => $playUrls,
+ 'user_count' => $chapter->user_count,
+ 'agree_count' => $chapter->agree_count,
+ 'oppose_count' => $chapter->oppose_count,
+ 'comment_count' => $chapter->comment_count,
+ ];
+ }
+
+ protected function formatChapterLive(ChapterModel $chapter)
+ {
+ $headers = getallheaders();
+
+ $browserParser = new BrowserParser($headers);
+
+ $liveService = new LiveService();
+
+ $stream = "chapter-{$chapter->id}";
+
+ $format = $browserParser->isType('desktop') ? 'flv' : 'hls';
+
+ $playUrls = $liveService->getPullUrls($stream, $format);
+
+ $chapterRepo = new ChapterRepo();
+
+ $live = $chapterRepo->findChapterLive($chapter->id);
+
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
+ return [
+ 'id' => $chapter->id,
+ 'title' => $chapter->title,
+ 'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
+ 'play_urls' => $playUrls,
+ 'start_time' => $live->start_time,
+ 'end_time' => $live->end_time,
+ 'user_count' => $chapter->user_count,
+ 'agree_count' => $chapter->agree_count,
+ 'oppose_count' => $chapter->oppose_count,
+ 'comment_count' => $chapter->comment_count,
+ ];
+ }
+
+ protected function formatChapterRead(ChapterModel $chapter)
+ {
+ $chapterRepo = new ChapterRepo();
+
+ $read = $chapterRepo->findChapterRead($chapter->id);
+
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
+ return [
+ 'id' => $chapter->id,
+ 'title' => $chapter->title,
+ 'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
+ 'content' => $read->content,
+ 'user_count' => $chapter->user_count,
+ 'agree_count' => $chapter->agree_count,
+ 'oppose_count' => $chapter->oppose_count,
+ 'comment_count' => $chapter->comment_count,
+ ];
+ }
+
+}
diff --git a/app/Services/Frontend/Chapter/ChapterInfo.php b/app/Services/Frontend/Chapter/ChapterInfo.php
index 3476312c..d7057ab8 100644
--- a/app/Services/Frontend/Chapter/ChapterInfo.php
+++ b/app/Services/Frontend/Chapter/ChapterInfo.php
@@ -57,6 +57,8 @@ class ChapterInfo extends FrontendService
{
$result = $this->formatChapter($chapter);
+ $result['course'] = $this->handleCourse($this->course);
+
$me = [
'agreed' => 0,
'opposed' => 0,
@@ -81,6 +83,21 @@ class ChapterInfo extends FrontendService
return $result;
}
+ protected function handleCourse(CourseModel $course)
+ {
+ return [
+ 'id' => $course->id,
+ 'title' => $course->title,
+ 'cover' => $course->cover,
+ 'market_price' => $course->market_price,
+ 'vip_price' => $course->vip_price,
+ 'model' => $course->model,
+ 'level' => $course->level,
+ 'user_count' => $course->user_count,
+ 'lesson_count' => $course->lesson_count,
+ ];
+ }
+
protected function formatChapter(ChapterModel $chapter)
{
$item = [];
@@ -102,14 +119,20 @@ class ChapterInfo extends FrontendService
protected function formatChapterVod(ChapterModel $chapter)
{
- $chapterVodService = new ChapterVodService();
+ $service = new ChapterVodService();
- $playUrls = $chapterVodService->getPlayUrls($chapter->id);
+ $playUrls = $service->getPlayUrls($chapter->id);
+
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
return [
'id' => $chapter->id,
'title' => $chapter->title,
'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
'play_urls' => $playUrls,
'user_count' => $chapter->user_count,
'agree_count' => $chapter->agree_count,
@@ -136,10 +159,16 @@ class ChapterInfo extends FrontendService
$live = $chapterRepo->findChapterLive($chapter->id);
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
return [
'id' => $chapter->id,
'title' => $chapter->title,
'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
'play_urls' => $playUrls,
'start_time' => $live->start_time,
'end_time' => $live->end_time,
@@ -156,10 +185,16 @@ class ChapterInfo extends FrontendService
$read = $chapterRepo->findChapterRead($chapter->id);
+ /**
+ * @var array $attrs
+ */
+ $attrs = $chapter->attrs;
+
return [
'id' => $chapter->id,
'title' => $chapter->title,
'summary' => $chapter->summary,
+ 'model' => $attrs['model'],
'content' => $read->content,
'user_count' => $chapter->user_count,
'agree_count' => $chapter->agree_count,
diff --git a/app/Services/Frontend/Course/CourseBasic.php b/app/Services/Frontend/Course/CourseBasic.php
new file mode 100644
index 00000000..73362717
--- /dev/null
+++ b/app/Services/Frontend/Course/CourseBasic.php
@@ -0,0 +1,48 @@
+checkCourseCache($id);
+
+ return $this->handleCourse($course);
+ }
+
+ protected function handleCourse(CourseModel $course)
+ {
+ return [
+ 'id' => $course->id,
+ 'title' => $course->title,
+ 'cover' => $course->cover,
+ 'summary' => $course->summary,
+ 'details' => $course->details,
+ 'keywords' => $course->keywords,
+ 'market_price' => $course->market_price,
+ 'vip_price' => $course->vip_price,
+ 'study_expiry' => $course->study_expiry,
+ 'refund_expiry' => $course->refund_expiry,
+ 'rating' => $course->rating,
+ 'model' => $course->model,
+ 'level' => $course->level,
+ 'attrs' => $course->attrs,
+ 'user_count' => $course->user_count,
+ 'lesson_count' => $course->lesson_count,
+ 'package_count' => $course->package_count,
+ 'review_count' => $course->review_count,
+ 'comment_count' => $course->comment_count,
+ 'consult_count' => $course->consult_count,
+ 'favorite_count' => $course->favorite_count,
+ ];
+ }
+
+}
diff --git a/public/static/crossdomain.xml b/public/static/crossdomain.xml
new file mode 100644
index 00000000..8218e632
--- /dev/null
+++ b/public/static/crossdomain.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/public/static/lib/ckplayer/ckplayer.js b/public/static/lib/ckplayer/ckplayer.js
new file mode 100644
index 00000000..f14fe63f
--- /dev/null
+++ b/public/static/lib/ckplayer/ckplayer.js
@@ -0,0 +1,8673 @@
+/*
+ 软件名称:ckplayer
+ 软件版本:X1
+ 软件作者:niandeng
+ 软件网站:http://www.ckplayer.com
+ --------------------------------------------------------------------------------------------------------------------
+ 开发说明:
+ 使用的主要程序语言:javascript(js)及actionscript3.0(as3.0)(as3.0主要用于flashplayer部分的开发,不在该页面呈现)
+ 功能:播放视频
+ 特点:兼容HTML5-VIDEO(优先)以及FlashPlayer
+ --------------------------------------------------------------------------------------------------------------------
+ 使用开源代码部分:
+ 1:flashls-http://flashls.org/
+ =====================================================================================================================
+*/
+function ckplayerConfig() {
+ return {
+ flashvars: {},//用来补充flashvars里的对象
+ languagePath: '',//语言包文件地址
+ stylePath: '',//风格包文件地址
+ config: {
+ fullInteractive: true,//是否开启交互功能
+ delay: 30,//延迟加载视频,单位:毫秒
+ timeFrequency: 100,//计算当前播放时间和加载量的时间频率,单位:毫秒
+ autoLoad: true,//视频是否自动加载
+ loadNext: 0,//多段视频预加载的段数,设置成0则全部加载
+ definition: true,//是否使用清晰度组件
+ subtitle: false,//是否使用多字幕切换组件
+ playbackRate: true,//是否使用倍速播放组件
+ smartRemove: true,//是否使用智能清理,使用该功能则在多段时当前播放段之前的段都会被清除出内存,减少对内存的使用
+ bufferTime: 200,//缓存区的长度,单位:毫秒,不要小于10
+ rtmpBufferTime: 0,//rtmp视频缓存区长度,单位:毫秒
+ click: true,//是否支持屏幕单击暂停
+ doubleClick: true,//是否支持屏幕双击全屏
+ doubleClickInterval: 200,//判断双击的标准,即二次单击间隔的时间差之内判断为是双击,单位:毫秒
+ keyDown: {
+ space: true,//是否启用空格键切换播放/暂停
+ left: true,//是否启用左方向键快退
+ right: true,//是否启用右方向键快进
+ up: true,//是否支持上方向键增加音量
+ down: true //是否支持下方向键减少音量
+ },
+ timeJump: 10,//快进快退时的秒数
+ volumeJump: 0.1,//音量调整的数量,大于0小于1的小数
+ timeScheduleAdjust: 1,//是否可调节调节栏,0不启用,1是启用,2是只能前进(向右拖动),3是只能后退,4是只能前进但能回到第一次拖动时的位置,5是看过的地方可以随意拖动
+ previewDefaultLoad: true,//预览图片是否默认加载,优点是鼠标第一次经过进度条即可显示预览图片
+ promptSpotTime: false,//提示点文字是否在前面加上对应时间
+ buttonMode: {
+ player: false,//鼠标在播放器上是否显示可点击形态
+ controlBar: false,//鼠标在控制栏上是否显示可点击形态
+ timeSchedule: true,//鼠标在时间进度条上是否显示可点击形态
+ volumeSchedule: true //鼠标在音量调节栏上是否显示可点击形态
+ },
+ liveAndVod: { //直播+点播=回播功能
+ open: false,//是否开启,开启该功能需要设置flashvars里live=true
+ vodTime: 2,//可以回看的整点数
+ start: 'start' //回看请求参数
+ },
+ usehardwareeecoder: false,//是否采用硬件加速,只针对flashplayer有效
+ errorNum: 3,//错误重连次数
+ playCorrect: false,//是否需要错误修正,这是针对rtmp的
+ timeCorrect: true,//http视频播放时间错误纠正,有些因为视频格式的问题导致视频没有实际播放结束视频文件就返回了stop命令
+ m3u8Definition: { //m3u8自动清晰度时按关键字来进行判断
+ //tags:['200k','110k','400k','600k','1000k']
+ },
+ m3u8MaxBufferLength: 30,//m3u8每次缓冲时间,单位:秒数
+ split: '|',//当视频地址采用字符形式并且需要使用逗号或其它符号来切割数组里定义
+ timeStamp: '',//一个地址,用来请求当前时间戳,用于播放器内部时间效准
+ mobileVolumeBarShow: false,//在移动端是否显示音量调节按钮
+ addCallback: 'adPlay,adPause,playOrPause,videoPlay,videoPause,videoMute,videoEscMute,videoClear,changeVolume,fastBack,fastNext,videoSeek,newVideo,getMetaDate,videoRotation,videoBrightness,videoContrast,videoSaturation,videoHue,videoZoom,videoProportion,videoError,addListener,removeListener,addElement,getElement,deleteElement,elementShow,animate,animateResume,animatePause,deleteAnimate,changeConfig,getConfig,openUrl,fullScreen,quitFullScreen,switchFull,screenshot,custom,changeControlBarShow,getCurrentSrc,changeDefinition,changeSubtitles,changeSubtitlesSize'//需要支持的事件
+ },
+ menu: { //版权名称支持
+ ckkey: '',
+ name: '',
+ link: '',
+ version: '',
+ domain: '',
+ more: []
+ },
+ style: { //风格部分内容配置,这里主要配置loading和logo以及广告的部分内容
+ loading: { //视频加载前显示在播放器中间的图片,如果不需要可以删除该属性
+ file: 'data:image/swf;base64,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',
+ align: 'center',
+ vAlign: 'middle',
+ offsetX: -100,
+ offsetY: -40
+ },
+ logo: { //显示在右上角的logo图片,如果不需要可以删除该属性
+ file: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAUCAYAAAD4BKGuAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAVTSURBVHja1Fl/aJVVGP4cw/mH5tUWi3I53cA0WbeIzMgaq6lQoVawm0S6glHhIKM/TELICotqCxMSGWQRdFfRLEhc9mMxqA0rbdS2wsV0GkZXuaKUWlHvgeeNh7f3u1du3Ft74eGcnXu+c873vD/Pt0nZbDZyZL2gWZAQTBH8IjggeEjgPZASPIB+g/P7EsGT6J/BfHfjHFIv2Jpjj/+dlDskvCm42Jk7X3C7YJOgw/z2oOBGwdEYRW0RVAjOCZ4ugNggqwU3CTLRBJFyQ+xuwVRY14igB78tE9QKpgmeEHwkGKRnq9AeMesHRWwEsYGUxwSdBZ51ecweE4Lct0DsOVjaZvptA8jfC4JfghWpXIJ2jMY+EDShf1pwh6DvX5x1GtpDE43cNFlfhyFWpQ9xd5FgFo3fRi++C+2nCBNBRgU3O6RsEyyEQv4QLMb4CcE9RlFBLqS1WZ6BZ83A35ofVhuvfE5QJrjWebdgCJOx51qM1QgewbMzsO57MDQrB9DeC8ObHd5Xyb2eiNiQQxmtgkZBr+OuZwV7BIcF1RgbF1wTE2MbEccX48VY9sMzBilhTke/m+b1Q9lefpgruI7OsYhIGzPJuAnn3+6EM7vu1YKl5vkrYRSfCGZivCxoMklk7M5j6eFlXyRNRSAvAoFf0Fo/CC7LkbwuQjsZsf0qwbuI9wlYgIqGl6NEzDYibJ/gbmAfxpKoMDRcaSK8xZzjZbK+NMhSYoNSngV5e+ksKXp+JdqZwDDmdpSbsqa9gNAyi5JalSGv3iQ+dtNK9HvI+sNBh2AhvNYVaH+msRtAdsa4ehoKCuQsoP2PY8+kCSkJ5IRWjD2FZ4/BOFSWYv9KhI40eUKQ31CqdnLM1c1OOnHufKSS+iEZvgHNhji8g1yT5VZKdCnHO+ajvrYK/I7GkuSWjwvq8Mzl5M79NF89aCHaBNXmWv0sQVUUZEDwsDnbr2i9s31lKyGuFs7kITEBC+snJaToRYIFrRN0CeYgoSUxJ23WUm85eB41b4IUuIvGtyIMVMY8lzHGMoYworF7J/onKYk10/wVQL6zXYr+Zq9aOEhuXZPDel8Q3If+HMzTeHPKlForEK+mws3SMfH2UMxNLIJbasKsoIQZwVLbKFkN4T1C3HxUMM+EkCAfgjwNV40Y304KriOP+jIHqa+jvYsqnH/kqzKaGCFZxWnoTqooxky8+dHUsOGwr6Jfi9jmlVVTHGLnot9L3qGWqCToWYYRF5fDa96mtb93yI2g8B0IWxlTHWmi/hOG00D4mEJfJ5WhQX7ySCsDUaNkJeud6+sgXCgs3OLEG2/xdZSh10JBeiB1zQU0HuQdSib60rOdm9kFToIL8hmFiRHzm1YM0ylet5k579OFpcUk4I0oD0/QuJ7tcBy5ERY6ixdrh5uNwN3bUV7pd4E+J958HmPxbRRydqK/in6vxj5aH9din/udEPKtuU1GqBL24xJwBInQWiHLcbQVKBXTzkVpHP0tWHsIpZUqPeWcrScXuX2ImRkqlufBhdQl15ig3WLKH0/SeAmtD+uprBqGx1ThhlWN5LKG4lcNKbDblFDjVDU0wWK7yLLqnPNk6cKzKsfXt1GQmQQXSuwymhd3tr9lkvPJMUV152kc2PsmUEMxtzdPRk2SNX2DQ3Vhr02Is18LXjHVAz/bG0NEK8johus3UBiwyfkYlDkQUyLaWrwZBrbHMaB8Z3PJLaYk8IIVKKPSJdxbv3ecynNzLNr33GKLV1YVW4IyfycXfq0UxP4X5HJdXCqX4Wv0AKqYkkipw4LG6WxMNi+GhAtH+M/K8wVe7wuWvwQYAFT+UsGCXmX3AAAAAElFTkSuQmCC',
+ align: 'right',
+ vAlign: 'top',
+ offsetX: -100,
+ offsetY: 10
+ },
+ advertisement: { //广告相关的配置
+ time: 5,//广告默认播放时长以及多个广告时每个广告默认播放时间,单位:秒
+ method: 'get',//广告监测地址默认请求方式,get/post
+ videoForce: false,//视频广告是否强制播放结束
+ videoVolume: 0.8,//视频音量
+ skipButtonShow: true,//是否显示跳过广告按钮
+ linkButtonShow: true,//是否显示广告链接按钮,如果选择显示,只有在提供了广告链接地址时才会显示
+ muteButtonShow: true,//是否在视频广告时显示静音按钮
+ closeButtonShow: true,//暂停时是否显示关闭广告按钮
+ closeOtherButtonShow: true,//其它广告是否需要关闭广告按钮
+ frontSkipButtonDelay: 1,//前置广告跳过广告按钮延时显示的时间,单位:秒
+ insertSkipButtonDelay: 0,//插入广告跳过广告按钮延时显示的时间,单位:秒
+ endSkipButtonDelay: 0,//后置广告跳过广告按钮延时显示的时间,单位:秒
+ frontStretched: 2,//前置广告拉伸方式,0=原始大小,1=自动缩放,2=只有当广告的宽或高大于播放器宽高时才进行缩放,3=参考播放器宽高,4=宽度参考播放器宽、高度自动,5=高度参考播放器高、宽度自动
+ insertStretched: 2,//插入广告拉伸方式,0=原始大小,1=自动缩放,2=只有当广告的宽或高大于播放器宽高时才进行缩放,3=参考播放器宽高,4=宽度参考播放器宽、高度自动,5=高度参考播放器高、宽度自动
+ pauseStretched: 2,//暂停广告拉伸方式,0=原始大小,1=自动缩放,2=只有当广告的宽或高大于播放器宽高时才进行缩放,3=参考播放器宽高,4=宽度参考播放器宽、高度自动,5=高度参考播放器高、宽度自动
+ endStretched: 2 //结束广告拉伸方式,0=原始大小,1=自动缩放,2=只有当广告的宽或高大于播放器宽高时才进行缩放,3=参考播放器宽高,4=宽度参考播放器宽、高度自动,5=高度参考播放器高、宽度自动
+ },
+ video: { //视频的默认比例,当视频元数据里没有宽和高属性时默认使用该宽高
+ defaultWidth: 16,//宽度
+ defaultHeight: 9 //高度
+ }
+ }
+ };
+}
+
+!(function () {
+ var javascriptPath = '';
+ !function () {
+ var scriptList = document.scripts,
+ thisPath = scriptList[scriptList.length - 1].src;
+ javascriptPath = thisPath.substring(0, thisPath.lastIndexOf('/') + 1);
+ }();
+ var ckplayer = function (obj) {
+ /*
+ javascript部分开发所用的注释说明:
+ 1:初始化-程序调用时即运行的代码部分
+ 2:定义样式-定义容器(div,p,canvas等)的样式表,即css
+ 3:监听动作-监听元素节点(单击-click,鼠标进入-mouseover,鼠标离开-mouseout,鼠标移动-mousemove等)事件
+ 4:监听事件-监听视频的状态(播放,暂停,全屏,音量调节等)事件
+ 5:共用函数-这类函数在外部也可以使用
+ 6:全局变量-定义成全局使用的变量
+ 7:其它相关注释
+ 全局变量说明:
+ 在本软件中所使用到的全局变量(变量(类型)包括Boolean,String,Int,Object(包含元素对象和变量对象),Array,Function等)
+ 下面列出重要的全局变量:
+ V:Object:视频对象
+ VA:Array:视频列表(包括视频地址,类型,清晰度说明)
+ ID:String:视频ID
+ CB:Object:控制栏各元素的集合对象
+ PD:Object:内部视频容器对象
+ ---------------------------------------------------------------------------------------------
+ 程序开始
+ 下面为需要初始化配置的全局变量
+ 初始化配置
+ config:全局变量定义一些基本配置
+ */
+ this.config = {
+ videoDbClick: true,//是否支持双击全屏/退出全屏动作
+ errorTime: 100,//延迟判断失败的时间,单位:毫秒
+ videoDrawImage: false,//是否使用视频drawImage功能,注意,该功能在移动端表现不了
+ adSkipClick: 'javaScript->adjump' //h5环境中点击跳过广告按钮触发的功能
+ };
+ //全局变量:播放器默认配置,在外部传递过来相应配置后,则进行相关替换
+ this.varsConfig = {
+ playerID: '',//播放器ID
+ container: '',//视频容器的ID
+ variable: 'ckplayer',//播放函数(变量)名称
+ volume: 0.8,//默认音量,范围0-1
+ poster: '',//封面图片地址
+ autoplay: false,//是否自动播放
+ loop: false,//是否需要循环播放
+ live: false,//是否是直播
+ duration: 0,//指定总时间
+ forceduration: 0,//强制使用该时间为总时间
+ seek: 0,//默认需要跳转的秒数
+ drag: '',//拖动时支持的前置参数
+ front: '',//前一集按钮动作
+ next: '',//下一集按钮动作
+ loaded: '',//加载播放器后调用的函数
+ flashplayer: false,//设置成true则强制使用flashplayer
+ html5m3u8: false,//PC平台上是否使用h5播放器播放m3u8
+ track: null,//字幕轨道
+ cktrack: null,//ck字幕
+ cktrackdelay: 0,//字幕显示延迟时间
+ preview: null,//预览图片对象
+ prompt: null,//提示点功能
+ video: null,//视频地址
+ config: '',//调用配置函数名称
+ type: '',//视频格式
+ crossorigin: '',//设置html5视频的crossOrigin属性
+ crossdomain: '',//安全策略文件地址
+ unescape: false,//默认flashplayer里需要解码
+ mobileCkControls: false,//移动端h5显示控制栏
+ mobileAutoFull: true,//移动端是否默认全屏播放
+ playbackrate: 1,//默认倍速
+ h5container: '',//h5环境中使用自定义容器
+ debug: false,//是否开启调试模式
+ overspread: true,//是否让视频铺满播放器
+ //以下为广告相关配置
+ adfront: '',
+ adfronttime: '',
+ adfrontlink: '',
+ adpause: '',
+ adpausetime: '',
+ adpauselink: '',
+ adinsert: '',
+ adinserttime: '',
+ adinsertlink: '',
+ inserttime: '',
+ adend: '',
+ adendtime: '',
+ adendlink: '',
+ advertisements: ''
+ };
+ this.vars = {};//全局变量:语言配置
+ this.language = {
+ volume: '音量:',
+ play: '点击播放',
+ pause: '点击暂停',
+ full: '点击全屏',
+ escFull: '退出全屏',
+ mute: '点击静音',
+ escMute: '取消静音',
+ front: '上一集',
+ next: '下一集',
+ definition: '点击选择清晰度',
+ playbackRate: '点击选择速度',
+ subtitles: '点击选择字幕',
+ error: '加载出错',
+ adTime: '广告{$second}秒',
+ skipAd: '跳过广告',
+ skipAdTime: '{$second}秒后可跳过广告',
+ adLink: '查看详情',
+ noLoadShockwaveFlash: '您的浏览器不支持FlashPlayer插件或没有启用该插件',
+ downLoadShockwaveFlash: '点击下载FlashPlayer插件'
+ };
+ //全局变量:右键菜单:[菜单标题,类型(link:链接,default:灰色,function:调用函数,javascript:调用js函数),执行内容(包含链接地址,函数名称),[line(间隔线)]]
+ this.contextMenu = [['ckplayer', 'link', 'http://www.ckplayer.com', '_blank'], ['version:X1', 'default', 'line']];
+ //全局变量:错误提示列表
+ this.errorList = [['000', 'Object does not exist'], ['001', 'Variables type is not a object'], ['002', 'Video object does not exist'], ['003', 'Video object format error'], ['004', 'Video object format error'], ['005', 'Video object format error'], ['006', '[error] does not exist '], ['007', 'Ajax error'], ['008', 'Ajax error'], ['009', 'Ajax object format error'], ['010', 'Ajax.status:[error]']];
+ //全局变量:HTML5变速播放的值数组/如果不需要可以设置成null
+ this.playbackRateArr = [[0.5, '0.5倍'], [1, '正常'], [1.25, '1.25倍'], [1.5, '1.5倍'], [2, '2倍速'], [4, '4倍速']];
+ //全局变量:保存倍速
+ this.playbackRateTemp = 1;
+ //全局变量:HTML5默认变速播放的值
+ this.playbackRateDefault = 1;
+ //全局变量:HTML5当前显示的字幕编号
+ this.subtitlesTemp = -1;
+ //全局变量:定义logo
+ this.logo = '';
+ //全局变量:是否加载了播放器
+ this.loaded = false;
+ //全局变量:计时器,监听视频加载出错的状态
+ this.timerError = null;
+ //全局变量:是否出错
+ this.error = false;
+ //全局变量:出错地址的数组
+ this.errorUrl = [];
+ //全局变量:计时器,监听全屏与非全屏状态
+ this.timerFull = null;
+ //全局变量:是否全屏状态
+ this.full = false;
+ //全局变量:计时器,监听当前的月/日 时=分=秒
+ this.timerTime = null;
+ //全局变量:计时器,监听视频加载
+ this.timerBuffer = null;
+ //全局变量:设置进度按钮及进度条是否跟着时间变化,该属性主要用来在按下进度按钮时暂停进度按钮移动和进度条的长度变化
+ this.isTimeButtonMove = true;
+ //全局变量:进度栏是否有效,如果是直播,则不需要监听时间让进度按钮和进度条变化
+ this.isTimeButtonDown = false;
+ //全局变量:用来模拟双击功能的判断
+ this.isClick = false;
+ //全局变量:计时器,用来模拟双击功能的计时器
+ this.timerClick = null;
+ //全局变量:计时器,旋转loading
+ this.timerLoading = null;
+ //全局变量:计时器,监听鼠标在视频上移动显示控制栏
+ this.timerCBar = null;
+ //全局变量:播放视频时如果该变量的值大于0,则进行跳转后设置该值为0
+ this.needSeek = 0;
+ //全局变量:当前音量
+ this.volume = 0;
+ //全局变量:静音时保存临时音量
+ this.volumeTemp = 0;
+ //全局变量/变量类型:Number/功能:当前播放时间
+ this.time = 0;
+ //全局变量:定义首次调用
+ this.isFirst = true;
+ //全局变量:是否使用HTML5-VIDEO播放
+ this.html5Video = true;
+ //全局变量记录视频容器节点的x;y
+ this.pdCoor = {
+ x: 0,
+ y: 0
+ };
+ //全局变量:判断当前使用的播放器类型,html5video或flashplayer
+ this.playerType = '';
+ //全局变量:加载进度条的长度
+ this.loadTime = 0;
+ //全局变量:body对象
+ this.body = document.body || document.documentElement;
+ //全局变量:播放器
+ this.V = null;
+ //全局变量:保存外部js监听事件数组
+ this.listenerJsArr = [];
+ //全局变量:保存控制栏显示元素的总宽度
+ this.buttonLen = 0;
+ //全局变量:保存控制栏显示元素的数组
+ this.buttonArr = [];
+ //全局变量:保存按钮元素的宽
+ this.buttonWidth = {};
+ //全局变量:保存播放器上新增元件的数组
+ this.elementArr = [];
+ //全局变量:保存播放器上弹幕的临时数组
+ this.elementTempArr = [];
+ //全局变量:字幕内容
+ this.track = [];
+ //全局变量:字幕索引
+ this.trackIndex = 0;
+ //全局变量:当前显示的字幕内容
+ this.nowTrackShow = {
+ sn: ''
+ };
+ //全局变量:保存字幕元件数组
+ this.trackElement = [];
+ //全局变量:将视频转换为图片
+ this.timerVCanvas = null;
+ //全局变量:animate,缓动对象数组
+ this.animateArray = [];
+ //全局变量:保存animate的元件
+ this.animateElementArray = [];
+ //全局变量:保存需要在暂停时停止缓动的数组
+ this.animatePauseArray = [];
+ //全局变量:预览图片加载状态/0=没有加载,1=正在加载,2=加载完成
+ this.previewStart = 0;
+ //全局变量:预览图片容器
+ this.previewDiv = null;
+ //全局变量:预览框
+ this.previewTop = null;
+ //全局变量:预览框的宽
+ this.previewWidth = 120;
+ //全局变量:预览图片容器缓动函数
+ this.previewTween = null;
+ //全局变量:是否是m3u8格式,是的话则可以加载hls.js
+ this.isM3u8 = false;
+ //全局变量:保存提示点数组
+ this.promptArr = [];
+ //全局变量:显示提示点文件的容器
+ this.promptElement = null;
+ //全局变量:配置文件函数
+ this.ckplayerConfig = {};
+ //全局变量:控制栏是否显示
+ this.showFace = true;
+ //全局变量:是否监听过h5的错误
+ this.errorAdd = false;
+ //全局变量:是否发送了错误
+ this.errorSend = false;
+ //全局变量:控制栏是否隐藏
+ this.controlBarIsShow = true;
+ //全局变量,保存当前缩放比例
+ this.videoScale = 1;
+ //全局变量:设置字体
+ this.fontFamily = '"Microsoft YaHei"; YaHei; "\5FAE\8F6F\96C5\9ED1"; SimHei; "\9ED1\4F53";Arial';
+ //全局变量:设置字幕的文字大小
+ this.trackFontSize = 16;
+ //全局变量:设置字幕的行距
+ this.trackLineHeight = 30;
+ //全局变量:记录第一次拖动进度按钮时的位置
+ this.timeSliderLeftTemp = 0;
+ //全局变量:判断是否记录了总时间
+ this.durationSendJS = false;
+ //全局变量:初始化广告分析是否结束设置
+ this.adAnalysisEnd = false;
+ //全局变量:广告变量
+ this.advertisements = {};
+ //全局变量:是否是第一次播放视频
+ this.isFirstTimePlay = true;
+ //全局变量:当前需要播放的广告类型
+ this.adType = '';
+ //全局变量:播放广告计数
+ this.adI = 0;
+ //全局变量:要播放的临时地址
+ this.videoTemp = {
+ src: '',
+ source: '',
+ currentSrc: '',
+ loop: false
+ };
+ //全局变量:当前要播放的广告组总时间
+ this.adTimeAllTotal = 0;
+ //全局变量:肖前要播放的广告时间
+ this.adTimeTotal = 0;
+ //全局变量:用来做倒计时
+ this.adCountDownObj = null;
+ //全局变量:前置,中插,结尾广告是否已开始运行
+ this.adPlayStart = false;
+ //全局变量:目前是否在播放广告
+ this.adPlayerPlay = false;
+ //全局变量:当前广告是否暂停
+ this.adIsPause = false;
+ //全局变量:视频广告是否静音
+ this.adVideoMute = false;
+ //全局变量:是否需要记录当前播放的时间供广告播放结束后进行跳转
+ this.adIsVideoTime = false;
+ //全局变量:后置广告是否播放
+ this.endAdPlay = false;
+ //全局变量:暂停广告是否在显示
+ this.adPauseShow = false;
+ //全局变量:是否需要重置广告以实现重新播放时再播放一次
+ this.adReset = false;
+ //全局变量:记录鼠标在视频上点击时的坐标
+ this.videoClickXy = {x: 0, y: 0};
+ //全局变量:是否在播放广告时播放过视频广告
+ this.adVideoPlay = false;
+ if (obj) {
+ this.embed(obj);
+ }
+ //全局变量:临时存储已加载时间的变量
+ this.loadTimeTemp = 0;
+ //全局变量,临时存储hls形式下首次加载时是否需要暂停或播放的判断
+ this.hlsAutoPlay = true;
+ };
+ ckplayer.prototype = {
+ /*
+ 主要函数部分开始
+ 主接口函数:
+ 调用播放器需初始化该函数
+ */
+ embed: function (c) {
+ //c:Object:是调用接口传递的属性对象
+ if (window.location.href.substr(0, 7) == 'file://') {//如果是使用的file协议打网页则弹出提示
+ alert('Please use the HTTP protocol to open the page');
+ return;
+ }
+ if (c == undefined || !c) {
+ this.eject(this.errorList[0]);
+ return;
+ }
+ if (typeof (c) != 'object') {
+ this.eject(this.errorList[1]);
+ }
+ this.vars = this.standardization(this.varsConfig, c);
+ if (!this.vars['mobileCkControls'] && this.isMobile()) {
+ this.vars['flashplayer'] = false;
+ this.showFace = false;
+ }
+ var videoString = this.vars['video'];
+ if (!videoString) {
+ this.eject(this.errorList[2]);
+ return;
+ }
+ if (typeof (videoString) == 'string') {
+ if (videoString.substr(0, 3) == 'CK:' || videoString.substr(0, 3) == 'CE:' || videoString.substr(8, 3) == 'CK:' || videoString.substr(8, 3) == 'CE:') {
+ this.vars['flashplayer'] = true;
+ }
+ }
+ if (typeof (videoString) == 'object') {
+ if (videoString.length > 1) {
+ if (videoString[0][0].substr(0, 3) == 'CK:' || videoString[0][0].substr(0, 3) == 'CE:' || videoString[0][0].substr(8, 3) == 'CK:' || videoString[0][0].substr(8, 3) == 'CE:') {
+ this.vars['flashplayer'] = true;
+ }
+ }
+ }
+ if (this.vars['config']) {
+ this.ckplayerConfig = eval(this.vars['config'] + '()');
+ } else {
+ this.ckplayerConfig = ckplayerConfig();
+ }
+ if ((!this.supportVideo() && this.vars['flashplayer'] != '') || (this.vars['flashplayer'] && this.uploadFlash()) || !this.isMsie()) {
+ this.html5Video = false;
+ this.getVideo();
+ } else if (videoString) {
+ //判断视频数据类型
+ this.analysedVideoUrl(videoString);
+ return this;
+ } else {
+ this.eject(this.errorList[2]);
+ }
+ },
+ /*
+ 内部函数
+ 根据外部传递过来的video开始分析视频地址
+ */
+ analysedVideoUrl: function (video) {
+ var i = 0,
+ y = 0;
+ var thisTemp = this;
+ this.VA = [];//定义全局变量VA:视频列表(包括视频地址,类型,清晰度说明)
+ if (this.typeString(video) == 'string') { //如果是字符形式的则判断后缀进行填充
+ if (video.substr(0, 8) != 'website:') {
+ this.VA = [[video, '', '', 0]];
+ var fileExt = this.getFileExt(video);
+ switch (fileExt) {
+ case '.mp4':
+ this.VA[0][1] = 'video/mp4';
+ break;
+ case '.ogg':
+ this.VA[0][1] = 'video/ogg';
+ break;
+ case '.webm':
+ this.VA[0][1] = 'video/webm';
+ break;
+ default:
+ break;
+ }
+ this.getVideo();
+ } else {
+ if (this.html5Video) {
+ var ajaxObj = {
+ url: video.substr(8),
+ success: function (data) {
+ if (data) {
+ thisTemp.analysedUrl(data);
+ } else {
+ thisTemp.eject(thisTemp.errorList[5]);
+ this.VA = video;
+ thisTemp.getVideo();
+ }
+ }
+ };
+ this.ajax(ajaxObj);
+ } else {
+ this.VA = video;
+ this.getVideo();
+ }
+
+ }
+ } else if (this.typeString(video) == 'array') {//如果视频地址是数组
+ if (!this.isUndefined(typeof (video[0].length))) { //如果视频地址是二维数组
+ this.VA = video;
+ }
+ this.getVideo();
+ } else if (this.typeString(video) == 'object') {
+ /*
+ 如果video格式是对象形式,则分二种
+ 如果video对象里包含type,则直接播放
+ */
+ if (!this.isUndefined(video['type'])) {
+ this.VA.push([video['file'], video['type'], '', 0]);
+ this.getVideo();
+ } else {
+ this.eject(this.errorList[5]);
+ }
+ } else {
+ this.eject(this.errorList[4]);
+ }
+ },
+ /*
+ 对请求到的视频地址进行重新分析
+ */
+ analysedUrl: function (data) {
+ this.vars = this.standardization(this.vars, data);
+ if (!this.isUndefined(data['video'])) {
+ this.vars['video'] = data['video'];
+ }
+ this.analysedVideoUrl(this.vars['video']);
+ },
+ /*
+ 内部函数
+ 检查浏览器支持的视频格式,如果是则将支持的视频格式重新分组给播放列表
+ */
+ getHtml5Video: function () {
+ var va = this.VA;
+ var nva = [];
+ var mobile = false;
+ var video = document.createElement('video');
+ var codecs = function (type) {
+ var cod = '';
+ switch (type) {
+ case 'video/mp4':
+ cod = 'avc1.4D401E, mp4a.40.2';
+ break;
+ case 'video/ogg':
+ cod = 'theora, vorbis';
+ break;
+ case 'video/webm':
+ cod = 'vp8.0, vorbis';
+ break;
+ default:
+ break;
+ }
+ return cod;
+ };
+ var supportType = function (vidType, codType) {
+ if (!video.canPlayType) {
+ this.html5Video = false;
+ return;
+ }
+ var isSupp = video.canPlayType(vidType + ';codecs="' + codType + '"');
+ if (isSupp == '') {
+ return false
+ }
+ return true;
+ };
+ if (this.vars['flashplayer'] || !this.isMsie()) {
+ this.html5Video = false;
+ return;
+ }
+ if (this.isMobile()) {
+ mobile = true;
+ }
+ for (var i = 0; i < va.length; i++) {
+ var v = va[i];
+ if (v) {
+ if (v[1] != '' && !mobile && supportType(v[1], codecs(v[1])) && v[0].substr(0, 4) != 'rtmp') {
+ nva.push(v);
+ }
+ if ((this.getFileExt(v[0]) == '.m3u8' || this.vars['type'] == 'video/m3u8' || this.vars['type'] == 'm3u8' || v[1] == 'video/m3u8' || v[1] == 'm3u8') && this.vars['html5m3u8'] && !mobile) {
+ this.isM3u8 = true;
+ nva.push(v);
+ }
+ }
+ }
+ if (nva.length > 0) {
+ this.VA = nva;
+ } else {
+ if (!mobile) {
+ this.html5Video = false;
+ }
+ }
+ },
+ /*
+ 内部函数
+ 根据视频地址开始构建播放器
+ */
+ getVideo: function () {
+ var thisTemp = this;
+ var v = this.vars;
+ //如果存在广告字段则开始分析广告
+ if (!this.adAnalysisEnd && (v['adfront'] != '' || v['adpause'] != '' || v['adinsert'] != '' || v['adend'] != '' || v['advertisements'] != '')) {
+ this.adAnalysisEnd = true;
+ this.adAnalysis();
+ return;
+ }
+ //如果存在字幕则加载
+ if (this.V) { //如果播放器已存在,则认为是从newVideo函数发送过来的请求
+ this.changeVideo();
+ return;
+ }
+ if (this.vars['cktrack']) {
+ this.loadTrack();
+ }
+ if (this.supportVideo() && !this.vars['flashplayer']) {
+ this.getHtml5Video(); //判断浏览器支持的视频格式
+ }
+ var src = '',
+ source = '',
+ poster = '',
+ loop = '',
+ autoplay = '',
+ track = '';
+ var video = v['video'];
+ var i = 0;
+ this.CD = this.getByElement(v['container']);
+ volume = v['volume'];
+ if (!this.CD) {
+ this.eject(this.errorList[6], v['container']);
+ return false;
+ }
+ //开始构建播放器容器
+ this.V = undefined;
+ var thisPd = null;
+ if (v['h5container'] != '') {
+ thisPd = this.getByElement(v['h5container']);
+ if (this.isUndefined(thisPd)) {
+ thisPd = null;
+ }
+ }
+ var isVideoH5 = null; //isUndefined thisPd
+ if (v['playerID'] != '') {
+ isVideoH5 = this.getByElement('#' + v['playerID']);
+ if (this.isUndefined(isVideoH5)) {
+ isVideoH5 = null;
+ }
+ }
+ if (thisPd != null && isVideoH5 != null) {
+ this.PD = thisPd; //PD:定义播放器容器对象全局变量
+ } else {
+ var playerID = 'ckplayer' + this.randomString();
+ var playerDiv = document.createElement('div');
+ playerDiv.className = playerID;
+ this.CD.innerHTML = '';
+ this.CD.appendChild(playerDiv);
+ this.PD = this.getByElement(playerID); //PD:定义播放器容器对象全局变量
+ }
+ this.css(this.CD, {
+ backgroundColor: '#000000',
+ overflow: 'hidden',
+ position: 'relative'
+ });
+ this.css(this.PD, {
+ backgroundColor: '#000000',
+ width: '100%',
+ height: '100%',
+ fontFamily: this.fontFamily
+ });
+ if (this.html5Video) { //如果支持HTML5-VIDEO则默认使用HTML5-VIDEO播放器
+ //禁止播放器容器上鼠标选择文本
+ this.PD.onselectstart = this.PD.ondrag = function () {
+ return false;
+ };
+ //播放器容器构建完成并且设置好样式
+ //构建播放器
+ if (this.VA.length == 1) {
+ this.videoTemp['src'] = decodeURIComponent(this.VA[0][0]);
+ src = ' src="' + this.videoTemp['src'] + '"';
+
+ } else {
+ var videoArr = this.VA.slice(0);
+ videoArr = this.arrSort(videoArr);
+ for (i = 0; i < videoArr.length; i++) {
+ var type = '';
+ var va = videoArr[i];
+ if (va[1]) {
+ type = ' type="' + va[1] + '"';
+ if (type == ' type="video/m3u8"' || type == ' type="m3u8"') {
+ type = '';
+ }
+ }
+ source += '';
+ }
+ this.videoTemp['source'] = source;
+ }
+ //分析视频地址结束
+ if (v['autoplay']) {
+ autoplay = ' autoplay="autoplay"';
+ }
+ if (v['poster']) {
+ poster = ' poster="' + v['poster'] + '"';
+ }
+ if (v['loop']) {
+ loop = ' loop="loop"';
+ }
+ if (v['seek'] > 0) {
+ this.needSeek = v['seek'];
+ }
+ if (v['track'] != null && v['cktrack'] == null) {
+ var trackArr = v['track'];
+ var trackDefault = '';
+ var defaultHave = false;
+ for (i = 0; i < trackArr.length; i++) {
+ var trackObj = trackArr[i];
+ if (trackObj['default'] && !defaultHave) {
+ trackDefault = ' default';
+ defaultHave = true;
+ } else {
+ trackDefault = '';
+ }
+ track += '
';break;case'link':if(me[3]){me[3]='target="'+me[3]+'"'}html+=''+me[0]+'
';break;case'javaScript':html+=''+me[0]+'
';break;case'actionScript':html+=''+me[0]+'
';break;default:break}}this.CB['menu'].innerHTML=html;var pArr=this.CB['menu'].childNodes;for(i=0;icdH-2)&&cShow&&!thisTemp.getMetaDate()['paused']){controlBarShow(false)}}else{if(!cShow){controlBarShow(true)}}oldClient={x:client['x'],y:client['y']}};this.timerCBar=new this.timer(2000,cbarFun);var cdMove=function(event){var getClient=thisTemp.client(event);client['x']=getClient['x'];client['y']=getClient['y'];if(!cShow){controlBarShow(true)}};this.addListenerInside('mousemove',cdMove,thisTemp.CD);this.addListenerInside('ended',cdMove);this.addListenerInside('resize',cdMove,window);if(hide===true){cShow=true;force=true;controlBarShow(false)}if(hide===false){cShow=false;force=true;controlBarShow(true)}},keypress:function(){var thisTemp=this;var keyDown=function(eve){var keycode=eve.keyCode||eve.which;if(thisTemp.adPlayerPlay){return}switch(keycode){case 32:thisTemp.playOrPause();break;case 37:thisTemp.fastBack();break;case 39:thisTemp.fastNext();break;case 38:now=thisTemp.volume+thisTemp.ckplayerConfig['config']['volumeJump'];thisTemp.changeVolume(now>1?1:now);break;case 40:now=thisTemp.volume-thisTemp.ckplayerConfig['config']['volumeJump'];thisTemp.changeVolume(now<0?0:now);break;default:break}};this.addListenerInside('keydown',keyDown,window||document)},playbackRate:function(){if(!this.showFace||!this.ckplayerConfig['config']['playbackRate']){return}var thisTemp=this;var vArr=this.playbackRateArr;var html='';var nowD='';var i=0;if(!nowD){nowD=vArr[this.playbackRateDefault][1]}if(vArr.length>1){var zlen=0;for(i=0;i'+vArr[i][1]+''+html;var dlen=this.getStringLen(vArr[i][1]);if(dlen>zlen){zlen=dlen}}if(html){html+=''+nowD+'
'}this.CB['playbackrate'].innerHTML=nowD;this.CB['playbackrateP'].innerHTML=html;this.css([this.CB['playbackrate'],this.CB['playbackrateLine']],'display','block');var pArr=this.CB['playbackrateP'].childNodes;for(var i=0;inewPlaybackrate')}};this.addListenerInside('click',defClick,pArr[i])}var pW=(zlen*10)+10;this.css(this.CB['playbackrateP'],{width:pW+'px'});this.css(this.CB['playbackrate'],{width:pW+'px'});this.buttonWidth['playbackrate']=this.CB['playbackrate'].offsetWidth}else{this.CB['playbackrate'].innerHTML='';this.CB['playbackrateP'].innerHTML='';this.css([this.CB['playbackrate'],this.CB['playbackrateLine']],'display','none')}},addPlaybackrate:function(){var thisTemp=this;var setTimeOutP=null;var defClick=function(event){thisTemp.css(thisTemp.CB['playbackrateP'],{left:thisTemp.getCoor(thisTemp.CB['playbackrate'])['x']+'px',display:'block'})};this.addListenerInside('click',defClick,this.CB['playbackrate']);var defMouseOut=function(event){if(setTimeOutP){window.clearTimeout(setTimeOutP);setTimeOutP=null}setTimeOutP=setTimeout(function(event){thisTemp.css(thisTemp.CB['playbackrateP'],'display','none')},500)};this.addListenerInside('mouseout',defMouseOut,thisTemp.CB['playbackrateP']);var defMouseOver=function(event){if(setTimeOutP){window.clearTimeout(setTimeOutP);setTimeOutP=null}};this.addListenerInside('mouseover',defMouseOver,thisTemp.CB['playbackrateP'])},newPlaybackrate:function(title){var vArr=this.playbackRateArr;var nVArr=[];var i=0;for(i=0;iindexN){indexN=li[2];this.subtitlesTemp=i}}}nowD=vArr[this.subtitlesTemp][1]}if(vArr.length>1){var zlen=0;for(i=0;i'+vArr[i][1]+'';var dlen=this.getStringLen(vArr[i][1]);if(dlen>zlen){zlen=dlen}}if(html){html+=''+nowD+'
'}this.CB['subtitles'].innerHTML=nowD;this.CB['subtitlesP'].innerHTML=html;this.css([this.CB['subtitles'],this.CB['subtitlesLine']],'display','block');var pArr=this.CB['subtitlesP'].childNodes;for(var i=0;inewPlaybackrate')}};this.addListenerInside('click',defClick,pArr[i])}var pW=(zlen*10)+10;this.css(this.CB['subtitlesP'],{width:pW+'px'});this.css(this.CB['subtitles'],{width:pW+'px'});this.buttonWidth['subtitles']=this.CB['subtitles'].offsetWidth}else{this.CB['subtitles'].innerHTML='';this.CB['subtitlesP'].innerHTML='';this.css([this.CB['subtitles'],this.CB['subtitlesLine']],'display','none')}},addSubtitles:function(){var thisTemp=this;var setTimeOutP=null;var defClick=function(event){thisTemp.css(thisTemp.CB['subtitlesP'],{left:thisTemp.getCoor(thisTemp.CB['subtitles'])['x']+'px',display:'block'})};this.addListenerInside('click',defClick,this.CB['subtitles']);var defMouseOut=function(event){if(setTimeOutP){window.clearTimeout(setTimeOutP);setTimeOutP=null}setTimeOutP=setTimeout(function(event){thisTemp.css(thisTemp.CB['subtitlesP'],'display','none')},500)};this.addListenerInside('mouseout',defMouseOut,thisTemp.CB['subtitlesP']);var defMouseOver=function(event){if(setTimeOutP){window.clearTimeout(setTimeOutP);setTimeOutP=null}};this.addListenerInside('mouseover',defMouseOver,thisTemp.CB['subtitlesP'])},changeSubtitles:function(n){if(!this.loaded||n<0){return}var vArr=this.vars['cktrack'];if(this.typeString(vArr)!='array'){return}if(this.playerType=='flashplayer'){this.V.changeSubtitles(n);return}if(vArr.length>n){var arr=vArr[n];if(arr.length>2){var title=arr[1];if(title){this.newSubtitles(title)}}}},changeSubtitlesSize:function(n,m){if(!this.loaded||n<0){return}if(this.playerType=='flashplayer'){this.V.changeSubtitlesSize(n,m);return}this.trackFontSize=n;if(!this.isUndefined(m)){this.trackLineHeight=m}this.trackShowAgain()},newSubtitles:function(title){var vArr=this.vars['cktrack'];var i=0;for(i=0;i1){var zlen=0;for(i=dArr.length-1;i>-1;i--){html=''+dArr[i]+'
'+html;var dlen=this.getStringLen(dArr[i]);if(dlen>zlen){zlen=dlen}}if(html){html+=''+nowD+'
'}this.CB['definition'].innerHTML=nowD;this.CB['definitionP'].innerHTML=html;this.css([this.CB['definition'],this.CB['definitionLine']],'display','block');var pArr=this.CB['definitionP'].childNodes;for(var i=0;in){var arr=this.VA[n];if(arr.length>3){var title=arr[2];if(title){this.newDefinition(title)}}}},newDefinition:function(title){var vArr=this.VA;var nVArr=[];var i=0;for(i=0;i'}this.V.removeAttribute('src');this.V.innerHTML=source;this.V.currentSrc=nVArr[0][0]}}else{this.embedHls(vArr[0][0],this.vars['autoplay'])}this.V.autoplay='autoplay';this.V.load();if(this.playbackRateTemp!=1){this.V.playbackRate=this.playbackRateTemp}this.timerErrorFun()},embedHls:function(url,autoplay){var thisTemp=this;thisTemp.hlsAutoPlay=autoplay;if(Hls.isSupported()){var hls=new Hls();hls.loadSource(url);hls.attachMedia(this.V);hls.on(Hls.Events.MANIFEST_PARSED,function(){thisTemp.playerLoad();if(autoplay){thisTemp.videoPlay()}})}},prompt:function(){if(!this.showFace){return}var thisTemp=this;var prompt=this.vars['promptSpot'];if(prompt==null||this.promptArr.length>0){return}var showPrompt=function(event){if(thisTemp.promptElement==null){var random2='prompte'+thisTemp.randomString(5);var ele2=document.createElement('div');ele2.className=random2;thisTemp.PD.appendChild(ele2);thisTemp.promptElement=thisTemp.getByElement(random2);thisTemp.css(thisTemp.promptElement,{overflowX:'hidden',lineHeight:'22px',fontSize:'14px',color:'#FFFFFF',position:'absolute',display:'block',zIndex:'90'})}var pcon=thisTemp.getPromptTest();var pW=pcon['pW'],pT=pcon['pT'],pL=parseInt(thisTemp.css(this,'left'))-parseInt(pW*0.5);if(pcon['pL']>10){pL=pcon['pL']}if(pL<0){pL=0}thisTemp.css(thisTemp.promptElement,{width:pW+'px',left:(-pW-10)+'px',display:'block'});thisTemp.promptElement.innerHTML=thisTemp.getDataset(this,'words');thisTemp.css(thisTemp.promptElement,{left:pL+'px',top:(pT-thisTemp.promptElement.offsetHeight-10)+'px'})};var hidePrompt=function(event){if(thisTemp.promptElement!=null){thisTemp.css(thisTemp.promptElement,{display:'none'})}};var i=0;for(i=0;ithis.PD.offsetWidth-pW){pL=this.PD.offsetWidth-pW}return{pW:pW,pT:pT,pL:pL}},deletePrompt:function(){var arr=this.promptArr;if(arr.length>0){for(var i=0;ibw-parseInt(arr[i].offsetWidth*0.5)){left=bw-parseInt(arr[i].offsetWidth*0.5)}this.css(arr[i],{left:left+'px',display:'block'})}},preview:function(obj){var thisTemp=this;var preview={file:null,scale:0};preview=this.standardization(preview,this.vars['preview']);if(preview['file']==null||preview['scale']<=0){return}var srcArr=preview['file'];if(this.previewStart==0){this.previewStart=1;if(srcArr.length>0){var i=0;var imgW=0,imgH=0;var random=thisTemp.randomString(10);var loadNum=0;var loadImg=function(i){srcArr[i]=thisTemp.getNewUrl(srcArr[i]);var n=0;var img=new Image();img.src=srcArr[i];img.className=random+i;img.onload=function(event){loadNum++;if(thisTemp.previewDiv==null){imgW=img.width;imgH=img.height;thisTemp.previewWidth=parseInt(imgW*0.1);var ele=document.createElement('div');ele.className=random;thisTemp.PD.appendChild(ele);thisTemp.previewDiv=thisTemp.getByElement(random);var eleTop=(obj['y']-parseInt(imgH*0.1)+2);thisTemp.css(thisTemp.previewDiv,{width:srcArr.length*imgW*10+'px',height:parseInt(imgH*0.1)+'px',backgroundColor:'#000000',position:'absolute',left:'0px',top:eleTop+'px',display:'none',zIndex:'80'});ele.setAttribute('data-x','0');ele.setAttribute('data-y',eleTop);var ele2=document.createElement('div');ele2.className=random+'d2';thisTemp.PD.appendChild(ele2);thisTemp.previewTop=thisTemp.getByElement(ele2.className);thisTemp.css(thisTemp.previewTop,{width:parseInt(imgW*0.1)+'px',height:parseInt(imgH*0.1)+'px',position:'absolute',border:'5px solid '+thisTemp.css(thisTemp.CB['timeProgress'],'backgroundColor'),left:'0px',top:(obj['y']-parseInt(imgH*0.1)+2)+'px',display:'none',zIndex:'81'});var html='';for(n=0;n=imgW){sx=0;sy+=h}thisTemp.css(cimg,'display','none')}if(loadNum==srcArr.length){thisTemp.previewStart=2}else{i++;loadImg(i)}}}}loadImg(i);return}if(this.previewStart==2){var isTween=true;var nowNum=parseInt(obj['time']/this.vars['preview']['scale']);var numTotal=parseInt(thisTemp.getMetaDate()['duration']/this.vars['preview']['scale']);if(thisTemp.css(thisTemp.previewDiv,'display')=='none'){isTween=false}thisTemp.css(thisTemp.previewDiv,'display','block');var imgWidth=thisTemp.previewDiv.offsetWidth*0.01/srcArr.length;var left=(imgWidth*nowNum)-obj['x']+parseInt(imgWidth*0.5),top=obj['y']-thisTemp.previewDiv.offsetHeight;thisTemp.css(thisTemp.previewDiv,'top',top+2+'px');var topLeft=obj['x']-parseInt(imgWidth*0.5);var timepieces=0;if(topLeft<0){topLeft=0;timepieces=obj['x']-topLeft-imgWidth*0.5}if(topLeft>thisTemp.PD.offsetWidth-imgWidth){topLeft=thisTemp.PD.offsetWidth-imgWidth;timepieces=obj['x']-topLeft-imgWidth*0.5}if(left<0){left=0}if(left>numTotal*imgWidth-thisTemp.PD.offsetWidth){left=numTotal*imgWidth-thisTemp.PD.offsetWidth}thisTemp.css(thisTemp.previewTop,{left:topLeft+'px',top:top+2+'px',display:'block'});if(thisTemp.previewTop.offsetHeight>thisTemp.previewDiv.offsetHeight){thisTemp.css(thisTemp.previewTop,{height:thisTemp.previewDiv.offsetHeight-(thisTemp.previewTop.offsetHeight-thisTemp.previewDiv.offsetHeight)+'px'})}if(this.previewTween!=null){this.animatePause(this.previewTween);this.previewTween=null}var nowLeft=parseInt(thisTemp.css(thisTemp.previewDiv,'left'));var leftC=nowLeft+left;if(nowLeft==-(left+timepieces)){return}if(isTween){var obj={element:thisTemp.previewDiv,start:null,end:-(left+timepieces),speed:0.3};this.previewTween=this.animate(obj)}else{thisTemp.css(thisTemp.previewDiv,'left',-(left+timepieces)+'px')}}},deletePreview:function(){if(this.previewDiv!=null){this.deleteChild(this.previewDiv);this.previewDiv=null;this.previewStart=0}},changeVideo:function(){if(!this.html5Video){this.getVarsObject();this.V.newVideo(this.vars);return}var vArr=this.VA;var v=this.vars;var i=0;if(vArr.length<1){return}if(this.V!=null&&this.needSeek==0){this.needSeek=this.V.currentTime}if(v['poster']){this.V.poster=v['poster']}else{this.V.removeAttribute('poster')}if(v['loop']){this.V.loop='loop'}else{this.V.removeAttribute('loop')}if(v['seek']>0){this.needSeek=v['seek']}else{this.needSeek=0}if(this.getFileExt(vArr[0][0])!='.m3u8'){this.isM3u8=false}if(!this.isM3u8){if(vArr.length==1){this.V.innerHTML='';this.V.src=vArr[0][0]}else{var source='';vArr=this.arrSort(vArr);for(i=0;i'}this.V.removeAttribute('src');this.V.innerHTML=source}if(v['autoplay']){this.V.autoplay='autoplay'}else{this.V.removeAttribute('autoplay')}this.V.load()}else{this.embedHls(vArr[0][0],v['autoplay'])}if(!this.isUndefined(v['volume'])){this.changeVolume(v['volume'])}this.resetPlayer();this.timerErrorFun();if(this.vars['cktrack']){this.loadTrack()}},elementCoordinate:function(){this.pdCoor=this.getXY(this.PD);try{this.css(this.CB['pauseCenter'],{left:parseInt((this.PD.offsetWidth-80)*0.5)+'px',top:parseInt((this.PD.offsetHeight-80)*0.5)+'px'})}catch(event){}try{this.css(this.CB['loading'],{left:parseInt((this.PD.offsetWidth-60)*0.5)+'px',top:parseInt((this.PD.offsetHeight-60)*0.5)+'px'})}catch(event){}try{this.css(this.CB['errorText'],{left:parseInt((this.PD.offsetWidth-120)*0.5)+'px',top:parseInt((this.PD.offsetHeight-30)*0.5)+'px'})}catch(event){}try{this.css(this.CB['logo'],{left:parseInt(this.PD.offsetWidth-this.CB['logo'].offsetWidth-20)+'px',top:'20px'})}catch(event){}this.checkBarWidth()},checkBarWidth:function(){if(!this.showFace){return}var controlBarW=this.CB['controlBar'].offsetWidth;var ele=[];ele.push([[this.CB['full'],this.CB['escFull'],this.CB['fullLine']],this.buttonWidth['full']+2,'full']);if(this.vars['front']!=''){ele.push([[this.CB['front'],this.CB['frontLine']],this.buttonWidth['front']+2])}if(this.vars['next']!=''){ele.push([[this.CB['next'],this.CB['nextLine']],this.buttonWidth['next']+2])}if(this.CB['definition'].innerHTML!=''){ele.push([[this.CB['definition'],this.CB['definitionLine']],this.buttonWidth['definition']+2])}if((this.ckplayerConfig['config']['mobileVolumeBarShow']||!this.isMobile())&&this.css(this.CB['volume'],'display')!='none'){ele.push([[this.CB['volume']],this.buttonWidth['volume']]);ele.push([[this.CB['mute'],this.CB['escMute'],this.CB['muteLine']],this.buttonWidth['mute']+2,'mute'])}ele.push([[this.CB['timeText']],this.buttonWidth['timeText']]);ele.push([[this.CB['play'],this.CB['pause'],this.CB['playLine']],this.buttonWidth['play']+2,'play']);var i=0;var len=0;var isc=true;for(var i=0;i2){len+=nlen}else{isc=false}}if(isc){this.buttonLen=len;this.buttonArr=ele}len=this.buttonLen;ele=this.buttonArr;for(var i=0;icontrolBarW){len-=ele[i][1];this.css(ele[i][0],'display','none')}else{this.css(ele[i][0],'display','block');if(ele[i].length==3){var name=ele[i][2];switch(name){case'mute':if(this.volume==0){this.css(this.CB['mute'],'display','none')}else{this.css(this.CB['escMute'],'display','none')}break;case'play':this.playShow(this.V.paused?false:true);break;case'full':if(this.full){this.css(this.CB['full'],'display','none')}else{this.css(this.CB['escFull'],'display','none')}break}}}}},initPlayPause:function(){if(!this.showFace){return}if(this.vars['autoplay']){this.css([this.CB['play'],this.CB['pauseCenter']],'display','none');this.css(this.CB['pause'],'display','block')}else{this.css(this.CB['play'],'display','block');if(this.css(this.CB['errorText'],'display')=='none'){this.css(this.CB['pauseCenter'],'display','block')}this.css(this.CB['pause'],'display','none')}},loadedHandler:function(){this.loaded=true;if(this.vars['loaded']!=''){try{eval(this.vars['loaded']+'()')}catch(event){this.log(event)}}},playingHandler:function(){this.playShow(true);if(this.isFirstTimePlay&&!this.isUndefined(this.advertisements['front'])){this.isFirstTimePlay=false;this.adI=0;this.adType='front';this.adMuteInto();this.adIsVideoTime=true;this.adPlayStart=true;this.adVideoPlay=false;this.videoPause();this.advertisementsTime();this.advertisementsPlay();this.adSkipButtonShow();return}if(this.adPlayerPlay){return}if(this.needSeek>0){this.videoSeek(this.needSeek);this.needSeek=0}if(this.animatePauseArray.length>0){this.animateResume('pause')}if(this.playerType=='html5video'&&this.V!=null&&this.config['videoDrawImage']){this.sendVCanvas()}if(!this.isUndefined(this.advertisements['pause'])&&!this.adPlayStart){this.adPauseCloseFunction()}},adPausePlayer:function(){this.adI=0;this.adType='pause';this.adPauseShow=true;this.loadAdPause()},loadAdPause:function(){var ad=this.getNowAdvertisements();var type=ad['type'];var thisTemp=this;var width=this.PD.offsetWidth,height=this.PD.offsetHeight;if(this.isStrImage(type)&&this.adPauseShow){this.css(this.CB['adElement'],'display','block');var imgClass='adimg'+this.randomString(10);var imgHtml='
';if(ad['link']){imgHtml=''+imgHtml+''}this.CB['adElement'].innerHTML=imgHtml;this.addListenerInside('load',function(){var imgObj=new Image();imgObj.src=this.src;var imgWH=thisTemp.adjustmentWH(imgObj.width,imgObj.height);thisTemp.css([thisTemp.getByElement(imgClass),thisTemp.CB['adElement']],{width:imgWH['width']+'px',height:imgWH['height']+'px',border:'0px'});if(thisTemp.ckplayerConfig['style']['advertisement']['closeButtonShow']&&thisTemp.adPauseShow){thisTemp.css(thisTemp.CB['adPauseClose'],{display:'block'})}thisTemp.ajaxSuccessNull(ad['exhibitionMonitor']);thisTemp.adPauseCoor()},this.getByElement(imgClass));this.addListenerInside('click',function(){thisTemp.ajaxSuccessNull(ad['clickMonitor'])},this.CB['adElement']);var newI=this.adI;if(this.adI0){setTimeout(function(){if(thisTemp.adPauseShow){thisTemp.adI=newI;thisTemp.loadAdPause()}},ad['time']*1000)}}},adPauseCoor:function(){if(this.css(this.CB['adElement'],'display')=='block'){var w=this.CB['adElement'].offsetWidth,h=this.CB['adElement'].offsetHeight;var pw=this.PD.offsetWidth,ph=this.PD.offsetHeight;this.css(this.CB['adElement'],{top:(ph-h)*0.5+'px',left:(pw-w)*0.5+'px'});if(this.css(this.CB['adPauseClose'],'display')=='block'){this.css(this.CB['adPauseClose'],{top:(ph-h)*0.5-10+'px',left:(pw-w)*0.5+w-10+'px'})}}},adPauseCloseFunction:function(){this.CB['adElement'].innerHTML='';this.css([this.CB['adElement'],this.CB['adPauseClose']],'display','none');this.adPauseShow=false},advertisementsTime:function(nt){if(this.isUndefined(nt)){nt=0}var ad=this.advertisements[this.adType];if(nt>0){ad[this.adI]['time']=Math.ceil(nt)}this.adTimeAllTotal=0;for(var i=this.adI;i0){this.CB['adTime'].innerHTML=this.language['adTime'].replace('{$second}',this.adTimeAllTotal>9?this.adTimeAllTotal:'0'+this.adTimeAllTotal)}if(this.adPauseShow){this.adPauseCloseFunction()}this.adOtherCloseAll();this.adTimeTotal=-1},adSkipButtonShow:function(){var thisTemp=this;var skipConfig=this.ckplayerConfig['style']['advertisement'];var delayTimeTemp=skipConfig[this.adType+'SkipButtonDelay'];var timeFun=function(){if(delayTimeTemp>=0){thisTemp.CB['adSkip'].innerHTML=thisTemp.language['skipAdTime'].replace('{$second}',delayTimeTemp>9?delayTimeTemp:'0'+delayTimeTemp);setTimeout(timeFun,1000)}else{thisTemp.CB['adSkip'].innerHTML=thisTemp.language['skipAd']}delayTimeTemp--};if(skipConfig['skipButtonShow']){this.css(thisTemp.CB['adSkip'],'display','block');if(skipConfig[this.adType+'SkipButtonDelay']>0&&this.isUndefined(this.adSkipButtonTime)){timeFun()}else{thisTemp.css(thisTemp.CB['adSkip'],'display','block');thisTemp.CB['adSkip'].innerHTML=this.language['skipAd']}}},advertisementsPlay:function(){this.css([this.CB['adBackground'],this.CB['adElement'],this.CB['adBar'],this.CB['adLink']],'display','none');this.adPlayerPlay=false;var ad=this.advertisements[this.adType];if(this.adI==0&&(this.adType=='front'||this.adType=='insert'||this.adType=='end')){this.sendJS('process',this.adType+' ad play')}this.trackHide();if(this.adI';if(ad['link']){imgHtml=''+imgHtml+''}this.CB['adElement'].innerHTML=imgHtml;this.addListenerInside('load',function(){var imgObj=new Image();imgObj.src=this.src;var imgWH=thisTemp.adjustmentWH(imgObj.width,imgObj.height);thisTemp.css(thisTemp.getByElement(imgClass),{width:imgWH['width']+'px',height:imgWH['height']+'px',border:'0px'});thisTemp.css(thisTemp.CB['adElement'],{width:imgWH['width']+'px',height:imgWH['height']+'px',top:(height-imgWH['height'])*0.5+'px',left:(width-imgWH['width'])*0.5+'px'});thisTemp.ajaxSuccessNull(ad['exhibitionMonitor'])},this.getByElement(imgClass));this.addListenerInside('click',function(){thisTemp.ajaxSuccessNull(ad['clickMonitor'])},this.CB['adElement']);if(!this.isUndefined(ad['time'])){this.adCountDown()}}else{this.css(this.CB['adBar'],'display','block');if(this.adVideoMute){this.css(this.CB['adEscMute'],'display','block');this.css(this.CB['adMute'],'display','none')}else{this.css(this.CB['adEscMute'],'display','none');this.css(this.CB['adMute'],'display','block')}this.CB['adElement'].innerHTML='';if(this.videoTemp['currentSrc']==''){this.videoTemp['currentSrc']=this.getCurrentSrc()}if(this.V.loop){this.videoTemp['loop']=true;this.V.loop=false}if(this.V!=null&&this.V.currentTime>0&&this.adIsVideoTime&&this.adType!='front'){this.adIsVideoTime=false;this.needSeek=this.V.currentTime}this.V.src=ad['file'];this.V.currentSrc=ad['file'];this.V.innerHTML='';this.V.play();this.adVideoPlay=true;this.ajaxSuccessNull(ad['exhibitionMonitor']);if(!this.adVideoMute){this.adEscMuteFunction()}}if(ad['link']){this.css(this.CB['adLink'],'display','block');var link=''+this.language['adLink']+'';this.CB['adLink'].innerHTML=link;this.css(this.getByElement('ckadmorelink'),{color:'#FFFFFF',textDecoration:'none'});this.addListenerInside('click',function(){thisTemp.ajaxSuccessNull(ad['clickMonitor'])},this.CB['adLink'])}else{this.css(this.CB['adLink'],'display','none')}},adCountDown:function(){var thisTemp=this;if(this.adTimeTotal>0){if(!this.adIsPause){this.adTimeTotal--;this.showAdTime();this.adCountDownObj=null;this.adCountDownObj=setTimeout(function(){thisTemp.adCountDown()},1000)}}else{this.adI++;this.advertisementsPlay()}},adPlayerTimeHandler:function(time){var ad=this.getNowAdvertisements();var type=ad['type'];if(this.isStrImage(type)){return}if(this.adTimeTotal!=parseInt(time)){this.adTimeTotal=parseInt(time);this.showAdTime()}},showAdTime:function(){this.adTimeAllTotal--;var n=this.adTimeAllTotal;if(n<0){n=0}this.CB['adTime'].innerHTML=this.language['adTime'].replace('{$second}',n<10?'0'+n:n)},checkAdOther:function(t){if(this.adPlayerPlay){return}var adTime=this.advertisements['othertime'];var adPlay=this.advertisements['otherPlay'];for(var i=0;i=adTime[i]&&!adPlay[i]){adPlay[i]=true;this.newAdOther(i)}}},newAdOther:function(i){var thisTemp=this;var ad=this.advertisements['other'][i];var randomS=this.randomString(10);var adDivID='adother'+randomS;imgClassName='adimgother'+randomS;var adDiv=document.createElement('div');adDiv.className=adDivID;this.PD.appendChild(adDiv);ad['div']=adDivID;ad['element']=imgClassName;var adHtml='
';if(ad['link']){adHtml=''+adHtml+''}this.getByElement(adDivID).innerHTML=adHtml;this.css(adDivID,{position:'absolute',overflow:'hidden',zIndex:'996',top:'60px',left:'30px',cursor:'pointer'});if(this.ckplayerConfig['style']['advertisement']['closeOtherButtonShow']){var closeAdDivID='adotherclose'+randomS;var closeAdDiv=document.createElement('div');closeAdDiv.className=closeAdDivID;this.PD.appendChild(closeAdDiv);this.getByElement(closeAdDivID).innerHTML=this.newCanvas(closeAdDivID,20,20);ad['closeDiv']=closeAdDivID;ad['close']=false;this.css(closeAdDivID,{backgroundColor:'#f7f7f7',widht:'20px',height:'20px',position:'absolute',overflow:'hidden',zIndex:'997',top:'60px',left:'30px',borderRadius:'20px',cursor:'pointer'});var adOtherClose=this.getByElement(closeAdDivID+'-canvas').getContext('2d');var adOtherCloseFillRect=function(){thisTemp.canvasFill(adOtherClose,[[4,6],[6,6],[16,15],[14,15]]);thisTemp.canvasFill(adOtherClose,[[14,6],[16,6],[6,15],[4,15]])};adOtherClose.fillStyle='#404856';adOtherCloseFillRect();var adOtherCloseOver=function(){adOtherClose.clearRect(0,0,20,20);adOtherClose.fillStyle='#0782F5';adOtherCloseFillRect()};var adOtherCloseOut=function(){adOtherClose.clearRect(0,0,20,20);adOtherClose.fillStyle='#404856';adOtherCloseFillRect()};this.addListenerInside('mouseover',adOtherCloseOver,this.getByElement(closeAdDivID+'-canvas'));this.addListenerInside('mouseout',adOtherCloseOut,this.getByElement(closeAdDivID+'-canvas'))}this.addListenerInside('load',function(){var imgObj=new Image();imgObj.src=this.src;var imgWH=thisTemp.adjustmentWH(imgObj.width,imgObj.height);thisTemp.css([thisTemp.getByElement(imgClassName),thisTemp.getByElement(adDivID)],{width:imgWH['width']+'px',height:imgWH['height']+'px',border:'0px'});thisTemp.advertisements['other'][i]=ad;thisTemp.ajaxSuccessNull(ad['exhibitionMonitor']);thisTemp.adOtherCoor()},this.getByElement(imgClassName));this.addListenerInside('click',function(){thisTemp.adOtherClose(i)},this.getByElement(closeAdDivID));this.addListenerInside('click',function(){thisTemp.ajaxSuccessNull(ad['clickMonitor'])},this.getByElement(imgClassName));if(ad['time']>0){setTimeout(function(){thisTemp.adOtherClose(i)},ad['time']*1000)}},adOtherClose:function(i){var ad=this.advertisements['other'][i];if(!this.isUndefined(ad['close'])){if(!ad['close']){ad['close']=true;this.PD.removeChild(this.getByElement(ad['div']));this.PD.removeChild(this.getByElement(ad['closeDiv']))}}},adOtherCloseAll:function(){if(!this.isUndefined(this.advertisements['other'])){var ad=this.advertisements['other'];for(var i=0;i-1;i--){if(t>=adTime[i]&&t1&&!adPlay[i]){this.adI=0;this.adType='insert';this.adMuteInto();this.adIsVideoTime=true;this.adPlayStart=true;this.adVideoPlay=false;this.videoPause();this.advertisementsTime();this.advertisementsPlay();this.adSkipButtonShow();adPlay[i]=true;for(var n=0;n=width||h>=height){if(width/w>height/h){nh=height-20;nw=w*nh/h}else{nw=width-20;nh=h*nw/w}}else{nw=w;nh=h}return{width:nw,height:nh}},ajaxSuccessNull:function(url){if(!this.isUndefined(url)){var ajaxObj={url:url,success:function(data){}};this.ajax(ajaxObj)}},runFunction:function(s){try{var arr=s.split('->');switch(arr[0]){case'javaScript':eval(arr[1]+'()');break;case'actionScript':eval('this.'+arr[1]+'()');break}}catch(event){}},sendVCanvas:function(){if(this.timerVCanvas==null){this.css(this.V,'display','none');this.css(this.MD,'display','block');var thisTemp=this;var videoCanvas=function(){if(thisTemp.MDCX.width!=thisTemp.PD.offsetWidth){thisTemp.MDC.width=thisTemp.PD.offsetWidth}if(thisTemp.MDCX.height!=thisTemp.PD.offsetHeight){thisTemp.MDC.height=thisTemp.PD.offsetHeight}thisTemp.MDCX.clearRect(0,0,thisTemp.MDCX.width,thisTemp.MDCX.height);var coor=thisTemp.getProportionCoor(thisTemp.PD.offsetWidth,thisTemp.PD.offsetHeight,thisTemp.V.videoWidth,thisTemp.V.videoHeight);thisTemp.MDCX.drawImage(thisTemp.V,0,0,thisTemp.V.videoWidth,thisTemp.V.videoHeight,coor['x'],coor['y'],coor['width'],coor['height'])};this.timerVCanvas=new this.timer(0,videoCanvas)}},pauseHandler:function(){var thisTemp=this;this.playShow(false);if(this.animatePauseArray.length>0){this.animatePause('pause')}if(this.playerType=='html5video'&&this.V!=null&&this.config['videoDrawImage']){this.stopVCanvas()}if(!this.isUndefined(this.advertisements['pause'])&&!this.adPlayStart&&!this.adPauseShow){setTimeout(function(){if(!thisTemp.isUndefined(thisTemp.advertisements['pause'])&&!thisTemp.adPlayStart&&!thisTemp.adPauseShow&&thisTemp.time>1){thisTemp.adPausePlayer()}},300)}},stopVCanvas:function(){if(this.timerVCanvas!=null){this.css(this.V,'display','block');this.css(this.MD,'display','none');if(this.timerVCanvas.runing){this.timerVCanvas.stop()}this.timerVCanvas=null}},playShow:function(b){if(!this.showFace){return}if(b){this.css(this.CB['play'],'display','none');this.css(this.CB['pauseCenter'],'display','none');this.css(this.CB['pause'],'display','block')}else{this.css(this.CB['play'],'display','block');if(this.css(this.CB['errorText'],'display')=='none'){if(!this.adPlayerPlay){this.css(this.CB['pauseCenter'],'display','block')}}else{this.css(this.CB['pauseCenter'],'display','none')}this.css(this.CB['pause'],'display','none')}},seekedHandler:function(){this.resetTrack();this.isTimeButtonMove=true;if(this.V.paused){if(this.hlsAutoPlay){this.videoPlay()}else{this.hlsAutoPlay=true}}},endedHandler:function(){if(this.adPlayerPlay){this.adI++;this.advertisementsPlay();return}if(!this.endAdPlay&&!this.isUndefined(this.advertisements['end'])){this.endAdPlay=true;this.adI=0;this.adType='end';this.adMuteInto();this.adIsVideoTime=true;this.adPlayStart=true;this.adVideoPlay=false;this.videoPause();this.advertisementsTime();this.advertisementsPlay();this.adSkipButtonShow();this.adReset=true;return}this.sendJS('ended');this.endedAdReset();if(this.vars['loop']){this.videoSeek(0)}},endedAdReset:function(){var arr=[];var i=0;if(!this.isUndefined(this.advertisements['insertPlay'])){arr=this.advertisements['insertPlay'];for(i=0;i0){this.css(this.CB['mute'],'display','block');this.css(this.CB['escMute'],'display','none')}else{this.css(this.CB['mute'],'display','none');this.css(this.CB['escMute'],'display','block')}}catch(event){}}},timeUpdateHandler:function(){var duration=0;if(this.playerType=='html5video'){try{duration=this.V.duration}catch(event){}}if(isNaN(duration)||parseInt(duration)<0.2){duration=this.vars['duration']}if(this.vars['forceduration']>0){duration=this.vars['forceduration']}if(duration>0){this.time=this.V.currentTime;this.timeTextHandler();this.trackShowHandler();if(this.isTimeButtonMove){this.timeProgress(this.time,duration)}}},timeProgress:function(time,duration){if(!this.showFace){return}var timeProgressBgW=this.CB['timeProgressBg'].offsetWidth;var timeBOW=parseInt((time*timeProgressBgW/duration)-(this.CB['timeButton'].offsetWidth*0.5));if(timeBOW>timeProgressBgW-this.CB['timeButton'].offsetWidth){timeBOW=timeProgressBgW-this.CB['timeButton'].offsetWidth}if(timeBOW<0){timeBOW=0}this.css(this.CB['timeProgress'],'width',timeBOW+'px');this.css(this.CB['timeButton'],'left',parseInt(timeBOW)+'px')},timeTextHandler:function(){if(!this.showFace){return}var duration=this.V.duration;var time=this.V.currentTime;if(isNaN(duration)||parseInt(duration)<0.2){duration=this.vars['duration']}if(this.vars['forceduration']>0){duration=this.vars['forceduration']}this.CB['timeText'].innerHTML=this.formatTime(time)+' / '+this.formatTime(duration);if(this.CB['timeText'].offsetWidth>0){this.buttonWidth['timeText']=this.CB['timeText'].offsetWidth}},bufferEdHandler:function(){if(!this.showFace||this.playerType=='flashplayer'){return}var thisTemp=this;var clearTimerBuffer=function(){if(thisTemp.timerBuffer!=null){if(thisTemp.timerBuffer.runing){thisTemp.sendJS('buffer',100);thisTemp.timerBuffer.stop()}thisTemp.timerBuffer=null}};clearTimerBuffer();var bufferFun=function(){if(!thisTemp.isUndefined(thisTemp.V)&&thisTemp.V.buffered.length>0){var duration=thisTemp.V.duration;var len=thisTemp.V.buffered.length;var bufferStart=thisTemp.V.buffered.start(len-1);var bufferEnd=thisTemp.V.buffered.end(len-1);var loadTime=bufferStart+bufferEnd;var loadProgressBgW=thisTemp.CB['timeProgressBg'].offsetWidth;var timeButtonW=thisTemp.CB['timeButton'].offsetWidth;var loadW=parseInt((loadTime*loadProgressBgW/duration)+timeButtonW);if(loadW>=loadProgressBgW){loadW=loadProgressBgW;clearTimerBuffer()}thisTemp.changeLoad(loadTime)}};this.timerBuffer=new this.timer(200,bufferFun)},changeLoad:function(loadTime){if(this.V==null){return}if(!this.showFace){return}var loadProgressBgW=this.CB['timeProgressBg'].offsetWidth;var timeButtonW=this.CB['timeButton'].offsetWidth;var duration=this.V.duration;if(isNaN(duration)||parseInt(duration)<0.2){duration=this.vars['duration']}if(this.vars['forceduration']>0){duration=this.vars['forceduration']}if(this.isUndefined(loadTime)){loadTime=this.loadTime}else{this.loadTime=loadTime}var loadW=parseInt((loadTime*loadProgressBgW/duration)+timeButtonW);this.css(this.CB['loadProgress'],'width',loadW+'px');this.sendJS('loadTime',loadTime);this.loadTimeTemp=loadTime},judgeIsLive:function(){var thisTemp=this;if(this.timerError!=null){if(this.timerError.runing){this.timerError.stop()}this.timerError=null}this.error=false;if(this.showFace){this.css(this.CB['errorText'],'display','none')}var timeupdate=function(event){thisTemp.timeUpdateHandler()};if(!this.vars['live']){if(this.V!=null&&this.playerType=='html5video'){this.addListenerInside('timeupdate',timeupdate);thisTemp.timeTextHandler();thisTemp.prompt();setTimeout(function(){thisTemp.bufferEdHandler()},200)}}else{this.removeListenerInside('timeupdate',timeupdate);if(this.timerTime!=null){window.clearInterval(this.timerTime);timerTime=null}if(this.timerTime!=null){if(this.timerTime.runing){this.timerTime.stop()}this.timerTime=null}var timeFun=function(){if(thisTemp.V!=null&&!thisTemp.V.paused&&thisTemp.showFace){thisTemp.CB['timeText'].innerHTML=thisTemp.getNowDate()}};this.timerTime=new this.timer(1000,timeFun)}this.definition()},loadTrack:function(def){if(this.playerType=='flashplayer'||this.vars['flashplayer']==true){return}if(this.isUndefined(def)){def=-1}var track=this.vars['cktrack'];var loadTrackUrl='';var type=this.typeString(track);var thisTemp=this;if(type=='array'){if(def==-1){var index=0;var indexN=0;for(var i=0;iindexN){indexN=li[2];index=i}}}else{index=def}loadTrackUrl=track[index][0]}else{loadTrackUrl=track}var obj={method:'get',dataType:'text',url:loadTrackUrl,charset:'utf-8',success:function(data){if(data){thisTemp.track=thisTemp.parseSrtSubtitles(data);thisTemp.trackIndex=0;thisTemp.nowTrackShow={sn:''}}}};this.ajax(obj)},resetTrack:function(){this.trackIndex=0;this.nowTrackShow={sn:''}},trackShowHandler:function(){if(!this.showFace||this.adPlayerPlay){return}if(this.track.length<1){return}if(this.trackIndex>=this.track.length){this.trackIndex=0}var nowTrack=this.track[this.trackIndex];if(this.time>=nowTrack['startTime']&&this.time<=nowTrack['endTime']){var nowShow=this.nowTrackShow;if(nowShow['sn']!=nowTrack['sn']){this.trackHide();this.trackShow(nowTrack);this.nowTrackTemp=nowTrack}}else{this.trackHide();this.checkTrack()}},trackShowAgain:function(){this.trackHide();this.trackShow(this.nowTrackTemp)},trackShow:function(track){this.nowTrackShow=track;var arr=track['content'];for(var i=0;i=arr[i]['startTime']&&this.time<=arr[i]['endTime']){this.trackIndex=i;break}}},playOrPause:function(){if(!this.loaded){return}if(this.V==null){return}if(this.playerType=='flashplayer'){this.V.playOrPause();return}if(this.V.paused){this.videoPlay()}else{this.videoPause()}},videoPlay:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoPlay();return}if(this.adPlayerPlay){this.eliminateAd();return}try{if(this.V.currentSrc){this.V.play()}}catch(event){}},videoPause:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoPause();return}try{this.V.pause()}catch(event){}},videoSeek:function(time){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoSeek(time);return}var duration=this.V.duration>0.2?this.V.duration:this.getMetaDate()['duration'];if(duration>0&&time>duration){if(this.vars['forceduration']>0){time=0;this.sendJS('ended')}else{time=duration-0.1}}if(time>=0){this.V.currentTime=time;this.sendJS('seekTime',time)}},changeVolume:function(vol,bg,button){if(this.loaded){if(this.playerType=='flashplayer'){this.V.changeVolume(vol);return}}if(isNaN(vol)||this.isUndefined(vol)){vol=0}if(!this.loaded){this.vars['volume']=vol}if(!this.html5Video){this.V.changeVolume(vol);return}try{if(this.isUndefined(bg)){bg=true}}catch(e){}try{if(this.isUndefined(button)){button=true}}catch(e){}if(!vol){vol=0}if(vol<0){vol=0}if(vol>1){vol=1}try{this.V.volume=vol}catch(error){}this.volume=vol;if(bg&&this.showFace){var bgW=vol*this.CB['volumeBg'].offsetWidth;if(bgW<0){bgW=0}if(bgW>this.CB['volumeBg'].offsetWidth){bgW=this.CB['volumeBg'].offsetWidth}this.css(this.CB['volumeUp'],'width',bgW+'px')}if(button&&this.showFace){var buLeft=parseInt(this.CB['volumeUp'].offsetWidth-(this.CB['volumeBO'].offsetWidth*0.5));if(buLeft>this.CB['volumeBg'].offsetWidth-this.CB['volumeBO'].offsetWidth){buLeft=this.CB['volumeBg'].offsetWidth-this.CB['volumeBO'].offsetWidth}if(buLeft<0){buLeft=0}this.css(this.CB['volumeBO'],'left',buLeft+'px')}},videoMute:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoMute();return}this.volumeTemp=this.V?(this.V.volume>0?this.V.volume:this.vars['volume']):this.vars['volume'];this.changeVolume(0)},videoEscMute:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoEscMute();return}this.changeVolume(this.volumeTemp>0?this.volumeTemp:this.vars['volume'])},adMuteFunction:function(){if(!this.loaded){return}this.changeVolume(0);this.adVideoMute=true;this.css(this.CB['adEscMute'],'display','block');this.css(this.CB['adMute'],'display','none')},adEscMuteFunction:function(){if(!this.loaded){return}var v=this.ckplayerConfig['style']['advertisement']['videoVolume'];this.changeVolume(v);this.adMuteInto()},adMuteInto:function(){this.adVideoMute=false;this.css(this.CB['adEscMute'],'display','none');this.css(this.CB['adMute'],'display','block')},fastBack:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.fastBack();return}var time=this.time-this.ckplayerConfig['config']['timeJump'];if(time<0){time=0}this.videoSeek(time)},fastNext:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.fastNext();return}var time=this.time+this.ckplayerConfig['config']['timeJump'];if(time>this.V.duration){time=this.V.duration}this.videoSeek(time)},getCurrentSrc:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){return this.V.getCurrentSrc()}return this.V.currentSrc},switchFull:function(){if(this.full){this.quitFullScreen()}else{this.fullScreen()}},fullScreen:function(){if(this.html5Video&&this.playerType=='html5video'){var element=this.PD;if(element.requestFullscreen){element.requestFullscreen()}else if(element.mozRequestFullScreen){element.mozRequestFullScreen()}else if(element.webkitRequestFullscreen){element.webkitRequestFullscreen()}else if(element.msRequestFullscreen){element.msRequestFullscreen()}else if(element.oRequestFullscreen){element.oRequestFullscreen()}this.judgeFullScreen()}else{}},quitFullScreen:function(){if(this.html5Video&&this.playerType=='html5video'){if(document.exitFullscreen){document.exitFullscreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.oRequestFullscreen){document.oCancelFullScreen()}else if(document.requestFullscreen){document.requestFullscreen()}else if(document.webkitExitFullscreen){document.webkitExitFullscreen()}else{this.css(document.documentElement,'cssText','');this.css(document.document.body,'cssText','');this.css(this.PD,'cssText','')}this.judgeFullScreen()}},videoRotation:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoRotation(n);return}if(this.isUndefined(n)){n=0}var tf=this.css(this.V,'transform');if(this.isUndefined(tf)&&!tf){tf='rotate(0deg)'}var reg=tf.match(/rotate\([^)]+\)/);reg=reg?reg[0].replace('rotate(','').replace('deg)',''):'';if(reg==''){reg=0}else{reg=parseInt(reg)}if(n==-1){reg-=90}else if(n==1){reg+=90}else{if(n!=90&&n!=180&&n!=270&&n!=-90&&n!=-180&&n!=-270){reg=0}else{reg=n}}n=reg;var y90=n%90,y180=n%180,y270=n%270;var ys=false;if(y90==0&&y180==90&&y270==90){ys=true}if(y90==0&&y180==90&&y270==0){ys=true}if(y90==-0&&y180==-90&&y270==-90){ys=true}if(y90==-0&&y180==-90&&y270==-0){ys=true}tf=tf.replace(/rotate\([^)]+\)/,'').replace(/scale\([^)]+\)/,'')+' rotate('+n+'deg)';var cdW=this.CD.offsetWidth,cdH=this.CD.offsetHeight,vW=this.V.videoWidth,vH=this.V.videoHeight;if(vW>0&&vH>0){if(ys){if(cdW/cdH>vH/vW){nH=cdH;nW=vH*nH/vW}else{nW=cdW;nH=vW*nW/vH}this.css(this.V,'transform','rotate(0deg)');this.css(this.V,'transform','scale('+nH/cdW+','+nW/cdH+')'+tf)}else{this.css(this.V,'transform',tf)}}else{this.css(this.V,'transform',tf)}return},videoBrightness:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoBrightness(n);return}},videoContrast:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoContrast(n);return}},videoSaturation:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoSaturation(n);return}},videoHue:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoHue(n);return}},videoZoom:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoZoom(n);return}if(this.isUndefined(n)){n=1}if(n<0){n=0}if(n>2){n=2}var tf=this.css(this.V,'transform');tf=tf.replace(/scale\([^)]+\)/,'')+' scale('+n+')';this.videoScale=n;this.css(this.V,'transform',tf);return},videoProportion:function(w,h){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoProportion(w,h);return}},adPlay:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.adPlay();return}if(this.adPlayerPlay){this.adIsPause=false;var ad=this.getNowAdvertisements();var type=ad['type'];if(this.isStrImage(type)){this.adCountDown()}else{this.V.play()}}},adPause:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.adPause();return}if(this.adPlayerPlay){this.adIsPause=true;var ad=this.getNowAdvertisements();var type=ad['type'];if(type!='jpg'&&type!='jpeg'&&type!='png'&&type!='svg'&&type!='gif'){this.videoPause()}}},videoError:function(n){if(!this.loaded){return}if(this.playerType=='flashplayer'){this.V.videoError(n);return}},changeConfig:function(){if(!this.loaded){return}if(this.playerType=='flashplayer'){var args=Array.prototype.slice.call(arguments);switch(args.length){case 1:this.V.changeConfig(args[0]);break;case 2:this.V.changeConfig(args[0],args[1]);break;case 3:this.V.changeConfig(args[0],args[1],args[2]);break;case 4:this.V.changeConfig(args[0],args[1],args[2],args[3]);break;case 5:this.V.changeConfig(args[0],args[1],args[2],args[3],args[4]);break;case 6:this.V.changeConfig(args[0],args[1],args[2],args[3],args[4],args[5]);break;case 7:this.V.changeConfig(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);break;case 8:this.V.changeConfig(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);break;case 8:this.V.changeConfig(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);break}return}var obj=this.ckplayerConfig;var arg=arguments;for(var i=0;i0){this.css(this.CD,'width',w+'px')}if(h>0){this.css(this.CD,'height',h+'px')}if(this.html5Video){this.elementCoordinate()}},changePlaybackRate:function(n){if(this.html5Video){var arr=this.playbackRateArr;n=parseInt(n);if(n';html+=param['v'];html+='';html+='';html+='';html+='';html+='';this.PD.innerHTML=html;this.V=this.getObjectById(vid);this.playerType='flashplayer'},checkShockwaveFlash:function(){if(window.ActiveXObject){try{var s=new ActiveXObject('ShockwaveFlash.ShockwaveFlash');if(s){return true}}catch(e){}}else{try{var s=navigator.plugins['Shockwave Flash'];if(s){return true}}catch(e){}}return false},getFlashVars:function(){this.getVarsObject();var v=this.vars;var z='';for(k in v){if(k!='flashplayer'&&k!='container'&&v[k]!=''){if(z!=''){z+='&'}var vk=v[k];if(vk==true){vk=1}if(vk==false){vk=0}z+=k+'='+vk}}if(!v.hasOwnProperty('volume')||!v['volume']){if(z!=''){z+='&'}z+='volume=0'}return z},isStrImage:function(s){if(s=='jpg'||s=='jpeg'||s=='png'||s=='svg'||s=='gif'){return true}return false},getVarsObject:function(){var v=this.vars;var f='',d='',w='';var arr=this.VA;var prompt=v['promptSpot'];var i=0;var video=this.vars['video'];if(typeof(video)=='object'){if(!this.isUndefined(typeof(video.length))){var arr=video;for(i=0;i'}w=w.replace('movie=','src=');return{w:w,v:v}},getMetaDate:function(){if(!this.loaded||this.V==null){return false}if(this.playerType=='html5video'){var duration=0;try{duration=!isNaN(this.V.duration)?this.V.duration:0;if(isNaN(duration)||parseInt(duration)<0.2){if(this.vars['duration']>0){duration=this.vars['duration']}}if(this.vars['forceduration']>0){duration=this.vars['forceduration']}}catch(event){this.log(event)}var data={duration:duration,volume:this.V.volume,playbackRate:this.V.playbackRate,width:this.PD.offsetWidth||this.V.offsetWidth||this.V.width,height:this.PD.offsetHeight||this.V.offsetHeight||this.V.height,streamWidth:this.V.videoWidth,streamHeight:this.V.videoHeight,videoWidth:this.V.offsetWidth,videoHeight:this.V.offsetHeight,paused:this.V.paused,loadTime:this.loadTimeTemp};return data}else{try{return this.V.getMetaDate()}catch(event){this.log(event)}}return false},getVideoUrl:function(){if(this.playerType=='flashplayer'){return this.V.getVideoUrl()}var arr=[];if(this.V.src){arr.push(this.V.src)}else{var uArr=this.V.childNodes;for(var i=0;i');var type='',fun='',link='',target='';if(callArr.length==2){var callM=callArr[0];var callE=callArr[1];if(!callE){return{type:'none'}}var val='';var eArr=[];type=callM;switch(callM){case'actionScript':if(callE.indexOf('(')>-1){eArr=callE.split('(');callE=eArr[0];val=eArr[1].replace(')','')}if(val==''){fun='thisTemp.'+callE+'()'}else{fun='thisTemp.'+callE+'('+val+')'}break;case'javaScript':if(callE.substr(0,11)=='[flashvars]'){callE=callE.substr(11);if(this.vars.hasOwnProperty(callE)){callE=this.vars[callE]}else{break}}if(callE.indexOf('(')>-1){eArr=callE.split('(');callE=eArr[0];val=eArr[1].replace(')','')}if(val==''){fun=callE+'()'}else{fun=callE+'('+val+')'}break;case"link":var callLink=(callE+',').split(',');if(callLink[0].substr(0,11)=='[flashvars]'){var fl=callLink[0].replace('[flashvars]','');if(this.vars.hasOwnProperty(fl)){callLink[0]=this.vars[fl]}else{break}}if(!callLink[1]){callLink[1]='_blank'}link=callLink[0];target=callLink[1];break}}return{type:type,fun:fun,link:link,target:target}},getPosition:function(obj){var pw=this.PD.offsetWidth,ph=this.PD.offsetHeight;var x=0,y=0;switch(obj['align']){case'left':x=obj['offsetX'];break;case'center':x=pw*0.5+obj['offsetX'];break;case'right':x=pw+obj['offsetX'];break}switch(obj['vAlign']){case'top':y=obj['offsetY'];break;case'middle':y=ph*0.5+obj['offsetY'];break;case'bottom':y=ph+obj['offsetY'];break}return{x:x,y:y}},addElement:function(attribute){var thisTemp=this;if(this.playerType=='flashplayer'){return this.V.addElement(attribute)}var i=0;var obj={list:null,x:'100%',y:"50%",position:null,alpha:1,backgroundColor:'',backAlpha:1,backRadius:0,clickEvent:''};obj=this.standardization(obj,attribute);var list=obj['list'];if(list==null){return''}var id='element'+this.randomString(10);var ele=document.createElement('div');ele.className=id;if(obj['x']){ele.setAttribute('data-x',obj['x'])}if(obj['y']){ele.setAttribute('data-y',obj['y'])}if(obj['position']!=null){ele.setAttribute('data-position',obj['position'].join(','))}this.PD.appendChild(ele);var eid=this.getByElement(id);this.css(eid,{position:'absolute',filter:'alpha(opacity:'+obj['alpha']+')',opacity:obj['alpha'].toString(),width:'800px',zIndex:'20'});var bgid='elementbg'+this.randomString(10);var bgAlpha=obj['alpha'].toString();var bgColor=obj['backgroundColor'].replace('0x','#');var html='';var idArr=[];var clickArr=[];if(!this.isUndefined(list)&&list.length>0){var textObj,returnObj,clickEvent;for(i=0;i
'}else{html+=''}break;case'text':textObj={type:'text',text:'',color:'0xFFFFFF',size:14,font:this.fontFamily,leading:0,alpha:1,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,backgroundColor:'',backAlpha:1,backRadius:0,clickEvent:''};list[i]=this.standardization(textObj,list[i]);clickEvent=this.clickEvent(list[i]['clickEvent']);clickArr.push(clickEvent);if(clickEvent['type']=='link'){html+=''}else{html+=''}break;default:break}idArr.push(newEleid)}}var objClickEvent=this.clickEvent(obj['clickEvent']);eid.innerHTML=''+html+'
';if(objClickEvent['type']=='javaScript'||objClickEvent['type']=='actionScript'){var objClickHandler=function(){eval(objClickEvent['fun']);thisTemp.sendJS('clickEvent',clk['type']+'->'+clk['fun'].replace('thisTemp.','').replace('()',''))};this.addListenerInside('click',objClickHandler,this.getByElement(bgid+'_c'))}this.css(bgid+'_c',{position:'absolute',zIndex:'2'});for(i=0;i'+clk['fun'].replace('thisTemp.','').replace('()',''))};this.addListenerInside('click',clickHandler,this.getByElement(idArr[i]))}switch(list[i]['type']){case'image':case'png':case'jpg':case'jpeg':case'gif':this.css(idArr[i],{float:'left',width:list[i]['width']+'px',height:list[i]['height']+'px',filter:'alpha(opacity:'+list[i]['alpha']+')',opacity:list[i]['alpha'].toString(),marginLeft:list[i]['marginLeft']+'px',marginRight:list[i]['marginRight']+'px',marginTop:list[i]['marginTop']+'px',marginBottom:list[i]['marginBottom']+'px',borderRadius:list[i]['radius']+'px',cursor:'pointer'});this.css(idArr[i]+'_image',{width:list[i]['width']+'px',height:list[i]['height']+'px',borderRadius:list[i]['radius']+'px'});break;case'text':this.css(idArr[i]+'_text',{filter:'alpha(opacity:'+list[i]['alpha']+')',opacity:list[i]['alpha'].toString(),borderRadius:list[i]['radius']+'px',fontFamily:list[i]['font'],fontSize:list[i]['size']+'px',color:list[i]['color'].replace('0x','#'),lineHeight:list[i]['leading']>0?list[i]['leading']+'px':'',paddingLeft:list[i]['paddingLeft']+'px',paddingRight:list[i]['paddingRight']+'px',paddingTop:list[i]['paddingTop']+'px',paddingBottom:list[i]['paddingBottom']+'px',whiteSpace:'nowrap',position:'absolute',zIndex:'3',cursor:'pointer'});this.css(idArr[i],{float:'left',width:this.getByElement(idArr[i]+'_text').offsetWidth+'px',height:this.getByElement(idArr[i]+'_text').offsetHeight+'px',marginLeft:list[i]['marginLeft']+'px',marginRight:list[i]['marginRight']+'px',marginTop:list[i]['marginTop']+'px',marginBottom:list[i]['marginBottom']+'px'});this.css(idArr[i]+'_bg',{width:this.getByElement(idArr[i]+'_text').offsetWidth+'px',height:this.getByElement(idArr[i]+'_text').offsetHeight+'px',filter:'alpha(opacity:'+list[i]['backAlpha']+')',opacity:list[i]['backAlpha'].toString(),borderRadius:list[i]['backRadius']+'px',backgroundColor:list[i]['backgroundColor'].replace('0x','#'),position:'absolute',zIndex:'2'});break;default:break}}this.css(bgid,{width:this.getByElement(bgid+'_c').offsetWidth+'px',height:this.getByElement(bgid+'_c').offsetHeight+'px',position:'absolute',filter:'alpha(opacity:'+bgAlpha+')',opacity:bgAlpha,backgroundColor:bgColor.replace('0x','#'),borderRadius:obj['backRadius']+'px',zIndex:'1'});this.css(eid,{width:this.getByElement(bgid).offsetWidth+'px',height:this.getByElement(bgid).offsetHeight+'px'});var eidCoor=this.calculationCoor(eid);this.css(eid,{left:eidCoor['x']+'px',top:eidCoor['y']+'px'});this.elementArr.push(eid.className);return eid},getElement:function(element){if(this.playerType=='flashplayer'){return this.V.getElement(element)}var ele=element;if(typeof(element)=='string'){ele=this.getByElement(element)}var coor=this.getCoor(ele);return{x:coor['x'],y:coor['y'],width:ele.offsetWidth,height:ele.offsetHeight,alpha:!this.isUndefined(this.css(ele,'opacity'))?parseFloat(this.css(ele,'opacity')):1,show:this.css(ele,'display')=='none'?false:true}},elementShow:function(element,show){if(this.playerType=='flashplayer'){this.V.elementShow(element,show);return}if(typeof(element)=='string'){if(element){this.css(ele,'display',show==true?'block':'none')}else{var arr=this.elementTempArr;for(var i=0;i0){position.push(null,null,null,null);var i=0;for(i=0;i-1){this.elementTempArr.push(obj['element'].className);this.elementArr.splice(def,1)}var css={};var pm=this.getElement(obj['element']);var t=0;var b=0;var c=0;var d=obj['speed']*1000;var timerTween=null;var tweenObj=null;var start=obj['start']==null?'':obj['start'].toString();var end=obj['end']==null?'':obj['end'].toString();switch(obj['parameter']){case'x':if(obj['start']==null){b=pm['x']}else{if(start.substring(start.length-1,start.length)=='%'){b=parseInt(start)*w*0.01}else{b=parseInt(start)}}if(obj['end']==null){c=pm['x']-b}else{if(end.substring(end.length-1,end.length)=='%'){c=parseInt(end)*w*0.01-b}else if(end.substring(0,1)=='-'||end.substring(0,1)=='+'){if(typeof(obj['end'])=='number'){c=parseInt(obj['end'])-b}else{c=parseInt(end)}}else{c=parseInt(end)-b}}break;case'y':if(obj['start']==null){b=pm['y']}else{if(start.substring(start.length-1,start.length)=='%'){b=parseInt(start)*h*0.01}else{b=parseInt(start)}}if(obj['end']==null){c=pm['y']-b}else{if(end.substring(end.length-1,end.length)=='%'){c=parseInt(end)*h*0.01-b}else if(end.substring(0,1)=='-'||end.substring(0,1)=='+'){if(typeof(obj['end'])=='number'){c=parseInt(obj['end'])-b}else{c=parseInt(end)}}else{c=parseInt(end)-b}}break;case'alpha':if(obj['start']==null){b=pm['alpha']*100}else{if(start.substring(start.length-1,start.length)=='%'){b=parseInt(obj['start'])}else{b=parseInt(obj['start']*100)}}if(obj['end']==null){c=pm['alpha']*100-b}else{if(end.substring(end.length-1,end.length)=='%'){c=parseInt(end)-b}else if(end.substring(0,1)=='-'||end.substring(0,1)=='+'){if(typeof(obj['end'])=='number'){c=parseInt(obj['end'])*100-b}else{c=parseInt(obj['end'])*100}}else{c=parseInt(obj['end'])*100-b}}break}var callBack=function(){var index=thisTemp.arrIndexOf(thisTemp.animateElementArray,animateId);if(index>-1){thisTemp.animateArray.splice(index,1);thisTemp.animateElementArray.splice(index,1)}index=thisTemp.arrIndexOf(thisTemp.animatePauseArray,animateId);if(index>-1){thisTemp.animatePauseArray.splice(index,1)}if(obj['callBack']!=null&&obj['element']&&obj['callBack']!='callBack'&&obj['callBack']!='tweenX'&&obj['tweenY']!='callBack'&&obj['callBack']!='tweenAlpha'){var cb=eval(obj['callBack']);cb(obj['element']);obj['callBack']=null}};var stopTween=function(){if(timerTween!=null){if(timerTween.runing){timerTween.stop()}timerTween=null}};var tweenX=function(){if(t-1){this.elementTempArr.splice(defX,1)}}catch(event){}thisTemp.elementArr.push(obj['element'].className);callBack()}};var tweenY=function(){if(t-1){this.elementTempArr.splice(defY,1)}}catch(event){}thisTemp.elementArr.push(obj['element'].className);callBack()}};var tweenAlpha=function(){if(t-1){this.elementTempArr.splice(defA,1)}}catch(event){}thisTemp.elementArr.push(obj['element'].className);callBack()}};switch(obj['parameter']){case'x':tweenObj=tweenX;break;case'y':tweenObj=tweenY;break;case'alpha':tweenObj=tweenAlpha;break;default:break}timerTween=new thisTemp.timer(10,tweenObj);timerTween.callBackFunction=callBack;if(obj['overStop']){var mouseOver=function(){if(timerTween!=null&&timerTween.runing){timerTween.stop()}};this.addListenerInside('mouseover',mouseOver,obj['element']);var mouseOut=function(){var start=true;if(obj['pauseStop']&&thisTemp.getMetaDate()['paused']){start=false}if(timerTween!=null&&!timerTween.runing&&start){timerTween.start()}};this.addListenerInside('mouseout',mouseOut,obj['element'])}this.animateArray.push(timerTween);this.animateElementArray.push(animateId);if(obj['pauseStop']){this.animatePauseArray.push(animateId)}return animateId},animateResume:function(id){if(this.playerType=='flashplayer'){this.V.animateResume(this.isUndefined(id)?'':id);return}var arr=[];if(id!=''&&!this.isUndefined(id)&&id!='pause'){arr.push(id)}else{if(id==='pause'){arr=this.animatePauseArray}else{arr=this.animateElementArray}}for(var i=0;i-1){this.animateArray[index].start()}}},animatePause:function(id){if(this.playerType=='flashplayer'){this.V.animatePause(this.isUndefined(id)?'':id);return}var arr=[];if(id!=''&&!this.isUndefined(id)&&id!='pause'){arr.push(id)}else{if(id==='pause'){arr=this.animatePauseArray}else{arr=this.animateElementArray}}for(var i=0;i-1){this.animateArray[index].stop()}}},deleteAnimate:function(id){if(this.playerType=='flashplayer'&&this.V){try{this.V.deleteAnimate(id)}catch(event){this.log(event)}return}var index=this.arrIndexOf(this.animateElementArray,id);if(index>-1){this.animateArray[index].callBackFunction();this.animateArray.splice(index,1);this.animateElementArray.splice(index,1)}},deleteElement:function(ele){if(this.playerType=='flashplayer'&&this.V){try{this.V.deleteElement(ele)}catch(event){}return}var def=this.arrIndexOf(this.elementArr,ele.className);if(def>-1){this.elementArr.splice(def,1)}try{def=this.arrIndexOf(this.elementTempArr,ele.className);if(def>-1){this.elementTempArr.splice(def,1)}}catch(event){}this.deleteAnimate(ele);this.deleteChild(ele)},getByElement:function(obj,parent){if(this.isUndefined(parent)){parent=document}var num=obj.substr(0,1);var res=[];if(num!='#'){if(num=='.'){obj=obj.substr(1,obj.length)}if(parent.getElementsByClassName){res=parent.getElementsByClassName(obj)}else{var reg=new RegExp(' '+obj+' ','i');var ele=parent.getElementsByTagName('*');for(var i=0;i0){return res[0]}else{return res}}else{if(num=='#'){obj=obj.substr(1,obj.length)}return document.getElementById(obj)}},css:function(elem,attribute,value){var i=0;var k='';if(typeof(elem)=='object'){if(!this.isUndefined(typeof(elem.length))){for(i=0;i0)?((m<10)?'0'+m+':':m+':'):'00:';tHours=(h>0)?((h<10)?'0'+h+':':h+':'):'';if(ishours){return tHours+tMinutes+tSeconds}else{return tMinutes+tSeconds}},randomString:function(len){len=len||16;var chars='abcdefghijklmnopqrstuvwxyz';var maxPos=chars.length;var val='';for(i=0;i127||str.charCodeAt(i)==94){len+=2}else{len++}}return len},createXHR:function(){if(window.XMLHttpRequest){return new XMLHttpRequest()}else if(window.ActiveXObject){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(event){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(event){this.eject(this.errorList[7])}}}else{this.eject(this.errorList[8])}},ajax:function(cObj){var thisTemp=this;var callback=null;var obj={method:'get',dataType:'json',charset:'utf-8',async:false,url:'',data:null,success:null};if(typeof(cObj)!='object'){this.eject(this.errorList[9]);return}obj=this.standardization(obj,cObj);if(obj.dataType==='json'||obj.dataType==='text'||obj.dataType==='html'){var xhr=this.createXHR();callback=function(){if(xhr.status==200){if(thisTemp.isUndefined(obj.success)){return}if(obj.dataType==='json'){try{obj.success(eval('('+xhr.responseText+')'))}catch(event){obj.success(null)}}else{obj.success(xhr.responseText)}}else{obj.success(null);thisTemp.eject(thisTemp.errorList[10],'Ajax.status:'+xhr.status)}};obj.url=obj.url.indexOf('?')==-1?obj.url+'?rand='+this.randomString(6):obj.url;obj.data=this.formatParams(obj.data);if(obj.method==='get'&&!this.isUndefined(obj.data)){if(obj.data!=''){if(obj.url.indexOf('?')==-1){obj.url+='?'+obj.data}else{obj.url+='&'+obj.data}}}if(obj.async===true){xhr.onreadystatechange=function(){if(xhr.readyState==4&&callback!=null){callback()}}}xhr.open(obj.method,obj.url,obj.async);if(obj.method==='post'){try{xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xhr.setRequestHeader('charset',obj['charset']);xhr.send(obj.data)}catch(event){callback()}}else{try{xhr.send(null)}catch(event){callback()}}if(obj.async===false){callback()}}else if(obj.dataType==='jsonp'){var oHead=document.getElementsByTagName('head')[0];var oScript=document.createElement('script');var callbackName='callback'+new Date().getTime();var params=this.formatParams(obj.data)+'&callback='+callbackName;callback=obj.success;oScript.src=obj.url.split('?')+'?'+params;oHead.insertBefore(oScript,oHead.firstChild);window[callbackName]=function(json){callback(json);oHead.removeChild(oScript)}}},loadJs:function(path,success){var oHead=document.getElementsByTagName('HEAD').item(0);var oScript=document.createElement('script');oScript.type='text/javascript';oScript.src=this.getNewUrl(path);oHead.appendChild(oScript);oScript.onload=function(){success()}},isMsie:function(){var browser=navigator.appName;var b_version=navigator.appVersion;var version=b_version.split(';');var trim_Version='';if(version.length>1){trim_Version=version[1].replace(/[ ]/g,'')}if(browser=='Microsoft Internet Explorer'&&(trim_Version=='MSIE6.0'||trim_Version=='MSIE7.0'||trim_Version=='MSIE8.0'||trim_Version=='MSIE9.0'||trim_Version=='MSIE10.0')){return false}return true},uploadFlash:function(){var swf;if(navigator.userAgent.indexOf('MSIE')>0){try{var swf=new ActiveXObject('ShockwaveFlash.ShockwaveFlash');return true}catch(e){return false}}if(navigator.userAgent.indexOf('Firefox')>0){swf=navigator.plugins['Shockwave Flash'];if(swf){return true}else{return false}}return true},supportVideo:function(){if(!this.isMsie()){return false}if(!!document.createElement('video').canPlayType){var vidTest=document.createElement('video');var oggTest;try{oggTest=vidTest.canPlayType('video/ogg; codecs="theora, vorbis"')}catch(error){oggTest=false}if(!oggTest){var h264Test;try{h264Test=vidTest.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')}catch(error){h264Test=false}if(!h264Test){return false}else{if(h264Test=="probably"){return true}else{return false}}}else{if(oggTest=="probably"){return true}else{return false}}}else{return false}},getDataset:function(ele,z){try{return ele.dataset[z]}catch(error){try{return ele.getAttribute('data-'+z)}catch(error){return false}}},getObjectById:function(id){var x=null;var y=this.getByElement('#'+id);var r='embed';if(y&&y.nodeName=='OBJECT'){if(typeof(y.SetVariable)!='undefined'){x=y}else{var z=y.getElementsByTagName(r)[0];if(z){x=z}}}return x},formatParams:function(data){var arr=[];for(var i in data){arr.push(encodeURIComponent(i)+'='+encodeURIComponent(data[i]))}return arr.join('&')},arrSort:function(arr){var temp=[];for(var i=0;i-1){filepath=filepath.split('?')[0]}var pos='.'+filepath.replace(/.+\./,'');return pos.toLowerCase()}return''},isMobile:function(){if(navigator.userAgent.match(/(iPhone|iPad|iPod|Android|ios)/i)){return true}return false},isContains:function(str,key){return str.indexOf(key)>-1},getNewUrl:function(url){if(this.isContains(url,'?')){return url+='&'+this.randomString(8)+'='+this.randomString(8)}else{return url+='?'+this.randomString(8)+'='+this.randomString(8)}},client:function(event){var eve=event||window.event;if(this.isUndefined(eve)){eve={clientX:0,clientY:0}}return{x:eve.clientX+(document.documentElement.scrollLeft||this.body.scrollLeft)-this.pdCoor['x'],y:eve.clientY+(document.documentElement.scrollTop||this.body.scrollTop)-this.pdCoor['y']}},getCoor:function(obj){var coor=this.getXY(obj);return{x:coor['x']-this.pdCoor['x'],y:coor['y']-this.pdCoor['y']}},getXY:function(obj){var parObj=obj;var left=obj.offsetLeft;var top=obj.offsetTop;while(parObj=parObj.offsetParent){left+=parObj.offsetLeft;top+=parObj.offsetTop}return{x:left,y:top}},removeChild:function(){if(this.playerType=='html5video'){var i=0;var timerArr=[this.timerError,this.timerFull,this.timerTime,this.timerBuffer,this.timerClick,this.timerLoading,this.timerCBar,this.timerVCanvas];for(i=0;i0){name.lineTo(d[0],d[1])}else{name.moveTo(d[0],d[1])}}name.closePath();name.fill()},canvasFillRect:function(name,path){for(var i=0;i-1){this.elementArr.splice(def,1)}var childs=f.childNodes;for(var i=childs.length-1;i>=0;i--){f.removeChild(childs[i])}if(f&&f!=null&&f.parentNode){try{if(f.parentNode){f.parentNode.removeChild(f)}}catch(event){}}},getProportionCoor:function(stageW,stageH,vw,vh){var w=0,h=0,x=0,y=0;if(stageW/stageH]+>/g,'')};for(i=0;i0){arr.push(arrs[i])}else{if(arr.length>0){textSubtitles.push(arr)}arr=[]}}for(i=0;i=2){var sn=textSubtitle[0];var startTime=this.toSeconds(this.trim(textSubtitle[1].split(' --> ')[0]));var endTime=this.toSeconds(this.trim(textSubtitle[1].split(' --> ')[1]));var content=[delHtmlTag(textSubtitle[2])];var cktrackdelay=this.vars['cktrackdelay'];if(cktrackdelay!=0){startTime+=cktrackdelay;endTime+=cktrackdelay}if(textSubtitle.length>2){for(var j=3;j=thisTemp.numberTotal){thisTemp.stop()}};this.start=function(){if(!thisTemp.runing){thisTemp.runing=true;thisTemp.timeObj=window.setInterval(thisTemp.startFun,time)}};this.stop=function(){if(thisTemp.runing){thisTemp.runing=false;window.clearInterval(thisTemp.timeObj);thisTemp.timeObj=null}};if(time){this.time=time}if(fun){this.fun=fun}if(number){this.numberTotal=number}this.start()},toSeconds:function(t){var s=0.0;if(t){var p=t.split(':');for(i=0;iI!=Rzz6UGfIy%JtCk1M3+e;2qqhm5S8&%eQWA6U@$nGjEY<(P`!2Yh2{+G7AyPFTx(GBJW*7NXk^ns!4!EAjIgMfcd@DA|yfw^L6
zxIb}($-6jupboWvZlbZe2WaI1wRMKt!+6!*p>~dL_Hs}!IjA=btmor}n1P0xvAm&f
zb~f(*`T-s=um{u&0Tv7D;o;(F3-xhycLQ=_L0w$j{S@3?5fIS4eGs-#9o-y#@S%2g
z_YSK&B2GtuL%W~h$|@)*Dp=`jS?TG^Dl208IwEM33-Ez?W4inY0h&C58E+yln5+8}
z*nb(pLBfQ2Aw7oq`w+x#Y
z?d6ULqE7(BKaqplx!b^yQR9=<6X1Ku&o9hpgB`h;pOh{2=nHJJG#LBa!&SNaTNPc1c?7z{x@vQ|1JD~hnViamHt;|Q2qD%
ze;J|vyY@HX#O`@TuK&$OOhjxE*^NjvZ!pZw&JpT%9}t+=V>h@v2EsKTcOOIwV95MU
z8!K-zZ^=5Ybn|sZ+)=JP)@bVLftJ2<-7p?dqcdtfPQ>MQD6De1~;C=wxa1?F|{g0~97kPFNU
z-3FOO>M%FdC+?1R5IJ{u7Z}tH)z{I@2bu7V7|0xu_40xSfEDlk!%=^%udl9XrKqX!
zSXL9=!`=HH1HKmwYG>f)?P%`?yU!cE|670{9P9#fv-fep^h4I#ePUrDHU2pe)7K4=
zJsw^#Z*OdSsFw|*9`1E8?sbq5!G8%Nutg@Zo6rByh5A_Yu|5uhQ+wp@d*{%#b+wdr
z74`JMx-ff1e-DV6xwpB61sBjB4bd(feF%Kq)!l8OE--a>KSWs|E7#lC#@ojW?fy{A
ze;JhZ!9j%Zf9!&Npk4^B!GC$gvPVQ$*3C{2K{J{jvV#{d}|JIwpBzPk_91?z9B+#ips0rhb}admY2%b%WuyO$6C
zJ(d4*j-Z&16onLx6hexP1|TOu1E2xWS|_&yvWu6
z`yaU?3Lyj)h=GZPf{lX<#=|EdBqAmO0&O8c5Cnt@K><)o5EM)ZDi#C<2ZDwR
z0pde|1P~x01V{t{l0txF5C}O0NC5#+LV#2d2sH$q8Umq#0BIpWItVH~1eE~-WQ1Ta
zV=w_BKz<1D0R+fLg&01>5ClR{gdh-M2=EaECgNpg8=O@
zm=W+CAV5b5&P0{{;IEC9emfB^C)h`b3QZ@fSN
ziY8J^2?#*t0Rqs>kP~y{O%@0MTL1wNVG#^k04Cy43@{KA4~PK(p#!l{fdDL^Fe(6u
zjSd0=F(gL$VE}7H3;_U!p7b;VR#tv%5Wh7FzcnhqH5$J)7$1x{0&1wv#C#wfof1~;Aq20{Qt0b*jwj`EK_23SMj*!ZXbz(*Z49ByJF#0l0A
zZW1kApfw&+OjF=XPlyfxjB4Qn@Dbcu5Lgq!iALf0S_B}3ArLAGCe}C5C_jCKEr>ph
zZ0b89Qi=RuC34WH1qGWmC7eo?0^~q~gh@@))Ak%P3Mb)a!bcc}lj{9wCo7Foq6QLT
zA+`b$D@s5hE0hK?KspTDkD_OgVRG9
ztWn^M+yd5k|Bl$Sm_XLdNJ~XZELVH%DTrl}du3LH3Nvzsj{*R&c_
z!U41893|gD$U;O_1Yu@s?E81PBod4=3WR+W
zE|ibBw4_iFM@{4F0st8IXX0}sMq}e+<8X#iI7ne
z0k&uih;;aFt=w>5nutNPgQoI#xRy0@bQts07}7KD_LmO6?e
zck9HDxQ+i8Z~sLVB5{ZjTp>wmpl6l}J5BPw75x10kaIj>7o~5uMo@
zXB@7_4A9a5S>udq=>w6GwBQ^^lpFrTze>0WfyTc|_%z5F(hF*Ky7Bvc$POSOQvNU}
z3H7Q46=C)XCm{kd$2}<+mZVSMnokJ*0Dv*Lo;6x@7#gQ7DmNV2o2U_{fHtUzriAdD
z8;%Gv0=cFv5CIz>5nN>0@OcqMV}ojgrepw&Kx89gqal!x3{fTE|GkF@0O&!pL9;=H
z8zBL*s$UV%cNTf)_$aGZF9e4|#
za?Q*TK-fXhi!8?~UmG;UUZn3H^b-gn;&j@7k>gVR8*XG-8|D`9^|MNh!YvTRj(mvQ
zpmKgh_7Sp~TVy_AAzosjQjYRl*dShFAOrN=gx^{O@ofyGp>YsKXkZ`|(6C35A!YjX
zwNHQ_A;Sa$(ZJyQ*AR%AG!de%00>-wp=Q9<9rD)^z#U10AP6x*2myGDvWWV4gP3Cg
z{`0;;K1yQ;Mz)zz0Q+w1?Ac5^E3-(vhReg8zBaV@!X&}w~F83qN=_*ZY$r_ZaOJ~g*zCpTz1jL4Obaz7HF`w~YTn?U_C
zfx5~5NfF7+iEcp12^y?fw}Ow#iK>H4IH$NkH2cJ`P|jPQ6W5WXs$wz=jJ=7D<5*6f
zJ54nychoG`VaY*;WxPB(1hm!Rvoz=Bc7&{Z`dbOxv0NtzV+0C6@Z5P^Z5VCmR47_F
zVkO>`WLD)YFOZf0o>CDfd5JsB&W16koMJ?-stl(4Ubfr1)jT$#I3X_X6}7lT@b>cl
z_f;mQ&(R5VVo8)5w4#AN=jSU-OoFFhE9)CmEnQYxUW}>U#gDm|z#R4B4&^Ai8}-UR
zG#~Q)^O-B|VbJk_zMxU}RC-(TVCR8X
zG*s+#T&$Vn9e33+-R5XXWxe2yw1B!1kDL%&KV|7xdP!#dCD%XcMWEmNxX`KzT{`-Tc<9*W7novz*Y|3!bi&Zg;r4vR#^nM3{1gow-)E0MGY*cItnvL&ygN9LwMRb5teFJqU73VkM|(7#ltG7
z>z9u3m7r&z&YnNt!@*mkqUaP63$DSsU20lWymlu@$^Fx&BRKh>^x3KCg4b1gb?9};
z8x@g|8?)xfB={A9%GDjYoO
z7r}Wcp8NdLN#RL?6v4&mQv04rVd&+;m2}?q2;a@oo1Wa@yQL8B)9)gkcaP8J7SH3{
zQTOhC2i^K@CrICPy9Y^Me0qQL;%?mPdhn>O=IJ3F?}haF$C}X3SIu4LyHmh!#a8
zE|WH{yKc|ENzt|4)#Qfs+by1LYP6J6(iyOJPHd_8a#dfheut^KG*n(k_j
z?q==|<7Qp!_VUfp-OU2zj{P!gPwK+|mylI}%eM@=t7mrvt=BVM7jnnScZZj`J{Gs<
zrP9Q=>ms3RD0P04cXi4O2qLQXP`j>A?hbB#gx+mig-%>eDNA25-D%}K{d4hSPx2r=
z;VSgZN_wAYPoV2)rt4+LO;b&P-#$v$^^c_wbmxP6!7Qg2dv|Nz`D{|h8%u_Zhvz|E
zL>5=d(?dAb(QX0TN(nztFHt@U`R**4cStXu&+dJ;Jc@Fs_FvY@ooSxxIJFO*JsGC^
zup7E8dw1i!D|B92_0i8&Biw3wc6P@(5huCog2UJ(=(p_MvvadgHCG>_`9UG)Ptggj
zUtP(f2e`QUxVj$KHO|UGL^z=bw*ygd{Wtp`qQk_J{8q?)Wrs
zwv=yo&)C*Wv^;M&di_=>@UZNqBqa~EN_jVl+%J0ZZVx7ugE*zLucnrA12^>&LOa?w
zTJ^NbwC=XwS>7(_kx5ORTQ$(#cIdtDFnbfaWNW1Pmi)v1`B}(rf>wu==iZw8&h0Zj
z?*+fN=ku3mny%bWcW&CAcLs8{A1`$!h8&CJTy~Y8?X-IQPRN-R@cW#zbX6rCP|2p|f!ont7i1WxSBjTzw^B!+P^YhK_N7sbccK{=(!X~FUSu>IbRL+l+H$Tb_8~ey4P@KWmkJS%p{BwT~x#F<&k{x7u+>Gq@ynvS75LU@m$xCY>8N
z-sY4mdh(2JHSF$^gMH)q^!1vErsUaAg1gT(cQ>WA2Ma?27)tMsechp5bI0xk2aIoz
zy+6#^+uQT8Ek0d%S^7ujG|TkyTQdW_z|(o-cA|w7GSzVztR|&0e}Wf9mMFJI+A};i
z&9yD+zkzNpvPX6YH7Q!!Ik)xn1w-Rjo}1oh0fcc%P$6A*9>+NN4E+m0eT|`@d-DwY
zH0g(-YOkttiJQpx+LU}$8dgN?cy_w$q!JqRv$LmMd)E_dY@LTUHSMQYR;E|C8B&~7
zE0k~EZa+4TP*AM_EfBhd*EtC`ITihI5=?xM$G$d3#`qGAsdyyA88*D4TJ-gjG7D(_
z{7DKq#mgftJ3Jg3YFa5V!D&vTthFq*H)`3MZQk||O+0ewv>=YeU(?h^6#2yEk3|d9
z$VlH%`}E6azj$VH@U^HR)2N6^+xx;`HdC%j|2ySE_b+W-YLw**N;m3g_C`OaR`4O~
zu$}j$g*(MdQZCY#x9j}5BJBoMtz{YQBvs8}RSZfTE*chfn>>P)GloK8#p}oLe7RML
za=xoRk=;yp0NpP%L#hfd$0l9;U-fI>4I9d*1F4TPqV|`~^Zh;Z^WQra8=u;=e%;ii
zRM$W~f|6gfOIUT*CsqD_zD|X9V9YfU9Hm=gIA$mjHD>pYvR6qkMgyx*uRdfq7B}w^
zZm4x9+0YU2{9ya@@YhKS=8Pd0jkD~&u85>cr(&;<2}iMLi6}2$=Gp2xgU%hJobaE5
zMVaE@lceEN@p+X*(WajVbmu*58K@JLnJgP$FnhlOYozk0drghj6M6{5y&+^hL%
zpH+2RJ(VyGvuH&4TggcNvyOtl$LHJQj?sJeG{6NzDP!
zYNwl8=g#_HS<>yl`aL~Y=@U^2I|gV)Q}L1?9Lb>Jt$v9v+2(S9KL;?;JMvzfnXG6Pu`pSNa5C
zrX9+Sw54`yp(|uD<_&tfc2W@UW?SN6ZD7ayDEKS+{??j|w#CNTCx*Ti`e69MkV2-`
zwob0Wgq=5w28Z0h!kt%c5nt%6(h@i`DPUDbZd%r2T*l)d_&g^tALanXrFa&SZMJQ?
zYl=Pd{DDK92dcsx#&|Rqio^pfDDz3|;{Ml7oG>>tj{;pQ?(@hgcBg80M$*wJSP9oh
z44N#tvauBEZ_In!Yf%vNI)5F2hey0q&ZwHH2f=0E=uf`-Z2L$`Qv<6pbo{i^Tx{a}
zCwT;4nqoGG9JxklciljWJ~wE(CSXf!G`rt$Bk{B7g!hv`3D3?AAF+(=
ztl<&$xCB;sy?x2oD3485>_|7I4SRv|#s{N
z(KFx`SPZKC@(P~LNg3A;`JUi)_vem{R2%g*i=!{IpuM8+W1$LP0Ier;9G2#&m#+*7
z1pK$6z=@Q2z($MdWrm+bMIO)JnZp?+8
ziiQC8o(q*W7kK~m_hV2QN+D6?H@ke!x1v?15PSVdO!pS;XDg0Qy&5MN3GAdCaH2XuK}?4xWyQ!^AI~Gms;S<-N(NpA`a%PBtV|qu!qn4gfxAF^(S^
z*W%c69=g04xRK+B;qy84`M`SG;29PwI;w+}edjRI#
z>dLF^(lH5539|F|uh|;dx0D8u6IEmENNc(sdQol;cX}wDo;hsy?L6Nsj3<^Xe5W7R|9faOL6{Jp9>gCs
za{zDsJ-NOCbdyU7)S#NMUKbGh{h=i7x;CDwr5UA>cyvw3)LYwhIvgPGVeWP^g-*~?
z7gqJP-!>qTb^p*XKQddUj_T(-F&>%tLuNDYwE{ds0AHL{V(^fnU$gnR+-8~>F~+T2
zUoN+ZM?7VxpbTS4UQQf{0#vPiEFQr6AV7>J`*qex$&sG@xBze^dqlDKd;}i{o!$|U
z1R;G-qpaZJh$6Q_e|O!!Xv{09%J_(pcpecO+v=Tq$35B@ANLUCX>WDAdb
zg^1%FbRIaZWOZiCOCLBAGgY7`N0-s+M6^|;(atIj2xrYqnK#T=I)K?2F^PV$!k|w*
zaa8DkM8U3-h8Q^U@J*C5v?66RtNfEpSL81v(h4V7W`Q))T4K!8=>T`%0`s=5U{nXIrp4hYUxmws
zbi7&y)JV<~zPZgW*uxft9F
z8fKXsvAo0*d&)b^)Xu!k$z{U2Se2ZZOHE=!mE>WkSw$O&@qhxEiZt_591u&3sK}zo
zvHa`Q$OL8bI)IVHbOl)S=M{a~D5gKvqYlZ4GBbu8&RZOk4Sd|!&14(=G4q{2smW9x
z;uiGRe$1v|@Jd!)p<+DjDO7Y-BF1h{*bsNJbVY(<1Al*yI9=!QNp{bI{cH)DhHyl#&2QIbr2
zHiK#t=}T8@b=1|2!KZyMBh|>2*L-Y>Bc{p%RibUvbH>)Os#M40CJNsmh)Nz5#QY@z
z{E@lJN}stc#MWGNOqjtOSzcgC_D1ii@o|~n6FJ8iqUQ~Q9E=%4FiG!7{c;uX7Qd=?
zecR9_AEIRSrj}|drAsP9WlZkqxz&o&R9Zq!OzucvH}XT5HJn=sTw8R8Q_=;Mp%Y)a
zODjXUxy2KzVm`@chQT2^&NzJrJytYJpkclc&ssjh)8L7gFvF3v!f&p8WIMah4*NJN*
zen<30)G(8ySJcJ{Xy%1j5i?QC`mNvwf+n?*z)uOT)X_qfm7&?FwcibFY*4~F9;+E1
z9@gU?LZ<0om=^wuo9`&C7V>xsYF*@G_W^8OEjgQ+ViNZJU2FG+a`
z*YSr?Ph)DaRbPSC(v=cF)qVj!foE(msh!S`eZG)WGmKwO&Wu{7cl`RI{uc3wVoN>I
z;@rxOWi+WTVEhf^pe41ei9>y%xZqrjfftkSmx=6fVnP7rULujm$^AIB~>3snT_k3UOky{aqFfPE8s{;S?z$0|3
z0n^i?q6#?SEL%(wO|0moMMQ`Vhj7o};}1Jk{lwvIXC9+yemY!65%hpz^bYRE<;uYu
z1!`)Hn#iLE*r~tCGG3`i5+>{LiDa2dIq5KOzp$q;jQjqHrmhav3y(=TE0;FBsIv1U
z&+Rh-Xsp&V=`D1(ZhurJHZvxzateCVxLzA2D7wJvONh^tqSlouv!1YGsxqBEgwydn
zYz1`j#cVvu7SrfK2H<;@Ca+wi(%bwHZtNyMf)u|*hg=n9)v_3UFo`|ePibihTD)zj0Ldv_oC
zswA&2v`k)|?tjz{e3+3lm@vZ3IwskxpF|O-@A$xfZbjL_m>}fGX8tZ_G5)9EFf=Ud
z`Lq))A`Y1a&gCNXaSB3)3M|QVt%-2%EXEc_oVW6j(%p0#dufb8>wL+Pcxj
z{(N@l+2Lwn-C=c`dFL+)km0jd=_m8KER>(O1$mQQkQu9$=0
z-E>;JW9=>0mqkI9-7L%Td5*CWAc15}__j$DBiRBA`Vse^s^=^3(w(~nDWv4f3Z6e3
zc);S+y_YuM^7t3gVSvY?UFNml-bY8Xc6w^q=735x1I-N9O553h>xg1osmqz&Htna~
zd{B{`_2jOo`$yK=~-~7+Nusr}E`)ty;1w__n>;RweK8qO
zN6^}8XB$8(J$IlL)Y`^}&2e=~=MU8&MhggQ99}4`lrDCu^qqSzo^;Mmb*AjRZpa@k
zk>_$9yl!gn=vZ<>y%jhIeR_AL`tZy`Je9bSSZg7D6YE=H*QnE<79|~R*`}1x_|!T2
z9P6>7Oz$^o~`*P|z?_5zfBE
zSZ1Xw_l@{%lNMipkXL_@MKoP;mK7r&wovr*s*m(Mx%J90zv@R_#P@CY@z-#jt)(sP
zH@c(E%|5y|Pl{5TjeCEV98Z}?Ib)}B`;8j&ioAS@j`FnGx_oZ0;ax^CZQ@WNKAta&
z!nM`2W`lVW*UrtJ9agZkdy_e5onm5b4#uRZfmZ}MIcKV>SLuvAQJzb?;f%jUs$ao~
zhQo8YiHpcljz$SNDj`?Q99cE+&ii3W?pAgRBPF1sUwYBppW>O?U7MD46}lc^zxw7O8-P~|CNU}w}#{n44mp9OXui@Q#KMe-ooMM!Q9!0k!gX8S8=jQynz8&FF0c@qC%stUj
zE7g6$tx!Q7dPak8atfZw*mt+j7mJ{nlgDcmE2rb^GQ5l$k7*RHY{nl3h?|u~&ZI|3
z>KLv*=5sXyFfFg`1SWuK*e{MT%Yi8ER8_L*8h+Bb@sY~F
zboP3*j^narN0%i(wtkuagCg@o9kh+F3Uy@dyfIu^0&lC6;q-2+H}0WWN+rf+^0K1_
zjl)|}5u{jgV_y0Bj*T$QEOucf1#-`iKNGk~(*?h@#B%l#5B1BxLUHJerngeX_L&~6
z*0bOvRa>j9-T(AtKiwIx!Ig-V`gzu6ODDFj!^hFn+{U}M!*x81kaG(c)}XajIuGNU
zov%DjI2t@uP8vqH`)};B7SbcIWC%;NU9o(=Uwowl*ke%*?ZVsj>D`~dxH%7-R!sd*XcQdk%__x%O
z1l*HNzk%XjZ&InLGQD0`YMhlv1|^ztAH1nTiv>igtP8=SR-`#wetHt+`dUac3NQSu*xN2o0N>V(
zx?!N!V1mZP(lRpSM{-gUUc$G=7asy1cY^S#YJ3H=a1K=S+d;~hSZ=DpWT9UnS?JTu
z2E!(K#MuI}Qaz_$C6iU3#z-*8wmci+Y>2Dut9Tgv8fvZmGs?e))GgCs6gW^>2XqYU
zdS*DH7tU`#rm@4Z&iz1>4k3B^QEzPB6pKOT__^hG@OSoomq6AxnOU!BscA)}f;~`4
zC-&=Bpj`|?wF7&}GlDzID2})k2G)h}n2{I;p=O$jXNO5bon=+YY0O!LPP8EJVgo;>
zw``kR@rF&j+u+g1&A<5}lY!_wMXv}=HqTa;0sVD+QojO|yKxw!&mGCAQt`SWp1;E4
zGAQ|{Z^NS8W?sC(+9njoMTy`*@e;G1cE=t5^hXXxDO$UMQqu38SHeS-Oe@3tI;oyr
zrJz4tSmMF5@kbQbEnk`H5g-viWLD-$ch)+P>PTeS?i|c5pAP(D>f8+-7N8#v1yirf
zqC6?g1GZf(0VoJlunaI{UW3<1aL&Swnuj!;@1A!5jD=MCigp)7QaQN?cpQKlJd*-y
zcbZe!A7Uq1_)}m8)4yN2xKv3}$a!ErnRkm{gG>1;M67!B$uT|WtM`#CzQ*$7UMnxW
zz?(aLkL-7=f=}~#1X<-^N@Un-(i9*qq3{aR=iMQ@imYpp$K~dL!ETH1CxMAaOtnFS
z6UC9QJs7yLaU3=y`-CZXN&=HN#m6@!2OIXMCEpIbt;6+VUL8b_nKS0|rWJqt+1urT
zl;=D>dvi|M&(oEMPR{;*L0UbAG6fSG-ORz2MQ_*`kn9KG&h62gU^{=9tMV4jpkJ*
zp)R97cBbgV*d-NuVIBy$E|8&kg3`iu6H$u^)Jfb`Fjp34?BB*xA^>tz*x{U2~qI|
z!i!TU4MX2>*b$#b?1lrN0~j*cL*uz~ZV?nVu`LuN^6eO(p6_DEJU|HXFnjU4oQvw;
z`~DhODGV};9%p*dQB^p2?1@exnlnEq_T(3RO9HKgPbJUw`96Ao{44180DmN%Bxc>`
z1ZrvQP&}Gv$I7^L;*IZpe-8X0Pzm_?s7NBj1#sHNIbW58b@w-h)>=CAex7P_ck~%IMD90b3H%N
z74?IsfDbWVAW!U`qpA6t2$nsQEra*+af&u_sM0Qf+}VU@4Y%go&QTKmI+3Slo1
z1LljG7&ejqD;=t5zXiByUiTbZ6XIc;RT1ZPkq`2|dLfpY^;~;}+_!_GDf@MCR~!!W
z+-&s);*VJu^LH!GQ}l=sE}PGy6^UeL*6Rn}4(m%v3J3_TM#!E%tk4r)T!~omTo8It
z?b0rAS+BRO(-$aF-tIDB1=wzON{y>-Tkx|hWtFreqq1!~|59@`JMHH_46U#8}`~cT
z$e*?hSYrAnbvwHubxt~+<`+_NH?&0;dWzzniYBjv60I5OVu=t-x?P4palN_CSUi4q
z7W%vOYU%WbZL0HbExKCb^w%02-LCfVcX??1GdHQLL9Hh$o-WKTT<6xGezcGMYrY
zdrjNrw_g;Ri9q796I?nDf3xM71$|5N3;qMqlJLKHM;9r4y)23ML{;4DwISq{UFnZP
zhik?N&4X>NDqI^#`)B)r__fO;HcC=w67jSkv+HM<{I7C^ZhxHb
zQtx+Nl4kyAJgd-)mG=_wpGZ54je;`vBLUH!Ps%b~49>3gMnr<0;~xZj)FZ9LG3?_z-WW?3wmwh->23G6p-Ne#f
zxinBaG(@=YCaFaqWXA@uQ!DKYj{5M52n2|MKQ)IrgzAB~(Fk2qFg$jxWr~t{Qp8eo
z-)hRDmD9Jt+Gy5F^~_*yhHf$X(D>nmoNvVq9o#*M!WyU6x)r((4p=p>WW+c
zQEwJIM+-3TRHja&5TR(bcx%YxoHx$_V4wcA9jVKuMBPw0@k-_moSKBa@dfBd#zqE!
z!G(4nIMJKq*{>HSDDwkz*~E3Wy0AgYU-zBJ%PZj8dPQHCLc`{-ZFN?^oYvPNpK|0P
zLVJv>NU9|A6;7}1k_B8?`dXg145y=f!}YbvcyX&ARH__U=J47x3O+*mEX
zKN(xZvOn6NPR23S-dVUqimRTZe7-Mx;d$PAK-F{PL?Olan;|U>q9OQG63x4arMKQe
zLlq|BlJc6ID*jJ=t<)Uvw^!gQaL?vYF;Qo-p-bh|oBTRE!`?KV6
zGvXKPiu!|=`h%6NSwD)OQ@D|5Bx_Md#H8&T-evL!BROk(!R4YxgSlr%ey7{Gg(gE8
zu@|cEOsiMc!Y@pp`6SMXC?futjAtYdJL(;b-Q{bo8nM1PYU`Iwn0++6SxL{N0Ermv
za3t-`>s~9=*rq%Y!?cOYEs1ORil49$RbN%OK-gM%{MtHa$8U|;qT%H}{@-he&ybQo
zIZ!MfmD}B_<0>U|E*@d56uaYj`SL8w4>O|h-&8*IHfYSkW6*LJ+QjmBY$d}51V?*~
zd#uh(g<;Tai!g{{S@L=Y?(t8FVK_pb_k5BmXmcdl1(e=
zA9CuV9kG)COkCV6x$NQbI4(|iQ|a^2zDaJcK?fF}$zzz|?G>u>a3(7z*T;vP2jrcP
zA4Cwx5O=iDEfdWFS^~eSCO0?X=+$pi@MjjOOmzxyVS|p>s<>+qj|D!ic
zua~_Wo>X21=H;nTQMp>yr?l@ZlKX3`>BzQmaOFBT3DfqshtEy&^M%dvJE~k|V^`;I
zqm=SH(TCNnHO<(k`|~Km?eg6c7kec|g)(s$!vp0GgIFK79;*Xtu$evuLTAFhC!+s!i7(ut>Wd>GVQBP6NuKqyHT%kV`cDILAK~po;GxP_7zZtnh(ex5
zgNEOLdkSB;T>geifTU71n3Yn>kAG|mWQy-n=f2L)3b{}h7703?x7e`q^nJRsKk!jL
zI)Pg9$#rj)Jewrbvro@H5t!OHv_1e;xJ`t7n|gI97k6>ACBB$|zww2rpuNAyv@Lp%
zcwlqNl81zCXz@$t1S7F6J=Z7YqsfBy=X#UQX_K1r@}Jk!;OoSv-`OMGPiDL<{T(R|K+C8?J
z=48p7(M{5AiCWeE<?mQylOOM0uXL*45kSU?`kde&2{=gBoDo|o5R7}xA(d~^^
z`OtNnFJc*|ER%JbO?dI`+@MV92S!!?0)>c}&~FcQ_DjZ0*mnYhD0+)FpY=O6smdkt
zy`}DxmlU@y(0S%4r>r?IMxd~B$d2FH@6@6~W|Lre{8LdrGuN*f%IK?LVysO{mgY5+
zQ7&Yk-;`4lqGX04SUkE4vfKEQ@}Xy+Eb1a#uQw@nz&an}vsg0*a
zzCAC8%PLi3$$)Qkj9Cwu{prNQ9#d#J!NK_+-Tb1!66k5{qh1rIVgF!3vs0cce4$jsLjX?Y9$To<
zs~`6;2~|Oa-dfAVvu}6c?dDM>-u570(m&A$k+X0l_XR>7`Z)tHp~JSJe}Nb%C47sFh>UfX=4IfX(sKLSc5_bsaQ
z$yM>#m+!AN!|NYBbW`F2=4vk+8YmXHC0`%(yM!rAyrvaGabUmF@PB4gENX!oJ*8g1
zP!hseOCrYJrH{MoRT1)2Sn=oLJBO&BxC;ax4#t`{Za5v1DW2fB=YqoPO6CmKdCW4=`Cyk?1bG}XB<|G0t5uS92v#i-S%)@nW@
ziOj{DmL#U*VInyc^G~{L_ZQu6!~C>vy*tBtDYG*5nU^V3hFRFjjv(*uNg~C>v$xPn
z!FF7x_0-vsH`P<30%&hPz-g@UDr^sxiq&0})!tOaC(0F@IHV1IaL?q`>LcfEu$b&<9d><_+=wQQ
z8BE|-Xw_6n8&pa1lRcj=;}K8UdxJld;5XpGl+wALL%_;z@T9TFNB6c@^Udg4w+coOyr!qfz3^;)PfF`zmW&uWEZei|WCiUz!rqESI0xF~<*owiJW9xwqmR
z2hF3EBxkw88!}OQ0h0NvK2e;rzoWLczpl=R@`<#%>s^|kihYP~V(@t#sTWSeJ#E^p
z888GEEPKC5tfUr@&&07Kca$ghSweDLZ$_QhTlnoa^`DBc)}sYGwMa8cW3YbfU|zg{L0+d_uF
zyIFdRDJPZTs(!edex-`yc0oaRxSt-5AQqVrNll(EmZI3iWO~yC`!|u*wpq?vjbFb@
zK5XcG&g+q>XgTOfOBQ;&_^>iIU?`g2MB)#(jlbTDs@XouT9@XBC(mciQDxIk6C(n?
z0>AT~qn(Fg;`dTH&&mNupavMH6{rN9j6!+BkAv`D*}c=%-RLehaxE`E!=LZP!W(XW
zCxf9s_-1Vj1ws++b~?m(jPKG)zg~rB
zezSciw>HMG8PCi)f?872HaUAXZYO+}N3em!D;SI%$*4tUA3uz*2*l%~AG|J8htjz8Li3ee>oq8*6Wf
z6)oQm_`?&Ujn@k_YO!-%-Wv>zV(=x~g$cl7d%_xxcwL-pecRXJIgP*_by~)fw_GQL
zUM`VGcG=y~o7EUv=8G@ugsZEY6V(!LOJL35A9JdG^T5RySJ|r+c{AlRnWz@h?7}I2
zzt#j*NrTgu8yamTfP>#Oiw|9chWUmHOF)eMVmm@-tZ=<0>5)lqbkAL{fF$nSu6fkcjZ-gG{
zO>Ko+ERi{;8kQ3AMT_Gj0Wro$isJHKHiNRU#LW>+H$SCJv+$c{LHIJS0RN}MjHpjm
z6SRspNzAEFck03#13A<|B$Kq>s4zBnk8_d90KHNN<&HV=;;;{&41-j;7QQMJlQ>Y&
zJcW|G2r`t}6TNc%Qkc!gMc7<#T3*W2qP^*kCz~UT>VhLW)};F=VR|k0Pn#o}U1l&8
zfbigKcAERvv39>tkvNp2nhfk5e~&jf(5qR8Z=$`ORkk5csvHVG11gUG%XpwDcFXW3BJje8`)-*)PoX3X<1ab
zvrtE{w|HjIYa2Zwt2I5MQYU)B*>8n0ki|0j2=2`xB0V(ifnR4WoC3Ecthf*9t?!qe
z1E(VFJFpE5praccJ93z-)+KX%y~ewL@HQLU*0xvA!>-&lHg#-eE(8FI&6#mV$(
zeE(8+TT->c?)U(jwM4bTAOV9yK6ogUytpdl?54+5{b&HtXw`-zSZ^Gj>v4)3iJqvq
zYUqrJsv~qRE28Q;_B+
zD%Z2vB@BfBq&H)u
zv$9wPyS+5x_$F-X;QndjsRMESuZHSCw&9WkGsCrqA_q0>%40xq#0!L^Xeifg39qLP
z^w&V)vZ;2^?b%lSBl+1zZo56rfiIjB$yB;|uNjzBgIkvHb+NYiU%JxM7%WT?p-m$!
zIOJmmro)qmzmG53ASJWqJ@wHDGcxlsxp|W2%{gjglP#Xzy&m-)6X6;2ks{6GN0$Sq
zgjjiMFKnX`*9Bta
z=TGc#l{3hbkEwA+obzO6qp{)k*|RngXnHLwlMtXJ#E&Kas|pCi6uFrDssG|PEZEk
z055Pwlp)c~28|2PO6cg9l{flOQqbIWmJ4d&Fhe2Dlmk&Oha?1!UT{Oj(jQPd61!D?M$)d3&LKCOb=z7d
zJHPq9u(rL%yWyvobd4+TC<{p~p+B=#@*q08`<1#u<-$)eOWKkO$TcR}3T~%!^5u_}
zGE%&J%pR)GT0P0^cG;lj+0X()v^fxRHrN8j)jPpDE>hKPYHlszQ&>^!#LT5PMm&2$
zB!$vEq40ZF=RLcG70uQ-aNN#w?%T{<5$iBr+MS56(ydMlAuXJ9tl@vq8sjcGfV0Et
z38!78qF>xYqfRCGfnd6n26sS3l}#;NB1@wqFP<)fA)Gd}xk0{8z4Vv3bhRtVuty`K(${4a=zo>EYRoVH=ZG8A8pfgmwj9%(+c>dUEHSbg55VnokWPQm{
z!++|*i&NGCR%k8V74q|w{`%BIYaU*HR|gwsw{bAD=eGJRe){a3gOx2y=+9uxIfw_W
zx7xnPg_qd5RCGRGL_W=2JefT7l-LFG)^Douk?Oe6N$J^)6N@)9Yt!^MjgrD~CT!x~
zA|^XAOjGJD)#^dx4#QB%EMqLeOH~7d84KBlrm9fd;}t?@#R6mUW3{oJ|G{}!Qkv$3
za0$*%0TERiR_+7*Q6n!on5CpQ<4!U)8iJVneBzxaVdwV=D^GVIlk
z+AB%gwT=cX&W9%XFw6U7@VE>J(1`v{iwY&tXxPRv3{5(M+ceK^w}C1NMIQl0ac?Ou
zp+gv-JH$@l8*}fy&ALh0$ZkR2y^nvcBZXZle52OU3W&qoCxOHaI-x#6EA6RD
zNl$$!B5+Rb6wrr4FIYCPP{Gbf9u{XSd4tu;h;dcy)uO2bOp4Ur|Hj$$@f@`d$k5V*
zQsS|Y={aWYvAIDjL3pO3m1}Keqh)@3nj&ZUA%+7e8-FrmCJuGrqWAO49FCO%;2td^
zG4w0x^kSM!8-MSM$l!zS6%T*NQm-HF!#YWmCf)F^ElmCeZaweHfj~$n|K)!?tW>%Bd@2DJsZv6p*XoQj(bO6!&~_a+*^sB
z3X*!V(1Qd<8Bt#ug|2DoEeB*A$myYp$a*+f;-3)K@~iA
zL_S&C1t~$y&Brp`T#fy_Q%qz-Edc9GrtKKf`{d>zx8ojYt@C{wd-e|(CCL90@h4ay
zl3^>@e4d8t@)ESad^kha|5ZPm0VzgS%nX{pug483g1pY_iOxVHO^Ibn;zE)N1kybb
zTm7YE5|@JsW^cjjVz!$hrst))oA05!}R6zjo&CX~}^ql^Gf
zv_~)UGG&L^BaJ=Y#qk_Sq#9;N1A}cc9gT6#i6M_0XucQC1GdSr_~NL&1G+KUVGi`F
z)+QZcu?$axqyNv=OKf~JH{PbyB#eI3$IqsCnMBxFY>S+o`>3w0&{?cax*6N0In5Ye
zsfW+#y1E`$NMX58mE}yHlwq|U%R;C@R@y_|VNl8G{B`l|meOR0M;`OmB%<~XoNX^D(UA+JIT;=Gj*5-VRCm1H;(AEr(J4=wW#a_|lnlb1E*n~)_
zMxK?vmpvRD1Vg{7snH#e!{bo4x%}RzM;WvM3BfZ{*#i6uV2_zdAWfXp6Q5L?L2oH_
z8EFOXJti%Pursk$b*MOW;$pak(xS7N_MWsfIpx@T8ZtqYQ4*=e>^yh(-(|H<^8
zV(Hvg2z8IT_>hTn#R%s2_=86I|bLwc@Rd;nw#T}O(
zVSV)o@167I1-puGh~G)0sUCIRLSbMgtyc@?^e3lHTn2HV*ccbrxB+L6jeNTh+1b2V
zOeu3b+CKI7!s+z_01t~PMQinM9|;Kr*2lH`!MpSd){^5Sp3`m!`S^&g9{TbJUWoM$o;)X{|EaXTZRE^=TDuv;Yx_KeV(9PQ0M1XwlA%~wR
zvj%#`GJlMv3WG&(@goNu&y*MNa39+8{cY7rD+yl@gcBwOQ2Qev%feyJ%l<+u`56LPXW
z`h7k_KN~k8YO^sLjz!z+OICvHt&sQAw4?FSKB^$(!D`QS_zWX2RmIk7Q%f8Z%s`$g
zpL&hoRs%K56xbM}B*rcBVpcNK-t5Uz@}n~L>|Dv2bA?3MSH4~E58#e_!T=Mn-F)F1
zIVd-~w$0dPzIp^d%7BlHIlWp#Fa=@qOkU9@W{d#k%0D98c7BT1v*IPR8ugG+f0^#%gx;xcm
zmKB6w+JDSFtFB0~T+n4k?!?TaXE--PZ^#23a97vcb%_nl@4m0N4^`;5OK69@4F~Fw
zUiWhPXwoxrqdyjy94*+R_CVe75Zk|Ap&9JY@e5Lh)P%}Vckza#F)+rE%;b?p5j-eK
z4`=FS9KqQBC{|e4Th|zQIfp+aUgSE5xh*w}E!f`(D7<#SuyT&_O
z)d30cFR66Bl~k|W#3Jvilt^7T`i%7;&lXNE1M}O)J;$qeTSr=y>g`7-8Ccv3BJBdF
zhI&d1IXK**%P%Az=1v@LQFCSr>Y|a{WBopE)aj?fZf>x@n$h;ETf+1p9J)6R={h}e
zO>o3{N&Z-0zWH@6x^~+W=klG!eRVaY_1gdGg)+y5N}Kh_!F
z;D!d;6dDU3DoR{U$X0ALHrkn;aV+P@x%?L7452MmuLiLDz@Mj?mFuTK8S0FTS=oEn
zqq@h78irJS>6y5*E;kwx5j}p{>-p#_%Zs7+WH(Sul#6~^+TBX}#YZL}W#jMd%*;w1
zJKh_6diE!?<|0o+UNefNb{*gPy~cKespuFBVhM5U0i=RnXRpUBss+uyK`-lFLo(VE
zBMs{EMK#v7-10ATA5n3Q`+FkXKI#y5<`{=21%{ba8b+C{gT8T(XTgB005kAsEjgE?
zh~iYo-8J^vUYe&OAY#7_+qP+|Y17Rxq^E*n>Nq$J7##-1=&TJww)^$!wpw*x0-$;!w0RsaNgVQB(hZ)4Spw1%!{x-M1X2-TnGDw48L&AcMuPZiu2vj+8^;pkQF=T`OE9?pFuMx;1Ok;vzt
z-a5S(SzFF4v?*qf@ScI)X1SZm6R3PK{gMJ5bJJRUR+D`aG+tGnRfW))Z;$snU;BX#~o2KfTVU0;dbMsnRv-biHyN
zFNw}4uahO56zTo~9j{`i3t3$*Q;!97mt>|tM!71#je2(JkxX(-DcxXDVW_)!gF_#%3lkXVFtKCopjHbTKDnwNrx_;SI@%~
zhrJgw7SrK)QA5>duz@oa_ZJEOv6V-0+!PT)ZCiQ*%RQ3{V`t8Rl>&;ZcGexKwC|aq
z7(4+Y9M}$BWy>3Qcr3yp_3$l_ui~Q^EHCTnblIywr8|yn$Uc0Zw56LsH;D;(`0^0r
z8Oq_LGl8A(rOe&?5RtB^C8GG5+wrDCD2E55L5a!n+uQ4EpqG7$i4;d7%zZjh2n(fw
zZ;>hh*0=;5P(=rKmRShZO4TpRpQH40y9Ji4h-wuf6W!#AobGt^{g5m@EE|@eCd-0b3Y}s*+YWnuu4mJ8=MKr%4O`@f
zjP)ioU3UF3sCJSAv_B;r7XvZCi;Zl}$7wT&!3uyBehDX9Gqa&&iIwG*tcJ|;SvgYx
z8<^>AxQv0jc9k7K%&5`Q!LL2gjA)VC3fSNbS-S%hCiLDVfb5hf5oI?f`!MdU%OH`X
zc0ADO&=0{uC3~z}(z4{uQH#fmMX;0fhqQlCkH>*i0?AW%i-m=6xR>=bL<9$9zRx*;
zyw4p4M*0Lb!^_J^@{P&Rk8oHd4cbn`WMsilIrQS2ondNbLnCCP{}KhD6a7N%52T#N
z&S#z$?jFdUlQul!>PZiOnfGNDusDp27
z-|)Pj&XXIo?CR=P(?NsVR4McL9`gDj^)?60wy~3;{x;CIE$41Xghk%DNn7MGbt^|=
zTWKkFj#0ZzMe1N166&5YY{WA^tH_8MqOe?0`t{dxxM@5`z%yN(BSdCv6t`9@=@;>Iaax9I79_Vv|Z7|0$*AJOMQNqO3mW4LDydM?St
z1~j=Ak)!V-C>W7l-$JF%uNI%%YxEZ`h_eVC-C
z=hTgzki}Wd!eR`yr9I1JAPb~l^V>R9s&E0Fl&mEKO>|(}_Whl_18;@1P(nx&6x`Hn
z0~_z+nhq7gbCdmoZZdxKvH&;!Q)t?Af^VZrWqU%I@<>vho#zO9Ubefbm}OCvI(=4N
z?&QH(xjDJ=%L6?oFhGt;OWaa&JT`K4;d!Z&Y1{xgIB6=zlk$?SDP13cG+8SVM8(58|pVJHa{{PV7W>j?5Eo*&Y>2s)fmb=7qR>xwEq
z<&5Fet}Ae-<*n6JkeO*;pR=Ko*oYtUS3ywqazsb9
zc`8bP-13UNIP~RXUvUVzVYcFC+5gUN!Qf)B3ZgGJY5lcvBoBIe7!xC%|J|+Q#E~aT
zgfG@(e~lq-^8oxPNiVG1A&Z?OM|vxBreJ%LD|h^mnZl7h6z}ik=EEzHE9r`UDRYuf
zp|3%WK1{iKFVyUk#!DIzND+}IbCE!Ti&=;0CFqkC3UxD!Atf6Ou#>8(zd=tTCM$jC
zSL@S5qjh%IyS^478Fx7FK*~3j^7HJ?$H)#Nm`I`u6=lR%j&&+rAWuu?l=9+paS__4
zgn9VvX~Elm5AJXgz;9$P)6
z6OmroLrqR&7g#bZD7n^naD;>y@wTL&q>O@M9R9LSkHWYZD+pZGLG(uM2rNR+BTH!|
zpaykr=S57hs3RhBvDX5T^fr}Ev9+W(W1uH3T+1srn`RL^k4TJc0;^^rH9|?xiHUew
zTT-|MG2QZ^&xe5{I4_?nCvAWXTlsJ2qFs7lTja2m^4
zjk{k$s+8ML)sAUG)6N)jkHrp6cvr)u3aE;i=oJ%dNc4n1I
zmA-q;d>Q6+VR*7cGF946nZ8@4
zInuEytZn7Y`>s~(TmCZb*?bSzMvW8?TQoFJS$K
zAfe^03_8#=%By&h*x0-|NqJ`|ZE%|{Vv%{k>pZFO?KiMzB>Gi1rwi{K|Kt$Xvs7m!
z8Ag-|6YNohd$zjGu(827oDZ&@&^A0VOyA|(RO_at4`@K9W>+t8v${)*xK1tFY9Wfn?#o`3J*l($w-_3b
zvkmCpZ9JpWkorJi$&HHy?EZ;4))0+LA+|tGaV7i+(%>ClI^qH&h>1Ynlp2ooWmBu
zoVw}X#JX9(4#c{bbWCSzEoz@i<5al}wH(ke?n4+@Hu95a?acJ
zJ4qmf1X;odl7J@&hY?U8D=ccqz-@dC$F)Tao`U0SGc2Di4tHQaK_`uyshnfCLY7z(llz
z!jY1o!O;!eIe;(j6ZX53)AI&9g4huQ7@H|;sv9>R?9|i#N{$^eJs%Yuz2zGKe(CU1
z$w{v^Qd_{=Zr4_U57J0+^9j2hHyJzK7_mdu=MEiXfyROKHG?e~2
zMZr@)C*qU};ljf|PP=ClFCmrh3tQHx1{(#>Y#Tib;Sm%_EM%7-j|k>N!XghAKI5A9
z^6riZuF=TIom@EO1`q`Yr4TDpF|2%YHD%yTw+2G>4|bek8yLO3h?y731|Ms!##HzO
z$8jia8%LUOudh_O`gO8VUmuIX#9kNmT~no);iLjNPOVP@H4Ih+TdoF){+v4vBJNd+
z+1VGeLOEj$Qs}wvQY}g?3R4-wx_c^uA1e;2*p?
zcaILYpGIGOKr)To+!i{^83LpTTftxp&W-}0`zWi
ztAAY$jEpUskUEPpG?M)Lr>7T62X{R4dry^bd3AMp*nve5nZnJ@n5>ab+!5Itg-mnY
z4Vj{eW3JYuS97Zog{O_fjeX;5wEG-{$WdAtk|+=nB=;Q1r3gj$yzllyP&hyk0ul=E
z=d3nMDB#$p>Er#gG5_}C_u{JR>c7QD;vorfcspICMCQiW^=s#*pq@KK>Y+-7L&e>7
zYF+PD=k01ISii(}_>BLxbH7v35-zh8PFjpzCdc1S^ZkAE(|IFW+ZqPtN%pOFZPoh7
z`{$G+%dB8rgs+bK^9wV#l}BbzG0La*L-5P8=K8yqg#Xz{ARH?s)>&c*$KM$4rGWq=_
zz^(xoyHG#j$$QNIyBx@yjI+PThwZcUhJ_P;#zKOg
zqoLKMqae;}?;{2*XI_h0=z{&7!(e|@P_Z7MGI
zf3I%c_Q&x&eH`#UJiqFHl|gqEYNV1W{h0YYLv-yGmWftCvauPsvniDK$2ekQPyhYg
z`yRdmeda$ryY2hv4s`5-^WgS=eWgzS#%a$-`0~~jZx8-Ws@*N%HUHiEmo2Qmk8F5O
z5bYO3v*|k2>M6wSrT9Z2G3&|OA6pPWSK+E$ZF`>jp6{&yKi2n6?d@WH-q6UZduhUa
z&sX;A%FqRZt%RQc51oxT$#eOpy*q`to3|ImSKn>;{P$CM;oiMiKTJm3&b6XYKEKcF
zS76<4+C^@|jJXvMc;4qBMxNjGZpPi~#FLlB?F;PJ
zk~&Y%)k43NBnE!9dY?m*-nmbq{)VXj#Yo>->m3E(o-bG6Wre_yUyu0Ez{Fm^od3j^
z-q;8}mUlVX%O`G+IuXHD>e5F=px*P@PH+8U|DWe7SxK9>Vo#S*>x1~SRsFo*KQU}I3-)MU*Pp@}5`bTzR^TyWr_xAp8vk>#H5EmaM
zPvOcp3mI6PJ24zby+SmDG3k0F-^O~wew>q0KRTc3NBS{8LOyUX_@;U!g#Zcesi1U&
zqxyz@x~59p#C8oIr1<>#Bl(B7Y~F8lgwrfNP^eC`257woF$n9KH#oCT7yE_{DG$X_
zR_*&|V!!AJ0oud($bH6aBb2@z)*1NU>w}}z86~m~p}8$XarO;I%O(yfDp<=VOO#mp
z2lrGx^mlZL;Ww!~;~K$?GLxj|_dc?}L#4iZp@3!RoW~U0
zpF4^hLBfu4``gzoh_CzbuR)UUeJ20AB7ybLls7}9!2=}fkA{en1EhNrl0zDjpjM=N
zSENB#qnN_g!I#8ec_9zqb<#7Xp`fN*he
zaq-Hk*f?l4>w4}fJsh-t;J|$~LPHUirQa2A+vocs=LUu@4XoHu&PBn_#lfkI_tBIs
zY@2q0vYS$YbC|fv7!sE;Q1H>eJUA0X1zD@QDA_HMezhyQXxlJS$mOz9&~wt$XAoe}
zM!?94syI05G{{h-j)JFCG63J`;-|OdB&h>Q(x|xHY3M95-L#IAwOZfG=`7`T>{q-Q
zi1F$^dboZTotJFC89|?4{Dg%V1oMwe=A|IR#z9w&L^4XE1P?AoLYk0QIWeOolam6hRR|5cl2wv3RMInA
z=$ZVCjXn!U_6>6#D48xCjFd!-mflB7U?T6=lD>19whq}JC6*0yz^^IsBjOSh8)sTk
zJe>%&00L$LL&XAk2?#&AJMsSLO!0nk?>FC{l0PU9_YCX$2lCyZC+R2I%q>D!;=FXkU2_`iek*ZFt(#HZr|
z&Ea?Y1Mlw)H|lTw1Mg@08}@g5`>_4rwO{x@9Gth`yWauR0&n>qKYKR<_dkMs-*5TX
z(tQZ;{=OIeCuhA-{&I#djAP*}$9Pj>j6A8OOmWRICdC=Kb8i-5#$yezWBjB1hG)!q
zyBMJj~CeM^yvnF>30%HnHp0Q)DF&u;Wf6v>x1x;S!
z4M#G1COuGXnUi9_g*CmzC)nS72)bpEYOkT2RY!XF*~Ye9Bh@t_jB{uD20bvY>B#My
zwqkC~<*?8C7IjR$tWXJteSJw34w7Ze9P&oxn{4P=JmE)89Vy~J-Z~WK8hv=v-*e>m
zAvA&0Q9Oy5|4DW&nKM0^bE!X4?$90bSV>J9?MY=`sWT@W=4;b-xtQq#-%f+X6n|^}
z_zu#SFiqXj6E=U=l*Lel@)XyALGpo|>Pw|RW_nB5#2_wO8>KO*?$jAoe@acdcK5Hr
z%wITp7_QWS2{?8c%r*}l}AKa7ATH{a7
zbn!PRzoa>ra4xt{+OspR*lFh+F>;>y8!^AcM{>QntWKK)H<~kBZih(y(+BFawGM14
zbq}7~{ift9x8OO~WOqefFY)zuN{{Ry_cvX7Z-`f>A4ZnZr-$&ctl?RtvL~__*6K`_
zspDeV)c_ag7_KGJ><=-n4f4xG<05iRv%1W1%9kwroXPR*`jc#@8m>WFMhfEJ0vpFp
zQCyR>?9nsG&Q+RLa>`IN$fV{$-e5;VBq3|)_~IVELr2i@`gf2AP>}K^`-(#-bRIEx
zBhWN*8uvp|h`f|Fq(n*JKOOrBP*=&5IvVkiSIa>^x%>VMHS>_)6%Bu(_RPV5dK&Oi
zJ{^fZVBSma{D?MCKdBDVgR
zdG#Lp+job6{#%;(FhAtE$-$qph5+g(KJ*#o;HR>|kNi^r<2PaoU5!5ERr=6hbHiTZ
z8h@nU^2QnHYg^CK?tk{yq1+4iR()=e9x4Xq2&WIWV{>VE0`Ya$L=6T#WH4`CPDD#%@+x8Mkgv}d3%=tlUK3A?}$
z$?+83heT0~kEoE3t}wof6QL*=7hRFeP+qV+hjl^chF~iQc&s=Ef3uG|#}HNdM|21+
z@{+=pgmOnkt6t;%|g9cLN72ked4hVlY%NuH#y62(A?Y%k(gCCHd>i3?gCT6eO3s$35%ysl5&<(K?1Tpm
zt`~m-h{^^xeAAY6#Oh4Q;{L#BBG{I8*gCY4%*$C|jH8Bj>~QYjTd<=nIv4cby$XF4
zf-VT1BZgez@=1sign5H;L*oUCJ>D6)YxnK^}%u#XmOEg^+DHC4<5aW4Tc_a-N2{!#qB+
zI?Ln;T+p~+-2o``FyT!>KodkMl#dpNmOYRQ`l#_Jfiz=&3fWhlG12B#iV=j8%7fMh
zs1D>CLcfQ3n6L*qBjuP+aoD`4#O}78xYONZ#SG3HT;Ic!S68C1mYt`M{p#;W`9dEY
zy*r3DOc#_cG+l5y&o0uZn}I$@TD)DJRC>|||6wW87g)SyTC`^au`Xy;z-yU9&DTfh
zM)J~n!lC?Y8>Eh48`dVMU1+=DW&zQHvI%|@_9EzA=)2(e@BW0y4TcwH#=Lk7d98Sk
z>4M80_&YCz&opYla-C&C^Bi{tC^wv5Fm~Zr1(a2oR)Mqv%?dy_tWHq9&{~0K1z0zn
zyAWqVwgTp?8{GRpXZVYAl;q7J-UqsuWhxjCn)VM=-XEkdF%jd094J%o5Do~p8i;f}
zY=o14gmNGj#80x@UW~~F#1_n~;M8GK1(ga^tZ>wi`+Z3r=_NiQQv%ZOg(IP_1|^a)
zoNq9Wb=2|K2<}J^{UO$on>8Wb&?E+IpKJ@%9w-Z{-Ec3s~p0hjStryiV9r=k7>;C@Zk7g6RrkG&VRcSeJqwC|w7M+I$oKFyFQ#
zdx5fpBV0?>We|Cnqd>nn@!VKh$D$)a-kXuqgYQr))@kr*L_8oK=0kG9XM;~kY=N(Z
z*QwWkHAMG5IJP)+s*5rNh6x!LIx6sFHNv`)wLojZ)dpTVoC7RKTA-@Lw>>OaTEI6W
zj+_i13%c(f3u^Dug`EpJ706oPvVd&E-2{0Gbr#wS
zkNPF9;Qv<-t;LbWv@^WuU650a3LKOO*f6moI{d7_o@Loh6G=`@WK0~R0{hfx4$
z12tn5#Y6m+=w6G6~(2KKajnIRt4N?>NuL;3diNE}h5H3K<
zi+Z^238!xBU#JjxEha>8BO-SQ+D_nMPS8*K5!_J~#{Z-vb%ExFn-x~vL-cqU^a$;v
z_W(7*sT72*j83y@!acBW8bJ}}J&2&t+Sd)zDrARzboiN0JNF0gf+maj&Vc*S5B`Wa
zkFV9_;idig5+M2eit@#yaOXP0n|A$ghcsYu>5qb>i^vZ1r9bou^vdo6(FIcqx#&;H
z3X2UN8z5%nDG@6BA8%c-uz*bgHWk)XU{4_l5x{uSUG(RLpAOdsf_ct|gn1Un%?Cph
zN-m^QU{V1|g+7oArVB1x-Z@F`7dqKXvVS)T4S3~w=gIe3qtL%A`zx`2VnIVr8DA@67M2IMl
z8|)_nQJ)*y8@KxrrGX+;f)m^uJ3J>4n-F&xr;xk?t1A#@1B55mj%HnrDF1HKZKW>Q
z${kNJHwCVX?yka|tlNon+|R!x))G(^RAt*aVHQL;!~)Dt6YNI>FpR`|a-T#pLj2P#
zw1*yyj}**L2bgUcEtroG`Wh)1A1Sbp6p}{NgXW_F^b!Jm^`-OZuhkP=EU~qsunuL5NfpZYPN%3IS
zh}`^MGz0pEfBR?OZ3*4BObZME{1C2?ibaj-xXp(QyaaioGe^->BP%{&Z)9%pT(RFQ
z3o=B2ywK6Qs}1J}0R&ya4y4V&kpc2`Gi}~g5M7~7)e4xd*k+?}PR3tRfg+_csfmZ3
zDpdH=>4#e=w)Z!S4f%3$$a`~X6?UlDNM!j@LjXD{UUvLu!9LVJs0Q#9f;L3zAOS2l
z=-+%;WZOz_%cS_HMWe3{?g;2c4K#psX(r58?|b-=j}-NZW6b+Q$~@fYG(ZJ62usnIFPGBUkg`cY+`5)V&`xi%O#4y!hZZ@ssVf-egq
zvxz_m1B9g%fVaj}GBNyFGztTO$Trk@3F;q9s(Fc(ml#w5E(o@XV~=~3W6aMa%xjF`
z;!y*eY>48D!Lve`71VR$6);0;oNd@G;uGcjCIR@~7~wi2eW3Q_Hpu&Pp*MH3O{{qK
zk?6r;Jf=5QCJ(R~2}lel2WlH^R_LjaCfs`zR?iv{yo(5;ip>OoMNe`LVOW8eh{8To
z73ZgV!>EsG5Q!dDKp*uUBss(=4a&jMdzHYpa7S`MeWZGn0U%PHd{`zhst{Qm-fg71
zbiw*?)snGU=3WcShU@eidL1jy!&@OxjxEsX{gZ4MZp4~bh?KOxOkR1}9cjZH7I(uz(+THbg8
zaNb1XZxQLfFnQZUzAHr0A3XkM&1iAOV{yjwQTo}KoI|>MCHVzbhRi02jb>Ymw(=
zS_%%^PccSJ2R8j{lEwhlZCawtWQ@dt@5h53AYR~;|5-`GFIdVi7|Q>K5+m*t;Owuk
zk3t|5;_!_C?K?RsEGKl{eh8ZL{Lkg?Rj8yg0jci}VVh-}_5Y0l
z6Tuf;X|DYD@2-&buam3zHhB)?qV`Xb=dudD^7v>3tMCXhy|3PApi{2Fo@xy$;xlfht@VwDv{=)qc@ACHtRHQj!
zbAslD&iwbKfczXPexmsgej@&!eP!$O@K}j%NVY;mTHsG!8J**LR$Tn(--v+Z=
zWLH->3I>*}WNU!&A*}n*n`HYqoH8Da-kC5}X-OwWNWJe4@r4ZmiYx1ItYdvaVHXxd
zJ2|{T)f18@E4<;CC!}^tcmqn&hz!P7QFsHKmjt|dng{h3S|x0|JN2|cM7rSDf~Zc}
zNduWgw$%GU`VjpnUl%NOxIXY~fLRx@7dk7B)G%c>C=W(e$f?j{A^3u@MLbz~c7;CM
zC&=}%wT@??rzrX`ZsI6n@+jkF^E%9eO_Y|%0IOrVKn(VwjkJzttPoDDC#@H`+v6U_
zA_ilPIgb;*zv#cwJ`*h9&f8M!s&>pT%hvm~p_e+?ED!Mh8fr>V|E8Ox62vZrXHxn$
z)7UR~FV@z{6yCWV?*ZSqm}10XNjZA!a1Hrr#D#<@zX2^FbUm;yl|xCx@*YM7hPKEC
z@&S6O0r=u+$#of1r;dtK)IO8`@rKt?PHuq?i@!{gX{5=#S~t+pYC;_*Wxru%aNg6Q
z)O8N@eo3xT2Gk0I4|}N&o-z_*TZwCh)5sTRY+QHI@a%}6D94ivM2WwMpU8q;z86b$
zo=j0p?uun^i-Y$cO?BG|@Io0|bFDA{wp~Yg*|!m52xCY~{w52+B!|%!7r0okvI3?8
zmUr_r-IIfQWp5E
z1X@6JAyoxd6#y+Tx|ii`5_#_UNhg9G2tUQ?G!(0^$@t+KQhziS-Q3X&J7&RPG#NtoPV?1IMy@P3<;
zVeEtY(PkSIHcYEP`gc>BB@dj>=>@cNY8N=GaPERD1qv6?t_uwN*1w}}ZqW|e4&icv
zJ43n}D()5|7^Cp)tio{-9?)`DA^VmKl$3bbaIt~RguMKZGV3*vjq$M&Zyw##pGFwd
zYI-PQe(=c7g}fHDtn|e1(wLlg4~0+)z^q8rA>=~87ECOpz@VwaltE-m1*vi@6|h)y
ziKh-!1X&6)7icZmSt*3C&7BWm+Y_z%b3#*kvx=+{wNQ!D#S3`ShxLJLL)3(-3)zsI
zY)8^Zh1$>qpBMfIb;m0s=_84+&p{ffhj7lcCAU)u;~INUZprTgKfn|J5IMo4#1Xor
z>qN4Q)U==H!y(l<$W^ItH;-)zv(b_#_f%L(Ybv50MGe6vjGa
zI)pl;I>au>ofGO%xFFjh+97vAwnMfPYB8?03xwf}__>%A$5P4R@5>r(H)|Sk6NNF9dAt$$x)|e}se^%d;v@wqy
z6%B>l^;fp2qf`W~Bh>VlG01NyN=t~`KZN5eeVKq*
zUsOw$s<^Ra0~3Q$L&7ByxFOuX+tS&3f7kobpDwkEcZ15xds~6mx|+C4gnZ~ikDGBz
z!_JA(^~3?#BQKkjz`gX8?yYo+KS<&VQWQ#;qWLZxJ$Ruawq@FnCBgy>WmZd3lc!8p
z_9Ot(D?b(QH6CDDPBuZ9)u$tLu&9LysOR6xfYmK#Nueu&u0fvE6ZI2+3;CGSm0Fp-p(8Yz#?Uf3
z8|R6f(I6Q_@n_#FyCQDdEjunMI8As|OdE$A;72$iK@%a;rsR4k4a1etZ=#0RG0w>u
z-@ga{910%_(Jv-qghgLLIZRPDT_RmrQ&uZgj4}YRg+{t2?sr9j
zrJEixWpx8bC{KSoO`E`}mQ#pbECeU|DSQ^Z&L1&q9fd8kzX1
zuKS%GJrkb6@|m)fgYKC-!$>fqi5U1lGQEhsO@h2wk0XmIJY5MBBmU
zMNk}yBIbw9rC(QoR3&3n^&u@-8nLut7$U5J)J_cpm9eQl6y0=xpV}=A`HdirD2yH-_Hv{M&tD{otvj{{rdd^{r>%cabGYw0V$y9DNR3m
zzfwO-zf(WF_3+PId31TqX|!pKX>f{am+F5w?2(yuR`_dsH9Rpm^5GSFPc(PF2L2Ria(4kSI
zs(2xr^WPD$(Wxk`5mZHj${fdm(RhuHFhi5yC&?$NCdno#Rms;o@fNy6$15aC!$l54
zhu|2BWo6)+SW0d9jo5Zugmg?S84I+0a78+R1B$pLjS0OZVe!HvK+ON}1+jmoW4L3g
z(Ak|=pTi|xyPLFzaRX(*f(x1TMyXtF`;LOA0lDmd=@9uPh`;dCJhwO82H@4KgKp{8xpp(b%m
zJ8f8LxM^<+^;9pg^;ElFTIilgI!Azv1nzs9m-b-XVQ}$K+E8N=cm&3{q%U+bR>RXh
zAV2$y!2gga{zar{x=d-TC~ObC!mcZuv40?;uRl?3U@fz}`Uqd%o2b@I01fpJA5*!f
z9Z|cl8BwPiV9(ll32h1E6z&Y}44x2<5Izg;A#^H~!KuF^CEG6aB9xe>D!!RUQ2K-A
zG9dKd(AZGjj7c7G+8gHJr)u{NW*aj4-7`3Rb|j=c#($Y5vr7nZhaP(7e>mo57TQ^x
zR+7TYZeQyFuexZDLGWexoKV8htWd^&hJL%#(L7Pn-vNnl
zGGZG=E6JXQG&`Y?NE8nLRlgki#X~AHB||2!C~@&=CaQz!o^`nbT)Qi>*OQ*_1e}PR
zy!wZwMBF!k9l@A5UwUI|p@|}Tb=sjD;~#nvRlamyMWI%siZF5!<6mbxiO%dYl=P_H
zb5CyApbKAnKI6l|2`{*d{kz1*!0CI0sb~h4vCrTkd?&YL8~sk*2wk6N??KzJ<{|3O
z=v!<}DLq^!rt5$qDkAs};FrmI4Cjhf;;x_Kl8-$Nwh2^fDVs{aedDvD6D&+7HW;91j!&R^-IUB|AzdFPA^tq841trYI=?!)V+%=HfeiX
z+ghB#O+$k_9x@DbAmVyNyZMgp4S&@+Z@
zo`x`kuvn~u>_?YpIgQfw*eq6QdVIPxjT}}99%oj`itBA{+2O&cBDfk=bjcz0IO~xg
z%d~DX96c3189gOE1-)do_P#!NRbixB=pq!-p3@=0?Gn{^(k>+63{xD~My9l%^1;&{dJFQi456{
zVU9kWDTGP9EZceksXh9N>>8Dw6NWr*LW`iqz2bL`NJS7JkKV
zam;>
zt0jyvA-4Oo5$0i1O!_;rzmHE=z%?e#gCFrMz^gfC1gYHcs-~HqO92;5t$E3azwBGs
z*H{c1T!DuX@fW%l%1$r1gs-c(J>c6u#Bwhx8wn@UgpeT5h67-7B9<(Y__ooAZP`rp
z4GRQyz+dx+HfEX=%qWkENL^4Ai3GtV=O_U<2unPBC-mm2l!zYt!G`1#nFsqTD`WDh
zp!zo^4;SIB8|8OE0?Mu=l7U3
zJIfCiB*BrOaMB?!Ed|0$Ao$K{n7?Y~Nbk7z7!qs|TM{aKJ`WMHs2O?;U*`%Q?j+OxNu^rWE4~_%a=Zq_!j;*gH78V`}hY5^X&kwUpxYX>EubLY`_Fr-Y^ONVq
zr#?U@m*>SP@d!Z>MgurMtWXVowhR9++57Z={dS^d?4#V9-t63={X0r4F6}2Q{jR17
zk*_(ukal^_{ZTvmJ3HKBDgIZpmsT~rY8-NufK5zm53`P=pxH^jZ-M@9eDMWTNDa$&
z=J%~<9S*{3!e{y}{mY7Gi%AGv?MH4~dno5DO0eGUQD!G_6&;JMYml}2jw5}u!o}d$
zA}-nbF6)6LO-huHL`T-cZr%^dmZNSSy^?RGxi_416hzh1aCpFz
zJhl2+y#v5zi!_sgp0FRDui(RnILEc?%|cTD!VfJ&
z7b|}D;mv~WZMKw(ROf*h!nlT6?2D67o=w-%Xm(;x(RnG4&%big92rIp*Vgeis?^8F
z+H-fNFXrkp9HV*Z1~%lj1X6UaSB|jnJ8Enck`8@v$t%XNbyR
z^<}=&0!sf&v-#`O-ByDiaC6VEuvr2z% |