提交 8e2597be 编写于 作者: L LiuYongFeng 提交者: GitHub

Merge branch 'gh-pages' into gh-pages

# Design Doc: Save Model
## Overview
The model is the output of the training process. There are two
ways from which user can obtain a model:
- Save model triggered by user code: user code asks PaddlePaddle to
save a model.
- Convert model from the checkpoint: model being converted from
pservers' periodic checkpoint. In this way, the user can cancel a
job at any time, and still have a relatively fresh model (we
checkpoint around every 5 minutes).
### Trainer Saving Model vs. Pservers Saving Model
Both trainers and pservers have access to the model. So the model can
be saved from a trainer or pservers. We need to decide where the model
is saved from.
#### Dense Update vs. Sparse Update
There are two types of model update methods: dense update and sparse
update (when the model parameter is configured to be sparse).
- Dense update
Every trainer has it's own full copy of the model. Every model
update will update the entire model.
- Sparse update
The training input is sparse, and the trainer does not have the
entire model. It will only download the sub-model necessary related
to the input. When updating the model, only the sub-model related to
the training input is updated.
#### Pservers Saving Model
The benefit of letting pservers save model is they have the entire
model all the time. However, since pservers are on different nodes, it
requires a merging process to merge model shards into the same
model. Thus requires the pservers to write models to a distributed
filesystem, making the checkpoint shards visible to the merge program.
#### Trainer Saving Model
The benefit of letting one trainer to save the model is it does not
require a distributed filesystem. And it's reusing the same save model
logic when training locally - except when doing sparse update, the
trainer needs to download the entire model during the saving process.
#### Conclusion
Given trainer saving model does not require a distributed filesystem,
and is an intuitive extension to trainer saving model when training
locally, we decide to let the trainer save the model when doing
distributed training.
### Convert Model from Checkpoint
TODO
## Timeline
We first implement trainer save the model. Converting the latest
snapshot to a model will be a TODO for future.
## Trainer Save Model
### Trainer Election
One trainer will be elected as the one to save the model. When using
etcd, trainer ID is a randomly generated UUID, we will utilize etcd to
elect one trainer. When not using etcd, unique trainer IDs will be
given by the administrator, the trainer whose ID is "0" is elected to
save the model.
### Model Save Path
Each trainer will be given the directory to save the model. The
elected trainer will save the model to
`given-directory/trainerID`. Since the trainer ID is unique, this
would prevent concurrent save to the same file when multiple trainers
are elected to save the model when split-brain problem happens.
### What Happens When Model Is Saving
It takes some time to save model, we need to define what will happen
when save model is taking place.
When doing dense update, the trainer uses the local model. Pservers
does not need to pause model update.
When doing sparse update. The trainer needs to download the entire
model while saving. To get the most accurate model, the model update
needs to be paused before the download starts and resumed after the
download finishes. Otherwise, the trainer gets a model that is
"polluted": some part of the model is old, some part of the model is
new.
It's unclear that the "polluted" model will be inferior due to the
stochastic nature of deep learning, and pausing the model update will
add more complexity to the system. Since supporting sparse update is a
TODO item. We defer the evaluation of pause the model update or not
during saving model to the future.
## Interaction between C++ and Python
Users employ API in Python to describe their own network, however, the network construction actually happens in C++. so Protobuf is introduced to send the message between Python and C++.
The Interaction between Python and C++ can be simplified as two steps:
1. C++ tells Python how many Ops there are, and what parameter do users need to offer to initialize a new Op. Python then builds API for each Op at compile time.
2. Users invoke APIs built by Python and provide necessary parameters. These parameters will be sent to C++ fo finish Op construction task.
### Message form C++ to Python
We define a Protobuf message class `OpProto` to hold message needed in the first step. What should an `OpProto` contain? This question is equivalent to “What message do we need to offer, to build a Python API which is legal and user oriented and can use to describe a whole Op.”
Following message are necessary:
1. Op's name, and its simple comment.
2. Input and output variable number; each variable's name, type, and comment.
3. Op's attributes; each attribute includes name, type, comment, **default value** and **value range**.
So `OpProto` can be defined as follows:
```proto
enum AttrType {
INT = 1;
FLOAT = 2;
STRING = 3;
INTS = 4;
FLOATS = 5;
STRINGS = 6;
};
message AttrValue {
AttrType type = 1;
optional int iv = 2;
optional float fv = 3;
optional string sv = 4;
repeated int ivs = 5;
repeated float fvs = 6;
repeated string svs = 7;
};
message AttrProto {
required string name = 1;
required string comment = 2;
required AttrType type = 3;
};
message VarProto {
required string name = 1;
required string comment = 2;
};
message OpProto {
repeated VarProto inputs = 1;
repeated VarProto outputs = 2;
repeated AttrProto attrs = 3;
required string type = 4;
required string comment = 5;
};
```
To generate Python code automatically:
```python
def create_python_ops_creatation_functions():
op_protos = paddle.framework.OpRegistry.get_all_op_proto()
for type_name in op_protos:
op_proto = op_protos[type_name]
def __impl__(**kwargs): # User must use key word args in Paddle API
inputs = [kwargs.get(ipt.name, "") for ipt in op_proto.inputs]
outputs = [kwargs.get(opt.name, "") for opt in op_proto.outputs]
attrs = [cast_to_op_attr(attr, kwargs.get(attr.name, None)) for attr in op_proto.attrs]
opdesc = (input, outputs, type_name, attrs)
return paddle.framework.OpRegistry.CreateOp(opdesc)
__impl__.__doc__ = create_doc_string(op_proto)
globals()[type_name] = __impl__
create_python_ops_creatation_functions()
```
### Message from Python to C++
To hold message needed in the above second step, we define Protobuf message class `OpDesc`. It is used to hold user-specified parameters in Op describing.
```proto
message OpDesc {
required string type = 1;
repeated string inputs = 2;
repeated string outputs = 3;
map<string, AttrValue> attrs = 4;
};
```
## OpProto Register
Every Op has its own `OpProto`. For using convenience, we need to register them and record all their messages. For each `Op` class, we define a corresponding `OpMaker` class, in whose constructor we implement the `OpProto`'s building process. `OpMaker`'s constructor will be invoked by another function `OpRegistry::RegisterOp()`.
```cpp
class OpProtoMaker {
public:
OpProtoMaker(OpProto* proto): proto_(proto) {}
protected:
OpProto* proto_;
void AddInput(const std::string& name, const std::string& desc) {...}
void AddAttr(const std::string& name, const std::string& desc, TypeId type) {...}
void AddComment(const std::string& comment) { ... }
};
class OpRegistry {
public:
using OpCreator = std::function<OperatorBase* (OpDesc& desc)>;
template <typename OpType, typename OpMaker>
static void RegisterOp(const std::string& name) {
gCreators_[name] = [](const OpDesc& desc) {
return new OpType(desc);
};
OpProto& opProto = gProtos_[name];
OpMaker()(&opProto);
}
static map<string, OpCreator> gCreators_;
static map<string, OpProto> gProtos_;
};
template <typename OpType, typename OpMaker>
class OpRegister {
public:
OpRegister(std::string type) {
OpRegistry::RegisterOp<OpType, OpMaker>(type);
}
};
#define REGISTER_OP(op_class, op_maker_class, type_name) \
class op_class##Register { \
private: \
const static OpRegister<#op_class, #op_maker_class> reg; \
}; \
const Register op_class##Register::reg(#type_name);
class CosineOp {
// ...
}
struct CosineOpProtoMaker : public OpProtoMaker {
CosineOpProtoMaker(OpProto* proto) : OpProtoMaker(proto) {
AddInput("input", "input of cosine op");
AddAttr("scale", "scale of cosine op", float).Default(1.0).LargerThan(0.0);
AddType("cos");
AddComment("This is cos op");
}
}
REGISTER_OP(CosineOp, CosineOpProtoMaker, cos);
```
In `REGISTER_OP(CosineOp, CosineOpProtoMaker, cos)`, we register not only `CosineOp` but also `CosineOpProto`. As fields of `CosineOpProto`, the default value and value range of `scale` are also registered here.
## Python API
Python APIs are divided into two types, high-level API and low-level API.
### High-Level API
High-level API is called by users directly, so it should keep its style consistent with existing V2 APIs.
Here is a sample about how a define a fc layer:
```python
hd = fc_layer(input=data, size=56, with_bias=True, activation="sigmoid");
```
`hd` is the output of `fc_layer` and it's a `variable`. It can be further sent into other layers as input.
The definition of `fc_layer()`:
```python
def fc_layer(input, size, with_bias, activation):
attr_map = {"size":size}
check_attrs(attr_map)
w = make_variable('w')
if with_bias:
b = make_variable('b')
else:
b = None
fc_output = make_variable('fc_output');
fc_op(input, w, b, fc_output, attr_map)
act_output = make_variable('sigmod_output');
if activation == "sigmod":
sigmod_op(fc_output, act_output);
elif:
# ...
return act_output;
```
### Low Leval API
In above sample, `fc_op` and `sigmod_op` are low-level API. They build `OpDesc` and invoke corresponding C++ code.
*TODO*
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Design Doc: Save Model &mdash; PaddlePaddle documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="../../genindex.html"/>
<link rel="search" title="Search" href="../../search.html"/>
<link rel="top" title="PaddlePaddle documentation" href="../../index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/css/perfect-scrollbar.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/override.css" type="text/css" />
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<header class="site-header">
<div class="site-logo">
<a href="/"><img src="../../_static/images/PP_w.png"></a>
</div>
<div class="site-nav-links">
<div class="site-menu">
<a class="fork-on-github" href="https://github.com/PaddlePaddle/Paddle" target="_blank"><i class="fa fa-github"></i>Folk me on Github</a>
<div class="language-switcher dropdown">
<a type="button" data-toggle="dropdown">
<span>English</span>
<i class="fa fa-angle-up"></i>
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/doc_cn">中文</a></li>
<li><a href="/doc">English</a></li>
</ul>
</div>
<ul class="site-page-links">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="doc-module">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../getstarted/index_en.html">GET STARTED</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../howto/index_en.html">HOW TO</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/index_en.html">API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../about/index_en.html">ABOUT</a></li>
</ul>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
</header>
<div class="main-content-wrap">
<nav class="doc-menu-vertical" role="navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../getstarted/index_en.html">GET STARTED</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getstarted/build_and_install/index_en.html">Install and Build</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/docker_install_en.html">PaddlePaddle in Docker Containers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/ubuntu_install_en.html">Debian Package installation guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/build_from_source_en.html">Installing from Sources</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../howto/index_en.html">HOW TO</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/cmd_parameter/index_en.html">Set Command-line Parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/use_case_en.html">Use Case</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/arguments_en.html">Argument Outline</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/detail_introduction_en.html">Detail Description</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/cluster/cluster_train_en.html">Run Distributed Training</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/k8s/k8s_en.html">Paddle On Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/k8s/k8s_aws_en.html">Distributed PaddlePaddle Training on AWS with Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/dev/new_layer_en.html">Write New Layers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/dev/contribute_to_paddle_en.html">Contribute Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/deep_model/rnn/index_en.html">RNN Models</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../howto/deep_model/rnn/rnn_config_en.html">RNN Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/optimization/gpu_profiling_en.html">Tune GPU Performance</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../api/index_en.html">API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/model_configs.html">Model Configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/activation.html">Activation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/layer.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/evaluators.html">Evaluators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/pooling.html">Pooling</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/networks.html">Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/attr.html">Parameter Attribute</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/data.html">Data Reader Interface and DataSets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/run_logic.html">Training and Inference</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../about/index_en.html">ABOUT</a></li>
</ul>
</nav>
<section class="doc-content-wrap">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li>Design Doc: Save Model</li>
</ul>
</div>
<div class="wy-nav-content" id="doc-content">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="design-doc-save-model">
<span id="design-doc-save-model"></span><h1>Design Doc: Save Model<a class="headerlink" href="#design-doc-save-model" title="Permalink to this headline"></a></h1>
<div class="section" id="overview">
<span id="overview"></span><h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline"></a></h2>
<p>The model is the output of the training process. There are two
ways from which user can obtain a model:</p>
<ul class="simple">
<li>Save model triggered by user code: user code asks PaddlePaddle to
save a model.</li>
<li>Convert model from the checkpoint: model being converted from
pservers&#8217; periodic checkpoint. In this way, the user can cancel a
job at any time, and still have a relatively fresh model (we
checkpoint around every 5 minutes).</li>
</ul>
<div class="section" id="trainer-saving-model-vs-pservers-saving-model">
<span id="trainer-saving-model-vs-pservers-saving-model"></span><h3>Trainer Saving Model vs. Pservers Saving Model<a class="headerlink" href="#trainer-saving-model-vs-pservers-saving-model" title="Permalink to this headline"></a></h3>
<p>Both trainers and pservers have access to the model. So the model can
be saved from a trainer or pservers. We need to decide where the model
is saved from.</p>
<div class="section" id="dense-update-vs-sparse-update">
<span id="dense-update-vs-sparse-update"></span><h4>Dense Update vs. Sparse Update<a class="headerlink" href="#dense-update-vs-sparse-update" title="Permalink to this headline"></a></h4>
<p>There are two types of model update methods: dense update and sparse
update (when the model parameter is configured to be sparse).</p>
<ul>
<li><p class="first">Dense update</p>
<p>Every trainer has it&#8217;s own full copy of the model. Every model
update will update the entire model.</p>
</li>
<li><p class="first">Sparse update</p>
<p>The training input is sparse, and the trainer does not have the
entire model. It will only download the sub-model necessary related
to the input. When updating the model, only the sub-model related to
the training input is updated.</p>
</li>
</ul>
</div>
<div class="section" id="pservers-saving-model">
<span id="pservers-saving-model"></span><h4>Pservers Saving Model<a class="headerlink" href="#pservers-saving-model" title="Permalink to this headline"></a></h4>
<p>The benefit of letting pservers save model is they have the entire
model all the time. However, since pservers are on different nodes, it
requires a merging process to merge model shards into the same
model. Thus requires the pservers to write models to a distributed
filesystem, making the checkpoint shards visible to the merge program.</p>
</div>
<div class="section" id="trainer-saving-model">
<span id="trainer-saving-model"></span><h4>Trainer Saving Model<a class="headerlink" href="#trainer-saving-model" title="Permalink to this headline"></a></h4>
<p>The benefit of letting one trainer to save the model is it does not
require a distributed filesystem. And it&#8217;s reusing the same save model
logic when training locally - except when doing sparse update, the
trainer needs to download the entire model during the saving process.</p>
</div>
<div class="section" id="conclusion">
<span id="conclusion"></span><h4>Conclusion<a class="headerlink" href="#conclusion" title="Permalink to this headline"></a></h4>
<p>Given trainer saving model does not require a distributed filesystem,
and is an intuitive extension to trainer saving model when training
locally, we decide to let the trainer save the model when doing
distributed training.</p>
</div>
</div>
<div class="section" id="convert-model-from-checkpoint">
<span id="convert-model-from-checkpoint"></span><h3>Convert Model from Checkpoint<a class="headerlink" href="#convert-model-from-checkpoint" title="Permalink to this headline"></a></h3>
<p>TODO</p>
</div>
</div>
<div class="section" id="timeline">
<span id="timeline"></span><h2>Timeline<a class="headerlink" href="#timeline" title="Permalink to this headline"></a></h2>
<p>We first implement trainer save the model. Converting the latest
snapshot to a model will be a TODO for future.</p>
</div>
<div class="section" id="trainer-save-model">
<span id="trainer-save-model"></span><h2>Trainer Save Model<a class="headerlink" href="#trainer-save-model" title="Permalink to this headline"></a></h2>
<div class="section" id="trainer-election">
<span id="trainer-election"></span><h3>Trainer Election<a class="headerlink" href="#trainer-election" title="Permalink to this headline"></a></h3>
<p>One trainer will be elected as the one to save the model. When using
etcd, trainer ID is a randomly generated UUID, we will utilize etcd to
elect one trainer. When not using etcd, unique trainer IDs will be
given by the administrator, the trainer whose ID is &#8220;0&#8221; is elected to
save the model.</p>
</div>
<div class="section" id="model-save-path">
<span id="model-save-path"></span><h3>Model Save Path<a class="headerlink" href="#model-save-path" title="Permalink to this headline"></a></h3>
<p>Each trainer will be given the directory to save the model. The
elected trainer will save the model to
<code class="docutils literal"><span class="pre">given-directory/trainerID</span></code>. Since the trainer ID is unique, this
would prevent concurrent save to the same file when multiple trainers
are elected to save the model when split-brain problem happens.</p>
</div>
<div class="section" id="what-happens-when-model-is-saving">
<span id="what-happens-when-model-is-saving"></span><h3>What Happens When Model Is Saving<a class="headerlink" href="#what-happens-when-model-is-saving" title="Permalink to this headline"></a></h3>
<p>It takes some time to save model, we need to define what will happen
when save model is taking place.</p>
<p>When doing dense update, the trainer uses the local model. Pservers
does not need to pause model update.</p>
<p>When doing sparse update. The trainer needs to download the entire
model while saving. To get the most accurate model, the model update
needs to be paused before the download starts and resumed after the
download finishes. Otherwise, the trainer gets a model that is
&#8220;polluted&#8221;: some part of the model is old, some part of the model is
new.</p>
<p>It&#8217;s unclear that the &#8220;polluted&#8221; model will be inferior due to the
stochastic nature of deep learning, and pausing the model update will
add more complexity to the system. Since supporting sparse update is a
TODO item. We defer the evaluation of pause the model update or not
during saving model to the future.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, PaddlePaddle developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ".txt",
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/js/perfect-scrollbar.jquery.min.js"></script>
<script src="../../_static/js/paddle_doc_init.js"></script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interaction between C++ and Python &mdash; PaddlePaddle documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="../genindex.html"/>
<link rel="search" title="Search" href="../search.html"/>
<link rel="top" title="PaddlePaddle documentation" href="../index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/css/perfect-scrollbar.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/override.css" type="text/css" />
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<header class="site-header">
<div class="site-logo">
<a href="/"><img src="../_static/images/PP_w.png"></a>
</div>
<div class="site-nav-links">
<div class="site-menu">
<a class="fork-on-github" href="https://github.com/PaddlePaddle/Paddle" target="_blank"><i class="fa fa-github"></i>Folk me on Github</a>
<div class="language-switcher dropdown">
<a type="button" data-toggle="dropdown">
<span>English</span>
<i class="fa fa-angle-up"></i>
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/doc_cn">中文</a></li>
<li><a href="/doc">English</a></li>
</ul>
</div>
<ul class="site-page-links">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="doc-module">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_en.html">GET STARTED</a></li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_en.html">HOW TO</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_en.html">API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../about/index_en.html">ABOUT</a></li>
</ul>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
</header>
<div class="main-content-wrap">
<nav class="doc-menu-vertical" role="navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_en.html">GET STARTED</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getstarted/build_and_install/index_en.html">Install and Build</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/docker_install_en.html">PaddlePaddle in Docker Containers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/ubuntu_install_en.html">Debian Package installation guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/build_from_source_en.html">Installing from Sources</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_en.html">HOW TO</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cmd_parameter/index_en.html">Set Command-line Parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/use_case_en.html">Use Case</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/arguments_en.html">Argument Outline</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/detail_introduction_en.html">Detail Description</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cluster/cluster_train_en.html">Run Distributed Training</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_en.html">Paddle On Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_aws_en.html">Distributed PaddlePaddle Training on AWS with Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/new_layer_en.html">Write New Layers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/contribute_to_paddle_en.html">Contribute Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/deep_model/rnn/index_en.html">RNN Models</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/rnn_config_en.html">RNN Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/optimization/gpu_profiling_en.html">Tune GPU Performance</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_en.html">API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/model_configs.html">Model Configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/activation.html">Activation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/layer.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/evaluators.html">Evaluators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/pooling.html">Pooling</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/networks.html">Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/attr.html">Parameter Attribute</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/data.html">Data Reader Interface and DataSets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/run_logic.html">Training and Inference</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../about/index_en.html">ABOUT</a></li>
</ul>
</nav>
<section class="doc-content-wrap">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li>Interaction between C++ and Python</li>
</ul>
</div>
<div class="wy-nav-content" id="doc-content">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="interaction-between-c-and-python">
<span id="interaction-between-c-and-python"></span><h1>Interaction between C++ and Python<a class="headerlink" href="#interaction-between-c-and-python" title="Permalink to this headline"></a></h1>
<p>Users employ API in Python to describe their own network, however, the network construction actually happens in C++. so Protobuf is introduced to send the message between Python and C++.</p>
<p>The Interaction between Python and C++ can be simplified as two steps:</p>
<ol class="simple">
<li>C++ tells Python how many Ops there are, and what parameter do users need to offer to initialize a new Op. Python then builds API for each Op at compile time.</li>
<li>Users invoke APIs built by Python and provide necessary parameters. These parameters will be sent to C++ fo finish Op construction task.</li>
</ol>
<div class="section" id="message-form-c-to-python">
<span id="message-form-c-to-python"></span><h2>Message form C++ to Python<a class="headerlink" href="#message-form-c-to-python" title="Permalink to this headline"></a></h2>
<p>We define a Protobuf message class <code class="docutils literal"><span class="pre">OpProto</span></code> to hold message needed in the first step. What should an <code class="docutils literal"><span class="pre">OpProto</span></code> contain? This question is equivalent to “What message do we need to offer, to build a Python API which is legal and user oriented and can use to describe a whole Op.”</p>
<p>Following message are necessary:</p>
<ol class="simple">
<li>Op&#8217;s name, and its simple comment.</li>
<li>Input and output variable number; each variable&#8217;s name, type, and comment.</li>
<li>Op&#8217;s attributes; each attribute includes name, type, comment, <strong>default value</strong> and <strong>value range</strong>.</li>
</ol>
<p>So <code class="docutils literal"><span class="pre">OpProto</span></code> can be defined as follows:</p>
<div class="highlight-proto"><div class="highlight"><pre><span></span><span class="kd">enum</span> <span class="n">AttrType</span> <span class="p">{</span>
<span class="na">INT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">FLOAT</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">STRING</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">INTS</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">FLOATS</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="na">STRINGS</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">AttrValue</span> <span class="p">{</span>
<span class="n">AttrType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">optional</span> <span class="n">int</span> <span class="na">iv</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">optional</span> <span class="kt">float</span> <span class="na">fv</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">optional</span> <span class="kt">string</span> <span class="na">sv</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">int</span> <span class="na">ivs</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">float</span> <span class="na">fvs</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">svs</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">AttrProto</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">required</span> <span class="n">AttrType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">VarProto</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">OpProto</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">VarProto</span> <span class="na">inputs</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">VarProto</span> <span class="na">outputs</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">AttrProto</span> <span class="na">attrs</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p>To generate Python code automatically:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span>def create_python_ops_creatation_functions():
op_protos = paddle.framework.OpRegistry.get_all_op_proto()
for type_name in op_protos:
op_proto = op_protos[type_name]
def __impl__(**kwargs): # User must use key word args in Paddle API
inputs = [kwargs.get(ipt.name, &quot;&quot;) for ipt in op_proto.inputs]
outputs = [kwargs.get(opt.name, &quot;&quot;) for opt in op_proto.outputs]
attrs = [cast_to_op_attr(attr, kwargs.get(attr.name, None)) for attr in op_proto.attrs]
opdesc = (input, outputs, type_name, attrs)
return paddle.framework.OpRegistry.CreateOp(opdesc)
__impl__.__doc__ = create_doc_string(op_proto)
globals()[type_name] = __impl__
create_python_ops_creatation_functions()
</pre></div>
</div>
</div>
<div class="section" id="message-from-python-to-c">
<span id="message-from-python-to-c"></span><h2>Message from Python to C++<a class="headerlink" href="#message-from-python-to-c" title="Permalink to this headline"></a></h2>
<p>To hold message needed in the above second step, we define Protobuf message class <code class="docutils literal"><span class="pre">OpDesc</span></code>. It is used to hold user-specified parameters in Op describing.</p>
<div class="highlight-proto"><div class="highlight"><pre><span></span><span class="kd">message</span> <span class="nc">OpDesc</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">inputs</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">outputs</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">map</span><span class="p">&lt;</span><span class="kt">string</span><span class="p">,</span> <span class="n">AttrValue</span><span class="p">&gt;</span> <span class="na">attrs</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="opproto-register">
<span id="opproto-register"></span><h1>OpProto Register<a class="headerlink" href="#opproto-register" title="Permalink to this headline"></a></h1>
<p>Every Op has its own <code class="docutils literal"><span class="pre">OpProto</span></code>. For using convenience, we need to register them and record all their messages. For each <code class="docutils literal"><span class="pre">Op</span></code> class, we define a corresponding <code class="docutils literal"><span class="pre">OpMaker</span></code> class, in whose constructor we implement the <code class="docutils literal"><span class="pre">OpProto</span></code>&#8216;s building process. <code class="docutils literal"><span class="pre">OpMaker</span></code>&#8216;s constructor will be invoked by another function <code class="docutils literal"><span class="pre">OpRegistry::RegisterOp()</span></code>.</p>
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">OpProtoMaker</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="n">OpProtoMaker</span><span class="p">(</span><span class="n">OpProto</span><span class="o">*</span> <span class="n">proto</span><span class="p">)</span><span class="o">:</span> <span class="n">proto_</span><span class="p">(</span><span class="n">proto</span><span class="p">)</span> <span class="p">{}</span>
<span class="k">protected</span><span class="o">:</span>
<span class="n">OpProto</span><span class="o">*</span> <span class="n">proto_</span><span class="p">;</span>
<span class="kt">void</span> <span class="nf">AddInput</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span> <span class="p">{...}</span>
<span class="kt">void</span> <span class="nf">AddAttr</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">,</span> <span class="n">TypeId</span> <span class="n">type</span><span class="p">)</span> <span class="p">{...}</span>
<span class="kt">void</span> <span class="nf">AddComment</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">comment</span><span class="p">)</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="p">};</span>
<span class="k">class</span> <span class="nc">OpRegistry</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="k">using</span> <span class="n">OpCreator</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o">&lt;</span><span class="n">OperatorBase</span><span class="o">*</span> <span class="p">(</span><span class="n">OpDesc</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span><span class="o">&gt;</span><span class="p">;</span>
<span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">OpType</span><span class="p">,</span> <span class="k">typename</span> <span class="n">OpMaker</span><span class="o">&gt;</span>
<span class="k">static</span> <span class="kt">void</span> <span class="n">RegisterOp</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">)</span> <span class="p">{</span>
<span class="n">gCreators_</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[](</span><span class="k">const</span> <span class="n">OpDesc</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="n">OpType</span><span class="p">(</span><span class="n">desc</span><span class="p">);</span>
<span class="p">};</span>
<span class="n">OpProto</span><span class="o">&amp;</span> <span class="n">opProto</span> <span class="o">=</span> <span class="n">gProtos_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
<span class="n">OpMaker</span><span class="p">()(</span><span class="o">&amp;</span><span class="n">opProto</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">static</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span> <span class="n">OpCreator</span><span class="o">&gt;</span> <span class="n">gCreators_</span><span class="p">;</span>
<span class="k">static</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span> <span class="n">OpProto</span><span class="o">&gt;</span> <span class="n">gProtos_</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">OpType</span><span class="p">,</span> <span class="k">typename</span> <span class="n">OpMaker</span><span class="o">&gt;</span>
<span class="k">class</span> <span class="nc">OpRegister</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="n">OpRegister</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">type</span><span class="p">)</span> <span class="p">{</span>
<span class="n">OpRegistry</span><span class="o">::</span><span class="n">RegisterOp</span><span class="o">&lt;</span><span class="n">OpType</span><span class="p">,</span> <span class="n">OpMaker</span><span class="o">&gt;</span><span class="p">(</span><span class="n">type</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="cp">#define REGISTER_OP(op_class, op_maker_class, type_name) \</span>
<span class="cp"> class op_class##Register { \</span>
<span class="cp"> private: \</span>
<span class="cp"> const static OpRegister&lt;#op_class, #op_maker_class&gt; reg; \</span>
<span class="cp"> }; \</span>
<span class="cp"> const Register op_class##Register::reg(#type_name);</span>
<span class="k">class</span> <span class="nc">CosineOp</span> <span class="p">{</span>
<span class="c1">// ...</span>
<span class="p">}</span>
<span class="k">struct</span> <span class="nl">CosineOpProtoMaker</span> <span class="p">:</span> <span class="k">public</span> <span class="n">OpProtoMaker</span> <span class="p">{</span>
<span class="n">CosineOpProtoMaker</span><span class="p">(</span><span class="n">OpProto</span><span class="o">*</span> <span class="n">proto</span><span class="p">)</span> <span class="o">:</span> <span class="n">OpProtoMaker</span><span class="p">(</span><span class="n">proto</span><span class="p">)</span> <span class="p">{</span>
<span class="n">AddInput</span><span class="p">(</span><span class="s">&quot;input&quot;</span><span class="p">,</span> <span class="s">&quot;input of cosine op&quot;</span><span class="p">);</span>
<span class="n">AddAttr</span><span class="p">(</span><span class="s">&quot;scale&quot;</span><span class="p">,</span> <span class="s">&quot;scale of cosine op&quot;</span><span class="p">,</span> <span class="kt">float</span><span class="p">).</span><span class="n">Default</span><span class="p">(</span><span class="mf">1.0</span><span class="p">).</span><span class="n">LargerThan</span><span class="p">(</span><span class="mf">0.0</span><span class="p">);</span>
<span class="n">AddType</span><span class="p">(</span><span class="s">&quot;cos&quot;</span><span class="p">);</span>
<span class="n">AddComment</span><span class="p">(</span><span class="s">&quot;This is cos op&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">REGISTER_OP</span><span class="p">(</span><span class="n">CosineOp</span><span class="p">,</span> <span class="n">CosineOpProtoMaker</span><span class="p">,</span> <span class="n">cos</span><span class="p">);</span>
</pre></div>
</div>
<p>In <code class="docutils literal"><span class="pre">REGISTER_OP(CosineOp,</span> <span class="pre">CosineOpProtoMaker,</span> <span class="pre">cos)</span></code>, we register not only <code class="docutils literal"><span class="pre">CosineOp</span></code> but also <code class="docutils literal"><span class="pre">CosineOpProto</span></code>. As fields of <code class="docutils literal"><span class="pre">CosineOpProto</span></code>, the default value and value range of <code class="docutils literal"><span class="pre">scale</span></code> are also registered here.</p>
</div>
<div class="section" id="python-api">
<span id="python-api"></span><h1>Python API<a class="headerlink" href="#python-api" title="Permalink to this headline"></a></h1>
<p>Python APIs are divided into two types, high-level API and low-level API.</p>
<div class="section" id="high-level-api">
<span id="high-level-api"></span><h2>High-Level API<a class="headerlink" href="#high-level-api" title="Permalink to this headline"></a></h2>
<p>High-level API is called by users directly, so it should keep its style consistent with existing V2 APIs.</p>
<p>Here is a sample about how a define a fc layer:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">hd</span> <span class="o">=</span> <span class="n">fc_layer</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">56</span><span class="p">,</span> <span class="n">with_bias</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">);</span>
</pre></div>
</div>
<p><code class="docutils literal"><span class="pre">hd</span></code> is the output of <code class="docutils literal"><span class="pre">fc_layer</span></code> and it&#8217;s a <code class="docutils literal"><span class="pre">variable</span></code>. It can be further sent into other layers as input.</p>
<p>The definition of <code class="docutils literal"><span class="pre">fc_layer()</span></code>:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">fc_layer</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">with_bias</span><span class="p">,</span> <span class="n">activation</span><span class="p">):</span>
<span class="n">attr_map</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="n">size</span><span class="p">}</span>
<span class="n">check_attrs</span><span class="p">(</span><span class="n">attr_map</span><span class="p">)</span>
<span class="n">w</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">with_bias</span><span class="p">:</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;b&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">b</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">fc_output</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;fc_output&#39;</span><span class="p">);</span>
<span class="n">fc_op</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">fc_output</span><span class="p">,</span> <span class="n">attr_map</span><span class="p">)</span>
<span class="n">act_output</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;sigmod_output&#39;</span><span class="p">);</span>
<span class="k">if</span> <span class="n">activation</span> <span class="o">==</span> <span class="s2">&quot;sigmod&quot;</span><span class="p">:</span>
<span class="n">sigmod_op</span><span class="p">(</span><span class="n">fc_output</span><span class="p">,</span> <span class="n">act_output</span><span class="p">);</span>
<span class="k">elif</span><span class="p">:</span>
<span class="c1"># ...</span>
<span class="k">return</span> <span class="n">act_output</span><span class="p">;</span>
</pre></div>
</div>
</div>
<div class="section" id="low-leval-api">
<span id="low-leval-api"></span><h2>Low Leval API<a class="headerlink" href="#low-leval-api" title="Permalink to this headline"></a></h2>
<p>In above sample, <code class="docutils literal"><span class="pre">fc_op</span></code> and <code class="docutils literal"><span class="pre">sigmod_op</span></code> are low-level API. They build <code class="docutils literal"><span class="pre">OpDesc</span></code> and invoke corresponding C++ code.</p>
<p><em>TODO</em></p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, PaddlePaddle developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ".txt",
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/js/perfect-scrollbar.jquery.min.js"></script>
<script src="../_static/js/paddle_doc_init.js"></script>
</body>
</html>
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
# Design Doc: Save Model
## Overview
The model is the output of the training process. There are two
ways from which user can obtain a model:
- Save model triggered by user code: user code asks PaddlePaddle to
save a model.
- Convert model from the checkpoint: model being converted from
pservers' periodic checkpoint. In this way, the user can cancel a
job at any time, and still have a relatively fresh model (we
checkpoint around every 5 minutes).
### Trainer Saving Model vs. Pservers Saving Model
Both trainers and pservers have access to the model. So the model can
be saved from a trainer or pservers. We need to decide where the model
is saved from.
#### Dense Update vs. Sparse Update
There are two types of model update methods: dense update and sparse
update (when the model parameter is configured to be sparse).
- Dense update
Every trainer has it's own full copy of the model. Every model
update will update the entire model.
- Sparse update
The training input is sparse, and the trainer does not have the
entire model. It will only download the sub-model necessary related
to the input. When updating the model, only the sub-model related to
the training input is updated.
#### Pservers Saving Model
The benefit of letting pservers save model is they have the entire
model all the time. However, since pservers are on different nodes, it
requires a merging process to merge model shards into the same
model. Thus requires the pservers to write models to a distributed
filesystem, making the checkpoint shards visible to the merge program.
#### Trainer Saving Model
The benefit of letting one trainer to save the model is it does not
require a distributed filesystem. And it's reusing the same save model
logic when training locally - except when doing sparse update, the
trainer needs to download the entire model during the saving process.
#### Conclusion
Given trainer saving model does not require a distributed filesystem,
and is an intuitive extension to trainer saving model when training
locally, we decide to let the trainer save the model when doing
distributed training.
### Convert Model from Checkpoint
TODO
## Timeline
We first implement trainer save the model. Converting the latest
snapshot to a model will be a TODO for future.
## Trainer Save Model
### Trainer Election
One trainer will be elected as the one to save the model. When using
etcd, trainer ID is a randomly generated UUID, we will utilize etcd to
elect one trainer. When not using etcd, unique trainer IDs will be
given by the administrator, the trainer whose ID is "0" is elected to
save the model.
### Model Save Path
Each trainer will be given the directory to save the model. The
elected trainer will save the model to
`given-directory/trainerID`. Since the trainer ID is unique, this
would prevent concurrent save to the same file when multiple trainers
are elected to save the model when split-brain problem happens.
### What Happens When Model Is Saving
It takes some time to save model, we need to define what will happen
when save model is taking place.
When doing dense update, the trainer uses the local model. Pservers
does not need to pause model update.
When doing sparse update. The trainer needs to download the entire
model while saving. To get the most accurate model, the model update
needs to be paused before the download starts and resumed after the
download finishes. Otherwise, the trainer gets a model that is
"polluted": some part of the model is old, some part of the model is
new.
It's unclear that the "polluted" model will be inferior due to the
stochastic nature of deep learning, and pausing the model update will
add more complexity to the system. Since supporting sparse update is a
TODO item. We defer the evaluation of pause the model update or not
during saving model to the future.
## Interaction between C++ and Python
Users employ API in Python to describe their own network, however, the network construction actually happens in C++. so Protobuf is introduced to send the message between Python and C++.
The Interaction between Python and C++ can be simplified as two steps:
1. C++ tells Python how many Ops there are, and what parameter do users need to offer to initialize a new Op. Python then builds API for each Op at compile time.
2. Users invoke APIs built by Python and provide necessary parameters. These parameters will be sent to C++ fo finish Op construction task.
### Message form C++ to Python
We define a Protobuf message class `OpProto` to hold message needed in the first step. What should an `OpProto` contain? This question is equivalent to “What message do we need to offer, to build a Python API which is legal and user oriented and can use to describe a whole Op.”
Following message are necessary:
1. Op's name, and its simple comment.
2. Input and output variable number; each variable's name, type, and comment.
3. Op's attributes; each attribute includes name, type, comment, **default value** and **value range**.
So `OpProto` can be defined as follows:
```proto
enum AttrType {
INT = 1;
FLOAT = 2;
STRING = 3;
INTS = 4;
FLOATS = 5;
STRINGS = 6;
};
message AttrValue {
AttrType type = 1;
optional int iv = 2;
optional float fv = 3;
optional string sv = 4;
repeated int ivs = 5;
repeated float fvs = 6;
repeated string svs = 7;
};
message AttrProto {
required string name = 1;
required string comment = 2;
required AttrType type = 3;
};
message VarProto {
required string name = 1;
required string comment = 2;
};
message OpProto {
repeated VarProto inputs = 1;
repeated VarProto outputs = 2;
repeated AttrProto attrs = 3;
required string type = 4;
required string comment = 5;
};
```
To generate Python code automatically:
```python
def create_python_ops_creatation_functions():
op_protos = paddle.framework.OpRegistry.get_all_op_proto()
for type_name in op_protos:
op_proto = op_protos[type_name]
def __impl__(**kwargs): # User must use key word args in Paddle API
inputs = [kwargs.get(ipt.name, "") for ipt in op_proto.inputs]
outputs = [kwargs.get(opt.name, "") for opt in op_proto.outputs]
attrs = [cast_to_op_attr(attr, kwargs.get(attr.name, None)) for attr in op_proto.attrs]
opdesc = (input, outputs, type_name, attrs)
return paddle.framework.OpRegistry.CreateOp(opdesc)
__impl__.__doc__ = create_doc_string(op_proto)
globals()[type_name] = __impl__
create_python_ops_creatation_functions()
```
### Message from Python to C++
To hold message needed in the above second step, we define Protobuf message class `OpDesc`. It is used to hold user-specified parameters in Op describing.
```proto
message OpDesc {
required string type = 1;
repeated string inputs = 2;
repeated string outputs = 3;
map<string, AttrValue> attrs = 4;
};
```
## OpProto Register
Every Op has its own `OpProto`. For using convenience, we need to register them and record all their messages. For each `Op` class, we define a corresponding `OpMaker` class, in whose constructor we implement the `OpProto`'s building process. `OpMaker`'s constructor will be invoked by another function `OpRegistry::RegisterOp()`.
```cpp
class OpProtoMaker {
public:
OpProtoMaker(OpProto* proto): proto_(proto) {}
protected:
OpProto* proto_;
void AddInput(const std::string& name, const std::string& desc) {...}
void AddAttr(const std::string& name, const std::string& desc, TypeId type) {...}
void AddComment(const std::string& comment) { ... }
};
class OpRegistry {
public:
using OpCreator = std::function<OperatorBase* (OpDesc& desc)>;
template <typename OpType, typename OpMaker>
static void RegisterOp(const std::string& name) {
gCreators_[name] = [](const OpDesc& desc) {
return new OpType(desc);
};
OpProto& opProto = gProtos_[name];
OpMaker()(&opProto);
}
static map<string, OpCreator> gCreators_;
static map<string, OpProto> gProtos_;
};
template <typename OpType, typename OpMaker>
class OpRegister {
public:
OpRegister(std::string type) {
OpRegistry::RegisterOp<OpType, OpMaker>(type);
}
};
#define REGISTER_OP(op_class, op_maker_class, type_name) \
class op_class##Register { \
private: \
const static OpRegister<#op_class, #op_maker_class> reg; \
}; \
const Register op_class##Register::reg(#type_name);
class CosineOp {
// ...
}
struct CosineOpProtoMaker : public OpProtoMaker {
CosineOpProtoMaker(OpProto* proto) : OpProtoMaker(proto) {
AddInput("input", "input of cosine op");
AddAttr("scale", "scale of cosine op", float).Default(1.0).LargerThan(0.0);
AddType("cos");
AddComment("This is cos op");
}
}
REGISTER_OP(CosineOp, CosineOpProtoMaker, cos);
```
In `REGISTER_OP(CosineOp, CosineOpProtoMaker, cos)`, we register not only `CosineOp` but also `CosineOpProto`. As fields of `CosineOpProto`, the default value and value range of `scale` are also registered here.
## Python API
Python APIs are divided into two types, high-level API and low-level API.
### High-Level API
High-level API is called by users directly, so it should keep its style consistent with existing V2 APIs.
Here is a sample about how a define a fc layer:
```python
hd = fc_layer(input=data, size=56, with_bias=True, activation="sigmoid");
```
`hd` is the output of `fc_layer` and it's a `variable`. It can be further sent into other layers as input.
The definition of `fc_layer()`:
```python
def fc_layer(input, size, with_bias, activation):
attr_map = {"size":size}
check_attrs(attr_map)
w = make_variable('w')
if with_bias:
b = make_variable('b')
else:
b = None
fc_output = make_variable('fc_output');
fc_op(input, w, b, fc_output, attr_map)
act_output = make_variable('sigmod_output');
if activation == "sigmod":
sigmod_op(fc_output, act_output);
elif:
# ...
return act_output;
```
### Low Leval API
In above sample, `fc_op` and `sigmod_op` are low-level API. They build `OpDesc` and invoke corresponding C++ code.
*TODO*
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Design Doc: Save Model &mdash; PaddlePaddle 文档</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="index" title="索引"
href="../../genindex.html"/>
<link rel="search" title="搜索" href="../../search.html"/>
<link rel="top" title="PaddlePaddle 文档" href="../../index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/css/perfect-scrollbar.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/override.css" type="text/css" />
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<header class="site-header">
<div class="site-logo">
<a href="/"><img src="../../_static/images/PP_w.png"></a>
</div>
<div class="site-nav-links">
<div class="site-menu">
<a class="fork-on-github" href="https://github.com/PaddlePaddle/Paddle" target="_blank"><i class="fa fa-github"></i>Folk me on Github</a>
<div class="language-switcher dropdown">
<a type="button" data-toggle="dropdown">
<span>English</span>
<i class="fa fa-angle-up"></i>
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/doc_cn">中文</a></li>
<li><a href="/doc">English</a></li>
</ul>
</div>
<ul class="site-page-links">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="doc-module">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../getstarted/index_cn.html">新手入门</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../howto/index_cn.html">进阶指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/index_cn.html">API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index_cn.html">FAQ</a></li>
</ul>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
</header>
<div class="main-content-wrap">
<nav class="doc-menu-vertical" role="navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../getstarted/index_cn.html">新手入门</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getstarted/build_and_install/index_cn.html">安装与编译</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/docker_install_cn.html">PaddlePaddle的Docker容器使用方式</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/ubuntu_install_cn.html">Ubuntu部署PaddlePaddle</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../getstarted/build_and_install/cmake/build_from_source_cn.html">PaddlePaddle的编译选项</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../getstarted/concepts/use_concepts_cn.html">基本使用概念</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../howto/index_cn.html">进阶指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/cmd_parameter/index_cn.html">设置命令行参数</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/use_case_cn.html">使用案例</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/arguments_cn.html">参数概述</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/usage/cmd_parameter/detail_introduction_cn.html">细节描述</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/cluster/cluster_train_cn.html">运行分布式训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/k8s/k8s_basis_cn.html">Kubernetes 简介</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/k8s/k8s_cn.html">Kubernetes单机训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/usage/k8s/k8s_distributed_cn.html">Kubernetes分布式训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/dev/write_docs_cn.html">如何贡献/修改文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/dev/contribute_to_paddle_cn.html">如何贡献代码</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/deep_model/rnn/index_cn.html">RNN相关模型</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../howto/deep_model/rnn/rnn_config_cn.html">RNN配置</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/deep_model/rnn/recurrent_group_cn.html">Recurrent Group教程</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/deep_model/rnn/hierarchical_layer_cn.html">支持双层序列作为输入的Layer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../howto/deep_model/rnn/hrnn_rnn_api_compare_cn.html">单双层RNN API对比介绍</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../howto/optimization/gpu_profiling_cn.html">GPU性能分析与调优</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../api/index_cn.html">API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/model_configs.html">模型配置</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/activation.html">Activation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/layer.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/evaluators.html">Evaluators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/pooling.html">Pooling</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/networks.html">Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../api/v2/config/attr.html">Parameter Attribute</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/data.html">数据访问</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../api/v2/run_logic.html">训练与应用</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index_cn.html">FAQ</a></li>
</ul>
</nav>
<section class="doc-content-wrap">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li>Design Doc: Save Model</li>
</ul>
</div>
<div class="wy-nav-content" id="doc-content">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="design-doc-save-model">
<span id="design-doc-save-model"></span><h1>Design Doc: Save Model<a class="headerlink" href="#design-doc-save-model" title="永久链接至标题"></a></h1>
<div class="section" id="overview">
<span id="overview"></span><h2>Overview<a class="headerlink" href="#overview" title="永久链接至标题"></a></h2>
<p>The model is the output of the training process. There are two
ways from which user can obtain a model:</p>
<ul class="simple">
<li>Save model triggered by user code: user code asks PaddlePaddle to
save a model.</li>
<li>Convert model from the checkpoint: model being converted from
pservers&#8217; periodic checkpoint. In this way, the user can cancel a
job at any time, and still have a relatively fresh model (we
checkpoint around every 5 minutes).</li>
</ul>
<div class="section" id="trainer-saving-model-vs-pservers-saving-model">
<span id="trainer-saving-model-vs-pservers-saving-model"></span><h3>Trainer Saving Model vs. Pservers Saving Model<a class="headerlink" href="#trainer-saving-model-vs-pservers-saving-model" title="永久链接至标题"></a></h3>
<p>Both trainers and pservers have access to the model. So the model can
be saved from a trainer or pservers. We need to decide where the model
is saved from.</p>
<div class="section" id="dense-update-vs-sparse-update">
<span id="dense-update-vs-sparse-update"></span><h4>Dense Update vs. Sparse Update<a class="headerlink" href="#dense-update-vs-sparse-update" title="永久链接至标题"></a></h4>
<p>There are two types of model update methods: dense update and sparse
update (when the model parameter is configured to be sparse).</p>
<ul>
<li><p class="first">Dense update</p>
<p>Every trainer has it&#8217;s own full copy of the model. Every model
update will update the entire model.</p>
</li>
<li><p class="first">Sparse update</p>
<p>The training input is sparse, and the trainer does not have the
entire model. It will only download the sub-model necessary related
to the input. When updating the model, only the sub-model related to
the training input is updated.</p>
</li>
</ul>
</div>
<div class="section" id="pservers-saving-model">
<span id="pservers-saving-model"></span><h4>Pservers Saving Model<a class="headerlink" href="#pservers-saving-model" title="永久链接至标题"></a></h4>
<p>The benefit of letting pservers save model is they have the entire
model all the time. However, since pservers are on different nodes, it
requires a merging process to merge model shards into the same
model. Thus requires the pservers to write models to a distributed
filesystem, making the checkpoint shards visible to the merge program.</p>
</div>
<div class="section" id="trainer-saving-model">
<span id="trainer-saving-model"></span><h4>Trainer Saving Model<a class="headerlink" href="#trainer-saving-model" title="永久链接至标题"></a></h4>
<p>The benefit of letting one trainer to save the model is it does not
require a distributed filesystem. And it&#8217;s reusing the same save model
logic when training locally - except when doing sparse update, the
trainer needs to download the entire model during the saving process.</p>
</div>
<div class="section" id="conclusion">
<span id="conclusion"></span><h4>Conclusion<a class="headerlink" href="#conclusion" title="永久链接至标题"></a></h4>
<p>Given trainer saving model does not require a distributed filesystem,
and is an intuitive extension to trainer saving model when training
locally, we decide to let the trainer save the model when doing
distributed training.</p>
</div>
</div>
<div class="section" id="convert-model-from-checkpoint">
<span id="convert-model-from-checkpoint"></span><h3>Convert Model from Checkpoint<a class="headerlink" href="#convert-model-from-checkpoint" title="永久链接至标题"></a></h3>
<p>TODO</p>
</div>
</div>
<div class="section" id="timeline">
<span id="timeline"></span><h2>Timeline<a class="headerlink" href="#timeline" title="永久链接至标题"></a></h2>
<p>We first implement trainer save the model. Converting the latest
snapshot to a model will be a TODO for future.</p>
</div>
<div class="section" id="trainer-save-model">
<span id="trainer-save-model"></span><h2>Trainer Save Model<a class="headerlink" href="#trainer-save-model" title="永久链接至标题"></a></h2>
<div class="section" id="trainer-election">
<span id="trainer-election"></span><h3>Trainer Election<a class="headerlink" href="#trainer-election" title="永久链接至标题"></a></h3>
<p>One trainer will be elected as the one to save the model. When using
etcd, trainer ID is a randomly generated UUID, we will utilize etcd to
elect one trainer. When not using etcd, unique trainer IDs will be
given by the administrator, the trainer whose ID is &#8220;0&#8221; is elected to
save the model.</p>
</div>
<div class="section" id="model-save-path">
<span id="model-save-path"></span><h3>Model Save Path<a class="headerlink" href="#model-save-path" title="永久链接至标题"></a></h3>
<p>Each trainer will be given the directory to save the model. The
elected trainer will save the model to
<code class="docutils literal"><span class="pre">given-directory/trainerID</span></code>. Since the trainer ID is unique, this
would prevent concurrent save to the same file when multiple trainers
are elected to save the model when split-brain problem happens.</p>
</div>
<div class="section" id="what-happens-when-model-is-saving">
<span id="what-happens-when-model-is-saving"></span><h3>What Happens When Model Is Saving<a class="headerlink" href="#what-happens-when-model-is-saving" title="永久链接至标题"></a></h3>
<p>It takes some time to save model, we need to define what will happen
when save model is taking place.</p>
<p>When doing dense update, the trainer uses the local model. Pservers
does not need to pause model update.</p>
<p>When doing sparse update. The trainer needs to download the entire
model while saving. To get the most accurate model, the model update
needs to be paused before the download starts and resumed after the
download finishes. Otherwise, the trainer gets a model that is
&#8220;polluted&#8221;: some part of the model is old, some part of the model is
new.</p>
<p>It&#8217;s unclear that the &#8220;polluted&#8221; model will be inferior due to the
stochastic nature of deep learning, and pausing the model update will
add more complexity to the system. Since supporting sparse update is a
TODO item. We defer the evaluation of pause the model update or not
during saving model to the future.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, PaddlePaddle developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ".txt",
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/translations.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/mathjax/2.7.0/MathJax.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/js/perfect-scrollbar.jquery.min.js"></script>
<script src="../../_static/js/paddle_doc_init.js"></script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interaction between C++ and Python &mdash; PaddlePaddle 文档</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="index" title="索引"
href="../genindex.html"/>
<link rel="search" title="搜索" href="../search.html"/>
<link rel="top" title="PaddlePaddle 文档" href="../index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/css/perfect-scrollbar.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/override.css" type="text/css" />
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<header class="site-header">
<div class="site-logo">
<a href="/"><img src="../_static/images/PP_w.png"></a>
</div>
<div class="site-nav-links">
<div class="site-menu">
<a class="fork-on-github" href="https://github.com/PaddlePaddle/Paddle" target="_blank"><i class="fa fa-github"></i>Folk me on Github</a>
<div class="language-switcher dropdown">
<a type="button" data-toggle="dropdown">
<span>English</span>
<i class="fa fa-angle-up"></i>
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/doc_cn">中文</a></li>
<li><a href="/doc">English</a></li>
</ul>
</div>
<ul class="site-page-links">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="doc-module">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_cn.html">新手入门</a></li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_cn.html">进阶指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_cn.html">API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index_cn.html">FAQ</a></li>
</ul>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
</header>
<div class="main-content-wrap">
<nav class="doc-menu-vertical" role="navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_cn.html">新手入门</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getstarted/build_and_install/index_cn.html">安装与编译</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/docker_install_cn.html">PaddlePaddle的Docker容器使用方式</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/ubuntu_install_cn.html">Ubuntu部署PaddlePaddle</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/cmake/build_from_source_cn.html">PaddlePaddle的编译选项</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../getstarted/concepts/use_concepts_cn.html">基本使用概念</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_cn.html">进阶指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cmd_parameter/index_cn.html">设置命令行参数</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/use_case_cn.html">使用案例</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/arguments_cn.html">参数概述</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/detail_introduction_cn.html">细节描述</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cluster/cluster_train_cn.html">运行分布式训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_basis_cn.html">Kubernetes 简介</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_cn.html">Kubernetes单机训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_distributed_cn.html">Kubernetes分布式训练</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/write_docs_cn.html">如何贡献/修改文档</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/contribute_to_paddle_cn.html">如何贡献代码</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/deep_model/rnn/index_cn.html">RNN相关模型</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/rnn_config_cn.html">RNN配置</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/recurrent_group_cn.html">Recurrent Group教程</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/hierarchical_layer_cn.html">支持双层序列作为输入的Layer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/hrnn_rnn_api_compare_cn.html">单双层RNN API对比介绍</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/optimization/gpu_profiling_cn.html">GPU性能分析与调优</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_cn.html">API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/model_configs.html">模型配置</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/activation.html">Activation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/layer.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/evaluators.html">Evaluators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/pooling.html">Pooling</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/networks.html">Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/attr.html">Parameter Attribute</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/data.html">数据访问</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/run_logic.html">训练与应用</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index_cn.html">FAQ</a></li>
</ul>
</nav>
<section class="doc-content-wrap">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li>Interaction between C++ and Python</li>
</ul>
</div>
<div class="wy-nav-content" id="doc-content">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="interaction-between-c-and-python">
<span id="interaction-between-c-and-python"></span><h1>Interaction between C++ and Python<a class="headerlink" href="#interaction-between-c-and-python" title="永久链接至标题"></a></h1>
<p>Users employ API in Python to describe their own network, however, the network construction actually happens in C++. so Protobuf is introduced to send the message between Python and C++.</p>
<p>The Interaction between Python and C++ can be simplified as two steps:</p>
<ol class="simple">
<li>C++ tells Python how many Ops there are, and what parameter do users need to offer to initialize a new Op. Python then builds API for each Op at compile time.</li>
<li>Users invoke APIs built by Python and provide necessary parameters. These parameters will be sent to C++ fo finish Op construction task.</li>
</ol>
<div class="section" id="message-form-c-to-python">
<span id="message-form-c-to-python"></span><h2>Message form C++ to Python<a class="headerlink" href="#message-form-c-to-python" title="永久链接至标题"></a></h2>
<p>We define a Protobuf message class <code class="docutils literal"><span class="pre">OpProto</span></code> to hold message needed in the first step. What should an <code class="docutils literal"><span class="pre">OpProto</span></code> contain? This question is equivalent to “What message do we need to offer, to build a Python API which is legal and user oriented and can use to describe a whole Op.”</p>
<p>Following message are necessary:</p>
<ol class="simple">
<li>Op&#8217;s name, and its simple comment.</li>
<li>Input and output variable number; each variable&#8217;s name, type, and comment.</li>
<li>Op&#8217;s attributes; each attribute includes name, type, comment, <strong>default value</strong> and <strong>value range</strong>.</li>
</ol>
<p>So <code class="docutils literal"><span class="pre">OpProto</span></code> can be defined as follows:</p>
<div class="highlight-proto"><div class="highlight"><pre><span></span><span class="kd">enum</span> <span class="n">AttrType</span> <span class="p">{</span>
<span class="na">INT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">FLOAT</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">STRING</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">INTS</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">FLOATS</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="na">STRINGS</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">AttrValue</span> <span class="p">{</span>
<span class="n">AttrType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">optional</span> <span class="n">int</span> <span class="na">iv</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">optional</span> <span class="kt">float</span> <span class="na">fv</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">optional</span> <span class="kt">string</span> <span class="na">sv</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">int</span> <span class="na">ivs</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">float</span> <span class="na">fvs</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">svs</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">AttrProto</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">required</span> <span class="n">AttrType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">VarProto</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">message</span> <span class="nc">OpProto</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">VarProto</span> <span class="na">inputs</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">VarProto</span> <span class="na">outputs</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">AttrProto</span> <span class="na">attrs</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">comment</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p>To generate Python code automatically:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span>def create_python_ops_creatation_functions():
op_protos = paddle.framework.OpRegistry.get_all_op_proto()
for type_name in op_protos:
op_proto = op_protos[type_name]
def __impl__(**kwargs): # User must use key word args in Paddle API
inputs = [kwargs.get(ipt.name, &quot;&quot;) for ipt in op_proto.inputs]
outputs = [kwargs.get(opt.name, &quot;&quot;) for opt in op_proto.outputs]
attrs = [cast_to_op_attr(attr, kwargs.get(attr.name, None)) for attr in op_proto.attrs]
opdesc = (input, outputs, type_name, attrs)
return paddle.framework.OpRegistry.CreateOp(opdesc)
__impl__.__doc__ = create_doc_string(op_proto)
globals()[type_name] = __impl__
create_python_ops_creatation_functions()
</pre></div>
</div>
</div>
<div class="section" id="message-from-python-to-c">
<span id="message-from-python-to-c"></span><h2>Message from Python to C++<a class="headerlink" href="#message-from-python-to-c" title="永久链接至标题"></a></h2>
<p>To hold message needed in the above second step, we define Protobuf message class <code class="docutils literal"><span class="pre">OpDesc</span></code>. It is used to hold user-specified parameters in Op describing.</p>
<div class="highlight-proto"><div class="highlight"><pre><span></span><span class="kd">message</span> <span class="nc">OpDesc</span> <span class="p">{</span>
<span class="k">required</span> <span class="kt">string</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">inputs</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">outputs</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">map</span><span class="p">&lt;</span><span class="kt">string</span><span class="p">,</span> <span class="n">AttrValue</span><span class="p">&gt;</span> <span class="na">attrs</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="opproto-register">
<span id="opproto-register"></span><h1>OpProto Register<a class="headerlink" href="#opproto-register" title="永久链接至标题"></a></h1>
<p>Every Op has its own <code class="docutils literal"><span class="pre">OpProto</span></code>. For using convenience, we need to register them and record all their messages. For each <code class="docutils literal"><span class="pre">Op</span></code> class, we define a corresponding <code class="docutils literal"><span class="pre">OpMaker</span></code> class, in whose constructor we implement the <code class="docutils literal"><span class="pre">OpProto</span></code>&#8216;s building process. <code class="docutils literal"><span class="pre">OpMaker</span></code>&#8216;s constructor will be invoked by another function <code class="docutils literal"><span class="pre">OpRegistry::RegisterOp()</span></code>.</p>
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">OpProtoMaker</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="n">OpProtoMaker</span><span class="p">(</span><span class="n">OpProto</span><span class="o">*</span> <span class="n">proto</span><span class="p">)</span><span class="o">:</span> <span class="n">proto_</span><span class="p">(</span><span class="n">proto</span><span class="p">)</span> <span class="p">{}</span>
<span class="k">protected</span><span class="o">:</span>
<span class="n">OpProto</span><span class="o">*</span> <span class="n">proto_</span><span class="p">;</span>
<span class="kt">void</span> <span class="nf">AddInput</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span> <span class="p">{...}</span>
<span class="kt">void</span> <span class="nf">AddAttr</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">,</span> <span class="n">TypeId</span> <span class="n">type</span><span class="p">)</span> <span class="p">{...}</span>
<span class="kt">void</span> <span class="nf">AddComment</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">comment</span><span class="p">)</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span>
<span class="p">};</span>
<span class="k">class</span> <span class="nc">OpRegistry</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="k">using</span> <span class="n">OpCreator</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o">&lt;</span><span class="n">OperatorBase</span><span class="o">*</span> <span class="p">(</span><span class="n">OpDesc</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span><span class="o">&gt;</span><span class="p">;</span>
<span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">OpType</span><span class="p">,</span> <span class="k">typename</span> <span class="n">OpMaker</span><span class="o">&gt;</span>
<span class="k">static</span> <span class="kt">void</span> <span class="n">RegisterOp</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">)</span> <span class="p">{</span>
<span class="n">gCreators_</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[](</span><span class="k">const</span> <span class="n">OpDesc</span><span class="o">&amp;</span> <span class="n">desc</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="n">OpType</span><span class="p">(</span><span class="n">desc</span><span class="p">);</span>
<span class="p">};</span>
<span class="n">OpProto</span><span class="o">&amp;</span> <span class="n">opProto</span> <span class="o">=</span> <span class="n">gProtos_</span><span class="p">[</span><span class="n">name</span><span class="p">];</span>
<span class="n">OpMaker</span><span class="p">()(</span><span class="o">&amp;</span><span class="n">opProto</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">static</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span> <span class="n">OpCreator</span><span class="o">&gt;</span> <span class="n">gCreators_</span><span class="p">;</span>
<span class="k">static</span> <span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span> <span class="n">OpProto</span><span class="o">&gt;</span> <span class="n">gProtos_</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">OpType</span><span class="p">,</span> <span class="k">typename</span> <span class="n">OpMaker</span><span class="o">&gt;</span>
<span class="k">class</span> <span class="nc">OpRegister</span> <span class="p">{</span>
<span class="k">public</span><span class="o">:</span>
<span class="n">OpRegister</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">type</span><span class="p">)</span> <span class="p">{</span>
<span class="n">OpRegistry</span><span class="o">::</span><span class="n">RegisterOp</span><span class="o">&lt;</span><span class="n">OpType</span><span class="p">,</span> <span class="n">OpMaker</span><span class="o">&gt;</span><span class="p">(</span><span class="n">type</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="cp">#define REGISTER_OP(op_class, op_maker_class, type_name) \</span>
<span class="cp"> class op_class##Register { \</span>
<span class="cp"> private: \</span>
<span class="cp"> const static OpRegister&lt;#op_class, #op_maker_class&gt; reg; \</span>
<span class="cp"> }; \</span>
<span class="cp"> const Register op_class##Register::reg(#type_name);</span>
<span class="k">class</span> <span class="nc">CosineOp</span> <span class="p">{</span>
<span class="c1">// ...</span>
<span class="p">}</span>
<span class="k">struct</span> <span class="nl">CosineOpProtoMaker</span> <span class="p">:</span> <span class="k">public</span> <span class="n">OpProtoMaker</span> <span class="p">{</span>
<span class="n">CosineOpProtoMaker</span><span class="p">(</span><span class="n">OpProto</span><span class="o">*</span> <span class="n">proto</span><span class="p">)</span> <span class="o">:</span> <span class="n">OpProtoMaker</span><span class="p">(</span><span class="n">proto</span><span class="p">)</span> <span class="p">{</span>
<span class="n">AddInput</span><span class="p">(</span><span class="s">&quot;input&quot;</span><span class="p">,</span> <span class="s">&quot;input of cosine op&quot;</span><span class="p">);</span>
<span class="n">AddAttr</span><span class="p">(</span><span class="s">&quot;scale&quot;</span><span class="p">,</span> <span class="s">&quot;scale of cosine op&quot;</span><span class="p">,</span> <span class="kt">float</span><span class="p">).</span><span class="n">Default</span><span class="p">(</span><span class="mf">1.0</span><span class="p">).</span><span class="n">LargerThan</span><span class="p">(</span><span class="mf">0.0</span><span class="p">);</span>
<span class="n">AddType</span><span class="p">(</span><span class="s">&quot;cos&quot;</span><span class="p">);</span>
<span class="n">AddComment</span><span class="p">(</span><span class="s">&quot;This is cos op&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">REGISTER_OP</span><span class="p">(</span><span class="n">CosineOp</span><span class="p">,</span> <span class="n">CosineOpProtoMaker</span><span class="p">,</span> <span class="n">cos</span><span class="p">);</span>
</pre></div>
</div>
<p>In <code class="docutils literal"><span class="pre">REGISTER_OP(CosineOp,</span> <span class="pre">CosineOpProtoMaker,</span> <span class="pre">cos)</span></code>, we register not only <code class="docutils literal"><span class="pre">CosineOp</span></code> but also <code class="docutils literal"><span class="pre">CosineOpProto</span></code>. As fields of <code class="docutils literal"><span class="pre">CosineOpProto</span></code>, the default value and value range of <code class="docutils literal"><span class="pre">scale</span></code> are also registered here.</p>
</div>
<div class="section" id="python-api">
<span id="python-api"></span><h1>Python API<a class="headerlink" href="#python-api" title="永久链接至标题"></a></h1>
<p>Python APIs are divided into two types, high-level API and low-level API.</p>
<div class="section" id="high-level-api">
<span id="high-level-api"></span><h2>High-Level API<a class="headerlink" href="#high-level-api" title="永久链接至标题"></a></h2>
<p>High-level API is called by users directly, so it should keep its style consistent with existing V2 APIs.</p>
<p>Here is a sample about how a define a fc layer:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">hd</span> <span class="o">=</span> <span class="n">fc_layer</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">56</span><span class="p">,</span> <span class="n">with_bias</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">);</span>
</pre></div>
</div>
<p><code class="docutils literal"><span class="pre">hd</span></code> is the output of <code class="docutils literal"><span class="pre">fc_layer</span></code> and it&#8217;s a <code class="docutils literal"><span class="pre">variable</span></code>. It can be further sent into other layers as input.</p>
<p>The definition of <code class="docutils literal"><span class="pre">fc_layer()</span></code>:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">fc_layer</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">with_bias</span><span class="p">,</span> <span class="n">activation</span><span class="p">):</span>
<span class="n">attr_map</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="n">size</span><span class="p">}</span>
<span class="n">check_attrs</span><span class="p">(</span><span class="n">attr_map</span><span class="p">)</span>
<span class="n">w</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">with_bias</span><span class="p">:</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;b&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">b</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">fc_output</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;fc_output&#39;</span><span class="p">);</span>
<span class="n">fc_op</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">fc_output</span><span class="p">,</span> <span class="n">attr_map</span><span class="p">)</span>
<span class="n">act_output</span> <span class="o">=</span> <span class="n">make_variable</span><span class="p">(</span><span class="s1">&#39;sigmod_output&#39;</span><span class="p">);</span>
<span class="k">if</span> <span class="n">activation</span> <span class="o">==</span> <span class="s2">&quot;sigmod&quot;</span><span class="p">:</span>
<span class="n">sigmod_op</span><span class="p">(</span><span class="n">fc_output</span><span class="p">,</span> <span class="n">act_output</span><span class="p">);</span>
<span class="k">elif</span><span class="p">:</span>
<span class="c1"># ...</span>
<span class="k">return</span> <span class="n">act_output</span><span class="p">;</span>
</pre></div>
</div>
</div>
<div class="section" id="low-leval-api">
<span id="low-leval-api"></span><h2>Low Leval API<a class="headerlink" href="#low-leval-api" title="永久链接至标题"></a></h2>
<p>In above sample, <code class="docutils literal"><span class="pre">fc_op</span></code> and <code class="docutils literal"><span class="pre">sigmod_op</span></code> are low-level API. They build <code class="docutils literal"><span class="pre">OpDesc</span></code> and invoke corresponding C++ code.</p>
<p><em>TODO</em></p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, PaddlePaddle developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ".txt",
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/translations.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/mathjax/2.7.0/MathJax.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/js/perfect-scrollbar.jquery.min.js"></script>
<script src="../_static/js/paddle_doc_init.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -413,7 +413,7 @@ trainer.train<span class="o">(</span>
<span class="c1"># define training dataset reader</span>
<span class="k">def</span> <span class="nf">train_reader</span><span class="p">():</span>
<span class="n">train_x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">2</span><span class="p">]])</span>
<span class="n">train_y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">7</span><span class="p">,</span> <span class="o">-</span><span class="mi">7</span><span class="p">])</span>
<span class="n">train_y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">7</span><span class="p">]])</span>
<span class="k">def</span> <span class="nf">reader</span><span class="p">():</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">xrange</span><span class="p">(</span><span class="n">train_y</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
.ai-ecology {
display: -webkit-box;
display: -webkit-flex;
display: flex;
}
.ai-ecology-item {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
position: relative;
padding-bottom: 50%;
}
.ai-ecology-main {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.ai-ecology-main-paddle {
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.ai-ecology-title,
.ai-ecology-intro {
text-align: center;
color: #fff;
}
.ai-ecology-title {
margin-bottom: .5rem;
padding: 0.2rem;
line-height: 1;
font-size: 1.7rem;
}
.ai-ecology-title-paddle {
font-size: 2rem;
}
.ai-ecology-intro {
line-height: 1;
font-size: 1rem;
color: #ccc;
letter-spacing: 1px;
}
.ai-ecology-intro-paddle {
font-size: 1rem;
color: #fff;
margin-bottom: 1.5rem;
}
.ai-ecology-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(35, 35, 35, 0.75);
}
.ai-ecology-mask-paddle {
background: #000000;
opacity: 0.4;
}
.ai-ecology-icon {
width: 3.75rem;
height: 3.75rem;
margin: 25% auto .875rem;
background-size: contain;
}
.ai-ecology-btn {
display: inline-block;
font-size: 1.2rem;
color: #fff;
line-height: 3rem;
background: rgba(0, 0, 0, 0.5);
border: 1px solid #fff;
border-radius: 100px;
}
.ai-ecology-btn-content {
margin: 0 1rem;
}
.ai-ecology-btn-icon {
width: 1.2rem;
height: 1.2rem;
}
.ai-ecology {
display: -webkit-box;
display: -webkit-flex;
display: flex;
}
.ai-ecology-item {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
position: relative;
padding-bottom: 50%;
}
.ai-ecology-main {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.ai-ecology-main-paddle {
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.ai-ecology-title,
.ai-ecology-intro {
text-align: center;
color: #fff;
}
.ai-ecology-title {
margin-bottom: .5rem;
padding: 0.2rem;
line-height: 1;
font-size: 1.7rem;
}
.ai-ecology-title-paddle {
font-size: 2rem;
}
.ai-ecology-intro {
line-height: 1;
font-size: 1rem;
color: #ccc;
letter-spacing: 1px;
}
.ai-ecology-intro-paddle {
font-size: 1rem;
color: #fff;
margin-bottom: 1.5rem;
}
.ai-ecology-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(35, 35, 35, 0.75);
}
.ai-ecology-mask-paddle {
background: #000000;
opacity: 0.4;
}
.ai-ecology-icon {
width: 3.75rem;
height: 3.75rem;
margin: 25% auto .875rem;
background-size: contain;
}
.ai-ecology-btn {
display: inline-block;
font-size: 1.2rem;
color: #fff;
line-height: 3rem;
background: rgba(0, 0, 0, 0.5);
border: 1px solid #fff;
border-radius: 100px;
}
.ai-ecology-btn-content {
margin: 0 1rem;
}
.ai-ecology-btn-icon {
width: 1.2rem;
height: 1.2rem;
}
@font-face {
font-family: 'icomoon';
src: url(fonts/icomoon.eot);
src: url(fonts/icomoon.eot#iefix) format('embedded-opentype'), url(fonts/icomoon.ttf) format('truetype'), url(fonts/icomoon.woff) format('woff'), url(fonts/icomoon.svg#icomoon) format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"],
[class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-correct:before {
content: "\E901";
}
.icon-down-arrow:before {
content: "\E900";
}
.icon-menu:before {
content: "\E9BD";
}
.icon-checkmark:before {
content: "\EA10";
}
html,
body {
height: 100%;
margin: 0;
font-size: 12px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow: hidden;
font-family: tahoma, arial, "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
@media (max-width: 374px) {
html,
body {
font-size: 9px;
}
}
a {
text-decoration: none;
}
.ai-top-nav {
position: relative;
height: 50px;
line-height: 50px;
background-color: #000;
padding: 0 1.04rem;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
.ai-top-nav-logo {
max-width: 10.54rem;
max-height: 1.5rem;
}
.ai-top-nav-menu {
position: absolute;
right: 1.04rem;
top: 50%;
width: 28px;
height: 50%;
background-size: 50%;
background-position: center;
background-repeat: no-repeat;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAO5JREFUaAXt2D0OgkAQhmGWmut4ChDv6s8ldK3xHtqIxfptS0GycRJmzUsyAUKYfPtMN03DhQAC7gRSSr3qpnqr/uGadYioGjN20EOv+9mdvF2gMR/yqn47u57uOsV8yKdide6i2QV6ter1sOvnstOUJ7lXtKPLeDahhjaEcFKvg+qu+tj03bzLrARRNeh8l83TEAABBBBAAAEEEEAAAQQWAnkFomLHs3Cp6ZUdT03TWsvKjmdNp6Zv7HhqmhZZEUAAAQQQQAABBBBAAAFvAmzrvE2kPA/bunIzn3+wrfM5l/JUbOvKzfgDAQR+FfgCtgrYzmLEak8AAAAASUVORK5CYII=);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.ai-top-nav-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 4;
background-color: rgba(0, 0, 0, 0.8);
}
.ai-app {
position: relative;
height: 100%;
overflow: hidden;
}
.ai-main {
position: absolute;
top: 50px;
bottom: 0;
left: 0;
right: 0;
padding: 0 1.06rem;
overflow: auto;
-webkit-overflow-scrolling: touch;
}
.ai-main .mint-swipe {
margin: 0 -1.06rem;
}
.ai-slide-nav {
position: absolute;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
flex-direction: column;
top: 0;
bottom: 0;
right: 0;
width: 70%;
padding-left: 1.25rem;
background: rgba(30, 30, 30, 0.9) url(data:image/png;base64,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) top left;
background-size: 100%;
background-repeat: no-repeat;
-webkit-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition: .2s transform linear;
transition: .2s transform linear;
z-index: 5;
overflow: hidden;
}
.ai-slide-nav-visible {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.ai-slide-nav-content {
width: 100%;
overflow: auto;
-webkit-transition: .2s all linear;
transition: .2s all linear;
-webkit-overflow-scrolling: touch;
height: 0;
-webkit-box-flex: 0;
-webkit-flex: 0;
flex: 0;
}
.ai-slide-nav-content-active {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
}
.ai-slide-nav-top-border {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background-color: rgba(255, 255, 255, 0.3);
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.ai-slide-nav-title {
position: relative;
box-sizing: border-box;
width: 100%;
height: 4.1875rem;
line-height: 4.1875rem;
font-size: 1.5rem;
color: #fff;
}
.ai-slide-nav-title:before {
content: "";
position: absolute;
left: 0;
right: 0;
height: 1px;
background-color: rgba(255, 255, 255, 0.3);
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.ai-slide-nav-title:before {
bottom: 0;
}
.ai-slide-nav-title:after {
top: 0;
}
.ai-slide-nav-title:first-child:after {
display: none;
}
.ai-slide-nav-title.top-shadow:after {
display: block;
content: '';
position: absolute;
top: -3.5rem;
left: -1.2rem;
right: 0;
height: 3.5rem;
z-index: 9;
background-image: -webkit-linear-gradient(top, rgba(27, 27, 27, 0) 0%, #1b1b1b 99%);
background-image: linear-gradient(-180deg, rgba(27, 27, 27, 0) 0%, #1b1b1b 99%);
}
.ai-slide-nav-title-icon:after {
position: absolute;
content: "\E900";
right: 1.25rem;
color: #7e7e7e;
font-family: 'icomoon';
font-size: 1.2rem;
-webkit-transition: .2s transform linear;
transition: .2s transform linear;
-webkit-transform: rotate(0);
transform: rotate(0);
}
.ai-slide-nav-title-icon-active:after {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.ai-slide-nav-item {
padding: .9375rem 0 .9375rem 1.25rem;
font-size: 1.3rem;
color: #fff;
}
.ai-footer {
margin: 0 -1.06rem;
height: 4rem;
line-height: 4rem;
text-align: center;
background-color: #1e1e1e;
color: #747474;
}
.ai-top-nav {
position: relative;
height: 50px;
line-height: 50px;
background-color: #000;
padding: 0 1.04rem;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
.ai-top-nav-title {
color: #fff;
}
.ai-top-nav-logo {
max-width: 10.54rem;
max-height: 1.5rem;
margin: 0 .4rem;
}
.ai-top-nav-item {
color: #fff;
position: absolute;
right: 1.04rem;
margin: 0 .4rem;
}
.ai-top-nav-item a {
color: #fff;
}
.ai-top-nav-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 4;
background-color: rgba(0, 0, 0, 0.8);
}
.ai-heading {
box-sizing: border-box;
width: 100%;
padding: 3.77rem 0 1.3125rem;
font-size: 1.7rem;
line-height: 1;
letter-spacing: .2rem;
text-align: center;
font-weight: bold;
color: #333;
}
.ai-heading-paddle {
font-size: 1.3rem;
}
.ai-head-more {
box-sizing: border-box;
width: 100%;
padding: 3.77rem 0 1.3125rem;
line-height: 1;
letter-spacing: .0rem;
text-align: center;
font-family: PingFangSC-Regular;
}
.ai-head-more-heading {
/*font-size: 1.5rem;*/
font-size: 1.6875rem;
margin-bottom: .5rem;
}
.ai-head-more-intro {
/*font-size: 1.0rem;*/
font-size: 1.1818rem;
color: #999999;
}
.ai-head-more-more {
font-size: 1.0rem;
color: #006FEF;
}
.ai-head-poster {
position: relative;
display: -webkit-box;
display: -webkit-flex;
display: flex;
margin: 0 -1.06rem;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
flex-direction: column;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
text-align: center;
background-size: contain;
background-position: center;
}
.ai-head-poster-button-container {
display: inline-block;
margin-top: 1.25rem;
}
.ai-head-poster-bg {
width: 100%;
max-height: 25rem;
vertical-align: top;
}
.ai-head-poster-mask {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.4);
}
.ai-head-poster-content {
position: absolute;
width: 100%;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
text-align: center;
}
.ai-head-poster-heading {
padding-bottom: 1rem;
text-align: center;
color: #fff;
line-height: 1.3;
font-size: 2rem;
}
.ai-head-poster-intro {
text-align: center;
font-size: 1rem;
color: #fff;
padding-bottom: 1.5rem;
}
ai-ecology-btn {
display: inline-block;
border: 1px solid;
border-radius: 100px;
}
ai-ecology-btn-content {
margin: 0 1rem;
}
ai-ecology-btn-icon {
width: 1.2rem;
height: 1.2rem;
}
.ai-application {
border-top: 1px solid #E1E1E1;
text-align: center;
}
.ai-application img {
max-width: 100%;
}
.ai-application-item {
box-sizing: border-box;
width: 100%;
padding: 1.3125rem 0 1.3125rem;
line-height: 1;
letter-spacing: .0rem;
text-align: center;
border-bottom: 1px solid #E1E1E1;
}
.ai-application-item-heading {
/*font-size: 1.2rem;*/
font-size: 1.3714rem;
margin-bottom: .5rem;
}
.ai-application-item-wrap {
position: relative;
height: 4rem;
}
.ai-application-item-intro {
font-size: 1.0rem;
color: #999999;
font-family: PingFangSC-Regular;
width: 100%;
line-height: 1.2rem;
/*height: 4rem;
display: flex;
align-items: center;
text-align: center;*/
position: absolute;
margin: 0 auto;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.ai-application-item-more {
/*font-size: 1.1rem;*/
font-size: 1.155rem;
color: #006FEF;
}
.ai-advantage {
position: relative;
margin: 0 -0.3125rem;
background-color: #fff;
}
.ai-advantage:after {
content: "020";
visibility: hidden;
clear: both;
}
.ai-advantage-wrap {
display: inline-block;
box-sizing: border-box;
width: 50%;
padding: 0.3125rem 0.3125rem;
float: left;
}
.ai-advantage-item {
position: relative;
color: #fff;
background: #F6F6F6;
text-align: center;
}
.ai-advantage-item img {
max-width: 30%;
margin: 1rem auto;
}
.ai-advantage-item-name {
font-size: 1.6rem;
color: #333333;
}
.ai-advantage-item-desc {
font-size: 1.0rem;
color: #999999;
margin-left: 1.2rem;
margin-right: 1.2rem;
height: 8rem;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
font-family: PingFangSC-Regular;
}
.ai-advantage-collapse-btn {
width: 100%;
height: 3.375rem;
line-height: 3.375rem;
color: #333;
font-size: .875rem;
text-align: center;
}
.ai-advantage-collapse-icon {
font-size: 1rem;
font-weight: 500;
color: #999;
margin-left: 0.625rem;
vertical-align: middle;
}
.ai-solution {
position: relative;
margin: 0 -0.3125rem;
background-color: #fff;
}
.ai-solution:before {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 1px;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
background-color: #e1e1e1;
}
.ai-solution-wrap {
display: inline-block;
box-sizing: border-box;
width: 50%;
padding: 0.3125rem 0.3125rem;
color: #fff;
}
.ai-solution-wrap img {
max-width: 100%;
vertical-align: top;
}
.ai-solution-item {
position: relative;
}
.ai-solution-item-overlay {
display: -webkit-box;
display: -webkit-flex;
display: flex;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.5);
font-size: 1.3333rem;
}
.ai-solution-collapse-btn {
width: 100%;
height: 3.375rem;
line-height: 3.375rem;
color: #333;
font-size: 1.1666rem;
text-align: center;
}
.ai-solution-collapse-icon {
font-size: 1rem;
font-weight: 500;
color: #999;
margin-left: 0.625rem;
vertical-align: middle;
}
.ai-news-item {
position: relative;
padding: 1.125rem 0;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
.ai-news-item:before {
content: '';
position: absolute;
left: 0;
right: 0;
height: 1px;
background-color: #e1e1e1;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.ai-news-item:before {
bottom: 0;
}
.ai-news-poster {
width: 7.58rem;
height: 5.08rem;
margin-right: .5rem;
}
.ai-news-wrapper {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
height: 5.08rem;
}
.ai-news-title {
box-sizing: border-box;
height: 4.08rem;
padding-bottom: .4rem;
line-height: 2rem;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
color: #000;
font-size: 1.3rem;
}
.ai-news-date {
color: #999;
height: 1rem;
line-height: 1rem;
font-size: 1rem;
}
.ai-news-poster img {
width: 100%;
height: 100%;
}
.ai-first-news .ai-news-item:after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background-color: #e1e1e1;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="down-arrow" d="M72.546 638.514l59.459 59.458 384.424-384.422 387.842 387.824 59.459-59.461-447.301-447.285z" />
<glyph unicode="&#xe901;" glyph-name="correct" horiz-adv-x="1051" d="M100.585 561.15l195.508-197.741c0 0 70.080 123.383 210.13 267.131s334.299 329.46 334.299 329.46v-293.844c0 0-162.921-109.057-305.645-249.321s-219.682-276.035-219.682-276.035c0 0-3.677 4.232-66.86 71.235s-248.336 258.226-248.336 258.226z" />
<glyph unicode="&#xe9bd;" glyph-name="menu" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" />
<glyph unicode="&#xea10;" glyph-name="checkmark" d="M864 832l-480-480-224 224-160-160 384-384 640 640z" />
</font></defs></svg>
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PaddlePaddle</title>
<link rel="stylesheet" href="css/vendor.css">
<link rel="stylesheet" href="css/index.cn.css">
</head>
<body>
<script type="text/javascript">
function browserRedirect() {
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
} else {
window.location.href = 'http://www.paddlepaddle.org/index.html';
}
}
browserRedirect();
</script>
<div id="app" data-server-rendered="true" class="ai-app"><div class="ai-top-nav"><img src="images/home/LOGO.png" class="ai-top-nav-logo"> <span class="ai-top-nav-title">PaddlePaddle</span> <span class="ai-top-nav-item"><a href="index.html">English</a></span></div> <div class="ai-main"><div class="ai-head-poster"><div class="ai-head-poster-mask"></div> <img src="images/home/header-bg-1.png" alt="" class="ai-head-poster-bg"> <div class="ai-head-poster-content"><div class="ai-head-poster-heading">易学易用的分布式深度学习平台</div> <div class="ai-head-poster-intro">正在为100+项产品提供深度学习算法支持</div> <div style="text-align:center;margin-bottom:1.8rem;"><a href="https://github.com/PaddlePaddle/Paddle"><div class="ai-ecology-btn" style="text-align:center;font-size:1.2rem;color:#fff;line-height:3rem;background:rgba(0,0,0,0.50);border-color:#fff;"><div class="ai-ecology-btn-content"><img src="images/home/githublogo.png" class="ai-ecology-btn-icon">
Fork me on Github
</div></div></a></div></div></div> <div class="ai-head-more"><div class="ai-head-more-heading">丰富的算法服务</div> <div class="ai-head-more-intro">易用、高效、灵活、扩展性好</div> <!----></div> <div class="ai-application"><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-01.png"> <div class="ai-application-item-heading">机器视觉</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">卷积神经网络可以识别图像中的主要对象,并输出分类结果</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/03.image_classification/index.cn.html">查看更多 &gt;</a></div></div></div><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-02.png"> <div class="ai-application-item-heading">自然语言理解</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">利用LSTM网络从IMDB电影评论的中分析出评论者情绪的正面和负面</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/06.understand_sentiment/index.cn.html">查看更多 &gt;</a></div></div></div><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-03.png"> <div class="ai-application-item-heading">搜索引擎排序</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">分析用户特征、电影特征、点评分数,预测新用户对不同电影的点评分数</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/05.recommender_system/index.cn.html">查看更多 &gt;</a></div></div></div></div> <div class="ai-advantage"><div class="ai-head-more"><div class="ai-head-more-heading">Technology and Service Anvantages</div> <div class="ai-head-more-intro"></div> <!----></div> <div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-01.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
易用性
</div> <div class="ai-advantage-item-desc">
为用户提供了直观、灵活的数据接口和模型配置接口
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-02.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
灵活性
</div> <div class="ai-advantage-item-desc">
支持CNN、RNN等多种神经网络结构和优化算法。简单书写配置文件即可实现复杂模型
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-03.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
高效性
</div> <div class="ai-advantage-item-desc">
在计算、存储、通信、架构等方面都做了高效优化,充分发挥各种资源的性能
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-04.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
扩展性
</div> <div class="ai-advantage-item-desc">
全面支持多核、多GPU、多机环境。轻松应对大规模数据训练需求
</div></div></div> <div class="ai-solution-collapse-btn" style="display:none;">
展开全部
<span class="ai-solution-collapse-icon icon-down-arrow"></span></div></div> <div class="ai-head-more"><div class="ai-head-more-heading">现在开始使用PaddlePaddle</div> <div class="ai-head-more-intro">易学易用的分布式深度学习平台</div> <!----></div> <div style="text-align:center;margin-bottom:1.8rem;"><a href="https://github.com/PaddlePaddle/Paddle"><div class="ai-ecology-btn" style="text-align:center;font-size:1.2rem;color:#fff;line-height:3rem;background:#006FEF;"><div class="ai-ecology-btn-content"><img src="images/home/githublogo.png" class="ai-ecology-btn-icon">
Fork me on Github
</div></div></a></div> <div class="ai-footer">©2017 Baidu 使用必读</div></div></div>
<script src="js/vendor.js"></script>
<script src="js/index.cn.js"></script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PaddlePaddle</title>
<link rel="stylesheet" href="css/vendor.css">
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<script type="text/javascript">
function browserRedirect() {
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
} else {
window.location.href = 'http://www.paddlepaddle.org/index.html';
}
}
browserRedirect();
</script>
<div id="app" data-server-rendered="true" class="ai-app"><div class="ai-top-nav"><img src="images/home/LOGO.png" class="ai-top-nav-logo"> <span class="ai-top-nav-title">PaddlePaddle</span> <span class="ai-top-nav-item"><a href="index.cn.html">中文版</a></span></div> <div class="ai-main"><div class="ai-head-poster"><div class="ai-head-poster-mask"></div> <img src="images/home/header-bg-1.png" alt="" class="ai-head-poster-bg"> <div class="ai-head-poster-content"><div class="ai-head-poster-heading">Easy to Learn and Use Distributed Deep Learning Platform</div> <div class="ai-head-poster-intro">Providing deep learning algorithms for 100+ products</div> <div style="text-align:center;margin-bottom:1.8rem;"><a href="https://github.com/PaddlePaddle/Paddle"><div class="ai-ecology-btn" style="text-align:center;font-size:1.2rem;color:#fff;line-height:3rem;background:rgba(0,0,0,0.50);border-color:#fff;"><div class="ai-ecology-btn-content"><img src="images/home/githublogo.png" class="ai-ecology-btn-icon">
Fork me on Github
</div></div></a></div></div></div> <div class="ai-head-more"><div class="ai-head-more-heading">Extensive Algorithmic Service</div> <div class="ai-head-more-intro">Easy to use, efficient, flexible, and scalable</div> <!----></div> <div class="ai-application"><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-01.png"> <div class="ai-application-item-heading">Mechine Vision</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">The convoluted neural network can identify the main object in the image and output the classification result</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/03.image_classification/index.html">Read more &gt;</a></div></div></div><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-02.png"> <div class="ai-application-item-heading">Natural Language Understanding</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">Using the LSTM network to analyze the positive and negative aspects of the commenter&#x27;s emotions from IMDB film review</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/06.understand_sentiment/index.html">Read more &gt;</a></div></div></div><div class="ai-application-wrap"><div class="ai-application-item"><img src="images/home/paddle-use-03.png"> <div class="ai-application-item-heading">Search Engine Ranking</div> <div class="ai-application-item-wrap"><div class="ai-application-item-intro">Analyze user characteristics, movie features, rating scores, predict new users&#x27; ratings for different movies</div></div> <div class="ai-application-item-more"><a href="http://book.paddlepaddle.org/05.recommender_system/index.html">Read more &gt;</a></div></div></div></div> <div class="ai-advantage"><div class="ai-head-more"><div class="ai-head-more-heading">Technology and Service Anvantages</div> <div class="ai-head-more-intro"></div> <!----></div> <div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-01.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
Ease of use
</div> <div class="ai-advantage-item-desc">
Provids an intuitive and flexible interface for loading data and specifying model structure.
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-02.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
Flexibility
</div> <div class="ai-advantage-item-desc">
Supports CNN, RNN and other neural network. Easy to configure complex models.
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-03.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
Efficiency
</div> <div class="ai-advantage-item-desc">
Efficient optimization of computing, memory, communications and architecture.
</div></div></div><div class="ai-advantage-wrap"><div class="ai-advantage-item"><img src="images/home/TASA-ICON-04.png" class="ai-advantage-item-img"> <div class="ai-advantage-item-name">
Scalability
</div> <div class="ai-advantage-item-desc">
Easy to use many CPUs/GPUs and machines to speed up your training and handle large-scale data easily.
</div></div></div> <div class="ai-solution-collapse-btn" style="display:none;">
展开全部
<span class="ai-solution-collapse-icon icon-down-arrow"></span></div></div> <div class="ai-head-more"><div class="ai-head-more-heading">Start Using PaddlePaddle</div> <div class="ai-head-more-intro">Just go to www.paddlepaddle.org on computer</div> <!----></div> <div style="text-align:center;margin-bottom:1.8rem;"><a href="https://github.com/PaddlePaddle/Paddle"><div class="ai-ecology-btn" style="text-align:center;font-size:1.2rem;color:#fff;line-height:3rem;background:#006FEF;"><div class="ai-ecology-btn-content"><img src="images/home/githublogo.png" class="ai-ecology-btn-icon">
Fork me on Github
</div></div></a></div> <div class="ai-footer">©2017 Baidu 使用必读</div></div></div>
<script src="js/vendor.js"></script>
<script src="js/index.js"></script>
</body>
</html>
webpackJsonp([0],{139:function(e,t,n){function o(e){a||n(342)}var a=!1,r=n(18)(n(151),n(357),o,null,null);r.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/page/indexCN.vue",r.esModule&&Object.keys(r.esModule).some(function(e){return"default"!==e&&"__"!==e.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),r.options.functional&&console.error("[vue-loader] indexCN.vue: functional components are not supported with templates, they should use render functions."),e.exports=r.exports},151:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(131),r=o(a),i=n(130),d=o(i),s=n(132),l=o(s),u=n(92),p=o(u),c=n(91),f=o(c),g=n(135),m=o(g),h=n(134),v=o(h),b=n(133),y=o(b),_=n(90),x=o(_),S=n(137),w=o(S),M=n(136),k=o(M),B=n(126),N=n(89);t.default={components:{app:l.default,heading:p.default,headMore:f.default,headPoster:m.default,application:v.default,advantage:y.default,gitButton:x.default,solution:w.default,newsItem:k.default,swipe:r.default,"swipe-item":d.default},data:function(){return{topNav:{item:"English",link:"index.html"},poster:{heading:"易学易用的分布式深度学习平台",intro:"正在为100+项产品提供深度学习算法支持",posterBg:B},headMore0:{heading:"丰富的算法服务",intro:"易用、高效、灵活、扩展性好"},headMore1:{heading:"现在开始使用PaddlePaddle",intro:"易学易用的分布式深度学习平台"},gitButton:{align:"center",margin:1.8,text:"Fork me on Github",imgSrc:N,styleObject:{textAlign:"center",fontSize:"1.2rem",color:"#fff",lineHeight:"3rem",background:"#006FEF"}},moreShowText:"查看更多 >",applications:[{imgSrc:n(127),heading:"机器视觉",intro:"卷积神经网络可以识别图像中的主要对象,并输出分类结果",link:"http://book.paddlepaddle.org/03.image_classification/index.cn.html"},{imgSrc:n(128),heading:"自然语言理解",intro:"利用LSTM网络从IMDB电影评论的中分析出评论者情绪的正面和负面",link:"http://book.paddlepaddle.org/06.understand_sentiment/index.cn.html"},{imgSrc:n(129),heading:"搜索引擎排序",intro:"分析用户特征、电影特征、点评分数,预测新用户对不同电影的点评分数",link:"http://book.paddlepaddle.org/05.recommender_system/index.cn.html"}],advantages:[{src:n(122),name:"易用性",desc:"为用户提供了直观、灵活的数据接口和模型配置接口"},{src:n(123),name:"灵活性",desc:"支持CNN、RNN等多种神经网络结构和优化算法。简单书写配置文件即可实现复杂模型"},{src:n(124),name:"高效性",desc:"在计算、存储、通信、架构等方面都做了高效优化,充分发挥各种资源的性能"},{src:n(125),name:"扩展性",desc:"全面支持多核、多GPU、多机环境。轻松应对大规模数据训练需求"}],swipeSrc:B,gitSrc:N,news:[]}}}},152:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};n(47);var r=n(41),i=o(r),d=n(62),s=o(d),l=n(139),u=o(l);i.default.use(s.default);var p=new i.default(u.default);"object"===("undefined"==typeof window?"undefined":a(window))?p.$mount("#app"):void 0!==e&&e.exports&&(e.exports=p)},342:function(e,t){},357:function(e,t,n){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("app",{attrs:{topNavItem:e.topNav.item,topNavLink:e.topNav.link}},[n("head-poster",{attrs:{heading:e.poster.heading,intro:e.poster.intro,posterBg:e.poster.posterBg}}),e._v(" "),n("head-more",{attrs:{heading:e.headMore0.heading,intro:e.headMore0.intro}}),e._v(" "),n("application",{attrs:{applications:e.applications,moreShowText:e.moreShowText}}),e._v(" "),n("advantage",{attrs:{advantages:e.advantages}}),e._v(" "),n("head-more",{attrs:{heading:e.headMore1.heading,intro:e.headMore1.intro}}),e._v(" "),n("git-button",{attrs:{align:e.gitButton.align,margin:e.gitButton.margin,styleObject:e.gitButton.styleObject,imgSrc:e.gitButton.imgSrc,text:e.gitButton.text}})],1)},staticRenderFns:[]},e.exports.render._withStripped=!0}},[152]);
\ No newline at end of file
webpackJsonp([1],{138:function(e,t,n){function o(e){a||n(344)}var a=!1,i=n(18)(n(150),n(359),o,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/page/index.vue",i.esModule&&Object.keys(i.esModule).some(function(e){return"default"!==e&&"__"!==e.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] index.vue: functional components are not supported with templates, they should use render functions."),e.exports=i.exports},150:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var a=n(131),i=o(a),r=n(130),d=o(r),s=n(132),l=o(s),u=n(92),c=o(u),p=n(91),f=o(p),m=n(135),g=o(m),h=n(134),v=o(h),y=n(133),b=o(y),x=n(90),w=o(x),S=n(137),_=o(S),k=n(136),M=o(k),B=n(126),E=n(89);t.default={components:{app:l.default,heading:c.default,headMore:f.default,headPoster:g.default,application:v.default,advantage:b.default,gitButton:w.default,solution:_.default,newsItem:M.default,swipe:i.default,"swipe-item":d.default},data:function(){return{topNav:{item:"中文版",link:"index.cn.html"},poster:{heading:"Easy to Learn and Use Distributed Deep Learning Platform",intro:"Providing deep learning algorithms for 100+ products",posterBg:B},headMore0:{heading:"Extensive Algorithmic Service",intro:"Easy to use, efficient, flexible, and scalable"},headMore1:{heading:"Start Using PaddlePaddle",intro:"Just go to www.paddlepaddle.org on computer"},gitButton:{align:"center",margin:1.8,text:"Fork me on Github",imgSrc:E,styleObject:{textAlign:"center",fontSize:"1.2rem",color:"#fff",lineHeight:"3rem",background:"#006FEF"}},moreShowText:"Read more >",applications:[{imgSrc:n(127),heading:"Mechine Vision",intro:"The convoluted neural network can identify the main object in the image and output the classification result",link:"http://book.paddlepaddle.org/03.image_classification/index.html"},{imgSrc:n(128),heading:"Natural Language Understanding",intro:"Using the LSTM network to analyze the positive and negative aspects of the commenter's emotions from IMDB film review",link:"http://book.paddlepaddle.org/06.understand_sentiment/index.html"},{imgSrc:n(129),heading:"Search Engine Ranking",intro:"Analyze user characteristics, movie features, rating scores, predict new users' ratings for different movies",link:"http://book.paddlepaddle.org/05.recommender_system/index.html"}],advantages:[{src:n(122),name:"Ease of use",desc:"Provids an intuitive and flexible interface for loading data and specifying model structure."},{src:n(123),name:"Flexibility",desc:"Supports CNN, RNN and other neural network. Easy to configure complex models."},{src:n(124),name:"Efficiency",desc:"Efficient optimization of computing, memory, communications and architecture."},{src:n(125),name:"Scalability",desc:"Easy to use many CPUs/GPUs and machines to speed up your training and handle large-scale data easily."}],swipeSrc:B,gitSrc:E,news:[]}}}},153:function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};n(47);var i=n(41),r=o(i),d=n(62),s=o(d),l=n(138),u=o(l);r.default.use(s.default);var c=new r.default(u.default);"object"===("undefined"==typeof window?"undefined":a(window))?c.$mount("#app"):void 0!==e&&e.exports&&(e.exports=c)},344:function(e,t){},359:function(e,t,n){e.exports={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("app",{attrs:{topNavItem:e.topNav.item,topNavLink:e.topNav.link}},[n("head-poster",{attrs:{heading:e.poster.heading,intro:e.poster.intro,posterBg:e.poster.posterBg}}),e._v(" "),n("head-more",{attrs:{heading:e.headMore0.heading,intro:e.headMore0.intro}}),e._v(" "),n("application",{attrs:{applications:e.applications,moreShowText:e.moreShowText}}),e._v(" "),n("advantage",{attrs:{advantages:e.advantages}}),e._v(" "),n("head-more",{attrs:{heading:e.headMore1.heading,intro:e.headMore1.intro}}),e._v(" "),n("git-button",{attrs:{align:e.gitButton.align,margin:e.gitButton.margin,styleObject:e.gitButton.styleObject,imgSrc:e.gitButton.imgSrc,text:e.gitButton.text}})],1)},staticRenderFns:[]},e.exports.render._withStripped=!0}},[153]);
\ No newline at end of file
!function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,i,a){for(var s,u,c,f=0,l=[];f<r.length;f++)u=r[f],o[u]&&l.push(o[u][0]),o[u]=0;for(s in i)Object.prototype.hasOwnProperty.call(i,s)&&(t[s]=i[s]);for(n&&n(r,i,a);l.length;)l.shift()();if(a)for(f=0;f<a.length;f++)c=e(e.s=a[f]);return c};var r={},o={2:0};e.e=function(t){function n(){s.onerror=s.onload=null,clearTimeout(u);var e=o[t];0!==e&&(e&&e[1](new Error("Loading chunk "+t+" failed.")),o[t]=void 0)}var r=o[t];if(0===r)return new Promise(function(t){t()});if(r)return r[2];var i=new Promise(function(e,n){r=o[t]=[e,n]});r[2]=i;var a=document.getElementsByTagName("head")[0],s=document.createElement("script");s.type="text/javascript",s.charset="utf-8",s.async=!0,s.timeout=12e4,e.nc&&s.setAttribute("nonce",e.nc),s.src=e.p+"js/"+t+".js";var u=setTimeout(n,12e4);return s.onerror=s.onload=n,a.appendChild(s),i},e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e.oe=function(t){throw console.error(t),t},e(e.s=363)}([function(t,e,n){var r=n(2),o=n(25),i=n(12),a=n(13),s=n(26),u=function(t,e,n){var c,f,l,p,d=t&u.F,h=t&u.G,v=t&u.S,m=t&u.P,g=t&u.B,y=h?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,_=h?o:o[e]||(o[e]={}),b=_.prototype||(_.prototype={});h&&(n=e);for(c in n)f=!d&&y&&void 0!==y[c],l=(f?y:n)[c],p=g&&f?s(l,r):m&&"function"==typeof l?s(Function.call,l):l,y&&a(y,c,l,t&u.U),_[c]!=l&&i(_,c,p),m&&b[c]!=l&&(b[c]=l)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(60)("wks"),o=n(40),i=n(2).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},function(t,e,n){t.exports=!n(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(1),o=n(102),i=n(24),a=Object.defineProperty;e.f=n(6)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(31),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(20);t.exports=function(t){return Object(r(t))}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(7),o=n(30);t.exports=n(6)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(2),o=n(12),i=n(10),a=n(40)("src"),s=Function.toString,u=(""+s).split("toString");n(25).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(c&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(t,e,n){var r=n(0),o=n(3),i=n(20),a=/"/g,s=function(t,e,n,r){var o=String(i(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),s+">"+o+"</"+e+">"};t.exports=function(t,e){var n={};n[t]=e(s),r(r.P+r.F*o(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},function(t,e,n){var r=n(49),o=n(20);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(50),o=n(30),i=n(15),a=n(24),s=n(10),u=n(102),c=Object.getOwnPropertyDescriptor;e.f=n(6)?c:function(t,e){if(t=i(t),e=a(e,!0),u)try{return c(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(10),o=n(9),i=n(78)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e){t.exports=function(t,e,n,r,o){var i,a=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(i=t,a=t.default);var u="function"==typeof a?a.options:a;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns),r&&(u._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=c):n&&(c=n),c){var f=u.functional,l=f?u.render:u.beforeCreate;f?u.render=function(t,e){return c.call(e),l(t,e)}:u.beforeCreate=l?[].concat(l,c):[c]}return{esModule:i,exports:a,options:u}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(3);t.exports=function(t,e){return!!t&&r(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var r=n(26),o=n(49),i=n(9),a=n(8),s=n(156);t.exports=function(t,e){var n=1==t,u=2==t,c=3==t,f=4==t,l=6==t,p=5==t||l,d=e||s;return function(e,s,h){for(var v,m,g=i(e),y=o(g),_=r(s,h,3),b=a(y.length),x=0,w=n?d(e,b):u?d(e,0):void 0;b>x;x++)if((p||x in y)&&(v=y[x],m=_(v,x,g),t))if(n)w[x]=m;else if(m)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:w.push(v)}else if(f)return!1;return l?-1:c||f?f:w}}},function(t,e,n){var r=n(0),o=n(25),i=n(3);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(t,e,n){var r=n(4);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(11);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(118),o=n(0),i=n(60)("metadata"),a=i.store||(i.store=new(n(121))),s=function(t,e,n){var o=a.get(t);if(!o){if(!n)return;a.set(t,o=new r)}var i=o.get(e);if(!i){if(!n)return;o.set(e,i=new r)}return i},u=function(t,e,n){var r=s(e,n,!1);return void 0!==r&&r.has(t)},c=function(t,e,n){var r=s(e,n,!1);return void 0===r?void 0:r.get(t)},f=function(t,e,n,r){s(n,r,!0).set(t,e)},l=function(t,e){var n=s(t,e,!1),r=[];return n&&n.forEach(function(t,e){r.push(e)}),r},p=function(t){return void 0===t||"symbol"==typeof t?t:String(t)},d=function(t){o(o.S,"Reflect",t)};t.exports={store:a,map:s,has:u,get:c,set:f,keys:l,key:p,exp:d}},function(t,e,n){"use strict";if(n(6)){var r=n(33),o=n(2),i=n(3),a=n(0),s=n(61),u=n(85),c=n(26),f=n(32),l=n(30),p=n(12),d=n(37),h=n(31),v=n(8),m=n(39),g=n(24),y=n(10),_=n(115),b=n(48),x=n(4),w=n(9),S=n(70),O=n(34),E=n(17),A=n(35).f,C=n(87),T=n(40),j=n(5),P=n(22),k=n(51),M=n(79),$=n(88),I=n(44),N=n(57),F=n(38),R=n(63),L=n(95),D=n(7),U=n(16),B=D.f,W=U.f,V=o.RangeError,G=o.TypeError,H=o.Uint8Array,z=Array.prototype,q=u.ArrayBuffer,J=u.DataView,X=P(0),Y=P(2),K=P(3),Z=P(4),Q=P(5),tt=P(6),et=k(!0),nt=k(!1),rt=$.values,ot=$.keys,it=$.entries,at=z.lastIndexOf,st=z.reduce,ut=z.reduceRight,ct=z.join,ft=z.sort,lt=z.slice,pt=z.toString,dt=z.toLocaleString,ht=j("iterator"),vt=j("toStringTag"),mt=T("typed_constructor"),gt=T("def_constructor"),yt=s.CONSTR,_t=s.TYPED,bt=s.VIEW,xt=P(1,function(t,e){return Ct(M(t,t[gt]),e)}),wt=i(function(){return 1===new H(new Uint16Array([1]).buffer)[0]}),St=!!H&&!!H.prototype.set&&i(function(){new H(1).set({})}),Ot=function(t,e){if(void 0===t)throw G("Wrong length!");var n=+t,r=v(t);if(e&&!_(n,r))throw V("Wrong length!");return r},Et=function(t,e){var n=h(t);if(n<0||n%e)throw V("Wrong offset!");return n},At=function(t){if(x(t)&&_t in t)return t;throw G(t+" is not a typed array!")},Ct=function(t,e){if(!(x(t)&&mt in t))throw G("It is not a typed array constructor!");return new t(e)},Tt=function(t,e){return jt(M(t,t[gt]),e)},jt=function(t,e){for(var n=0,r=e.length,o=Ct(t,r);r>n;)o[n]=e[n++];return o},Pt=function(t,e,n){B(t,e,{get:function(){return this._d[n]}})},kt=function(t){var e,n,r,o,i,a,s=w(t),u=arguments.length,f=u>1?arguments[1]:void 0,l=void 0!==f,p=C(s);if(void 0!=p&&!S(p)){for(a=p.call(s),r=[],e=0;!(i=a.next()).done;e++)r.push(i.value);s=r}for(l&&u>2&&(f=c(f,arguments[2],2)),e=0,n=v(s.length),o=Ct(this,n);n>e;e++)o[e]=l?f(s[e],e):s[e];return o},Mt=function(){for(var t=0,e=arguments.length,n=Ct(this,e);e>t;)n[t]=arguments[t++];return n},$t=!!H&&i(function(){dt.call(new H(1))}),It=function(){return dt.apply($t?lt.call(At(this)):At(this),arguments)},Nt={copyWithin:function(t,e){return L.call(At(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(At(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return R.apply(At(this),arguments)},filter:function(t){return Tt(this,Y(At(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(At(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(At(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){X(At(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(At(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(At(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ct.apply(At(this),arguments)},lastIndexOf:function(t){return at.apply(At(this),arguments)},map:function(t){return xt(At(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return st.apply(At(this),arguments)},reduceRight:function(t){return ut.apply(At(this),arguments)},reverse:function(){for(var t,e=this,n=At(e).length,r=Math.floor(n/2),o=0;o<r;)t=e[o],e[o++]=e[--n],e[n]=t;return e},some:function(t){return K(At(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return ft.call(At(this),t)},subarray:function(t,e){var n=At(this),r=n.length,o=m(t,r);return new(M(n,n[gt]))(n.buffer,n.byteOffset+o*n.BYTES_PER_ELEMENT,v((void 0===e?r:m(e,r))-o))}},Ft=function(t,e){return Tt(this,lt.call(At(this),t,e))},Rt=function(t){At(this);var e=Et(arguments[1],1),n=this.length,r=w(t),o=v(r.length),i=0;if(o+e>n)throw V("Wrong length!");for(;i<o;)this[e+i]=r[i++]},Lt={entries:function(){return it.call(At(this))},keys:function(){return ot.call(At(this))},values:function(){return rt.call(At(this))}},Dt=function(t,e){return x(t)&&t[_t]&&"symbol"!=typeof e&&e in t&&String(+e)==String(e)},Ut=function(t,e){return Dt(t,e=g(e,!0))?l(2,t[e]):W(t,e)},Bt=function(t,e,n){return!(Dt(t,e=g(e,!0))&&x(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?B(t,e,n):(t[e]=n.value,t)};yt||(U.f=Ut,D.f=Bt),a(a.S+a.F*!yt,"Object",{getOwnPropertyDescriptor:Ut,defineProperty:Bt}),i(function(){pt.call({})})&&(pt=dt=function(){return ct.call(this)});var Wt=d({},Nt);d(Wt,Lt),p(Wt,ht,Lt.values),d(Wt,{slice:Ft,set:Rt,constructor:function(){},toString:pt,toLocaleString:It}),Pt(Wt,"buffer","b"),Pt(Wt,"byteOffset","o"),Pt(Wt,"byteLength","l"),Pt(Wt,"length","e"),B(Wt,vt,{get:function(){return this[_t]}}),t.exports=function(t,e,n,u){u=!!u;var c=t+(u?"Clamped":"")+"Array",l="Uint8Array"!=c,d="get"+t,h="set"+t,m=o[c],g=m||{},y=m&&E(m),_=!m||!s.ABV,w={},S=m&&m.prototype,C=function(t,n){var r=t._d;return r.v[d](n*e+r.o,wt)},T=function(t,n,r){var o=t._d;u&&(r=(r=Math.round(r))<0?0:r>255?255:255&r),o.v[h](n*e+o.o,r,wt)},j=function(t,e){B(t,e,{get:function(){return C(this,e)},set:function(t){return T(this,e,t)},enumerable:!0})};_?(m=n(function(t,n,r,o){f(t,m,c,"_d");var i,a,s,u,l=0,d=0;if(x(n)){if(!(n instanceof q||"ArrayBuffer"==(u=b(n))||"SharedArrayBuffer"==u))return _t in n?jt(m,n):kt.call(m,n);i=n,d=Et(r,e);var h=n.byteLength;if(void 0===o){if(h%e)throw V("Wrong length!");if((a=h-d)<0)throw V("Wrong length!")}else if((a=v(o)*e)+d>h)throw V("Wrong length!");s=a/e}else s=Ot(n,!0),a=s*e,i=new q(a);for(p(t,"_d",{b:i,o:d,l:a,e:s,v:new J(i)});l<s;)j(t,l++)}),S=m.prototype=O(Wt),p(S,"constructor",m)):N(function(t){new m(null),new m(t)},!0)||(m=n(function(t,n,r,o){f(t,m,c);var i;return x(n)?n instanceof q||"ArrayBuffer"==(i=b(n))||"SharedArrayBuffer"==i?void 0!==o?new g(n,Et(r,e),o):void 0!==r?new g(n,Et(r,e)):new g(n):_t in n?jt(m,n):kt.call(m,n):new g(Ot(n,l))}),X(y!==Function.prototype?A(g).concat(A(y)):A(g),function(t){t in m||p(m,t,g[t])}),m.prototype=S,r||(S.constructor=m));var P=S[ht],k=!!P&&("values"==P.name||void 0==P.name),M=Lt.values;p(m,mt,!0),p(S,_t,c),p(S,bt,!0),p(S,gt,m),(u?new m(1)[vt]==c:vt in S)||B(S,vt,{get:function(){return c}}),w[c]=m,a(a.G+a.W+a.F*(m!=g),w),a(a.S,c,{BYTES_PER_ELEMENT:e,from:kt,of:Mt}),"BYTES_PER_ELEMENT"in S||p(S,"BYTES_PER_ELEMENT",e),a(a.P,c,Nt),F(c),a(a.P+a.F*St,c,{set:Rt}),a(a.P+a.F*!k,c,Lt),a(a.P+a.F*(S.toString!=pt),c,{toString:pt}),a(a.P+a.F*i(function(){new m(1).slice()}),c,{slice:Ft}),a(a.P+a.F*(i(function(){return[1,2].toLocaleString()!=new m([1,2]).toLocaleString()})||!i(function(){S.toLocaleString.call([1,2])})),c,{toLocaleString:It}),I[c]=k?P:M,r||k||p(S,ht,M)}}else t.exports=function(){}},function(t,e,n){var r=n(40)("meta"),o=n(4),i=n(10),a=n(7).f,s=0,u=Object.isExtensible||function(){return!0},c=!n(3)(function(){return u(Object.preventExtensions({}))}),f=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},l=function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!u(t))return"F";if(!e)return"E";f(t)}return t[r].i},p=function(t,e){if(!i(t,r)){if(!u(t))return!0;if(!e)return!1;f(t)}return t[r].w},d=function(t){return c&&h.NEED&&u(t)&&!i(t,r)&&f(t),t},h=t.exports={KEY:r,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e){t.exports=!1},function(t,e,n){var r=n(1),o=n(108),i=n(66),a=n(78)("IE_PROTO"),s=function(){},u=function(){var t,e=n(65)("iframe"),r=i.length;for(e.style.display="none",n(68).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u.prototype[i[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=u(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(110),o=n(66).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(110),o=n(66);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(13);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e,n){"use strict";var r=n(2),o=n(7),i=n(6),a=n(5)("species");t.exports=function(t){var e=r[t];i&&e&&!e[a]&&o.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(31),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){function n(t){return void 0===t||null===t}function r(t){return void 0!==t&&null!==t}function o(t){return!0===t}function i(t){return!1===t}function a(t){return"string"==typeof t||"number"==typeof t}function s(t){return null!==t&&"object"==typeof t}function u(t){return"[object Object]"===Jn.call(t)}function c(t){return"[object RegExp]"===Jn.call(t)}function f(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function l(t){var e=parseFloat(t);return isNaN(e)?t:e}function p(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o<r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function d(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function h(t,e){return Xn.call(t,e)}function v(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function m(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function g(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function y(t,e){for(var n in e)t[n]=e[n];return t}function _(t){for(var e={},n=0;n<t.length;n++)t[n]&&y(e,t[n]);return e}function b(){}function x(t,e){var n=s(t),r=s(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{return JSON.stringify(t)===JSON.stringify(e)}catch(n){return t===e}}function w(t,e){for(var n=0;n<t.length;n++)if(x(t[n],e))return n;return-1}function S(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function O(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function E(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function A(t){if(!ur.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}function C(t,e,n){if(ar.errorHandler)ar.errorHandler.call(null,t,e,n);else{if(!lr||"undefined"==typeof console)throw t;console.error(t)}}function T(t){return"function"==typeof t&&/native code/.test(t.toString())}function j(t){Tr.target&&jr.push(Tr.target),Tr.target=t}function P(){Tr.target=jr.pop()}function k(t,e){t.__proto__=e}function M(t,e,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];E(t,i,e[i])}}function $(t,e){if(s(t)){var n;return h(t,"__ob__")&&t.__ob__ instanceof Ir?n=t.__ob__:$r.shouldConvert&&!Sr()&&(Array.isArray(t)||u(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new Ir(t)),e&&n&&n.vmCount++,n}}function I(t,e,n,r){var o=new Tr,i=Object.getOwnPropertyDescriptor(t,e);if(!i||!1!==i.configurable){var a=i&&i.get,s=i&&i.set,u=$(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=a?a.call(t):n;return Tr.target&&(o.depend(),u&&u.dep.depend(),Array.isArray(e)&&R(e)),e},set:function(e){var r=a?a.call(t):n;e===r||e!==e&&r!==r||(s?s.call(t,e):n=e,u=$(e),o.notify())}})}}function N(t,e,n){if(Array.isArray(t)&&"number"==typeof e)return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(h(t,e))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?(I(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function F(t,e){if(Array.isArray(t)&&"number"==typeof e)return void t.splice(e,1);var n=t.__ob__;t._isVue||n&&n.vmCount||h(t,e)&&(delete t[e],n&&n.dep.notify())}function R(t){for(var e=void 0,n=0,r=t.length;n<r;n++)e=t[n],e&&e.__ob__&&e.__ob__.dep.depend(),Array.isArray(e)&&R(e)}function L(t,e){if(!e)return t;for(var n,r,o,i=Object.keys(e),a=0;a<i.length;a++)n=i[a],r=t[n],o=e[n],h(t,n)?u(r)&&u(o)&&L(r,o):N(t,n,o);return t}function D(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function U(t,e){var n=Object.create(t||null);return e?y(n,e):n}function B(t){var e=t.props;if(e){var n,r,o,i={};if(Array.isArray(e))for(n=e.length;n--;)"string"==typeof(r=e[n])&&(o=Kn(r),i[o]={type:null});else if(u(e))for(var a in e)r=e[a],o=Kn(a),i[o]=u(r)?r:{type:r};t.props=i}}function W(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function V(t,e,n){function r(r){var o=Nr[r]||Fr;u[r]=o(t[r],e[r],n,r)}"function"==typeof e&&(e=e.options),B(e),W(e);var o=e.extends;if(o&&(t=V(t,o,n)),e.mixins)for(var i=0,a=e.mixins.length;i<a;i++)t=V(t,e.mixins[i],n);var s,u={};for(s in t)r(s);for(s in e)h(t,s)||r(s);return u}function G(t,e,n,r){if("string"==typeof n){var o=t[e];if(h(o,n))return o[n];var i=Kn(n);if(h(o,i))return o[i];var a=Zn(i);if(h(o,a))return o[a];return o[n]||o[i]||o[a]}}function H(t,e,n,r){var o=e[t],i=!h(n,t),a=n[t];if(J(Boolean,o.type)&&(i&&!h(o,"default")?a=!1:J(String,o.type)||""!==a&&a!==tr(t)||(a=!0)),void 0===a){a=z(r,o,t);var s=$r.shouldConvert;$r.shouldConvert=!0,$(a),$r.shouldConvert=s}return a}function z(t,e,n){if(h(e,"default")){var r=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n]?t._props[n]:"function"==typeof r&&"Function"!==q(e.type)?r.call(t):r}}function q(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function J(t,e){if(!Array.isArray(e))return q(e)===q(t);for(var n=0,r=e.length;n<r;n++)if(q(e[n])===q(t))return!0;return!1}function X(t){return new Rr(void 0,void 0,void 0,String(t))}function Y(t){var e=new Rr(t.tag,t.data,t.children,t.text,t.elm,t.context,t.componentOptions);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.isCloned=!0,e}function K(t){for(var e=t.length,n=new Array(e),r=0;r<e;r++)n[r]=Y(t[r]);return n}function Z(t){function e(){var t=arguments,n=e.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=0;r<n.length;r++)n[r].apply(null,t)}return e.fns=t,e}function Q(t,e,r,o,i){var a,s,u,c;for(a in t)s=t[a],u=e[a],c=Br(a),n(s)||(n(u)?(n(s.fns)&&(s=t[a]=Z(s)),r(c.name,s,c.once,c.capture,c.passive)):s!==u&&(u.fns=s,t[a]=u));for(a in e)n(t[a])&&(c=Br(a),o(c.name,e[a],c.capture))}function tt(t,e,i){function a(){i.apply(this,arguments),d(s.fns,a)}var s,u=t[e];n(u)?s=Z([a]):r(u.fns)&&o(u.merged)?(s=u,s.fns.push(a)):s=Z([u,a]),s.merged=!0,t[e]=s}function et(t,e,o){var i=e.options.props;if(!n(i)){var a={},s=t.attrs,u=t.props;if(r(s)||r(u))for(var c in i){var f=tr(c);nt(a,u,c,f,!0)||nt(a,s,c,f,!1)}return a}}function nt(t,e,n,o,i){if(r(e)){if(h(e,n))return t[n]=e[n],i||delete e[n],!0;if(h(e,o))return t[n]=e[o],i||delete e[o],!0}return!1}function rt(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}function ot(t){return a(t)?[X(t)]:Array.isArray(t)?at(t):void 0}function it(t){return r(t)&&r(t.text)&&i(t.isComment)}function at(t,e){var i,s,u,c=[];for(i=0;i<t.length;i++)s=t[i],n(s)||"boolean"==typeof s||(u=c[c.length-1],Array.isArray(s)?c.push.apply(c,at(s,(e||"")+"_"+i)):a(s)?it(u)?u.text+=String(s):""!==s&&c.push(X(s)):it(s)&&it(u)?c[c.length-1]=X(u.text+s.text):(o(t._isVList)&&r(s.tag)&&n(s.key)&&r(e)&&(s.key="__vlist"+e+"_"+i+"__"),c.push(s)));return c}function st(t,e){return s(t)?e.extend(t):t}function ut(t,e,i){if(o(t.error)&&r(t.errorComp))return t.errorComp;if(r(t.resolved))return t.resolved;if(o(t.loading)&&r(t.loadingComp))return t.loadingComp;if(!r(t.contexts)){var a=t.contexts=[i],u=!0,c=function(){for(var t=0,e=a.length;t<e;t++)a[t].$forceUpdate()},f=S(function(n){t.resolved=st(n,e),u||c()}),l=S(function(e){r(t.errorComp)&&(t.error=!0,c())}),p=t(f,l);return s(p)&&("function"==typeof p.then?n(t.resolved)&&p.then(f,l):r(p.component)&&"function"==typeof p.component.then&&(p.component.then(f,l),r(p.error)&&(t.errorComp=st(p.error,e)),r(p.loading)&&(t.loadingComp=st(p.loading,e),0===p.delay?t.loading=!0:setTimeout(function(){n(t.resolved)&&n(t.error)&&(t.loading=!0,c())},p.delay||200)),r(p.timeout)&&setTimeout(function(){n(t.resolved)&&l(null)},p.timeout))),u=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(i)}function ct(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(r(n)&&r(n.componentOptions))return n}}function ft(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&dt(t,e)}function lt(t,e,n){n?Dr.$once(t,e):Dr.$on(t,e)}function pt(t,e){Dr.$off(t,e)}function dt(t,e,n){Dr=t,Q(e,n||{},lt,pt,t)}function ht(t,e){var n={};if(!t)return n;for(var r=[],o=0,i=t.length;o<i;o++){var a=t[o];if(a.context!==e&&a.functionalContext!==e||!a.data||null==a.data.slot)r.push(a);else{var s=a.data.slot,u=n[s]||(n[s]=[]);"template"===a.tag?u.push.apply(u,a.children):u.push(a)}}return r.every(vt)||(n.default=r),n}function vt(t){return t.isComment||" "===t.text}function mt(t,e){e=e||{};for(var n=0;n<t.length;n++)Array.isArray(t[n])?mt(t[n],e):e[t[n].key]=t[n].fn;return e}function gt(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function yt(t,e,n){t.$el=e,t.$options.render||(t.$options.render=Ur),St(t,"beforeMount");var r;return r=function(){t._update(t._render(),n)},t._watcher=new Yr(t,r,b),n=!1,null==t.$vnode&&(t._isMounted=!0,St(t,"mounted")),t}function _t(t,e,n,r,o){var i=!!(o||t.$options._renderChildren||r.data.scopedSlots||t.$scopedSlots!==sr);if(t.$options._parentVnode=r,t.$vnode=r,t._vnode&&(t._vnode.parent=r),t.$options._renderChildren=o,e&&t.$options.props){$r.shouldConvert=!1;for(var a=t._props,s=t.$options._propKeys||[],u=0;u<s.length;u++){var c=s[u];a[c]=H(c,t.$options.props,e,t)}$r.shouldConvert=!0,t.$options.propsData=e}if(n){var f=t.$options._parentListeners;t.$options._parentListeners=n,dt(t,n,f)}i&&(t.$slots=ht(o,r.context),t.$forceUpdate())}function bt(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function xt(t,e){if(e){if(t._directInactive=!1,bt(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)xt(t.$children[n]);St(t,"activated")}}function wt(t,e){if(!(e&&(t._directInactive=!0,bt(t))||t._inactive)){t._inactive=!0;for(var n=0;n<t.$children.length;n++)wt(t.$children[n]);St(t,"deactivated")}}function St(t,e){var n=t.$options[e];if(n)for(var r=0,o=n.length;r<o;r++)try{n[r].call(t)}catch(n){C(n,t,e+" hook")}t._hasHookEvent&&t.$emit("hook:"+e)}function Ot(){Jr=Vr.length=Gr.length=0,Hr={},zr=qr=!1}function Et(){qr=!0;var t,e;for(Vr.sort(function(t,e){return t.id-e.id}),Jr=0;Jr<Vr.length;Jr++)t=Vr[Jr],e=t.id,Hr[e]=null,t.run();var n=Gr.slice(),r=Vr.slice();Ot(),Tt(n),At(r),Or&&ar.devtools&&Or.emit("flush")}function At(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&St(r,"updated")}}function Ct(t){t._inactive=!1,Gr.push(t)}function Tt(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,xt(t[e],!0)}function jt(t){var e=t.id;if(null==Hr[e]){if(Hr[e]=!0,qr){for(var n=Vr.length-1;n>Jr&&Vr[n].id>t.id;)n--;Vr.splice(n+1,0,t)}else Vr.push(t);zr||(zr=!0,Ar(Et))}}function Pt(t){Kr.clear(),kt(t,Kr)}function kt(t,e){var n,r,o=Array.isArray(t);if((o||s(t))&&Object.isExtensible(t)){if(t.__ob__){var i=t.__ob__.dep.id;if(e.has(i))return;e.add(i)}if(o)for(n=t.length;n--;)kt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)kt(t[r[n]],e)}}function Mt(t,e,n){Zr.get=function(){return this[e][n]},Zr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Zr)}function $t(t){t._watchers=[];var e=t.$options;e.props&&It(t,e.props),e.methods&&Ut(t,e.methods),e.data?Nt(t):$(t._data={},!0),e.computed&&Rt(t,e.computed),e.watch&&Bt(t,e.watch)}function It(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;$r.shouldConvert=i;for(var a in e)!function(i){o.push(i);var a=H(i,e,n,t);I(r,i,a),i in t||Mt(t,"_props",i)}(a);$r.shouldConvert=!0}function Nt(t){var e=t.$options.data;e=t._data="function"==typeof e?Ft(e,t):e||{},u(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,o=n.length;o--;)r&&h(r,n[o])||O(n[o])||Mt(t,"_data",n[o]);$(e,!0)}function Ft(t,e){try{return t.call(e)}catch(t){return C(t,e,"data()"),{}}}function Rt(t,e){var n=t._computedWatchers=Object.create(null);for(var r in e){var o=e[r],i="function"==typeof o?o:o.get;n[r]=new Yr(t,i,b,Qr),r in t||Lt(t,r,o)}}function Lt(t,e,n){"function"==typeof n?(Zr.get=Dt(e),Zr.set=b):(Zr.get=n.get?!1!==n.cache?Dt(e):n.get:b,Zr.set=n.set?n.set:b),Object.defineProperty(t,e,Zr)}function Dt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),Tr.target&&e.depend(),e.value}}function Ut(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?b:m(e[n],t)}function Bt(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o<r.length;o++)Wt(t,n,r[o]);else Wt(t,n,r)}}function Wt(t,e,n){var r;u(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function Vt(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}function Gt(t){var e=Ht(t.$options.inject,t);e&&Object.keys(e).forEach(function(n){I(t,n,e[n])})}function Ht(t,e){if(t){for(var n=Array.isArray(t),r=Object.create(null),o=n?t:Er?Reflect.ownKeys(t):Object.keys(t),i=0;i<o.length;i++)for(var a=o[i],s=n?a:t[a],u=e;u;){if(u._provided&&s in u._provided){r[a]=u._provided[s];break}u=u.$parent}return r}}function zt(t,e,n,o,i){var a={},s=t.options.props;if(r(s))for(var u in s)a[u]=H(u,s,e||{});else r(n.attrs)&&qt(a,n.attrs),r(n.props)&&qt(a,n.props);var c=Object.create(o),f=function(t,e,n,r){return Qt(c,t,e,n,r,!0)},l=t.options.render.call(null,f,{data:n,props:a,children:i,parent:o,listeners:n.on||{},injections:Ht(t.options.inject,o),slots:function(){return ht(i,o)}});return l instanceof Rr&&(l.functionalContext=o,l.functionalOptions=t.options,n.slot&&((l.data||(l.data={})).slot=n.slot)),l}function qt(t,e){for(var n in e)t[Kn(n)]=e[n]}function Jt(t,e,i,a,u){if(!n(t)){var c=i.$options._base;if(s(t)&&(t=c.extend(t)),"function"==typeof t&&(!n(t.cid)||void 0!==(t=ut(t,c,i)))){de(t),e=e||{},r(e.model)&&Zt(t.options,e);var f=et(e,t,u);if(o(t.options.functional))return zt(t,f,e,i,a);var l=e.on;e.on=e.nativeOn,o(t.options.abstract)&&(e={}),Yt(e);var p=t.options.name||u;return new Rr("vue-component-"+t.cid+(p?"-"+p:""),e,void 0,void 0,void 0,i,{Ctor:t,propsData:f,listeners:l,tag:u,children:a})}}}function Xt(t,e,n,o){var i=t.componentOptions,a={_isComponent:!0,parent:e,propsData:i.propsData,_componentTag:i.tag,_parentVnode:t,_parentListeners:i.listeners,_renderChildren:i.children,_parentElm:n||null,_refElm:o||null},s=t.data.inlineTemplate;return r(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new i.Ctor(a)}function Yt(t){t.hook||(t.hook={});for(var e=0;e<eo.length;e++){var n=eo[e],r=t.hook[n],o=to[n];t.hook[n]=r?Kt(o,r):o}}function Kt(t,e){return function(n,r,o,i){t(n,r,o,i),e(n,r,o,i)}}function Zt(t,e){var n=t.model&&t.model.prop||"value",o=t.model&&t.model.event||"input";(e.props||(e.props={}))[n]=e.model.value;var i=e.on||(e.on={});r(i[o])?i[o]=[e.model.callback].concat(i[o]):i[o]=e.model.callback}function Qt(t,e,n,r,i,s){return(Array.isArray(n)||a(n))&&(i=r,r=n,n=void 0),o(s)&&(i=ro),te(t,e,n,r,i)}function te(t,e,n,o,i){if(r(n)&&r(n.__ob__))return Ur();if(!e)return Ur();Array.isArray(o)&&"function"==typeof o[0]&&(n=n||{},n.scopedSlots={default:o[0]},o.length=0),i===ro?o=ot(o):i===no&&(o=rt(o));var a,s;if("string"==typeof e){var u;s=ar.getTagNamespace(e),a=ar.isReservedTag(e)?new Rr(ar.parsePlatformTagName(e),n,o,void 0,void 0,t):r(u=G(t.$options,"components",e))?Jt(u,n,t,o,e):new Rr(e,n,o,void 0,void 0,t)}else a=Jt(e,n,t,o);return r(a)?(s&&ee(a,s),a):Ur()}function ee(t,e){if(t.ns=e,"foreignObject"!==t.tag&&r(t.children))for(var o=0,i=t.children.length;o<i;o++){var a=t.children[o];r(a.tag)&&n(a.ns)&&ee(a,e)}}function ne(t,e){var n,o,i,a,u;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),o=0,i=t.length;o<i;o++)n[o]=e(t[o],o);else if("number"==typeof t)for(n=new Array(t),o=0;o<t;o++)n[o]=e(o+1,o);else if(s(t))for(a=Object.keys(t),n=new Array(a.length),o=0,i=a.length;o<i;o++)u=a[o],n[o]=e(t[u],u,o);return r(n)&&(n._isVList=!0),n}function re(t,e,n,r){var o=this.$scopedSlots[t];if(o)return n=n||{},r&&y(n,r),o(n)||e;var i=this.$slots[t];return i||e}function oe(t){return G(this.$options,"filters",t,!0)||nr}function ie(t,e,n){var r=ar.keyCodes[e]||n;return Array.isArray(r)?-1===r.indexOf(t):r!==t}function ae(t,e,n,r){if(n)if(s(n)){Array.isArray(n)&&(n=_(n));var o;for(var i in n){if("class"===i||"style"===i)o=t;else{var a=t.attrs&&t.attrs.type;o=r||ar.mustUseProp(e,a,i)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}i in o||(o[i]=n[i])}}else;return t}function se(t,e){var n=this._staticTrees[t];return n&&!e?Array.isArray(n)?K(n):Y(n):(n=this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy),ce(n,"__static__"+t,!1),n)}function ue(t,e,n){return ce(t,"__once__"+e+(n?"_"+n:""),!0),t}function ce(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&fe(t[r],e+"_"+r,n);else fe(t,e,n)}function fe(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function le(t){t._vnode=null,t._staticTrees=null;var e=t.$vnode=t.$options._parentVnode,n=e&&e.context;t.$slots=ht(t.$options._renderChildren,n),t.$scopedSlots=sr,t._c=function(e,n,r,o){return Qt(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Qt(t,e,n,r,o,!0)}}function pe(t,e){var n=t.$options=Object.create(t.constructor.options);n.parent=e.parent,n.propsData=e.propsData,n._parentVnode=e._parentVnode,n._parentListeners=e._parentListeners,n._renderChildren=e._renderChildren,n._componentTag=e._componentTag,n._parentElm=e._parentElm,n._refElm=e._refElm,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}function de(t){var e=t.options;if(t.super){var n=de(t.super);if(n!==t.superOptions){t.superOptions=n;var r=he(t);r&&y(t.extendOptions,r),e=t.options=V(n,t.extendOptions),e.name&&(e.components[e.name]=t)}}return e}function he(t){var e,n=t.options,r=t.extendOptions,o=t.sealedOptions;for(var i in n)n[i]!==o[i]&&(e||(e={}),e[i]=ve(n[i],r[i],o[i]));return e}function ve(t,e,n){if(Array.isArray(t)){var r=[];n=Array.isArray(n)?n:[n],e=Array.isArray(e)?e:[e];for(var o=0;o<t.length;o++)(e.indexOf(t[o])>=0||n.indexOf(t[o])<0)&&r.push(t[o]);return r}return t}function me(t){this._init(t)}function ge(t){t.use=function(t){if(t.installed)return this;var e=g(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):"function"==typeof t&&t.apply(null,e),t.installed=!0,this}}function ye(t){t.mixin=function(t){return this.options=V(this.options,t),this}}function _e(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=V(n.options,t),a.super=n,a.options.props&&be(a),a.options.computed&&xe(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,or.forEach(function(t){a[t]=n[t]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=y({},a.options),o[r]=a,a}}function be(t){var e=t.options.props;for(var n in e)Mt(t.prototype,"_props",n)}function xe(t){var e=t.options.computed;for(var n in e)Lt(t.prototype,n,e[n])}function we(t){or.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function Se(t){return t&&(t.Ctor.options.name||t.tag)}function Oe(t,e){return"string"==typeof t?t.split(",").indexOf(e)>-1:!!c(t)&&t.test(e)}function Ee(t,e,n){for(var r in t){var o=t[r];if(o){var i=Se(o.componentOptions);i&&!n(i)&&(o!==e&&Ae(o),t[r]=null)}}}function Ae(t){t&&t.componentInstance.$destroy()}function Ce(t){for(var e=t.data,n=t,o=t;r(o.componentInstance);)o=o.componentInstance._vnode,o.data&&(e=Te(o.data,e));for(;r(n=n.parent);)n.data&&(e=Te(e,n.data));return je(e)}function Te(t,e){return{staticClass:Pe(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function je(t){var e=t.class,n=t.staticClass;return r(n)||r(e)?Pe(n,ke(e)):""}function Pe(t,e){return t?e?t+" "+e:t:e||""}function ke(t){if(n(t))return"";if("string"==typeof t)return t;var e="";if(Array.isArray(t)){for(var o,i=0,a=t.length;i<a;i++)r(t[i])&&r(o=ke(t[i]))&&""!==o&&(e+=o+" ");return e.slice(0,-1)}if(s(t)){for(var u in t)t[u]&&(e+=u+" ");return e.slice(0,-1)}return e}function Me(t){return wo(t)?"svg":"math"===t?"math":void 0}function $e(t){if(!lr)return!0;if(So(t))return!1;if(t=t.toLowerCase(),null!=Oo[t])return Oo[t];var e=document.createElement(t);return t.indexOf("-")>-1?Oo[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Oo[t]=/HTMLUnknownElement/.test(e.toString())}function Ie(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function Ne(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Fe(t,e){return document.createElementNS(bo[t],e)}function Re(t){return document.createTextNode(t)}function Le(t){return document.createComment(t)}function De(t,e,n){t.insertBefore(e,n)}function Ue(t,e){t.removeChild(e)}function Be(t,e){t.appendChild(e)}function We(t){return t.parentNode}function Ve(t){return t.nextSibling}function Ge(t){return t.tagName}function He(t,e){t.textContent=e}function ze(t,e,n){t.setAttribute(e,n)}function qe(t,e){var n=t.data.ref;if(n){var r=t.context,o=t.componentInstance||t.elm,i=r.$refs;e?Array.isArray(i[n])?d(i[n],o):i[n]===o&&(i[n]=void 0):t.data.refInFor?Array.isArray(i[n])&&i[n].indexOf(o)<0?i[n].push(o):i[n]=[o]:i[n]=o}}function Je(t,e){return t.key===e.key&&t.tag===e.tag&&t.isComment===e.isComment&&r(t.data)===r(e.data)&&Xe(t,e)}function Xe(t,e){if("input"!==t.tag)return!0;var n;return(r(n=t.data)&&r(n=n.attrs)&&n.type)===(r(n=e.data)&&r(n=n.attrs)&&n.type)}function Ye(t,e,n){var o,i,a={};for(o=e;o<=n;++o)i=t[o].key,r(i)&&(a[i]=o);return a}function Ke(t,e){(t.data.directives||e.data.directives)&&Ze(t,e)}function Ze(t,e){var n,r,o,i=t===Co,a=e===Co,s=Qe(t.data.directives,t.context),u=Qe(e.data.directives,e.context),c=[],f=[];for(n in u)r=s[n],o=u[n],r?(o.oldValue=r.value,en(o,"update",e,t),o.def&&o.def.componentUpdated&&f.push(o)):(en(o,"bind",e,t),o.def&&o.def.inserted&&c.push(o));if(c.length){var l=function(){for(var n=0;n<c.length;n++)en(c[n],"inserted",e,t)};i?tt(e.data.hook||(e.data.hook={}),"insert",l):l()}if(f.length&&tt(e.data.hook||(e.data.hook={}),"postpatch",function(){for(var n=0;n<f.length;n++)en(f[n],"componentUpdated",e,t)}),!i)for(n in s)u[n]||en(s[n],"unbind",t,t,a)}function Qe(t,e){var n=Object.create(null);if(!t)return n;var r,o;for(r=0;r<t.length;r++)o=t[r],o.modifiers||(o.modifiers=Po),n[tn(o)]=o,o.def=G(e.$options,"directives",o.name,!0);return n}function tn(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function en(t,e,n,r,o){var i=t.def&&t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){C(r,n.context,"directive "+t.name+" "+e+" hook")}}function nn(t,e){if(!n(t.data.attrs)||!n(e.data.attrs)){var o,i,a=e.elm,s=t.data.attrs||{},u=e.data.attrs||{};r(u.__ob__)&&(u=e.data.attrs=y({},u));for(o in u)i=u[o],s[o]!==i&&rn(a,o,i);hr&&u.value!==s.value&&rn(a,"value",u.value);for(o in s)n(u[o])&&(go(o)?a.removeAttributeNS(mo,yo(o)):ho(o)||a.removeAttribute(o))}}function rn(t,e,n){vo(e)?_o(n)?t.removeAttribute(e):t.setAttribute(e,e):ho(e)?t.setAttribute(e,_o(n)||"false"===n?"false":"true"):go(e)?_o(n)?t.removeAttributeNS(mo,yo(e)):t.setAttributeNS(mo,e,n):_o(n)?t.removeAttribute(e):t.setAttribute(e,n)}function on(t,e){var o=e.elm,i=e.data,a=t.data;if(!(n(i.staticClass)&&n(i.class)&&(n(a)||n(a.staticClass)&&n(a.class)))){var s=Ce(e),u=o._transitionClasses;r(u)&&(s=Pe(s,ke(u))),s!==o._prevClass&&(o.setAttribute("class",s),o._prevClass=s)}}function an(t){var e;r(t[Io])&&(e=dr?"change":"input",t[e]=[].concat(t[Io],t[e]||[]),delete t[Io]),r(t[No])&&(e=yr?"click":"change",t[e]=[].concat(t[No],t[e]||[]),delete t[No])}function sn(t,e,n,r,o){if(n){var i=e,a=uo;e=function(n){null!==(1===arguments.length?i(n):i.apply(null,arguments))&&un(t,e,r,a)}}uo.addEventListener(t,e,_r?{capture:r,passive:o}:r)}function un(t,e,n,r){(r||uo).removeEventListener(t,e,n)}function cn(t,e){if(!n(t.data.on)||!n(e.data.on)){var r=e.data.on||{},o=t.data.on||{};uo=e.elm,an(r),Q(r,o,sn,un,e.context)}}function fn(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var o,i,a=e.elm,s=t.data.domProps||{},u=e.data.domProps||{};r(u.__ob__)&&(u=e.data.domProps=y({},u));for(o in s)n(u[o])&&(a[o]="");for(o in u)if(i=u[o],"textContent"!==o&&"innerHTML"!==o||(e.children&&(e.children.length=0),i!==s[o]))if("value"===o){a._value=i;var c=n(i)?"":String(i);ln(a,e,c)&&(a.value=c)}else a[o]=i}}function ln(t,e,n){return!t.composing&&("option"===e.tag||pn(t,n)||dn(t,n))}function pn(t,e){return document.activeElement!==t&&t.value!==e}function dn(t,e){var n=t.value,o=t._vModifiers;return r(o)&&o.number||"number"===t.type?l(n)!==l(e):r(o)&&o.trim?n.trim()!==e.trim():n!==e}function hn(t){var e=vn(t.style);return t.staticStyle?y(t.staticStyle,e):e}function vn(t){return Array.isArray(t)?_(t):"string"==typeof t?Lo(t):t}function mn(t,e){var n,r={};if(e)for(var o=t;o.componentInstance;)o=o.componentInstance._vnode,o.data&&(n=hn(o.data))&&y(r,n);(n=hn(t.data))&&y(r,n);for(var i=t;i=i.parent;)i.data&&(n=hn(i.data))&&y(r,n);return r}function gn(t,e){var o=e.data,i=t.data;if(!(n(o.staticStyle)&&n(o.style)&&n(i.staticStyle)&&n(i.style))){var a,s,u=e.elm,c=i.staticStyle,f=i.normalizedStyle||i.style||{},l=c||f,p=vn(e.data.style)||{};e.data.normalizedStyle=r(p.__ob__)?y({},p):p;var d=mn(e,!0);for(s in l)n(d[s])&&Bo(u,s,"");for(s in d)(a=d[s])!==l[s]&&Bo(u,s,null==a?"":a)}}function yn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function _n(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function bn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&y(e,Ho(t.name||"v")),y(e,t),e}return"string"==typeof t?Ho(t):void 0}}function xn(t){Qo(function(){Qo(t)})}function wn(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),yn(t,e)}function Sn(t,e){t._transitionClasses&&d(t._transitionClasses,e),_n(t,e)}function On(t,e,n){var r=En(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===qo?Yo:Zo,u=0,c=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++u>=a&&c()};setTimeout(function(){u<a&&c()},i+1),t.addEventListener(s,f)}function En(t,e){var n,r=window.getComputedStyle(t),o=r[Xo+"Delay"].split(", "),i=r[Xo+"Duration"].split(", "),a=An(o,i),s=r[Ko+"Delay"].split(", "),u=r[Ko+"Duration"].split(", "),c=An(s,u),f=0,l=0;return e===qo?a>0&&(n=qo,f=a,l=i.length):e===Jo?c>0&&(n=Jo,f=c,l=u.length):(f=Math.max(a,c),n=f>0?a>c?qo:Jo:null,l=n?n===qo?i.length:u.length:0),{type:n,timeout:f,propCount:l,hasTransform:n===qo&&ti.test(r[Xo+"Property"])}}function An(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map(function(e,n){return Cn(e)+Cn(t[n])}))}function Cn(t){return 1e3*Number(t.slice(0,-1))}function Tn(t,e){var o=t.elm;r(o._leaveCb)&&(o._leaveCb.cancelled=!0,o._leaveCb());var i=bn(t.data.transition);if(!n(i)&&!r(o._enterCb)&&1===o.nodeType){for(var a=i.css,u=i.type,c=i.enterClass,f=i.enterToClass,p=i.enterActiveClass,d=i.appearClass,h=i.appearToClass,v=i.appearActiveClass,m=i.beforeEnter,g=i.enter,y=i.afterEnter,_=i.enterCancelled,b=i.beforeAppear,x=i.appear,w=i.afterAppear,O=i.appearCancelled,E=i.duration,A=Wr,C=Wr.$vnode;C&&C.parent;)C=C.parent,A=C.context;var T=!A._isMounted||!t.isRootInsert;if(!T||x||""===x){var j=T&&d?d:c,P=T&&v?v:p,k=T&&h?h:f,M=T?b||m:m,$=T&&"function"==typeof x?x:g,I=T?w||y:y,N=T?O||_:_,F=l(s(E)?E.enter:E),R=!1!==a&&!hr,L=kn($),D=o._enterCb=S(function(){R&&(Sn(o,k),Sn(o,P)),D.cancelled?(R&&Sn(o,j),N&&N(o)):I&&I(o),o._enterCb=null});t.data.show||tt(t.data.hook||(t.data.hook={}),"insert",function(){var e=o.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),$&&$(o,D)}),M&&M(o),R&&(wn(o,j),wn(o,P),xn(function(){wn(o,k),Sn(o,j),D.cancelled||L||(Pn(F)?setTimeout(D,F):On(o,u,D))})),t.data.show&&(e&&e(),$&&$(o,D)),R||L||D()}}}function jn(t,e){function o(){O.cancelled||(t.data.show||((i.parentNode._pending||(i.parentNode._pending={}))[t.key]=t),h&&h(i),b&&(wn(i,f),wn(i,d),xn(function(){wn(i,p),Sn(i,f),O.cancelled||x||(Pn(w)?setTimeout(O,w):On(i,c,O))})),v&&v(i,O),b||x||O())}var i=t.elm;r(i._enterCb)&&(i._enterCb.cancelled=!0,i._enterCb());var a=bn(t.data.transition);if(n(a))return e();if(!r(i._leaveCb)&&1===i.nodeType){var u=a.css,c=a.type,f=a.leaveClass,p=a.leaveToClass,d=a.leaveActiveClass,h=a.beforeLeave,v=a.leave,m=a.afterLeave,g=a.leaveCancelled,y=a.delayLeave,_=a.duration,b=!1!==u&&!hr,x=kn(v),w=l(s(_)?_.leave:_),O=i._leaveCb=S(function(){i.parentNode&&i.parentNode._pending&&(i.parentNode._pending[t.key]=null),b&&(Sn(i,p),Sn(i,d)),O.cancelled?(b&&Sn(i,f),g&&g(i)):(e(),m&&m(i)),i._leaveCb=null});y?y(o):o()}}function Pn(t){return"number"==typeof t&&!isNaN(t)}function kn(t){if(n(t))return!1;var e=t.fns;return r(e)?kn(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function Mn(t,e){!0!==e.data.show&&Tn(e)}function $n(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,u=t.options.length;s<u;s++)if(a=t.options[s],o)i=w(r,Nn(a))>-1,a.selected!==i&&(a.selected=i);else if(x(Nn(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function In(t,e){for(var n=0,r=e.length;n<r;n++)if(x(Nn(e[n]),t))return!1;return!0}function Nn(t){return"_value"in t?t._value:t.value}function Fn(t){t.target.composing=!0}function Rn(t){t.target.composing&&(t.target.composing=!1,Ln(t.target,"input"))}function Ln(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Dn(t){return!t.componentInstance||t.data&&t.data.transition?t:Dn(t.componentInstance._vnode)}function Un(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Un(ct(e.children)):t}function Bn(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[Kn(i)]=o[i];return e}function Wn(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function Vn(t){for(;t=t.parent;)if(t.data.transition)return!0}function Gn(t,e){return e.key===t.key&&e.tag===t.tag}function Hn(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function zn(t){t.data.newPos=t.elm.getBoundingClientRect()}function qn(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}var Jn=Object.prototype.toString,Xn=(p("slot,component",!0),Object.prototype.hasOwnProperty),Yn=/-(\w)/g,Kn=v(function(t){return t.replace(Yn,function(t,e){return e?e.toUpperCase():""})}),Zn=v(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),Qn=/([^-])([A-Z])/g,tr=v(function(t){return t.replace(Qn,"$1-$2").replace(Qn,"$1-$2").toLowerCase()}),er=function(){return!1},nr=function(t){return t},rr="data-server-rendered",or=["component","directive","filter"],ir=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],ar={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:er,isReservedAttr:er,isUnknownElement:er,getTagNamespace:b,parsePlatformTagName:nr,mustUseProp:er,_lifecycleHooks:ir},sr=Object.freeze({}),ur=/[^\w.$]/,cr=b,fr="__proto__"in{},lr="undefined"!=typeof window,pr=lr&&window.navigator.userAgent.toLowerCase(),dr=pr&&/msie|trident/.test(pr),hr=pr&&pr.indexOf("msie 9.0")>0,vr=pr&&pr.indexOf("edge/")>0,mr=pr&&pr.indexOf("android")>0,gr=pr&&/iphone|ipad|ipod|ios/.test(pr),yr=pr&&/chrome\/\d+/.test(pr)&&!vr,_r=!1;if(lr)try{var br={};Object.defineProperty(br,"passive",{get:function(){_r=!0}}),window.addEventListener("test-passive",null,br)}catch(t){}var xr,wr,Sr=function(){return void 0===xr&&(xr=!lr&&void 0!==t&&"server"===t.process.env.VUE_ENV),xr},Or=lr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Er="undefined"!=typeof Symbol&&T(Symbol)&&"undefined"!=typeof Reflect&&T(Reflect.ownKeys),Ar=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e<t.length;e++)t[e]()}var e,n=[],r=!1;if("undefined"!=typeof Promise&&T(Promise)){var o=Promise.resolve(),i=function(t){console.error(t)};e=function(){o.then(t).catch(i),gr&&setTimeout(b)}}else if("undefined"==typeof MutationObserver||!T(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())e=function(){setTimeout(t,0)};else{var a=1,s=new MutationObserver(t),u=document.createTextNode(String(a));s.observe(u,{characterData:!0}),e=function(){a=(a+1)%2,u.data=String(a)}}return function(t,o){var i;if(n.push(function(){if(t)try{t.call(o)}catch(t){C(t,o,"nextTick")}else i&&i(o)}),r||(r=!0,e()),!t&&"undefined"!=typeof Promise)return new Promise(function(t,e){i=t})}}();wr="undefined"!=typeof Set&&T(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Cr=0,Tr=function(){this.id=Cr++,this.subs=[]};Tr.prototype.addSub=function(t){this.subs.push(t)},Tr.prototype.removeSub=function(t){d(this.subs,t)},Tr.prototype.depend=function(){Tr.target&&Tr.target.addDep(this)},Tr.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},Tr.target=null;var jr=[],Pr=Array.prototype,kr=Object.create(Pr);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Pr[t];E(kr,t,function(){for(var n=arguments,r=arguments.length,o=new Array(r);r--;)o[r]=n[r];var i,a=e.apply(this,o),s=this.__ob__;switch(t){case"push":case"unshift":i=o;break;case"splice":i=o.slice(2)}return i&&s.observeArray(i),s.dep.notify(),a})});var Mr=Object.getOwnPropertyNames(kr),$r={shouldConvert:!0,isSettingProps:!1},Ir=function(t){if(this.value=t,this.dep=new Tr,this.vmCount=0,E(t,"__ob__",this),Array.isArray(t)){(fr?k:M)(t,kr,Mr),this.observeArray(t)}else this.walk(t)};Ir.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)I(t,e[n],t[e[n]])},Ir.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)$(t[e])};var Nr=ar.optionMergeStrategies;Nr.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,o="function"==typeof t?t.call(n):void 0;return r?L(r,o):o}:void 0:e?"function"!=typeof e?t:t?function(){return L(e.call(this),t.call(this))}:e:t},ir.forEach(function(t){Nr[t]=D}),or.forEach(function(t){Nr[t+"s"]=U}),Nr.watch=function(t,e){if(!e)return Object.create(t||null);if(!t)return e;var n={};y(n,t);for(var r in e){var o=n[r],i=e[r];o&&!Array.isArray(o)&&(o=[o]),n[r]=o?o.concat(i):[i]}return n},Nr.props=Nr.methods=Nr.computed=function(t,e){if(!e)return Object.create(t||null);if(!t)return e;var n=Object.create(null);return y(n,t),y(n,e),n};var Fr=function(t,e){return void 0===e?t:e},Rr=function(t,e,n,r,o,i,a){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.functionalContext=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1},Lr={child:{}};Lr.child.get=function(){return this.componentInstance},Object.defineProperties(Rr.prototype,Lr);var Dr,Ur=function(){var t=new Rr;return t.text="",t.isComment=!0,t},Br=v(function(t){var e="&"===t.charAt(0);t=e?t.slice(1):t;var n="~"===t.charAt(0);t=n?t.slice(1):t;var r="!"===t.charAt(0);return t=r?t.slice(1):t,{name:t,once:n,capture:r,passive:e}}),Wr=null,Vr=[],Gr=[],Hr={},zr=!1,qr=!1,Jr=0,Xr=0,Yr=function(t,e,n,r){this.vm=t,t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++Xr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new wr,this.newDepIds=new wr,this.expression="","function"==typeof e?this.getter=e:(this.getter=A(e),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};Yr.prototype.get=function(){j(this);var t,e=this.vm;if(this.user)try{t=this.getter.call(e,e)}catch(t){C(t,e,'getter for watcher "'+this.expression+'"')}else t=this.getter.call(e,e);return this.deep&&Pt(t),P(),this.cleanupDeps(),t},Yr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Yr.prototype.cleanupDeps=function(){for(var t=this,e=this.deps.length;e--;){var n=t.deps[e];t.newDepIds.has(n.id)||n.removeSub(t)}var r=this.depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},Yr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():jt(this)},Yr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){C(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Yr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Yr.prototype.depend=function(){for(var t=this,e=this.deps.length;e--;)t.deps[e].depend()},Yr.prototype.teardown=function(){var t=this;if(this.active){this.vm._isBeingDestroyed||d(this.vm._watchers,this);for(var e=this.deps.length;e--;)t.deps[e].removeSub(t);this.active=!1}};var Kr=new wr,Zr={enumerable:!0,configurable:!0,get:b,set:b},Qr={lazy:!0},to={init:function(t,e,n,r){if(!t.componentInstance||t.componentInstance._isDestroyed){(t.componentInstance=Xt(t,Wr,n,r)).$mount(e?t.elm:void 0,e)}else if(t.data.keepAlive){var o=t;to.prepatch(o,o)}},prepatch:function(t,e){var n=e.componentOptions;_t(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e=t.context,n=t.componentInstance;n._isMounted||(n._isMounted=!0,St(n,"mounted")),t.data.keepAlive&&(e._isMounted?Ct(n):xt(n,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?wt(e,!0):e.$destroy())}},eo=Object.keys(to),no=1,ro=2,oo=0;!function(t){t.prototype._init=function(t){var e=this;e._uid=oo++,e._isVue=!0,t&&t._isComponent?pe(e,t):e.$options=V(de(e.constructor),t||{},e),e._renderProxy=e,e._self=e,gt(e),ft(e),le(e),St(e,"beforeCreate"),Gt(e),$t(e),Vt(e),St(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(me),function(t){var e={};e.get=function(){return this._data};var n={};n.get=function(){return this._props},Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=N,t.prototype.$delete=F,t.prototype.$watch=function(t,e,n){var r=this;n=n||{},n.user=!0;var o=new Yr(r,t,e,n);return n.immediate&&e.call(r,o.value),function(){o.teardown()}}}(me),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this,o=this;if(Array.isArray(t))for(var i=0,a=t.length;i<a;i++)r.$on(t[i],n);else(o._events[t]||(o._events[t]=[])).push(n),e.test(t)&&(o._hasHookEvent=!0);return o},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this,r=this;if(!arguments.length)return r._events=Object.create(null),r;if(Array.isArray(t)){for(var o=0,i=t.length;o<i;o++)n.$off(t[o],e);return r}var a=r._events[t];if(!a)return r;if(1===arguments.length)return r._events[t]=null,r;for(var s,u=a.length;u--;)if((s=a[u])===e||s.fn===e){a.splice(u,1);break}return r},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?g(n):n;for(var r=g(arguments,1),o=0,i=n.length;o<i;o++)n[o].apply(e,r)}return e}}(me),function(t){t.prototype._update=function(t,e){var n=this;n._isMounted&&St(n,"beforeUpdate");var r=n.$el,o=n._vnode,i=Wr;Wr=n,n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1,n.$options._parentElm,n.$options._refElm),Wr=i,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){var t=this;t._watcher&&t._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){St(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||d(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),St(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$options._parentElm=t.$options._refElm=null}}}(me),function(t){t.prototype.$nextTick=function(t){return Ar(t,this)},t.prototype._render=function(){var t=this,e=t.$options,n=e.render,r=e.staticRenderFns,o=e._parentVnode;if(t._isMounted)for(var i in t.$slots)t.$slots[i]=K(t.$slots[i]);t.$scopedSlots=o&&o.data.scopedSlots||sr,r&&!t._staticTrees&&(t._staticTrees=[]),t.$vnode=o;var a;try{a=n.call(t._renderProxy,t.$createElement)}catch(e){C(e,t,"render function"),a=t._vnode}return a instanceof Rr||(a=Ur()),a.parent=o,a},t.prototype._o=ue,t.prototype._n=l,t.prototype._s=f,t.prototype._l=ne,t.prototype._t=re,t.prototype._q=x,t.prototype._i=w,t.prototype._m=se,t.prototype._f=oe,t.prototype._k=ie,t.prototype._b=ae,t.prototype._v=X,t.prototype._e=Ur,t.prototype._u=mt}(me);var io=[String,RegExp],ao={name:"keep-alive",abstract:!0,props:{include:io,exclude:io},created:function(){this.cache=Object.create(null)},destroyed:function(){var t=this;for(var e in t.cache)Ae(t.cache[e])},watch:{include:function(t){Ee(this.cache,this._vnode,function(e){return Oe(t,e)})},exclude:function(t){Ee(this.cache,this._vnode,function(e){return!Oe(t,e)})}},render:function(){var t=ct(this.$slots.default),e=t&&t.componentOptions;if(e){var n=Se(e);if(n&&(this.include&&!Oe(this.include,n)||this.exclude&&Oe(this.exclude,n)))return t;var r=null==t.key?e.Ctor.cid+(e.tag?"::"+e.tag:""):t.key;this.cache[r]?t.componentInstance=this.cache[r].componentInstance:this.cache[r]=t,t.data.keepAlive=!0}return t}},so={KeepAlive:ao};!function(t){var e={};e.get=function(){return ar},Object.defineProperty(t,"config",e),t.util={warn:cr,extend:y,mergeOptions:V,defineReactive:I},t.set=N,t.delete=F,t.nextTick=Ar,t.options=Object.create(null),or.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,y(t.options.components,so),ge(t),ye(t),_e(t),we(t)}(me),Object.defineProperty(me.prototype,"$isServer",{get:Sr}),Object.defineProperty(me.prototype,"$ssrContext",{get:function(){return this.$vnode.ssrContext}}),me.version="2.3.4";var uo,co,fo=p("style,class"),lo=p("input,textarea,option,select"),po=function(t,e,n){return"value"===n&&lo(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},ho=p("contenteditable,draggable,spellcheck"),vo=p("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),mo="http://www.w3.org/1999/xlink",go=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},yo=function(t){return go(t)?t.slice(6,t.length):""},_o=function(t){return null==t||!1===t},bo={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},xo=p("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template"),wo=p("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),So=function(t){return xo(t)||wo(t)},Oo=Object.create(null),Eo=Object.freeze({createElement:Ne,createElementNS:Fe,createTextNode:Re,createComment:Le,insertBefore:De,removeChild:Ue,appendChild:Be,parentNode:We,nextSibling:Ve,tagName:Ge,setTextContent:He,setAttribute:ze}),Ao={create:function(t,e){qe(e)},update:function(t,e){t.data.ref!==e.data.ref&&(qe(t,!0),qe(e))},destroy:function(t){qe(t,!0)}},Co=new Rr("",{},[]),To=["create","activate","update","remove","destroy"],jo={create:Ke,update:Ke,destroy:function(t){Ke(t,Co)}},Po=Object.create(null),ko=[Ao,jo],Mo={create:nn,update:nn},$o={create:on,update:on},Io="__r",No="__c",Fo={create:cn,update:cn},Ro={create:fn,update:fn},Lo=v(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),Do=/^--/,Uo=/\s*!important$/,Bo=function(t,e,n){if(Do.test(e))t.style.setProperty(e,n);else if(Uo.test(n))t.style.setProperty(e,n.replace(Uo,""),"important");else{var r=Vo(e);if(Array.isArray(n))for(var o=0,i=n.length;o<i;o++)t.style[r]=n[o];else t.style[r]=n}},Wo=["Webkit","Moz","ms"],Vo=v(function(t){if(co=co||document.createElement("div"),"filter"!==(t=Kn(t))&&t in co.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Wo.length;n++){var r=Wo[n]+e;if(r in co.style)return r}}),Go={create:gn,update:gn},Ho=v(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),zo=lr&&!hr,qo="transition",Jo="animation",Xo="transition",Yo="transitionend",Ko="animation",Zo="animationend";zo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Xo="WebkitTransition",Yo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ko="WebkitAnimation",Zo="webkitAnimationEnd"));var Qo=lr&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,ti=/\b(transform|all)(,|$)/,ei=lr?{create:Mn,activate:Mn,remove:function(t,e){!0!==t.data.show?jn(t,e):e()}}:{},ni=[Mo,$o,Fo,Ro,Go,ei],ri=ni.concat(ko),oi=function(t){function e(t){return new Rr(P.tagName(t).toLowerCase(),{},[],void 0,t)}function i(t,e){function n(){0==--n.listeners&&s(t)}return n.listeners=e,n}function s(t){var e=P.parentNode(t);r(e)&&P.removeChild(e,t)}function u(t,e,n,i,a){if(t.isRootInsert=!a,!c(t,e,n,i)){var s=t.data,u=t.children,f=t.tag;r(f)?(t.elm=t.ns?P.createElementNS(t.ns,f):P.createElement(f,t),g(t),h(t,u,e),r(s)&&m(t,e),d(n,t.elm,i)):o(t.isComment)?(t.elm=P.createComment(t.text),d(n,t.elm,i)):(t.elm=P.createTextNode(t.text),d(n,t.elm,i))}}function c(t,e,n,i){var a=t.data;if(r(a)){var s=r(t.componentInstance)&&a.keepAlive;if(r(a=a.hook)&&r(a=a.init)&&a(t,!1,n,i),r(t.componentInstance))return f(t,e),o(s)&&l(t,e,n,i),!0}}function f(t,e){r(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,v(t)?(m(t,e),g(t)):(qe(t),e.push(t))}function l(t,e,n,o){for(var i,a=t;a.componentInstance;)if(a=a.componentInstance._vnode,r(i=a.data)&&r(i=i.transition)){for(i=0;i<T.activate.length;++i)T.activate[i](Co,a);e.push(a);break}d(n,t.elm,o)}function d(t,e,n){r(t)&&(r(n)?n.parentNode===t&&P.insertBefore(t,e,n):P.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)u(e[r],n,t.elm,null,!0);else a(t.text)&&P.appendChild(t.elm,P.createTextNode(t.text))}function v(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return r(t.tag)}function m(t,e){for(var n=0;n<T.create.length;++n)T.create[n](Co,t);A=t.data.hook,r(A)&&(r(A.create)&&A.create(Co,t),r(A.insert)&&e.push(t))}function g(t){for(var e,n=t;n;)r(e=n.context)&&r(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,""),n=n.parent;r(e=Wr)&&e!==t.context&&r(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,"")}function y(t,e,n,r,o,i){for(;r<=o;++r)u(n[r],i,t,e)}function _(t){var e,n,o=t.data;if(r(o))for(r(e=o.hook)&&r(e=e.destroy)&&e(t),e=0;e<T.destroy.length;++e)T.destroy[e](t);if(r(e=t.children))for(n=0;n<t.children.length;++n)_(t.children[n])}function b(t,e,n,o){for(;n<=o;++n){var i=e[n];r(i)&&(r(i.tag)?(x(i),_(i)):s(i.elm))}}function x(t,e){if(r(e)||r(t.data)){var n,o=T.remove.length+1;for(r(e)?e.listeners+=o:e=i(t.elm,o),r(n=t.componentInstance)&&r(n=n._vnode)&&r(n.data)&&x(n,e),n=0;n<T.remove.length;++n)T.remove[n](t,e);r(n=t.data.hook)&&r(n=n.remove)?n(t,e):e()}else s(t.elm)}function w(t,e,o,i,a){for(var s,c,f,l,p=0,d=0,h=e.length-1,v=e[0],m=e[h],g=o.length-1,_=o[0],x=o[g],w=!a;p<=h&&d<=g;)n(v)?v=e[++p]:n(m)?m=e[--h]:Je(v,_)?(S(v,_,i),v=e[++p],_=o[++d]):Je(m,x)?(S(m,x,i),m=e[--h],x=o[--g]):Je(v,x)?(S(v,x,i),w&&P.insertBefore(t,v.elm,P.nextSibling(m.elm)),v=e[++p],x=o[--g]):Je(m,_)?(S(m,_,i),w&&P.insertBefore(t,m.elm,v.elm),m=e[--h],_=o[++d]):(n(s)&&(s=Ye(e,p,h)),c=r(_.key)?s[_.key]:null,n(c)?(u(_,i,t,v.elm),_=o[++d]):(f=e[c],Je(f,_)?(S(f,_,i),e[c]=void 0,w&&P.insertBefore(t,_.elm,v.elm),_=o[++d]):(u(_,i,t,v.elm),_=o[++d])));p>h?(l=n(o[g+1])?null:o[g+1].elm,y(t,l,o,d,g,i)):d>g&&b(t,e,p,h)}function S(t,e,i,a){if(t!==e){if(o(e.isStatic)&&o(t.isStatic)&&e.key===t.key&&(o(e.isCloned)||o(e.isOnce)))return e.elm=t.elm,void(e.componentInstance=t.componentInstance);var s,u=e.data;r(u)&&r(s=u.hook)&&r(s=s.prepatch)&&s(t,e);var c=e.elm=t.elm,f=t.children,l=e.children;if(r(u)&&v(e)){for(s=0;s<T.update.length;++s)T.update[s](t,e);r(s=u.hook)&&r(s=s.update)&&s(t,e)}n(e.text)?r(f)&&r(l)?f!==l&&w(c,f,l,i,a):r(l)?(r(t.text)&&P.setTextContent(c,""),y(c,null,l,0,l.length-1,i)):r(f)?b(c,f,0,f.length-1):r(t.text)&&P.setTextContent(c,""):t.text!==e.text&&P.setTextContent(c,e.text),r(u)&&r(s=u.hook)&&r(s=s.postpatch)&&s(t,e)}}function O(t,e,n){if(o(n)&&r(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i<e.length;++i)e[i].data.hook.insert(e[i])}function E(t,e,n){e.elm=t;var o=e.tag,i=e.data,a=e.children;if(r(i)&&(r(A=i.hook)&&r(A=A.init)&&A(e,!0),r(A=e.componentInstance)))return f(e,n),!0;if(r(o)){if(r(a))if(t.hasChildNodes()){for(var s=!0,u=t.firstChild,c=0;c<a.length;c++){if(!u||!E(u,a[c],n)){s=!1;break}u=u.nextSibling}if(!s||u)return!1}else h(e,a,n);if(r(i))for(var l in i)if(!k(l)){m(e,n);break}}else t.data!==e.text&&(t.data=e.text);return!0}var A,C,T={},j=t.modules,P=t.nodeOps;for(A=0;A<To.length;++A)for(T[To[A]]=[],C=0;C<j.length;++C)r(j[C][To[A]])&&T[To[A]].push(j[C][To[A]]);var k=p("attrs,style,class,staticClass,staticStyle,key");return function(t,i,a,s,c,f){if(n(i))return void(r(t)&&_(t));var l=!1,p=[];if(n(t))l=!0,u(i,p,c,f);else{var d=r(t.nodeType);if(!d&&Je(t,i))S(t,i,p,s);else{if(d){if(1===t.nodeType&&t.hasAttribute(rr)&&(t.removeAttribute(rr),a=!0),o(a)&&E(t,i,p))return O(i,p,!0),t;t=e(t)}var h=t.elm,m=P.parentNode(h);if(u(i,p,h._leaveCb?null:m,P.nextSibling(h)),r(i.parent)){for(var g=i.parent;g;)g.elm=i.elm,g=g.parent;if(v(i))for(var y=0;y<T.create.length;++y)T.create[y](Co,i.parent)}r(m)?b(m,[t],0,0):r(t.tag)&&_(t)}}return O(i,p,l),i.elm}}({nodeOps:Eo,modules:ri});hr&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Ln(t,"input")});var ii={inserted:function(t,e,n){if("select"===n.tag){var r=function(){$n(t,e,n.context)};r(),(dr||vr)&&setTimeout(r,0)}else"textarea"!==n.tag&&"text"!==t.type&&"password"!==t.type||(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("change",Rn),mr||(t.addEventListener("compositionstart",Fn),t.addEventListener("compositionend",Rn)),hr&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){$n(t,e,n.context);(t.multiple?e.value.some(function(e){return In(e,t.options)}):e.value!==e.oldValue&&In(e.value,t.options))&&Ln(t,"change")}}},ai={bind:function(t,e,n){var r=e.value;n=Dn(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o&&!hr?(n.data.show=!0,Tn(n,function(){t.style.display=i})):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;r!==e.oldValue&&(n=Dn(n),n.data&&n.data.transition&&!hr?(n.data.show=!0,r?Tn(n,function(){t.style.display=t.__vOriginalDisplay}):jn(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},si={model:ii,show:ai},ui={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},ci={name:"transition",props:ui,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(function(t){return t.tag}),n.length)){var r=this.mode,o=n[0];if(Vn(this.$vnode))return o;var i=Un(o);if(!i)return o;if(this._leaving)return Wn(t,o);var s="__transition-"+this._uid+"-";i.key=null==i.key?s+i.tag:a(i.key)?0===String(i.key).indexOf(s)?i.key:s+i.key:i.key;var u=(i.data||(i.data={})).transition=Bn(this),c=this._vnode,f=Un(c);if(i.data.directives&&i.data.directives.some(function(t){return"show"===t.name})&&(i.data.show=!0),f&&f.data&&!Gn(i,f)){var l=f&&(f.data.transition=y({},u));if("out-in"===r)return this._leaving=!0,tt(l,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),Wn(t,o);if("in-out"===r){var p,d=function(){p()};tt(u,"afterEnter",d),tt(u,"enterCancelled",d),tt(l,"delayLeave",function(t){p=t})}}return o}}},fi=y({tag:String,moveClass:String},ui);delete fi.mode;var li={props:fi,render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Bn(this),s=0;s<o.length;s++){var u=o[s];if(u.tag)if(null!=u.key&&0!==String(u.key).indexOf("__vlist"))i.push(u),n[u.key]=u,(u.data||(u.data={})).transition=a;else;}if(r){for(var c=[],f=[],l=0;l<r.length;l++){var p=r[l];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?c.push(p):f.push(p)}this.kept=t(e,null,c),this.removed=f}return t(e,null,i)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";if(t.length&&this.hasMove(t[0].elm,e)){t.forEach(Hn),t.forEach(zn),t.forEach(qn);var n=document.body;n.offsetHeight;t.forEach(function(t){if(t.data.moved){var n=t.elm,r=n.style;wn(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Yo,n._moveCb=function t(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Yo,t),n._moveCb=null,Sn(n,e))})}})}},methods:{hasMove:function(t,e){if(!zo)return!1;if(null!=this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){_n(n,t)}),yn(n,e),n.style.display="none",this.$el.appendChild(n);var r=En(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}},pi={Transition:ci,TransitionGroup:li};me.config.mustUseProp=po,me.config.isReservedTag=So,me.config.isReservedAttr=fo,me.config.getTagNamespace=Me,me.config.isUnknownElement=$e,y(me.options.directives,si),y(me.options.components,pi),me.prototype.__patch__=lr?oi:b,me.prototype.$mount=function(t,e){return t=t&&lr?Ie(t):void 0,yt(this,t,e)},setTimeout(function(){ar.devtools&&Or&&Or.emit("init",me)},0),e.default=me}.call(e,n(93))},function(t,e,n){var r=n(5)("unscopables"),o=Array.prototype;void 0==o[r]&&n(12)(o,r,{}),t.exports=function(t){o[r][t]=!0}},function(t,e,n){var r=n(26),o=n(104),i=n(70),a=n(1),s=n(8),u=n(87),c={},f={},e=t.exports=function(t,e,n,l,p){var d,h,v,m,g=p?function(){return t}:u(t),y=r(n,l,e?2:1),_=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(i(g)){for(d=s(t.length);d>_;_++)if((m=e?y(a(h=t[_])[0],h[1]):y(t[_]))===c||m===f)return m}else for(v=g.call(t);!(h=v.next()).done;)if((m=o(v,y,h.value,e))===c||m===f)return m};e.BREAK=c,e.RETURN=f},function(t,e){t.exports={}},function(t,e,n){var r=n(7).f,o=n(10),i=n(5)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(0),o=n(20),i=n(3),a=n(83),s="["+a+"]",u="​…",c=RegExp("^"+s+s+"*"),f=RegExp(s+s+"*$"),l=function(t,e,n){var o={},s=i(function(){return!!a[t]()||u[t]()!=u}),c=o[t]=s?e(p):a[t];n&&(o[n]=c),r(r.P+r.F*s,"String",o)},p=l.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(f,"")),t};t.exports=l},function(t,e,n){"use strict";(function(t){function e(t,e,n){t[e]||Object[r](t,e,{writable:!0,configurable:!0,value:n})}if(n(334),n(348),n(154),t._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");t._babelPolyfill=!0;var r="defineProperty";e(String.prototype,"padLeft","".padStart),e(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(t){[][t]&&e(Array,t,Function.call.bind([][t]))})}).call(e,n(93))},function(t,e,n){var r=n(19),o=n(5)("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),o))?n:i?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,n){var r=n(19);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(15),o=n(8),i=n(39);t.exports=function(t){return function(e,n,a){var s,u=r(e),c=o(u.length),f=i(a,c);if(t&&n!=n){for(;c>f;)if((s=u[f++])!=s)return!0}else for(;c>f;f++)if((t||f in u)&&u[f]===n)return t||f||0;return!t&&-1}}},function(t,e,n){"use strict";var r=n(2),o=n(0),i=n(13),a=n(37),s=n(29),u=n(43),c=n(32),f=n(4),l=n(3),p=n(57),d=n(45),h=n(69);t.exports=function(t,e,n,v,m,g){var y=r[t],_=y,b=m?"set":"add",x=_&&_.prototype,w={},S=function(t){var e=x[t];i(x,t,"delete"==t?function(t){return!(g&&!f(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof _&&(g||x.forEach&&!l(function(){(new _).entries().next()}))){var O=new _,E=O[b](g?{}:-0,1)!=O,A=l(function(){O.has(1)}),C=p(function(t){new _(t)}),T=!g&&l(function(){for(var t=new _,e=5;e--;)t[b](e,e);return!t.has(-0)});C||(_=e(function(e,n){c(e,_,t);var r=h(new y,e,_);return void 0!=n&&u(n,m,r[b],r),r}),_.prototype=x,x.constructor=_),(A||T)&&(S("delete"),S("has"),m&&S("get")),(T||E)&&S(b),g&&x.clear&&delete x.clear}else _=v.getConstructor(e,t,m,b),a(_.prototype,n),s.NEED=!0;return d(_,t),w[t]=_,o(o.G+o.W+o.F*(_!=y),w),g||v.setStrong(_,t,m),_}},function(t,e,n){"use strict";var r=n(12),o=n(13),i=n(3),a=n(20),s=n(5);t.exports=function(t,e,n){var u=s(t),c=n(a,u,""[t]),f=c[0],l=c[1];i(function(){var e={};return e[u]=function(){return 7},7!=""[t](e)})&&(o(String.prototype,t,f),r(RegExp.prototype,u,2==e?function(t,e){return l.call(t,this,e)}:function(t){return l.call(t,this)}))}},function(t,e,n){"use strict";var r=n(1);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var r=n(4),o=n(19),i=n(5)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},function(t,e,n){var r=n(5)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},function(t,e,n){t.exports=n(33)||!n(3)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete n(2)[t]})},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(2),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,n){for(var r,o=n(2),i=n(12),a=n(40),s=a("typed_array"),u=a("view"),c=!(!o.ArrayBuffer||!o.DataView),f=c,l=0,p="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(r=o[p[l++]])?(i(r.prototype,s,!0),i(r.prototype,u,!0)):f=!1;t.exports={ABV:c,CONSTR:f,TYPED:s,VIEW:u}},function(t,e,n){"use strict";function r(t){this.state=H,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}function o(t,e){t instanceof Promise?this.promise=t:this.promise=new Promise(t.bind(e)),this.context=e}function i(t){"undefined"!=typeof console&&Q&&console.warn("[VueResource warn]: "+t)}function a(t){"undefined"!=typeof console&&console.error(t)}function s(t,e){return J(t,e)}function u(t){return t?t.replace(/^\s*|\s*$/g,""):""}function c(t,e){return t&&void 0===e?t.replace(/\s+$/,""):t&&e?t.replace(new RegExp("["+e+"]+$"),""):t}function f(t){return t?t.toLowerCase():""}function l(t){return t?t.toUpperCase():""}function p(t){return"string"==typeof t}function d(t){return"function"==typeof t}function h(t){return null!==t&&"object"==typeof t}function v(t){return h(t)&&Object.getPrototypeOf(t)==Object.prototype}function m(t){return"undefined"!=typeof Blob&&t instanceof Blob}function g(t){return"undefined"!=typeof FormData&&t instanceof FormData}function y(t,e,n){var r=o.resolve(t);return arguments.length<2?r:r.then(e,n)}function _(t,e,n){return n=n||{},d(n)&&(n=n.call(e)),x(t.bind({$vm:e,$options:n}),t,{$options:n})}function b(t,e){var n,r;if(nt(t))for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(h(t))for(r in t)Y.call(t,r)&&e.call(t[r],t[r],r);return t}function x(t){return Z.call(arguments,1).forEach(function(e){O(t,e,!0)}),t}function w(t){return Z.call(arguments,1).forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])}),t}function S(t){return Z.call(arguments,1).forEach(function(e){O(t,e)}),t}function O(t,e,n){for(var r in e)n&&(v(e[r])||nt(e[r]))?(v(e[r])&&!v(t[r])&&(t[r]={}),nt(e[r])&&!nt(t[r])&&(t[r]=[]),O(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function E(t,e,n){var r=A(t),o=r.expand(e);return n&&n.push.apply(n,r.vars),o}function A(t){var e=["+","#",".","/",";","?","&"],n=[];return{vars:n,expand:function(r){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,o,i){if(o){var a=null,s=[];if(-1!==e.indexOf(o.charAt(0))&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(t){var e=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);s.push.apply(s,C(r,a,e[1],e[2]||e[3])),n.push(e[1])}),a&&"+"!==a){var u=",";return"?"===a?u="&":"#"!==a&&(u=a),(0!==s.length?a:"")+s.join(u)}return s.join(",")}return k(i)})}}}function C(t,e,n,r){var o=t[n],i=[];if(T(o)&&""!==o)if("string"==typeof o||"number"==typeof o||"boolean"==typeof o)o=o.toString(),r&&"*"!==r&&(o=o.substring(0,parseInt(r,10))),i.push(P(e,o,j(e)?n:null));else if("*"===r)Array.isArray(o)?o.filter(T).forEach(function(t){i.push(P(e,t,j(e)?n:null))}):Object.keys(o).forEach(function(t){T(o[t])&&i.push(P(e,o[t],t))});else{var a=[];Array.isArray(o)?o.filter(T).forEach(function(t){a.push(P(e,t))}):Object.keys(o).forEach(function(t){T(o[t])&&(a.push(encodeURIComponent(t)),a.push(P(e,o[t].toString())))}),j(e)?i.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&i.push(a.join(","))}else";"===e?i.push(encodeURIComponent(n)):""!==o||"&"!==e&&"?"!==e?""===o&&i.push(""):i.push(encodeURIComponent(n)+"=");return i}function T(t){return void 0!==t&&null!==t}function j(t){return";"===t||"&"===t||"?"===t}function P(t,e,n){return e="+"===t||"#"===t?k(e):encodeURIComponent(e),n?encodeURIComponent(n)+"="+e:e}function k(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t}).join("")}function M(t,e){var n,r=this||{},o=t;return p(t)&&(o={url:t,params:e}),o=x({},M.options,r.$options,o),M.transforms.forEach(function(t){p(t)&&(t=M.transform[t]),d(t)&&(n=$(t,n,r.$vm))}),n(o)}function $(t,e,n){return function(r){return t.call(n,r,e)}}function I(t,e,n){var r,o=nt(e),i=v(e);b(e,function(e,a){r=h(e)||nt(e),n&&(a=n+"["+(i||r?a:"")+"]"),!n&&o?t.add(e.name,e.value):r?I(t,e,a):t.add(a,e)})}function N(t){var e=t.match(/^\[|^\{(?!\{)/),n={"[":/]$/,"{":/}$/};return e&&n[e[0]].test(t)}function F(t,e){e((t.client||(tt?gt:yt))(t))}function R(t,e){return Object.keys(t).reduce(function(t,n){return f(e)===f(n)?n:t},null)}function L(t){if(/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return u(t)}function D(t){return new o(function(e){var n=new FileReader;n.readAsText(t),n.onload=function(){e(n.result)}})}function U(t){return 0===t.type.indexOf("text")||-1!==t.type.indexOf("json")}function B(t){var e=this||{},n=_t(e.$vm);return w(t||{},e.$options,B.options),B.interceptors.forEach(function(t){p(t)&&(t=B.interceptor[t]),d(t)&&n.use(t)}),n(new wt(t)).then(function(t){return t.ok?t:o.reject(t)},function(t){return t instanceof Error&&a(t),o.reject(t)})}function W(t,e,n,r){var o=this||{},i={};return n=rt({},W.actions,n),b(n,function(n,a){n=x({url:t,params:rt({},e)},r,n),i[a]=function(){return(o.$http||B)(V(n,arguments))}}),i}function V(t,e){var n,r=rt({},t),o={};switch(e.length){case 2:o=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:o=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=rt({},r.params,o),r}function G(t){G.installed||(et(t),t.url=M,t.http=B,t.resource=W,t.Promise=o,Object.defineProperties(t.prototype,{$url:{get:function(){return _(t.url,this,this.$options.url)}},$http:{get:function(){return _(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"Url",function(){return M}),n.d(e,"Http",function(){return B}),n.d(e,"Resource",function(){return W});var H=2;r.reject=function(t){return new r(function(e,n){n(t)})},r.resolve=function(t){return new r(function(e,n){e(t)})},r.all=function(t){return new r(function(e,n){var o=0,i=[];0===t.length&&e(i);for(var a=0;a<t.length;a+=1)r.resolve(t[a]).then(function(n){return function(r){i[n]=r,(o+=1)===t.length&&e(i)}}(a),n)})},r.race=function(t){return new r(function(e,n){for(var o=0;o<t.length;o+=1)r.resolve(t[o]).then(e,n)})};var z=r.prototype;z.resolve=function(t){var e=this;if(e.state===H){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof r)return void r.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},z.reject=function(t){var e=this;if(e.state===H){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},z.notify=function(){var t=this;s(function(){if(t.state!==H)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],r=e[1],o=e[2],i=e[3];try{0===t.state?o("function"==typeof n?n.call(void 0,t.value):t.value):1===t.state&&("function"==typeof r?o(r.call(void 0,t.value)):i(t.value))}catch(t){i(t)}}})},z.then=function(t,e){var n=this;return new r(function(r,o){n.deferred.push([t,e,r,o]),n.notify()})},z.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=r),o.all=function(t,e){return new o(Promise.all(t),e)},o.resolve=function(t,e){return new o(Promise.resolve(t),e)},o.reject=function(t,e){return new o(Promise.reject(t),e)},o.race=function(t,e){return new o(Promise.race(t),e)};var q=o.prototype;q.bind=function(t){return this.context=t,this},q.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new o(this.promise.then(t,e),this.context)},q.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new o(this.promise.catch(t),this.context)},q.finally=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),Promise.reject(e)})};var J,X={},Y=X.hasOwnProperty,K=[],Z=K.slice,Q=!1,tt="undefined"!=typeof window,et=function(t){var e=t.config,n=t.nextTick;J=n,Q=e.debug||!e.silent},nt=Array.isArray,rt=Object.assign||S,ot=function(t,e){var n=e(t);return p(t.root)&&!/^(https?:)?\//.test(n)&&(n=c(t.root,"/")+"/"+n),n},it=function(t,e){var n=Object.keys(M.options.params),r={},o=e(t);return b(t.params,function(t,e){-1===n.indexOf(e)&&(r[e]=t)}),r=M.params(r),r&&(o+=(-1==o.indexOf("?")?"?":"&")+r),o},at=function(t){var e=[],n=E(t.url,t.params,e);return e.forEach(function(e){delete t.params[e]}),n};M.options={url:"",root:null,params:{}},M.transform={template:at,query:it,root:ot},M.transforms=["template","query","root"],M.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){d(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},I(e,t),e.join("&").replace(/%20/g,"+")},M.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};var st=function(t){return new o(function(e){var n=new XDomainRequest,r=function(r){var o=r.type,i=0;"load"===o?i=200:"error"===o&&(i=500),e(t.respondWith(n.responseText,{status:i}))};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl()),t.timeout&&(n.timeout=t.timeout),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.onprogress=function(){},n.send(t.getBody())})},ut=tt&&"withCredentials"in new XMLHttpRequest,ct=function(t,e){if(tt){var n=M.parse(location.href),r=M.parse(t.getUrl());r.protocol===n.protocol&&r.host===n.host||(t.crossOrigin=!0,t.emulateHTTP=!1,ut||(t.client=st))}e()},ft=function(t,e){g(t.body)?t.headers.delete("Content-Type"):h(t.body)&&t.emulateJSON&&(t.body=M.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded")),e()},lt=function(t,e){var n=t.headers.get("Content-Type")||"";h(t.body)&&0===n.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),e(function(t){return t.bodyText?y(t.text(),function(e){if(n=t.headers.get("Content-Type")||"",0===n.indexOf("application/json")||N(e))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t}):t})},pt=function(t){return new o(function(e){var n,r,o=t.jsonp||"callback",i=t.jsonpCallback||"_jsonp"+Math.random().toString(36).substr(2),a=null;n=function(n){var o=n.type,s=0;"load"===o&&null!==a?s=200:"error"===o&&(s=500),s&&window[i]&&(delete window[i],document.body.removeChild(r)),e(t.respondWith(a,{status:s}))},window[i]=function(t){a=JSON.stringify(t)},t.abort=function(){n({type:"abort"})},t.params[o]=i,t.timeout&&setTimeout(t.abort,t.timeout),r=document.createElement("script"),r.src=t.getUrl(),r.type="text/javascript",r.async=!0,r.onload=n,r.onerror=n,document.body.appendChild(r)})},dt=function(t,e){"JSONP"==t.method&&(t.client=pt),e()},ht=function(t,e){d(t.before)&&t.before.call(this,t),e()},vt=function(t,e){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST"),e()},mt=function(t,e){b(rt({},B.headers.common,t.crossOrigin?{}:B.headers.custom,B.headers[f(t.method)]),function(e,n){t.headers.has(n)||t.headers.set(n,e)}),e()},gt=function(t){return new o(function(e){var n=new XMLHttpRequest,r=function(r){var o=t.respondWith("response"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?"No Content":u(n.statusText)});b(u(n.getAllResponseHeaders()).split("\n"),function(t){o.headers.append(t.slice(0,t.indexOf(":")),t.slice(t.indexOf(":")+1))}),e(o)};t.abort=function(){return n.abort()},t.progress&&("GET"===t.method?n.addEventListener("progress",t.progress):/^(POST|PUT)$/i.test(t.method)&&n.upload.addEventListener("progress",t.progress)),n.open(t.method,t.getUrl(),!0),t.timeout&&(n.timeout=t.timeout),t.responseType&&"responseType"in n&&(n.responseType=t.responseType),(t.withCredentials||t.credentials)&&(n.withCredentials=!0),t.crossOrigin||t.headers.set("X-Requested-With","XMLHttpRequest"),t.headers.forEach(function(t,e){n.setRequestHeader(e,t)}),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.send(t.getBody())})},yt=function(t){var e=n(362);return new o(function(n){var r,o=t.getUrl(),i=t.getBody(),a=t.method,s={};t.headers.forEach(function(t,e){s[e]=t}),e(o,{body:i,method:a,headers:s}).then(r=function(e){var r=t.respondWith(e.body,{status:e.statusCode,statusText:u(e.statusMessage)});b(e.headers,function(t,e){r.headers.set(e,t)}),n(r)},function(t){return r(t.response)})})},_t=function(t){function e(e){return new o(function(o,s){function u(){n=r.pop(),d(n)?n.call(t,e,c):(i("Invalid interceptor of type "+typeof n+", must be a function"),c())}function c(e){if(d(e))a.unshift(e);else if(h(e))return a.forEach(function(n){e=y(e,function(e){return n.call(t,e)||e},s)}),void y(e,o,s);u()}u()},t)}var n,r=[F],a=[];return h(t)||(t=null),e.use=function(t){r.push(t)},e},bt=function(t){var e=this;this.map={},b(t,function(t,n){return e.append(n,t)})};bt.prototype.has=function(t){return null!==R(this.map,t)},bt.prototype.get=function(t){var e=this.map[R(this.map,t)];return e?e.join():null},bt.prototype.getAll=function(t){return this.map[R(this.map,t)]||[]},bt.prototype.set=function(t,e){this.map[L(R(this.map,t)||t)]=[u(e)]},bt.prototype.append=function(t,e){var n=this.map[R(this.map,t)];n?n.push(u(e)):this.set(t,e)},bt.prototype.delete=function(t){delete this.map[R(this.map,t)]},bt.prototype.deleteAll=function(){this.map={}},bt.prototype.forEach=function(t,e){var n=this;b(this.map,function(r,o){b(r,function(r){return t.call(e,r,o,n)})})};var xt=function(t,e){var n=e.url,r=e.headers,o=e.status,i=e.statusText;this.url=n,this.ok=o>=200&&o<300,this.status=o||0,this.statusText=i||"",this.headers=new bt(r),this.body=t,p(t)?this.bodyText=t:m(t)&&(this.bodyBlob=t,U(t)&&(this.bodyText=D(t)))};xt.prototype.blob=function(){return y(this.bodyBlob)},xt.prototype.text=function(){return y(this.bodyText)},xt.prototype.json=function(){return y(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(xt.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var wt=function(t){this.body=null,this.params={},rt(this,t,{method:l(t.method||"GET")}),this.headers instanceof bt||(this.headers=new bt(this.headers))};wt.prototype.getUrl=function(){return M(this)},wt.prototype.getBody=function(){return this.body},wt.prototype.respondWith=function(t,e){return new xt(t,rt(e||{},{url:this.getUrl()}))};var St={Accept:"application/json, text/plain, */*"},Ot={"Content-Type":"application/json;charset=utf-8"};B.options={},B.headers={put:Ot,post:Ot,patch:Ot,delete:Ot,common:St,custom:{}},B.interceptor={before:ht,method:vt,jsonp:dt,json:lt,form:ft,header:mt,cors:ct},B.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){B[t]=function(e,n){return this(rt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){B[t]=function(e,n,r){return this(rt(r||{},{url:e,method:t,body:n}))}}),W.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(G),e.default=G},function(t,e,n){"use strict";var r=n(9),o=n(39),i=n(8);t.exports=function(t){for(var e=r(this),n=i(e.length),a=arguments.length,s=o(a>1?arguments[1]:void 0,n),u=a>2?arguments[2]:void 0,c=void 0===u?n:o(u,n);c>s;)e[s++]=t;return e}},function(t,e,n){"use strict";var r=n(7),o=n(30);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},function(t,e,n){var r=n(4),o=n(2).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(5)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,n){t.exports=n(2).document&&document.documentElement},function(t,e,n){var r=n(4),o=n(77).set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&"function"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},function(t,e,n){var r=n(44),o=n(5)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},function(t,e,n){var r=n(19);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";var r=n(34),o=n(30),i=n(45),a={};n(12)(a,n(5)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},function(t,e,n){"use strict";var r=n(33),o=n(0),i=n(13),a=n(12),s=n(10),u=n(44),c=n(72),f=n(45),l=n(17),p=n(5)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,v,m,g,y){c(n,e,v);var _,b,x,w=function(t){if(!d&&t in A)return A[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",O="values"==m,E=!1,A=t.prototype,C=A[p]||A["@@iterator"]||m&&A[m],T=C||w(m),j=m?O?w("entries"):T:void 0,P="Array"==e?A.entries||C:C;if(P&&(x=l(P.call(new t)))!==Object.prototype&&(f(x,S,!0),r||s(x,p)||a(x,p,h)),O&&C&&"values"!==C.name&&(E=!0,T=function(){return C.call(this)}),r&&!y||!d&&!E&&A[p]||a(A,p,T),u[e]=T,u[S]=h,m)if(_={values:O?T:w("values"),keys:g?T:w("keys"),entries:j},y)for(b in _)b in A||i(A,b,_[b]);else o(o.P+o.F*(d||E),e,_);return _}},function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,n){var r=n(2),o=n(84).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,u="process"==n(19)(a);t.exports=function(){var t,e,n,c=function(){var r,o;for(u&&(r=a.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(u)n=function(){a.nextTick(c)};else if(i){var f=!0,l=document.createTextNode("");new i(c).observe(l,{characterData:!0}),n=function(){l.data=f=!f}}else if(s&&s.resolve){var p=s.resolve();n=function(){p.then(c)}}else n=function(){o.call(r,c)};return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},function(t,e,n){var r=n(4),o=n(1),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n(26)(Function.call,n(16).f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},function(t,e,n){var r=n(60)("keys"),o=n(40);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(1),o=n(11),i=n(5)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r=n(31),o=n(20);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),u=r(n),c=s.length;return u<0||u>=c?t?"":void 0:(i=s.charCodeAt(u),i<55296||i>56319||u+1===c||(a=s.charCodeAt(u+1))<56320||a>57343?t?s.charAt(u):i:t?s.slice(u,u+2):a-56320+(i-55296<<10)+65536)}}},function(t,e,n){var r=n(56),o=n(20);t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},function(t,e,n){"use strict";var r=n(31),o=n(20);t.exports=function(t){var e=String(o(this)),n="",i=r(t);if(i<0||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var r,o,i,a=n(26),s=n(55),u=n(68),c=n(65),f=n(2),l=f.process,p=f.setImmediate,d=f.clearImmediate,h=f.MessageChannel,v=0,m={},g=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},y=function(t){g.call(t.data)};p&&d||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++v]=function(){s("function"==typeof t?t:Function(t),e)},r(v),v},d=function(t){delete m[t]},"process"==n(19)(l)?r=function(t){l.nextTick(a(g,t,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=y,r=a(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",y,!1)):r="onreadystatechange"in c("script")?function(t){u.appendChild(c("script")).onreadystatechange=function(){u.removeChild(this),g.call(t)}}:function(t){setTimeout(a(g,t,1),0)}),t.exports={set:p,clear:d}},function(t,e,n){"use strict";var r=n(2),o=n(6),i=n(33),a=n(61),s=n(12),u=n(37),c=n(3),f=n(32),l=n(31),p=n(8),d=n(35).f,h=n(7).f,v=n(63),m=n(45),g=r.ArrayBuffer,y=r.DataView,_=r.Math,b=r.RangeError,x=r.Infinity,w=g,S=_.abs,O=_.pow,E=_.floor,A=_.log,C=_.LN2,T=o?"_b":"buffer",j=o?"_l":"byteLength",P=o?"_o":"byteOffset",k=function(t,e,n){var r,o,i,a=Array(n),s=8*n-e-1,u=(1<<s)-1,c=u>>1,f=23===e?O(2,-24)-O(2,-77):0,l=0,p=t<0||0===t&&1/t<0?1:0;for(t=S(t),t!=t||t===x?(o=t!=t?1:0,r=u):(r=E(A(t)/C),t*(i=O(2,-r))<1&&(r--,i*=2),t+=r+c>=1?f/i:f*O(2,1-c),t*i>=2&&(r++,i/=2),r+c>=u?(o=0,r=u):r+c>=1?(o=(t*i-1)*O(2,e),r+=c):(o=t*O(2,c-1)*O(2,e),r=0));e>=8;a[l++]=255&o,o/=256,e-=8);for(r=r<<e|o,s+=e;s>0;a[l++]=255&r,r/=256,s-=8);return a[--l]|=128*p,a},M=function(t,e,n){var r,o=8*n-e-1,i=(1<<o)-1,a=i>>1,s=o-7,u=n-1,c=t[u--],f=127&c;for(c>>=7;s>0;f=256*f+t[u],u--,s-=8);for(r=f&(1<<-s)-1,f>>=-s,s+=e;s>0;r=256*r+t[u],u--,s-=8);if(0===f)f=1-a;else{if(f===i)return r?NaN:c?-x:x;r+=O(2,e),f-=a}return(c?-1:1)*r*O(2,f-e)},$=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},I=function(t){return[255&t]},N=function(t){return[255&t,t>>8&255]},F=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},R=function(t){return k(t,52,8)},L=function(t){return k(t,23,4)},D=function(t,e,n){h(t.prototype,e,{get:function(){return this[n]}})},U=function(t,e,n,r){var o=+n,i=l(o);if(o!=i||i<0||i+e>t[j])throw b("Wrong index!");var a=t[T]._b,s=i+t[P],u=a.slice(s,s+e);return r?u:u.reverse()},B=function(t,e,n,r,o,i){var a=+n,s=l(a);if(a!=s||s<0||s+e>t[j])throw b("Wrong index!");for(var u=t[T]._b,c=s+t[P],f=r(+o),p=0;p<e;p++)u[c+p]=f[i?p:e-p-1]},W=function(t,e){f(t,g,"ArrayBuffer");var n=+e,r=p(n);if(n!=r)throw b("Wrong length!");return r};if(a.ABV){if(!c(function(){new g})||!c(function(){new g(.5)})){g=function(t){return new w(W(this,t))};for(var V,G=g.prototype=w.prototype,H=d(w),z=0;H.length>z;)(V=H[z++])in g||s(g,V,w[V]);i||(G.constructor=g)}var q=new y(new g(2)),J=y.prototype.setInt8;q.setInt8(0,2147483648),q.setInt8(1,2147483649),!q.getInt8(0)&&q.getInt8(1)||u(y.prototype,{setInt8:function(t,e){J.call(this,t,e<<24>>24)},setUint8:function(t,e){J.call(this,t,e<<24>>24)}},!0)}else g=function(t){var e=W(this,t);this._b=v.call(Array(e),0),this[j]=e},y=function(t,e,n){f(this,y,"DataView"),f(t,g,"DataView");var r=t[j],o=l(e);if(o<0||o>r)throw b("Wrong offset!");if(n=void 0===n?r-o:p(n),o+n>r)throw b("Wrong length!");this[T]=t,this[P]=o,this[j]=n},o&&(D(g,"byteLength","_l"),D(y,"buffer","_b"),D(y,"byteLength","_l"),D(y,"byteOffset","_o")),u(y.prototype,{getInt8:function(t){return U(this,1,t)[0]<<24>>24},getUint8:function(t){return U(this,1,t)[0]},getInt16:function(t){var e=U(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=U(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return $(U(this,4,t,arguments[1]))},getUint32:function(t){return $(U(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return M(U(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return M(U(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){B(this,1,t,I,e)},setUint8:function(t,e){B(this,1,t,I,e)},setInt16:function(t,e){B(this,2,t,N,e,arguments[2])},setUint16:function(t,e){B(this,2,t,N,e,arguments[2])},setInt32:function(t,e){B(this,4,t,F,e,arguments[2])},setUint32:function(t,e){B(this,4,t,F,e,arguments[2])},setFloat32:function(t,e){B(this,4,t,L,e,arguments[2])},setFloat64:function(t,e){B(this,8,t,R,e,arguments[2])}});m(g,"ArrayBuffer"),m(y,"DataView"),s(y.prototype,a.VIEW,!0),e.ArrayBuffer=g,e.DataView=y},function(t,e,n){var r=n(2),o=n(25),i=n(33),a=n(117),s=n(7).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},function(t,e,n){var r=n(48),o=n(5)("iterator"),i=n(44);t.exports=n(25).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},function(t,e,n){"use strict";var r=n(42),o=n(105),i=n(44),a=n(15);t.exports=n(73)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):"keys"==e?o(0,n):"values"==e?o(0,t[n]):o(0,[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports="images/home/githublogo.png"},function(t,e,n){function r(t){o||n(339)}var o=!1,i=n(18)(n(143),n(354),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/gitButton.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] gitButton.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(338)}var o=!1,i=n(18)(n(144),n(353),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/headMore.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] headMore.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(340)}var o=!1,i=n(18)(n(146),n(355),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/heading.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] heading.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(19);t.exports=function(t,e){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(e);return+t}},function(t,e,n){"use strict";var r=n(9),o=n(39),i=n(8);t.exports=[].copyWithin||function(t,e){var n=r(this),a=i(n.length),s=o(t,a),u=o(e,a),c=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===c?a:o(c,a))-u,a-s),l=1;for(u<s&&s<u+f&&(l=-1,u+=f-1,s+=f-1);f-- >0;)u in n?n[s]=n[u]:delete n[s],s+=l,u+=l;return n}},function(t,e,n){var r=n(43);t.exports=function(t,e){var n=[];return r(t,!1,n.push,n,e),n}},function(t,e,n){var r=n(11),o=n(9),i=n(49),a=n(8);t.exports=function(t,e,n,s,u){r(e);var c=o(t),f=i(c),l=a(c.length),p=u?l-1:0,d=u?-1:1;if(n<2)for(;;){if(p in f){s=f[p],p+=d;break}if(p+=d,u?p<0:l<=p)throw TypeError("Reduce of empty array with no initial value")}for(;u?p>=0:l>p;p+=d)p in f&&(s=e(s,f[p],p,c));return s}},function(t,e,n){"use strict";var r=n(11),o=n(4),i=n(55),a=[].slice,s={},u=function(t,e,n){if(!(e in s)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";s[e]=Function("F,a","return new F("+r.join(",")+")")}return s[e](t,n)};t.exports=Function.bind||function(t){var e=r(this),n=a.call(arguments,1),s=function(){var r=n.concat(a.call(arguments));return this instanceof s?u(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(s.prototype=e.prototype),s}},function(t,e,n){"use strict";var r=n(7).f,o=n(34),i=n(37),a=n(26),s=n(32),u=n(20),c=n(43),f=n(73),l=n(105),p=n(38),d=n(6),h=n(29).fastKey,v=d?"_s":"size",m=function(t,e){var n,r=h(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,f){var l=t(function(t,r){s(t,l,e,"_i"),t._i=o(null),t._f=void 0,t._l=void 0,t[v]=0,void 0!=r&&c(r,n,t[f],t)});return i(l.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[v]=0},delete:function(t){var e=this,n=m(e,t);if(n){var r=n.n,o=n.p;delete e._i[n.i],n.r=!0,o&&(o.n=r),r&&(r.p=o),e._f==n&&(e._f=r),e._l==n&&(e._l=o),e[v]--}return!!n},forEach:function(t){s(this,l,"forEach");for(var e,n=a(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!m(this,t)}}),d&&r(l.prototype,"size",{get:function(){return u(this[v])}}),l},def:function(t,e,n){var r,o,i=m(t,e);return i?i.v=n:(t._l=i={i:o=h(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[v]++,"F"!==o&&(t._i[o]=i)),t},getEntry:m,setStrong:function(t,e,n){f(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),p(e)}}},function(t,e,n){var r=n(48),o=n(96);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return o(this)}}},function(t,e,n){"use strict";var r=n(37),o=n(29).getWeak,i=n(1),a=n(4),s=n(32),u=n(43),c=n(22),f=n(10),l=c(5),p=c(6),d=0,h=function(t){return t._l||(t._l=new v)},v=function(){this.a=[]},m=function(t,e){return l(t.a,function(t){return t[0]===e})};v.prototype={get:function(t){var e=m(this,t);if(e)return e[1]},has:function(t){return!!m(this,t)},set:function(t,e){var n=m(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=p(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var c=t(function(t,r){s(t,c,e,"_i"),t._i=d++,t._l=void 0,void 0!=r&&u(r,n,t[i],t)});return r(c.prototype,{delete:function(t){if(!a(t))return!1;var e=o(t);return!0===e?h(this).delete(t):e&&f(e,this._i)&&delete e[this._i]},has:function(t){if(!a(t))return!1;var e=o(t);return!0===e?h(this).has(t):e&&f(e,this._i)}}),c},def:function(t,e,n){var r=o(i(e),!0);return!0===r?h(t).set(e,n):r[t._i]=n,t},ufstore:h}},function(t,e,n){t.exports=!n(6)&&!n(3)(function(){return 7!=Object.defineProperty(n(65)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(4),o=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&o(t)===t}},function(t,e,n){var r=n(1);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,n){"use strict";var r=n(36),o=n(59),i=n(50),a=n(9),s=n(49),u=Object.assign;t.exports=!u||n(3)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=r})?function(t,e){for(var n=a(t),u=arguments.length,c=1,f=o.f,l=i.f;u>c;)for(var p,d=s(arguments[c++]),h=f?r(d).concat(f(d)):r(d),v=h.length,m=0;v>m;)l.call(d,p=h[m++])&&(n[p]=d[p]);return n}:u},function(t,e,n){var r=n(7),o=n(1),i=n(36);t.exports=n(6)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,u=0;s>u;)r.f(t,n=a[u++],e[n]);return t}},function(t,e,n){var r=n(15),o=n(35).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return o(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?s(t):o(r(t))}},function(t,e,n){var r=n(10),o=n(15),i=n(51)(!1),a=n(78)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),u=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;e.length>u;)r(s,n=e[u++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){var r=n(36),o=n(15),i=n(50).f;t.exports=function(t){return function(e){for(var n,a=o(e),s=r(a),u=s.length,c=0,f=[];u>c;)i.call(a,n=s[c++])&&f.push(t?[n,a[n]]:a[n]);return f}}},function(t,e,n){var r=n(35),o=n(59),i=n(1),a=n(2).Reflect;t.exports=a&&a.ownKeys||function(t){var e=r.f(i(t)),n=o.f;return n?e.concat(n(t)):e}},function(t,e,n){var r=n(2).parseFloat,o=n(46).trim;t.exports=1/r(n(83)+"-0")!=-1/0?function(t){var e=o(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},function(t,e,n){var r=n(2).parseInt,o=n(46).trim,i=n(83),a=/^[\-+]?0[xX]/;t.exports=8!==r(i+"08")||22!==r(i+"0x16")?function(t,e){var n=o(String(t),3);return r(n,e>>>0||(a.test(n)?16:10))}:r},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},function(t,e,n){var r=n(8),o=n(82),i=n(20);t.exports=function(t,e,n,a){var s=String(i(t)),u=s.length,c=void 0===n?" ":String(n),f=r(e);if(f<=u||""==c)return s;var l=f-u,p=o.call(c,Math.ceil(l/c.length));return p.length>l&&(p=p.slice(0,l)),a?p+s:s+p}},function(t,e,n){e.f=n(5)},function(t,e,n){"use strict";var r=n(99);t.exports=n(52)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(this,t);return e&&e.v},set:function(t,e){return r.def(this,0===t?0:t,e)}},r,!0)},function(t,e,n){n(6)&&"g"!=/./g.flags&&n(7).f(RegExp.prototype,"flags",{configurable:!0,get:n(54)})},function(t,e,n){"use strict";var r=n(99);t.exports=n(52)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t=0===t?0:t,t)}},r)},function(t,e,n){"use strict";var r,o=n(22)(0),i=n(13),a=n(29),s=n(107),u=n(101),c=n(4),f=a.getWeak,l=Object.isExtensible,p=u.ufstore,d={},h=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},v={get:function(t){if(c(t)){var e=f(t);return!0===e?p(this).get(t):e?e[this._i]:void 0}},set:function(t,e){return u.def(this,t,e)}},m=t.exports=n(52)("WeakMap",h,v,u,!0,!0);7!=(new m).set((Object.freeze||Object)(d),7).get(d)&&(r=u.getConstructor(h),s(r.prototype,v),a.NEED=!0,o(["delete","has","get","set"],function(t){var e=m.prototype,n=e[t];i(e,t,function(e,o){if(c(e)&&!l(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)})}))},function(t,e){t.exports="images/home/TASA-ICON-01.png"},function(t,e){t.exports="images/home/TASA-ICON-02.png"},function(t,e){t.exports="images/home/TASA-ICON-03.png"},function(t,e){t.exports="images/home/TASA-ICON-04.png"},function(t,e){t.exports="images/home/header-bg-1.png"},function(t,e){t.exports="images/home/paddle-use-01.png"},function(t,e){t.exports="images/home/paddle-use-02.png"},function(t,e){t.exports="images/home/paddle-use-03.png"},function(t,e){t.exports=function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=236)}({0:function(t,e){t.exports=function(t,e,n,r,o){var i,a=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(i=t,a=t.default);var u="function"==typeof a?a.options:a;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns),r&&(u._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=c):n&&(c=n),c){var f=u.functional,l=f?u.render:u.beforeCreate;f?u.render=function(t,e){return c.call(e),l(t,e)}:u.beforeCreate=l?[].concat(l,c):[c]}return{esModule:i,exports:a,options:u}}},157:function(t,e,n){var r=n(0)(n(79),n(181),null,null,null);t.exports=r.exports},181:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{staticClass:"mint-swipe-item"},[t._t("default")],2)},staticRenderFns:[]}},236:function(t,e,n){t.exports=n(43)},43:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(5),o=(n.n(r),n(157)),i=n.n(o);n.d(e,"default",function(){return i.a})},5:function(t,e){},79:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"mt-swipe-item",mounted:function(){this.$parent&&this.$parent.swipeItemCreated(this)},destroyed:function(){this.$parent&&this.$parent.swipeItemDestroyed(this)}}}})},function(t,e,n){t.exports=function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=235)}({0:function(t,e){t.exports=function(t,e,n,r,o){var i,a=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(i=t,a=t.default);var u="function"==typeof a?a.options:a;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns),r&&(u._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=c):n&&(c=n),c){var f=u.functional,l=f?u.render:u.beforeCreate;f?u.render=function(t,e){return c.call(e),l(t,e)}:u.beforeCreate=l?[].concat(l,c):[c]}return{esModule:i,exports:a,options:u}}},1:function(t,e){t.exports=n(41)},158:function(t,e,n){function r(t){n(99)}var o=n(0)(n(80),n(168),r,null,null);t.exports=o.exports},168:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"mint-swipe"},[n("div",{ref:"wrap",staticClass:"mint-swipe-items-wrap"},[t._t("default")],2),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.showIndicators,expression:"showIndicators"}],staticClass:"mint-swipe-indicators"},t._l(t.pages,function(e,r){return n("div",{staticClass:"mint-swipe-indicator",class:{"is-active":r===t.index}})}))])},staticRenderFns:[]}},2:function(t,e,n){"use strict";function r(t,e){if(!t||!e)return!1;if(-1!==e.indexOf(" "))throw new Error("className should not contain space.");return t.classList?t.classList.contains(e):(" "+t.className+" ").indexOf(" "+e+" ")>-1}function o(t,e){if(t){for(var n=t.className,o=(e||"").split(" "),i=0,a=o.length;i<a;i++){var s=o[i];s&&(t.classList?t.classList.add(s):r(t,s)||(n+=" "+s))}t.classList||(t.className=n)}}function i(t,e){if(t&&e){for(var n=e.split(" "),o=" "+t.className+" ",i=0,a=n.length;i<a;i++){var s=n[i];s&&(t.classList?t.classList.remove(s):r(t,s)&&(o=o.replace(" "+s+" "," ")))}t.classList||(t.className=c(o))}}var a=n(1),s=n.n(a);n.d(e,"c",function(){return p}),e.a=o,e.b=i;var u=s.a.prototype.$isServer,c=(u||Number(document.documentMode),function(t){return(t||"").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,"")}),f=function(){return!u&&document.addEventListener?function(t,e,n){t&&e&&n&&t.addEventListener(e,n,!1)}:function(t,e,n){t&&e&&n&&t.attachEvent("on"+e,n)}}(),l=function(){return!u&&document.removeEventListener?function(t,e,n){t&&e&&t.removeEventListener(e,n,!1)}:function(t,e,n){t&&e&&t.detachEvent("on"+e,n)}}(),p=function(t,e,n){var r=function(){n&&n.apply(this,arguments),l(t,e,r)};f(t,e,r)}},235:function(t,e,n){t.exports=n(44)},44:function(t,e,n){"use strict";var r=n(158),o=n.n(r);Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"default",function(){return o.a})},80:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e.default={name:"mt-swipe",created:function(){this.dragState={}},data:function(){return{ready:!1,dragging:!1,userScrolling:!1,animating:!1,index:0,pages:[],timer:null,reInitTimer:null,noDrag:!1,isDone:!1}},props:{speed:{type:Number,default:300},defaultIndex:{type:Number,default:0},auto:{type:Number,default:3e3},continuous:{type:Boolean,default:!0},showIndicators:{type:Boolean,default:!0},noDragWhenSingle:{type:Boolean,default:!0},prevent:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1}},watch:{index:function(t){this.$emit("change",t)}},methods:{swipeItemCreated:function(){var t=this;this.ready&&(clearTimeout(this.reInitTimer),this.reInitTimer=setTimeout(function(){t.reInitPages()},100))},swipeItemDestroyed:function(){var t=this;this.ready&&(clearTimeout(this.reInitTimer),this.reInitTimer=setTimeout(function(){t.reInitPages()},100))},translate:function(t,e,o,i){var a=arguments,s=this;if(o){this.animating=!0,t.style.webkitTransition="-webkit-transform "+o+"ms ease-in-out",setTimeout(function(){t.style.webkitTransform="translate3d("+e+"px, 0, 0)"},50);var u=!1,c=function(){u||(u=!0,s.animating=!1,t.style.webkitTransition="",t.style.webkitTransform="",i&&i.apply(s,a))};n.i(r.c)(t,"webkitTransitionEnd",c),setTimeout(c,o+100)}else t.style.webkitTransition="",t.style.webkitTransform="translate3d("+e+"px, 0, 0)"},reInitPages:function(){var t=this.$children;this.noDrag=1===t.length&&this.noDragWhenSingle;var e=[],o=Math.floor(this.defaultIndex),i=o>=0&&o<t.length?o:0;this.index=i,t.forEach(function(t,o){e.push(t.$el),n.i(r.b)(t.$el,"is-active"),o===i&&n.i(r.a)(t.$el,"is-active")}),this.pages=e},doAnimate:function(t,e){var o=this;if(0!==this.$children.length&&(e||!(this.$children.length<2))){var i,a,s,u,c,f=this.speed||300,l=this.index,p=this.pages,d=p.length;e?(i=e.prevPage,s=e.currentPage,a=e.nextPage,u=e.pageWidth,c=e.offsetLeft):(u=this.$el.clientWidth,s=p[l],i=p[l-1],a=p[l+1],this.continuous&&p.length>1&&(i||(i=p[p.length-1]),a||(a=p[0])),i&&(i.style.display="block",this.translate(i,-u)),a&&(a.style.display="block",this.translate(a,u)));var h,v=this.$children[l].$el;"prev"===t?(l>0&&(h=l-1),this.continuous&&0===l&&(h=d-1)):"next"===t&&(l<d-1&&(h=l+1),this.continuous&&l===d-1&&(h=0));var m=function(){if(void 0!==h){var t=o.$children[h].$el;n.i(r.b)(v,"is-active"),n.i(r.a)(t,"is-active"),o.index=h}o.isDone&&o.end(),i&&(i.style.display=""),a&&(a.style.display="")};setTimeout(function(){"next"===t?(o.isDone=!0,o.before(s),o.translate(s,-u,f,m),a&&o.translate(a,0,f)):"prev"===t?(o.isDone=!0,o.before(s),o.translate(s,u,f,m),i&&o.translate(i,0,f)):(o.isDone=!1,o.translate(s,0,f,m),void 0!==c?(i&&c>0&&o.translate(i,-1*u,f),a&&c<0&&o.translate(a,u,f)):(i&&o.translate(i,-1*u,f),a&&o.translate(a,u,f)))},10)}},next:function(){this.doAnimate("next")},prev:function(){this.doAnimate("prev")},before:function(){this.$emit("before",this.index)},end:function(){this.$emit("end",this.index)},doOnTouchStart:function(t){if(!this.noDrag){var e=this.$el,n=this.dragState,r=t.touches[0];n.startTime=new Date,n.startLeft=r.pageX,n.startTop=r.pageY,n.startTopAbsolute=r.clientY,n.pageWidth=e.offsetWidth,n.pageHeight=e.offsetHeight;var o=this.$children[this.index-1],i=this.$children[this.index],a=this.$children[this.index+1];this.continuous&&this.pages.length>1&&(o||(o=this.$children[this.$children.length-1]),a||(a=this.$children[0])),n.prevPage=o?o.$el:null,n.dragPage=i?i.$el:null,n.nextPage=a?a.$el:null,n.prevPage&&(n.prevPage.style.display="block"),n.nextPage&&(n.nextPage.style.display="block")}},doOnTouchMove:function(t){if(!this.noDrag){var e=this.dragState,n=t.touches[0];e.currentLeft=n.pageX,e.currentTop=n.pageY,e.currentTopAbsolute=n.clientY;var r=e.currentLeft-e.startLeft,o=e.currentTopAbsolute-e.startTopAbsolute,i=Math.abs(r),a=Math.abs(o);if(i<5||i>=5&&a>=1.73*i)return void(this.userScrolling=!0);this.userScrolling=!1,t.preventDefault(),r=Math.min(Math.max(1-e.pageWidth,r),e.pageWidth-1);var s=r<0?"next":"prev";e.prevPage&&"prev"===s&&this.translate(e.prevPage,r-e.pageWidth),this.translate(e.dragPage,r),e.nextPage&&"next"===s&&this.translate(e.nextPage,r+e.pageWidth)}},doOnTouchEnd:function(){if(!this.noDrag){var t=this.dragState,e=new Date-t.startTime,n=null,r=t.currentLeft-t.startLeft,o=t.currentTop-t.startTop,i=t.pageWidth,a=this.index,s=this.pages.length;if(e<300){var u=Math.abs(r)<5&&Math.abs(o)<5;(isNaN(r)||isNaN(o))&&(u=!0),u&&this.$children[this.index].$emit("tap")}e<300&&void 0===t.currentLeft||((e<300||Math.abs(r)>i/2)&&(n=r<0?"next":"prev"),this.continuous||(0===a&&"prev"===n||a===s-1&&"next"===n)&&(n=null),this.$children.length<2&&(n=null),this.doAnimate(n,{offsetLeft:r,pageWidth:t.pageWidth,prevPage:t.prevPage,currentPage:t.dragPage,nextPage:t.nextPage}),this.dragState={})}},initTimer:function(){var t=this;this.auto>0&&(this.timer=setInterval(function(){if(!t.continuous&&t.index>=t.pages.length-1)return t.clearTimer();t.dragging||t.animating||t.next()},this.auto))},clearTimer:function(){clearInterval(this.timer),this.timer=null}},destroyed:function(){this.timer&&this.clearTimer(),this.reInitTimer&&(clearTimeout(this.reInitTimer),this.reInitTimer=null)},mounted:function(){var t=this;this.ready=!0,this.initTimer(),this.reInitPages();var e=this.$el;e.addEventListener("touchstart",function(e){t.prevent&&e.preventDefault(),t.stopPropagation&&e.stopPropagation(),t.animating||(t.dragging=!0,t.userScrolling=!1,t.doOnTouchStart(e))}),e.addEventListener("touchmove",function(e){t.dragging&&(t.timer&&t.clearTimer(),t.doOnTouchMove(e))}),e.addEventListener("touchend",function(e){if(t.userScrolling)return t.dragging=!1,void(t.dragState={});t.dragging&&(t.initTimer(),t.doOnTouchEnd(e),t.dragging=!1)})}}},99:function(t,e){}})},function(t,e,n){function r(t){o||n(346)}var o=!1,i=n(18)(n(140),n(361),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/App.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] App.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(337)}var o=!1,i=n(18)(n(141),n(352),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/advantage.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] advantage.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(335)}var o=!1,i=n(18)(n(142),n(350),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/application.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] application.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(336)}var o=!1,i=n(18)(n(145),n(351),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/headPoster.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] headPoster.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(343)}var o=!1,i=n(18)(n(147),n(358),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/newsItem.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] newsItem.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){function r(t){o||n(341)}var o=!1,i=n(18)(n(148),n(356),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/solution.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] solution.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},,,function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(349),o=function(t){return t&&t.__esModule?t:{default:t}}(r),i=n(347);e.default={components:{topNav:o.default},props:{topNavItem:String,topNavLink:String,isShowFooter:{type:Boolean,default:!0}},data:function(){return{navItems:{logoSrc:i,logoText:"PaddlePaddle",navItem:"中文版"},activeIndex:0,topIconPath:i,sideNavVisible:!1,nav:[{leaveTop:!1,reachBottom:!1,title:"产品服务",items:[{title:"百度语音",href:"www.baidu.com"},{title:"语音合成",href:"/tech/speech/tts"},{title:"语音唤醒",href:"/tech/speech/wake"},{title:"视频封面选图",href:"/tech/video/vcs"},{title:"结构化数据抽取",href:"/tech/kg/pie"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"},{title:"文字识别"}]},{leaveTop:!1,reachBottom:!1,title:"解决方案",items:[{title:"百度语音"},{title:"语音合成"},{title:"文字识别"}]},{leaveTop:!1,reachBottom:!1,title:"新闻动态",href:"/wise/newsList"}]}},mounted:function(){var t=this;this.$refs.navContent.forEach(function(e,n){var r=e.querySelector(".ai-slide-item-wrapper").offsetHeight;t.nav[n].reachBottom=e.offsetHeight<=0||e.scrollTop+e.offsetHeight>=r})},methods:{toggleNav:function(){this.sideNavVisible=!this.sideNavVisible},handleClickTitle:function(t){t!==this.activeIndex&&(this.activeIndex=t)},getNavContentStyle:function(t){if(t!==this.activeIndex)try{if(void 0===document.createElement("p").style.flex)return{display:"none"}}catch(t){}},getNavContentClass:function(t){return{"ai-slide-nav-content-active":t===this.activeIndex}},getNavTitleClass:function(t){return{"ai-slide-nav-title-active":t===this.activeIndex,"top-shadow":this.nav[t-1]&&t-1===this.activeIndex&&!this.nav[t-1].reachBottom}},handleScroll:function(t,e){var n=t.querySelector(".ai-slide-item-wrapper").offsetHeight;this.nav[e].leaveTop=t.scrollTop>0,this.nav[e].reachBottom=t.scrollTop+t.offsetHeight+15>=n}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(91),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={components:{headMore:o.default},props:{advantages:Array,limitNum:{type:Number,default:4}},computed:{defaultShowSolutions:function(){return this.isShowAll?this.advantages:this.advantages.slice(0,this.limitNum)}},data:function(){return{isShowAll:!0,headMore:{heading:"Technology and Service Anvantages"}}},methods:{collapseSolution:function(){this.isShowAll=!0}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{applications:Array,limitNum:{type:Number,default:3},moreShowText:String},computed:{defaultApplications:function(){return this.isShowAll?this.applications:this.applications.slice(0,this.limitNum)}},data:function(){return{isMoreShow:!0}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{align:{type:String,default:function(){return"center"}},margin:{type:Number,default:function(){return 0}},styleObject:{type:Object,default:function(){return{textAlign:"center",fontSize:"1.2rem",color:"#fff",lineHeight:"3rem",background:"rgba(0,0,0,0.50)",borderColor:"#fff"}}},text:String,imgSrc:String,link:{type:String,default:function(){return"https://github.com/PaddlePaddle/Paddle"}}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{heading:String,intro:String,isMoreShow:{type:Boolean,default:!1},headMoreImg:String}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(90),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={components:{gitButton:o.default},props:{hasMask:{type:Boolean,default:!0},heading:String,intro:String,posterBg:String},data:function(){return{gitButton:{align:"center",margin:1.8,text:"Fork me on Github",imgSrc:n(89)}}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{text:String}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{id:String,href:String,title:String,time:String,img:String}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(92),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={components:{heading:o.default},props:{solutions:Array,limitNum:{type:Number,default:6}},computed:{defaultShowSolutions:function(){return this.isShowAll?this.solutions:this.solutions.slice(0,this.limitNum)}},data:function(){return{isShowAll:!1}},methods:{collapseSolution:function(){this.isShowAll=!0}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{logoSrc:String,logoText:String,navItem:String,link:String}}},,,,,function(t,e,n){n(163),t.exports=n(25).RegExp.escape},function(t,e,n){var r=n(4),o=n(71),i=n(5)("species");t.exports=function(t){var e;return o(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(155);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){"use strict";var r=n(1),o=n(24);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return o(r(this),"number"!=t)}},function(t,e,n){var r=n(36),o=n(59),i=n(50);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,s=n(t),u=i.f,c=0;s.length>c;)u.call(t,a=s[c++])&&e.push(a);return e}},function(t,e,n){var r=n(36),o=n(15);t.exports=function(t,e){for(var n,i=o(t),a=r(i),s=a.length,u=0;s>u;)if(i[n=a[u++]]===e)return n}},function(t,e,n){"use strict";var r=n(161),o=n(55),i=n(11);t.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),a=0,s=r._,u=!1;e>a;)(n[a]=arguments[a++])===s&&(u=!0);return function(){var r,i=this,a=arguments.length,c=0,f=0;if(!u&&!a)return o(t,n,i);if(r=n.slice(),u)for(;e>c;c++)r[c]===s&&(r[c]=arguments[f++]);for(;a>f;)r.push(arguments[f++]);return o(t,r,i)}}},function(t,e,n){t.exports=n(2)},function(t,e){t.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return String(e).replace(t,n)}}},function(t,e,n){var r=n(0),o=n(162)(/[\\^$*+?.()|[\]{}]/g,"\\$&");r(r.S,"RegExp",{escape:function(t){return o(t)}})},function(t,e,n){var r=n(0);r(r.P,"Array",{copyWithin:n(95)}),n(42)("copyWithin")},function(t,e,n){"use strict";var r=n(0),o=n(22)(4);r(r.P+r.F*!n(21)([].every,!0),"Array",{every:function(t){return o(this,t,arguments[1])}})},function(t,e,n){var r=n(0);r(r.P,"Array",{fill:n(63)}),n(42)("fill")},function(t,e,n){"use strict";var r=n(0),o=n(22)(2);r(r.P+r.F*!n(21)([].filter,!0),"Array",{filter:function(t){return o(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(0),o=n(22)(6),i="findIndex",a=!0;i in[]&&Array(1)[i](function(){a=!1}),r(r.P+r.F*a,"Array",{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(42)(i)},function(t,e,n){"use strict";var r=n(0),o=n(22)(5),i=!0;"find"in[]&&Array(1).find(function(){i=!1}),r(r.P+r.F*i,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(42)("find")},function(t,e,n){"use strict";var r=n(0),o=n(22)(0),i=n(21)([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(t){return o(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(26),o=n(0),i=n(9),a=n(104),s=n(70),u=n(8),c=n(64),f=n(87);o(o.S+o.F*!n(57)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,l,p=i(t),d="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=0,y=f(p);if(m&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==y||d==Array&&s(y))for(e=u(p.length),n=new d(e);e>g;g++)c(n,g,m?v(p[g],g):p[g]);else for(l=y.call(p),n=new d;!(o=l.next()).done;g++)c(n,g,m?a(l,v,[o.value,g],!0):o.value);return n.length=g,n}})},function(t,e,n){"use strict";var r=n(0),o=n(51)(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n(21)(i)),"Array",{indexOf:function(t){return a?i.apply(this,arguments)||0:o(this,t,arguments[1])}})},function(t,e,n){var r=n(0);r(r.S,"Array",{isArray:n(71)})},function(t,e,n){"use strict";var r=n(0),o=n(15),i=[].join;r(r.P+r.F*(n(49)!=Object||!n(21)(i)),"Array",{join:function(t){return i.call(o(this),void 0===t?",":t)}})},function(t,e,n){"use strict";var r=n(0),o=n(15),i=n(31),a=n(8),s=[].lastIndexOf,u=!!s&&1/[1].lastIndexOf(1,-0)<0;r(r.P+r.F*(u||!n(21)(s)),"Array",{lastIndexOf:function(t){if(u)return s.apply(this,arguments)||0;var e=o(this),n=a(e.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,i(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}})},function(t,e,n){"use strict";var r=n(0),o=n(22)(1);r(r.P+r.F*!n(21)([].map,!0),"Array",{map:function(t){return o(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(0),o=n(64);r(r.S+r.F*n(3)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)o(n,t,arguments[t++]);return n.length=e,n}})},function(t,e,n){"use strict";var r=n(0),o=n(97);r(r.P+r.F*!n(21)([].reduceRight,!0),"Array",{reduceRight:function(t){return o(this,t,arguments.length,arguments[1],!0)}})},function(t,e,n){"use strict";var r=n(0),o=n(97);r(r.P+r.F*!n(21)([].reduce,!0),"Array",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){"use strict";var r=n(0),o=n(68),i=n(19),a=n(39),s=n(8),u=[].slice;r(r.P+r.F*n(3)(function(){o&&u.call(o)}),"Array",{slice:function(t,e){var n=s(this.length),r=i(this);if(e=void 0===e?n:e,"Array"==r)return u.call(this,t,e);for(var o=a(t,n),c=a(e,n),f=s(c-o),l=Array(f),p=0;p<f;p++)l[p]="String"==r?this.charAt(o+p):this[o+p];return l}})},function(t,e,n){"use strict";var r=n(0),o=n(22)(3);r(r.P+r.F*!n(21)([].some,!0),"Array",{some:function(t){return o(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(0),o=n(11),i=n(9),a=n(3),s=[].sort,u=[1,2,3];r(r.P+r.F*(a(function(){u.sort(void 0)})||!a(function(){u.sort(null)})||!n(21)(s)),"Array",{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),o(t))}})},function(t,e,n){n(38)("Array")},function(t,e,n){var r=n(0);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,e,n){"use strict";var r=n(0),o=n(3),i=Date.prototype.getTime,a=function(t){return t>9?t:"0"+t};r(r.P+r.F*(o(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!o(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}})},function(t,e,n){"use strict";var r=n(0),o=n(9),i=n(24);r(r.P+r.F*n(3)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=o(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},function(t,e,n){var r=n(5)("toPrimitive"),o=Date.prototype;r in o||n(12)(o,r,n(157))},function(t,e,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(13)(r,"toString",function(){var t=i.call(this);return t===t?o.call(this):"Invalid Date"})},function(t,e,n){var r=n(0);r(r.P,"Function",{bind:n(98)})},function(t,e,n){"use strict";var r=n(4),o=n(17),i=n(5)("hasInstance"),a=Function.prototype;i in a||n(7).f(a,i,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=o(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,n){var r=n(7).f,o=n(30),i=n(10),a=Function.prototype,s=/^\s*function ([^ (]*)/,u=Object.isExtensible||function(){return!0};"name"in a||n(6)&&r(a,"name",{configurable:!0,get:function(){try{var t=this,e=(""+t).match(s)[1];return i(t,"name")||!u(t)||r(t,"name",o(5,e)),e}catch(t){return""}}})},function(t,e,n){var r=n(0),o=n(106),i=Math.sqrt,a=Math.acosh;r(r.S+r.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},function(t,e,n){function r(t){return isFinite(t=+t)&&0!=t?t<0?-r(-t):Math.log(t+Math.sqrt(t*t+1)):t}var o=n(0),i=Math.asinh;o(o.S+o.F*!(i&&1/i(0)>0),"Math",{asinh:r})},function(t,e,n){var r=n(0),o=Math.atanh;r(r.S+r.F*!(o&&1/o(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,n){var r=n(0),o=n(75);r(r.S,"Math",{cbrt:function(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,n){var r=n(0),o=Math.exp;r(r.S,"Math",{cosh:function(t){return(o(t=+t)+o(-t))/2}})},function(t,e,n){var r=n(0),o=n(74);r(r.S+r.F*(o!=Math.expm1),"Math",{expm1:o})},function(t,e,n){var r=n(0),o=n(75),i=Math.pow,a=i(2,-52),s=i(2,-23),u=i(2,127)*(2-s),c=i(2,-126),f=function(t){return t+1/a-1/a};r(r.S,"Math",{fround:function(t){var e,n,r=Math.abs(t),i=o(t);return r<c?i*f(r/c/s)*c*s:(e=(1+s/a)*r,n=e-(e-r),n>u||n!=n?i*(1/0):i*n)}})},function(t,e,n){var r=n(0),o=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,i=0,a=0,s=arguments.length,u=0;a<s;)n=o(arguments[a++]),u<n?(r=u/n,i=i*r*r+1,u=n):n>0?(r=n/u,i+=r*r):i+=n;return u===1/0?1/0:u*Math.sqrt(i)}})},function(t,e,n){var r=n(0),o=Math.imul;r(r.S+r.F*n(3)(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log1p:n(106)})},function(t,e,n){var r=n(0);r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,n){var r=n(0);r(r.S,"Math",{sign:n(75)})},function(t,e,n){var r=n(0),o=n(74),i=Math.exp;r(r.S+r.F*n(3)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},function(t,e,n){var r=n(0),o=n(74),i=Math.exp;r(r.S,"Math",{tanh:function(t){var e=o(t=+t),n=o(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},function(t,e,n){var r=n(0);r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){"use strict";var r=n(2),o=n(10),i=n(19),a=n(69),s=n(24),u=n(3),c=n(35).f,f=n(16).f,l=n(7).f,p=n(46).trim,d=r.Number,h=d,v=d.prototype,m="Number"==i(n(34)(v)),g="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=g?e.trim():p(e,3);var n,r,o,i=e.charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var a,u=e.slice(2),c=0,f=u.length;c<f;c++)if((a=u.charCodeAt(c))<48||a>o)return NaN;return parseInt(u,r)}}return+e};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof d&&(m?u(function(){v.valueOf.call(n)}):"Number"!=i(n))?a(new h(y(e)),n,d):y(e)};for(var _,b=n(6)?c(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;b.length>x;x++)o(h,_=b[x])&&!o(d,_)&&l(d,_,f(h,_));d.prototype=v,v.constructor=d,n(13)(r,"Number",d)}},function(t,e,n){var r=n(0);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){var r=n(0),o=n(2).isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&o(t)}})},function(t,e,n){var r=n(0);r(r.S,"Number",{isInteger:n(103)})},function(t,e,n){var r=n(0);r(r.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,n){var r=n(0),o=n(103),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return o(t)&&i(t)<=9007199254740991}})},function(t,e,n){var r=n(0);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,n){var r=n(0);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,n){var r=n(0),o=n(113);r(r.S+r.F*(Number.parseFloat!=o),"Number",{parseFloat:o})},function(t,e,n){var r=n(0),o=n(114);r(r.S+r.F*(Number.parseInt!=o),"Number",{parseInt:o})},function(t,e,n){"use strict";var r=n(0),o=n(31),i=n(94),a=n(82),s=1..toFixed,u=Math.floor,c=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,e){for(var n=-1,r=e;++n<6;)r+=t*c[n],c[n]=r%1e7,r=u(r/1e7)},p=function(t){for(var e=6,n=0;--e>=0;)n+=c[e],c[e]=u(n/t),n=n%t*1e7},d=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==c[t]){var n=String(c[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e},h=function(t,e,n){return 0===e?n:e%2==1?h(t,e-1,n*t):h(t*t,e/2,n)},v=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e};r(r.P+r.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(3)(function(){s.call({})})),"Number",{toFixed:function(t){var e,n,r,s,u=i(this,f),c=o(t),m="",g="0";if(c<0||c>20)throw RangeError(f);if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(m="-",u=-u),u>1e-21)if(e=v(u*h(2,69,1))-69,n=e<0?u*h(2,-e,1):u/h(2,e,1),n*=4503599627370496,(e=52-e)>0){for(l(0,n),r=c;r>=7;)l(1e7,0),r-=7;for(l(h(10,r,1),0),r=e-1;r>=23;)p(1<<23),r-=23;p(1<<r),l(1,1),p(2),g=d()}else l(0,n),l(1<<-e,0),g=d()+a.call("0",c);return c>0?(s=g.length,g=m+(s<=c?"0."+a.call("0",c-s)+g:g.slice(0,s-c)+"."+g.slice(s-c))):g=m+g,g}})},function(t,e,n){"use strict";var r=n(0),o=n(3),i=n(94),a=1..toPrecision;r(r.P+r.F*(o(function(){return"1"!==a.call(1,void 0)})||!o(function(){a.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,n){var r=n(0);r(r.S+r.F,"Object",{assign:n(107)})},function(t,e,n){var r=n(0);r(r.S,"Object",{create:n(34)})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(6),"Object",{defineProperties:n(108)})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(6),"Object",{defineProperty:n(7).f})},function(t,e,n){var r=n(4),o=n(29).onFreeze;n(23)("freeze",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},function(t,e,n){var r=n(15),o=n(16).f;n(23)("getOwnPropertyDescriptor",function(){return function(t,e){return o(r(t),e)}})},function(t,e,n){n(23)("getOwnPropertyNames",function(){return n(109).f})},function(t,e,n){var r=n(9),o=n(17);n(23)("getPrototypeOf",function(){return function(t){return o(r(t))}})},function(t,e,n){var r=n(4);n(23)("isExtensible",function(t){return function(e){return!!r(e)&&(!t||t(e))}})},function(t,e,n){var r=n(4);n(23)("isFrozen",function(t){return function(e){return!r(e)||!!t&&t(e)}})},function(t,e,n){var r=n(4);n(23)("isSealed",function(t){return function(e){return!r(e)||!!t&&t(e)}})},function(t,e,n){var r=n(0);r(r.S,"Object",{is:n(115)})},function(t,e,n){var r=n(9),o=n(36);n(23)("keys",function(){return function(t){return o(r(t))}})},function(t,e,n){var r=n(4),o=n(29).onFreeze;n(23)("preventExtensions",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},function(t,e,n){var r=n(4),o=n(29).onFreeze;n(23)("seal",function(t){return function(e){return t&&r(e)?t(o(e)):e}})},function(t,e,n){var r=n(0);r(r.S,"Object",{setPrototypeOf:n(77).set})},function(t,e,n){"use strict";var r=n(48),o={};o[n(5)("toStringTag")]="z",o+""!="[object z]"&&n(13)(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},function(t,e,n){var r=n(0),o=n(113);r(r.G+r.F*(parseFloat!=o),{parseFloat:o})},function(t,e,n){var r=n(0),o=n(114);r(r.G+r.F*(parseInt!=o),{parseInt:o})},function(t,e,n){"use strict";var r,o,i,a=n(33),s=n(2),u=n(26),c=n(48),f=n(0),l=n(4),p=n(11),d=n(32),h=n(43),v=n(79),m=n(84).set,g=n(76)(),y=s.TypeError,_=s.process,b=s.Promise,_=s.process,x="process"==c(_),w=function(){},S=!!function(){try{var t=b.resolve(1),e=(t.constructor={})[n(5)("species")]=function(t){t(w,w)};return(x||"function"==typeof PromiseRejectionEvent)&&t.then(w)instanceof e}catch(t){}}(),O=function(t,e){return t===e||t===b&&e===i},E=function(t){var e;return!(!l(t)||"function"!=typeof(e=t.then))&&e},A=function(t){return O(b,t)?new C(t):new o(t)},C=o=function(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw y("Bad Promise constructor");e=t,n=r}),this.resolve=p(e),this.reject=p(n)},T=function(t){try{t()}catch(t){return{error:t}}},j=function(t,e){if(!t._n){t._n=!0;var n=t._c;g(function(){for(var r=t._v,o=1==t._s,i=0;n.length>i;)!function(e){var n,i,a=o?e.ok:e.fail,s=e.resolve,u=e.reject,c=e.domain;try{a?(o||(2==t._h&&M(t),t._h=1),!0===a?n=r:(c&&c.enter(),n=a(r),c&&c.exit()),n===e.promise?u(y("Promise-chain cycle")):(i=E(n))?i.call(n,s,u):s(n)):u(r)}catch(t){u(t)}}(n[i++]);t._c=[],t._n=!1,e&&!t._h&&P(t)})}},P=function(t){m.call(s,function(){var e,n,r,o=t._v;if(k(t)&&(e=T(function(){x?_.emit("unhandledRejection",o,t):(n=s.onunhandledrejection)?n({promise:t,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)}),t._h=x||k(t)?2:1),t._a=void 0,e)throw e.error})},k=function(t){if(1==t._h)return!1;for(var e,n=t._a||t._c,r=0;n.length>r;)if(e=n[r++],e.fail||!k(e.promise))return!1;return!0},M=function(t){m.call(s,function(){var e;x?_.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})})},$=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),j(e,!0))},I=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw y("Promise can't be resolved itself");(e=E(t))?g(function(){var r={_w:n,_d:!1};try{e.call(t,u(I,r,1),u($,r,1))}catch(t){$.call(r,t)}}):(n._v=t,n._s=1,j(n,!1))}catch(t){$.call({_w:n,_d:!1},t)}}};S||(b=function(t){d(this,b,"Promise","_h"),p(t),r.call(this);try{t(u(I,this,1),u($,this,1))}catch(t){$.call(this,t)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(37)(b.prototype,{then:function(t,e){var n=A(v(this,b));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=x?_.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&j(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),C=function(){var t=new r;this.promise=t,this.resolve=u(I,t,1),this.reject=u($,t,1)}),f(f.G+f.W+f.F*!S,{Promise:b}),n(45)(b,"Promise"),n(38)("Promise"),i=n(25).Promise,f(f.S+f.F*!S,"Promise",{reject:function(t){var e=A(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(a||!S),"Promise",{resolve:function(t){if(t instanceof b&&O(t.constructor,this))return t;var e=A(this);return(0,e.resolve)(t),e.promise}}),f(f.S+f.F*!(S&&n(57)(function(t){b.all(t).catch(w)})),"Promise",{all:function(t){var e=this,n=A(e),r=n.resolve,o=n.reject,i=T(function(){var n=[],i=0,a=1;h(t,!1,function(t){var s=i++,u=!1;n.push(void 0),a++,e.resolve(t).then(function(t){u||(u=!0,n[s]=t,--a||r(n))},o)}),--a||r(n)});return i&&o(i.error),n.promise},race:function(t){var e=this,n=A(e),r=n.reject,o=T(function(){h(t,!1,function(t){e.resolve(t).then(n.resolve,r)})});return o&&r(o.error),n.promise}})},function(t,e,n){var r=n(0),o=n(11),i=n(1),a=(n(2).Reflect||{}).apply,s=Function.apply;r(r.S+r.F*!n(3)(function(){a(function(){})}),"Reflect",{apply:function(t,e,n){var r=o(t),u=i(n);return a?a(r,e,u):s.call(r,e,u)}})},function(t,e,n){var r=n(0),o=n(34),i=n(11),a=n(1),s=n(4),u=n(3),c=n(98),f=(n(2).Reflect||{}).construct,l=u(function(){function t(){}return!(f(function(){},[],t)instanceof t)}),p=!u(function(){f(function(){})});r(r.S+r.F*(l||p),"Reflect",{construct:function(t,e){i(t),a(e);var n=arguments.length<3?t:i(arguments[2]);if(p&&!l)return f(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(c.apply(t,r))}var u=n.prototype,d=o(s(u)?u:Object.prototype),h=Function.apply.call(t,d,e);return s(h)?h:d}})},function(t,e,n){var r=n(7),o=n(0),i=n(1),a=n(24);o(o.S+o.F*n(3)(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t),e=a(e,!0),i(n);try{return r.f(t,e,n),!0}catch(t){return!1}}})},function(t,e,n){var r=n(0),o=n(16).f,i=n(1);r(r.S,"Reflect",{deleteProperty:function(t,e){var n=o(i(t),e);return!(n&&!n.configurable)&&delete t[e]}})},function(t,e,n){"use strict";var r=n(0),o=n(1),i=function(t){this._t=o(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};n(72)(i,"Object",function(){var t,e=this,n=e._k;do{if(e._i>=n.length)return{value:void 0,done:!0}}while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),r(r.S,"Reflect",{enumerate:function(t){return new i(t)}})},function(t,e,n){var r=n(16),o=n(0),i=n(1);o(o.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return r.f(i(t),e)}})},function(t,e,n){var r=n(0),o=n(17),i=n(1);r(r.S,"Reflect",{getPrototypeOf:function(t){return o(i(t))}})},function(t,e,n){function r(t,e){var n,s,f=arguments.length<3?t:arguments[2];return c(t)===f?t[e]:(n=o.f(t,e))?a(n,"value")?n.value:void 0!==n.get?n.get.call(f):void 0:u(s=i(t))?r(s,e,f):void 0}var o=n(16),i=n(17),a=n(10),s=n(0),u=n(4),c=n(1);s(s.S,"Reflect",{get:r})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,n){var r=n(0),o=n(1),i=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return o(t),!i||i(t)}})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{ownKeys:n(112)})},function(t,e,n){var r=n(0),o=n(1),i=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(t){o(t);try{return i&&i(t),!0}catch(t){return!1}}})},function(t,e,n){var r=n(0),o=n(77);o&&r(r.S,"Reflect",{setPrototypeOf:function(t,e){o.check(t,e);try{return o.set(t,e),!0}catch(t){return!1}}})},function(t,e,n){function r(t,e,n){var u,p,d=arguments.length<4?t:arguments[3],h=i.f(f(t),e);if(!h){if(l(p=a(t)))return r(p,e,n,d);h=c(0)}return s(h,"value")?!(!1===h.writable||!l(d))&&(u=i.f(d,e)||c(0),u.value=n,o.f(d,e,u),!0):void 0!==h.set&&(h.set.call(d,n),!0)}var o=n(7),i=n(16),a=n(17),s=n(10),u=n(0),c=n(30),f=n(1),l=n(4);u(u.S,"Reflect",{set:r})},function(t,e,n){var r=n(2),o=n(69),i=n(7).f,a=n(35).f,s=n(56),u=n(54),c=r.RegExp,f=c,l=c.prototype,p=/a/g,d=/a/g,h=new c(p)!==p;if(n(6)&&(!h||n(3)(function(){return d[n(5)("match")]=!1,c(p)!=p||c(d)==d||"/a/i"!=c(p,"i")}))){c=function(t,e){var n=this instanceof c,r=s(t),i=void 0===e;return!n&&r&&t.constructor===c&&i?t:o(h?new f(r&&!i?t.source:t,e):f((r=t instanceof c)?t.source:t,r&&i?u.call(t):e),n?this:l,c)};for(var v=a(f),m=0;v.length>m;)!function(t){t in c||i(c,t,{configurable:!0,get:function(){return f[t]},set:function(e){f[t]=e}})}(v[m++]);l.constructor=c,c.prototype=l,n(13)(r,"RegExp",c)}n(38)("RegExp")},function(t,e,n){n(53)("match",1,function(t,e,n){return[function(n){"use strict";var r=t(this),o=void 0==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},n]})},function(t,e,n){n(53)("replace",2,function(t,e,n){return[function(r,o){"use strict";var i=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},n]})},function(t,e,n){n(53)("search",1,function(t,e,n){return[function(n){"use strict";var r=t(this),o=void 0==n?void 0:n[e];return void 0!==o?o.call(n,r):new RegExp(n)[e](String(r))},n]})},function(t,e,n){n(53)("split",2,function(t,e,r){"use strict";var o=n(56),i=r,a=[].push,s="length";if("c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1)[s]||2!="ab".split(/(?:ab)*/)[s]||4!=".".split(/(.?)(.?)/)[s]||".".split(/()()/)[s]>1||"".split(/.?/)[s]){var u=void 0===/()??/.exec("")[1];r=function(t,e){var n=String(this);if(void 0===t&&0===e)return[];if(!o(t))return i.call(n,t,e);var r,c,f,l,p,d=[],h=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,m=void 0===e?4294967295:e>>>0,g=new RegExp(t.source,h+"g");for(u||(r=new RegExp("^"+g.source+"$(?!\\s)",h));(c=g.exec(n))&&!((f=c.index+c[0][s])>v&&(d.push(n.slice(v,c.index)),!u&&c[s]>1&&c[0].replace(r,function(){for(p=1;p<arguments[s]-2;p++)void 0===arguments[p]&&(c[p]=void 0)}),c[s]>1&&c.index<n[s]&&a.apply(d,c.slice(1)),l=c[0][s],v=f,d[s]>=m));)g.lastIndex===c.index&&g.lastIndex++;return v===n[s]?!l&&g.test("")||d.push(""):d.push(n.slice(v)),d[s]>m?d.slice(0,m):d}}else"0".split(void 0,0)[s]&&(r=function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)});return[function(n,o){var i=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,i,o):r.call(String(i),n,o)},r]})},function(t,e,n){"use strict";n(119);var r=n(1),o=n(54),i=n(6),a=/./.toString,s=function(t){n(13)(RegExp.prototype,"toString",t,!0)};n(3)(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?s(function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)}):"toString"!=a.name&&s(function(){return a.call(this)})},function(t,e,n){"use strict";n(14)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},function(t,e,n){"use strict";n(14)("big",function(t){return function(){return t(this,"big","","")}})},function(t,e,n){"use strict";n(14)("blink",function(t){return function(){return t(this,"blink","","")}})},function(t,e,n){"use strict";n(14)("bold",function(t){return function(){return t(this,"b","","")}})},function(t,e,n){"use strict";var r=n(0),o=n(80)(!1);r(r.P,"String",{codePointAt:function(t){return o(this,t)}})},function(t,e,n){"use strict";var r=n(0),o=n(8),i=n(81),a="".endsWith;r(r.P+r.F*n(67)("endsWith"),"String",{endsWith:function(t){var e=i(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(e.length),s=void 0===n?r:Math.min(o(n),r),u=String(t);return a?a.call(e,u,s):e.slice(s-u.length,s)===u}})},function(t,e,n){"use strict";n(14)("fixed",function(t){return function(){return t(this,"tt","","")}})},function(t,e,n){"use strict";n(14)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},function(t,e,n){"use strict";n(14)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},function(t,e,n){var r=n(0),o=n(39),i=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],o(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?i(e):i(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){"use strict";var r=n(0),o=n(81);r(r.P+r.F*n(67)("includes"),"String",{includes:function(t){return!!~o(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";n(14)("italics",function(t){return function(){return t(this,"i","","")}})},function(t,e,n){"use strict";var r=n(80)(!0);n(73)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";n(14)("link",function(t){return function(e){return t(this,"a","href",e)}})},function(t,e,n){var r=n(0),o=n(15),i=n(8);r(r.S,"String",{raw:function(t){for(var e=o(t.raw),n=i(e.length),r=arguments.length,a=[],s=0;n>s;)a.push(String(e[s++])),s<r&&a.push(String(arguments[s]));return a.join("")}})},function(t,e,n){var r=n(0);r(r.P,"String",{repeat:n(82)})},function(t,e,n){"use strict";n(14)("small",function(t){return function(){return t(this,"small","","")}})},function(t,e,n){"use strict";var r=n(0),o=n(8),i=n(81),a="".startsWith;r(r.P+r.F*n(67)("startsWith"),"String",{startsWith:function(t){var e=i(this,t,"startsWith"),n=o(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return a?a.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){"use strict";n(14)("strike",function(t){return function(){return t(this,"strike","","")}})},function(t,e,n){"use strict";n(14)("sub",function(t){return function(){return t(this,"sub","","")}})},function(t,e,n){"use strict";n(14)("sup",function(t){return function(){return t(this,"sup","","")}})},function(t,e,n){"use strict";n(46)("trim",function(t){return function(){return t(this,3)}})},function(t,e,n){"use strict";var r=n(2),o=n(10),i=n(6),a=n(0),s=n(13),u=n(29).KEY,c=n(3),f=n(60),l=n(45),p=n(40),d=n(5),h=n(117),v=n(86),m=n(159),g=n(158),y=n(71),_=n(1),b=n(15),x=n(24),w=n(30),S=n(34),O=n(109),E=n(16),A=n(7),C=n(36),T=E.f,j=A.f,P=O.f,k=r.Symbol,M=r.JSON,$=M&&M.stringify,I=d("_hidden"),N=d("toPrimitive"),F={}.propertyIsEnumerable,R=f("symbol-registry"),L=f("symbols"),D=f("op-symbols"),U=Object.prototype,B="function"==typeof k,W=r.QObject,V=!W||!W.prototype||!W.prototype.findChild,G=i&&c(function(){return 7!=S(j({},"a",{get:function(){return j(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=T(U,e);r&&delete U[e],j(t,e,n),r&&t!==U&&j(U,e,r)}:j,H=function(t){var e=L[t]=S(k.prototype);return e._k=t,e},z=B&&"symbol"==typeof k.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof k},q=function(t,e,n){return t===U&&q(D,e,n),_(t),e=x(e,!0),_(n),o(L,e)?(n.enumerable?(o(t,I)&&t[I][e]&&(t[I][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,I)||j(t,I,w(1,{})),t[I][e]=!0),G(t,e,n)):j(t,e,n)},J=function(t,e){_(t);for(var n,r=g(e=b(e)),o=0,i=r.length;i>o;)q(t,n=r[o++],e[n]);return t},X=function(t,e){return void 0===e?S(t):J(S(t),e)},Y=function(t){var e=F.call(this,t=x(t,!0));return!(this===U&&o(L,t)&&!o(D,t))&&(!(e||!o(this,t)||!o(L,t)||o(this,I)&&this[I][t])||e)},K=function(t,e){if(t=b(t),e=x(e,!0),t!==U||!o(L,e)||o(D,e)){var n=T(t,e);return!n||!o(L,e)||o(t,I)&&t[I][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=P(b(t)),r=[],i=0;n.length>i;)o(L,e=n[i++])||e==I||e==u||r.push(e);return r},Q=function(t){for(var e,n=t===U,r=P(n?D:b(t)),i=[],a=0;r.length>a;)!o(L,e=r[a++])||n&&!o(U,e)||i.push(L[e]);return i};B||(k=function(){if(this instanceof k)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(D,n),o(this,I)&&o(this[I],t)&&(this[I][t]=!1),G(this,t,w(1,n))};return i&&V&&G(U,t,{configurable:!0,set:e}),H(t)},s(k.prototype,"toString",function(){return this._k}),E.f=K,A.f=q,n(35).f=O.f=Z,n(50).f=Y,n(59).f=Q,i&&!n(33)&&s(U,"propertyIsEnumerable",Y,!0),h.f=function(t){return H(d(t))}),a(a.G+a.W+a.F*!B,{Symbol:k});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)d(tt[et++]);for(var tt=C(d.store),et=0;tt.length>et;)v(tt[et++]);a(a.S+a.F*!B,"Symbol",{for:function(t){return o(R,t+="")?R[t]:R[t]=k(t)},keyFor:function(t){if(z(t))return m(R,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){V=!0},useSimple:function(){V=!1}}),a(a.S+a.F*!B,"Object",{create:X,defineProperty:q,defineProperties:J,getOwnPropertyDescriptor:K,getOwnPropertyNames:Z,getOwnPropertySymbols:Q}),M&&a(a.S+a.F*(!B||c(function(){var t=k();return"[null]"!=$([t])||"{}"!=$({a:t})||"{}"!=$(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!z(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],"function"==typeof e&&(n=e),!n&&y(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!z(e))return e}),r[1]=e,$.apply(M,r)}}}),k.prototype[N]||n(12)(k.prototype,N,k.prototype.valueOf),l(k,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){"use strict";var r=n(0),o=n(61),i=n(85),a=n(1),s=n(39),u=n(8),c=n(4),f=n(2).ArrayBuffer,l=n(79),p=i.ArrayBuffer,d=i.DataView,h=o.ABV&&f.isView,v=p.prototype.slice,m=o.VIEW;r(r.G+r.W+r.F*(f!==p),{ArrayBuffer:p}),r(r.S+r.F*!o.CONSTR,"ArrayBuffer",{isView:function(t){return h&&h(t)||c(t)&&m in t}}),r(r.P+r.U+r.F*n(3)(function(){return!new p(2).slice(1,void 0).byteLength}),"ArrayBuffer",{slice:function(t,e){if(void 0!==v&&void 0===e)return v.call(a(this),t);for(var n=a(this).byteLength,r=s(t,n),o=s(void 0===e?n:e,n),i=new(l(this,p))(u(o-r)),c=new d(this),f=new d(i),h=0;r<o;)f.setUint8(h++,c.getUint8(r++));return i}}),n(38)("ArrayBuffer")},function(t,e,n){var r=n(0);r(r.G+r.W+r.F*!n(61).ABV,{DataView:n(85).DataView})},function(t,e,n){n(28)("Float32",4,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Float64",8,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Int16",2,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Int32",4,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Int8",1,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Uint16",2,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Uint32",4,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Uint8",1,function(t){return function(e,n,r){return t(this,e,n,r)}})},function(t,e,n){n(28)("Uint8",1,function(t){return function(e,n,r){return t(this,e,n,r)}},!0)},function(t,e,n){"use strict";var r=n(101);n(52)("WeakSet",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t,!0)}},r,!1,!0)},function(t,e,n){"use strict";var r=n(0),o=n(51)(!0);r(r.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(42)("includes")},function(t,e,n){var r=n(0),o=n(76)(),i=n(2).process,a="process"==n(19)(i);r(r.G,{asap:function(t){var e=a&&i.domain;o(e?e.bind(t):t)}})},function(t,e,n){var r=n(0),o=n(19);r(r.S,"Error",{isError:function(t){return"Error"===o(t)}})},function(t,e,n){var r=n(0);r(r.P+r.R,"Map",{toJSON:n(100)("Map")})},function(t,e,n){var r=n(0);r(r.S,"Math",{iaddh:function(t,e,n,r){var o=t>>>0,i=e>>>0,a=n>>>0;return i+(r>>>0)+((o&a|(o|a)&~(o+a>>>0))>>>31)|0}})},function(t,e,n){var r=n(0);r(r.S,"Math",{imulh:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r,a=n>>16,s=r>>16,u=(a*i>>>0)+(o*i>>>16);return a*s+(u>>16)+((o*s>>>0)+(65535&u)>>16)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{isubh:function(t,e,n,r){var o=t>>>0,i=e>>>0,a=n>>>0;return i-(r>>>0)-((~o&a|~(o^a)&o-a>>>0)>>>31)|0}})},function(t,e,n){var r=n(0);r(r.S,"Math",{umulh:function(t,e){var n=+t,r=+e,o=65535&n,i=65535&r,a=n>>>16,s=r>>>16,u=(a*i>>>0)+(o*i>>>16);return a*s+(u>>>16)+((o*s>>>0)+(65535&u)>>>16)}})},function(t,e,n){"use strict";var r=n(0),o=n(9),i=n(11),a=n(7);n(6)&&r(r.P+n(58),"Object",{__defineGetter__:function(t,e){a.f(o(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},function(t,e,n){"use strict";var r=n(0),o=n(9),i=n(11),a=n(7);n(6)&&r(r.P+n(58),"Object",{__defineSetter__:function(t,e){a.f(o(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},function(t,e,n){var r=n(0),o=n(111)(!0);r(r.S,"Object",{entries:function(t){return o(t)}})},function(t,e,n){var r=n(0),o=n(112),i=n(15),a=n(16),s=n(64);r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n=i(t),r=a.f,u=o(n),c={},f=0;u.length>f;)s(c,e=u[f++],r(n,e));return c}})},function(t,e,n){"use strict";var r=n(0),o=n(9),i=n(24),a=n(17),s=n(16).f;n(6)&&r(r.P+n(58),"Object",{__lookupGetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=s(n,r))return e.get}while(n=a(n))}})},function(t,e,n){"use strict";var r=n(0),o=n(9),i=n(24),a=n(17),s=n(16).f;n(6)&&r(r.P+n(58),"Object",{__lookupSetter__:function(t){var e,n=o(this),r=i(t,!0);do{if(e=s(n,r))return e.set}while(n=a(n))}})},function(t,e,n){var r=n(0),o=n(111)(!1);r(r.S,"Object",{values:function(t){return o(t)}})},function(t,e,n){"use strict";var r=n(0),o=n(2),i=n(25),a=n(76)(),s=n(5)("observable"),u=n(11),c=n(1),f=n(32),l=n(37),p=n(12),d=n(43),h=d.RETURN,v=function(t){return null==t?void 0:u(t)},m=function(t){var e=t._c;e&&(t._c=void 0,e())},g=function(t){return void 0===t._o},y=function(t){g(t)||(t._o=void 0,m(t))},_=function(t,e){c(t),this._c=void 0,this._o=t,t=new b(this);try{var n=e(t),r=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){r.unsubscribe()}:u(n),this._c=n)}catch(e){return void t.error(e)}g(this)&&m(this)};_.prototype=l({},{unsubscribe:function(){y(this)}});var b=function(t){this._s=t};b.prototype=l({},{next:function(t){var e=this._s;if(!g(e)){var n=e._o;try{var r=v(n.next);if(r)return r.call(n,t)}catch(t){try{y(e)}finally{throw t}}}},error:function(t){var e=this._s;if(g(e))throw t;var n=e._o;e._o=void 0;try{var r=v(n.error);if(!r)throw t;t=r.call(n,t)}catch(t){try{m(e)}finally{throw t}}return m(e),t},complete:function(t){var e=this._s;if(!g(e)){var n=e._o;e._o=void 0;try{var r=v(n.complete);t=r?r.call(n,t):void 0}catch(t){try{m(e)}finally{throw t}}return m(e),t}}});var x=function(t){f(this,x,"Observable","_f")._f=u(t)};l(x.prototype,{subscribe:function(t){return new _(t,this._f)},forEach:function(t){var e=this;return new(i.Promise||o.Promise)(function(n,r){u(t);var o=e.subscribe({next:function(e){try{return t(e)}catch(t){r(t),o.unsubscribe()}},error:r,complete:n})})}}),l(x,{from:function(t){var e="function"==typeof this?this:x,n=v(c(t)[s]);if(n){var r=c(n.call(t));return r.constructor===e?r:new e(function(t){return r.subscribe(t)})}return new e(function(e){var n=!1;return a(function(){if(!n){try{if(d(t,!1,function(t){if(e.next(t),n)return h})===h)return}catch(t){if(n)throw t;return void e.error(t)}e.complete()}}),function(){n=!0}})},of:function(){for(var t=0,e=arguments.length,n=Array(e);t<e;)n[t]=arguments[t++];return new("function"==typeof this?this:x)(function(t){var e=!1;return a(function(){if(!e){for(var r=0;r<n.length;++r)if(t.next(n[r]),e)return;t.complete()}}),function(){e=!0}})}}),p(x.prototype,s,function(){return this}),r(r.G,{Observable:x}),n(38)("Observable")},function(t,e,n){var r=n(27),o=n(1),i=r.key,a=r.set;r.exp({defineMetadata:function(t,e,n,r){a(t,e,o(n),i(r))}})},function(t,e,n){var r=n(27),o=n(1),i=r.key,a=r.map,s=r.store;r.exp({deleteMetadata:function(t,e){var n=arguments.length<3?void 0:i(arguments[2]),r=a(o(e),n,!1);if(void 0===r||!r.delete(t))return!1;if(r.size)return!0;var u=s.get(e);return u.delete(n),!!u.size||s.delete(e)}})},function(t,e,n){var r=n(120),o=n(96),i=n(27),a=n(1),s=n(17),u=i.keys,c=i.key,f=function(t,e){var n=u(t,e),i=s(t);if(null===i)return n;var a=f(i,e);return a.length?n.length?o(new r(n.concat(a))):a:n};i.exp({getMetadataKeys:function(t){return f(a(t),arguments.length<2?void 0:c(arguments[1]))}})},function(t,e,n){var r=n(27),o=n(1),i=n(17),a=r.has,s=r.get,u=r.key,c=function(t,e,n){if(a(t,e,n))return s(t,e,n);var r=i(e);return null!==r?c(t,r,n):void 0};r.exp({getMetadata:function(t,e){return c(t,o(e),arguments.length<3?void 0:u(arguments[2]))}})},function(t,e,n){var r=n(27),o=n(1),i=r.keys,a=r.key;r.exp({getOwnMetadataKeys:function(t){return i(o(t),arguments.length<2?void 0:a(arguments[1]))}})},function(t,e,n){var r=n(27),o=n(1),i=r.get,a=r.key;r.exp({getOwnMetadata:function(t,e){return i(t,o(e),arguments.length<3?void 0:a(arguments[2]))}})},function(t,e,n){var r=n(27),o=n(1),i=n(17),a=r.has,s=r.key,u=function(t,e,n){if(a(t,e,n))return!0;var r=i(e);return null!==r&&u(t,r,n)};r.exp({hasMetadata:function(t,e){return u(t,o(e),arguments.length<3?void 0:s(arguments[2]))}})},function(t,e,n){var r=n(27),o=n(1),i=r.has,a=r.key;r.exp({hasOwnMetadata:function(t,e){return i(t,o(e),arguments.length<3?void 0:a(arguments[2]))}})},function(t,e,n){var r=n(27),o=n(1),i=n(11),a=r.key,s=r.set;r.exp({metadata:function(t,e){return function(n,r){s(t,e,(void 0!==r?o:i)(n),a(r))}}})},function(t,e,n){var r=n(0);r(r.P+r.R,"Set",{toJSON:n(100)("Set")})},function(t,e,n){"use strict";var r=n(0),o=n(80)(!0);r(r.P,"String",{at:function(t){return o(this,t)}})},function(t,e,n){"use strict";var r=n(0),o=n(20),i=n(8),a=n(56),s=n(54),u=RegExp.prototype,c=function(t,e){this._r=t,this._s=e};n(72)(c,"RegExp String",function(){var t=this._r.exec(this._s);return{value:t,done:null===t}}),r(r.P,"String",{matchAll:function(t){if(o(this),!a(t))throw TypeError(t+" is not a regexp!");var e=String(this),n="flags"in u?String(t.flags):s.call(t),r=new RegExp(t.source,~n.indexOf("g")?n:"g"+n);return r.lastIndex=i(t.lastIndex),new c(r,e)}})},function(t,e,n){"use strict";var r=n(0),o=n(116);r(r.P,"String",{padEnd:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,e,n){"use strict";var r=n(0),o=n(116);r(r.P,"String",{padStart:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,n){"use strict";n(46)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},function(t,e,n){"use strict";n(46)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},function(t,e,n){n(86)("asyncIterator")},function(t,e,n){n(86)("observable")},function(t,e,n){var r=n(0);r(r.S,"System",{global:n(2)})},function(t,e,n){for(var r=n(88),o=n(13),i=n(2),a=n(12),s=n(44),u=n(5),c=u("iterator"),f=u("toStringTag"),l=s.Array,p=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],d=0;d<5;d++){var h,v=p[d],m=i[v],g=m&&m.prototype;if(g){g[c]||a(g,c,l),g[f]||a(g,f,v),s[v]=l;for(h in r)g[h]||o(g,h,r[h],!0)}}},function(t,e,n){var r=n(0),o=n(84);r(r.G+r.B,{setImmediate:o.set,clearImmediate:o.clear})},function(t,e,n){var r=n(2),o=n(0),i=n(55),a=n(160),s=r.navigator,u=!!s&&/MSIE .\./.test(s.userAgent),c=function(t){return u?function(e,n){return t(i(a,[].slice.call(arguments,2),"function"==typeof e?e:Function(e)),n)}:t};o(o.G+o.B+o.F*u,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(t,e,n){n(283),n(222),n(224),n(223),n(226),n(228),n(233),n(227),n(225),n(235),n(234),n(230),n(231),n(229),n(221),n(232),n(236),n(237),n(189),n(191),n(190),n(239),n(238),n(209),n(219),n(220),n(210),n(211),n(212),n(213),n(214),n(215),n(216),n(217),n(218),n(192),n(193),n(194),n(195),n(196),n(197),n(198),n(199),n(200),n(201),n(202),n(203),n(204),n(205),n(206),n(207),n(208),n(270),n(275),n(282),n(273),n(265),n(266),n(271),n(276),n(278),n(261),n(262),n(263),n(264),n(267),n(268),n(269),n(272),n(274),n(277),n(279),n(280),n(281),n(184),n(186),n(185),n(188),n(187),n(173),n(171),n(177),n(174),n(180),n(182),n(170),n(176),n(167),n(181),n(165),n(179),n(178),n(172),n(175),n(164),n(166),n(169),n(168),n(183),n(88),n(255),n(260),n(119),n(256),n(257),n(258),n(259),n(240),n(118),n(120),n(121),n(295),n(284),n(285),n(290),n(293),n(294),n(288),n(291),n(289),n(292),n(286),n(287),n(241),n(242),n(243),n(244),n(245),n(248),n(246),n(247),n(249),n(250),n(251),n(252),n(254),n(253),n(296),n(322),n(325),n(324),n(326),n(327),n(323),n(328),n(329),n(307),n(310),n(306),n(304),n(305),n(308),n(309),n(299),n(321),n(330),n(298),n(300),n(302),n(301),n(303),n(312),n(313),n(315),n(314),n(317),n(316),n(318),n(319),n(320),n(297),n(311),n(333),n(332),n(331),t.exports=n(25)},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},,function(t,e){},,function(t,e){},function(t,e){},function(t,e){t.exports="images/home/LOGO.png"},function(t,e,n){(function(e){!function(e){"use strict";function n(t,e,n,r){var i=e&&e.prototype instanceof o?e:o,a=Object.create(i.prototype),s=new d(r||[]);return a._invoke=c(t,n,s),a}function r(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function o(){}function i(){}function a(){}function s(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function u(t){function n(e,o,i,a){var s=r(t[e],t,o);if("throw"!==s.type){var u=s.arg,c=u.value;return c&&"object"==typeof c&&y.call(c,"__await")?Promise.resolve(c.__await).then(function(t){n("next",t,i,a)},function(t){n("throw",t,i,a)}):Promise.resolve(c).then(function(t){u.value=t,i(u)},a)}a(s.arg)}function o(t,e){function r(){return new Promise(function(r,o){n(t,e,r,o)})}return i=i?i.then(r,r):r()}"object"==typeof e.process&&e.process.domain&&(n=e.process.domain.bind(n));var i;this._invoke=o}function c(t,e,n){var o=E;return function(i,a){if(o===C)throw new Error("Generator is already running");if(o===T){if("throw"===i)throw a;return v()}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var u=f(s,n);if(u){if(u===j)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===E)throw o=T,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=C;var c=r(t,e,n);if("normal"===c.type){if(o=n.done?T:A,c.arg===j)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=T,n.method="throw",n.arg=c.arg)}}}function f(t,e){var n=t.iterator[e.method];if(n===m){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=m,f(t,e),"throw"===e.method))return j;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return j}var o=r(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,j;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=m),e.delegate=null,j):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,j)}function l(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function p(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function d(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(l,this),this.reset(!0)}function h(t){if(t){var e=t[b];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n<t.length;)if(y.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=m,e.done=!0,e};return r.next=r}}return{next:v}}function v(){return{value:m,done:!0}}var m,g=Object.prototype,y=g.hasOwnProperty,_="function"==typeof Symbol?Symbol:{},b=_.iterator||"@@iterator",x=_.asyncIterator||"@@asyncIterator",w=_.toStringTag||"@@toStringTag",S="object"==typeof t,O=e.regeneratorRuntime;if(O)return void(S&&(t.exports=O));O=e.regeneratorRuntime=S?t.exports:{},O.wrap=n;var E="suspendedStart",A="suspendedYield",C="executing",T="completed",j={},P={};P[b]=function(){return this};var k=Object.getPrototypeOf,M=k&&k(k(h([])));M&&M!==g&&y.call(M,b)&&(P=M);var $=a.prototype=o.prototype=Object.create(P);i.prototype=$.constructor=a,a.constructor=i,a[w]=i.displayName="GeneratorFunction",O.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===i||"GeneratorFunction"===(e.displayName||e.name))},O.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,a):(t.__proto__=a,w in t||(t[w]="GeneratorFunction")),t.prototype=Object.create($),t},O.awrap=function(t){return{__await:t}},s(u.prototype),u.prototype[x]=function(){return this},O.AsyncIterator=u,O.async=function(t,e,r,o){var i=new u(n(t,e,r,o));return O.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},s($),$[w]="Generator",$[b]=function(){return this},$.toString=function(){return"[object Generator]"},O.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},O.values=h,d.prototype={constructor:d,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=m,this.done=!1,this.delegate=null,this.method="next",this.arg=m,this.tryEntries.forEach(p),!t)for(var e in this)"t"===e.charAt(0)&&y.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=m)},stop:function(){this.done=!0;var t=this.tryEntries[0],e=t.completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){function e(e,r){return i.type="throw",i.arg=t,n.next=e,r&&(n.method="next",n.arg=m),!!r}if(this.done)throw t;for(var n=this,r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return e("end");if(o.tryLoc<=this.prev){var a=y.call(o,"catchLoc"),s=y.call(o,"finallyLoc");if(a&&s){if(this.prev<o.catchLoc)return e(o.catchLoc,!0);if(this.prev<o.finallyLoc)return e(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return e(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return e(o.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&y.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,j):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),j},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),p(n),j}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;p(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:h(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=m),j}}}("object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this)}).call(e,n(93))},function(t,e,n){function r(t){o||n(345)}var o=!1,i=n(18)(n(149),n(360),r,null,null);i.options.__file="/Users/baidu/Documents/codeRep/paddle-homepage/baidu/ai/portal-mobile/src/component/topNav.vue",i.esModule&&Object.keys(i.esModule).some(function(t){return"default"!==t&&"__"!==t.substr(0,2)})&&console.error("named exports are not supported in *.vue files."),i.options.functional&&console.error("[vue-loader] topNav.vue: functional components are not supported with templates, they should use render functions."),t.exports=i.exports},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-application"},[t._l(t.defaultApplications,function(e){return[n("div",{staticClass:"ai-application-wrap"},[n("div",{staticClass:"ai-application-item"},[n("img",{attrs:{src:e.imgSrc}}),t._v(" "),n("div",{staticClass:"ai-application-item-heading"},[t._v(t._s(e.heading))]),t._v(" "),n("div",{staticClass:"ai-application-item-wrap"},[n("div",{staticClass:"ai-application-item-intro"},[t._v(t._s(e.intro))])]),t._v(" "),t.isMoreShow?n("div",{staticClass:"ai-application-item-more"},[n("a",{attrs:{href:e.link}},[t._v(t._s(t.moreShowText))])]):t._e()])])]})],2)},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-head-poster"},[n("div",{staticClass:"ai-head-poster-mask"}),t._v(" "),n("img",{staticClass:"ai-head-poster-bg",attrs:{src:t.posterBg,alt:""}}),t._v(" "),n("div",{staticClass:"ai-head-poster-content"},[n("div",{staticClass:"ai-head-poster-heading"},[t._v(t._s(t.heading))]),t._v(" "),n("div",{staticClass:"ai-head-poster-intro"},[t._v(t._s(t.intro))]),t._v(" "),n("git-button",{attrs:{margin:t.gitButton.margin,imgSrc:t.gitButton.imgSrc,text:t.gitButton.text}})],1)])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-advantage"},[n("head-more",{attrs:{heading:t.headMore.heading}}),t._v(" "),t._l(t.defaultShowSolutions,function(e){return[n("div",{staticClass:"ai-advantage-wrap"},[n("div",{staticClass:"ai-advantage-item"},[n("img",{staticClass:"ai-advantage-item-img",attrs:{src:e.src}}),t._v(" "),n("div",{staticClass:"ai-advantage-item-name"},[t._v("\n "+t._s(e.name)+"\n ")]),t._v(" "),n("div",{staticClass:"ai-advantage-item-desc"},[t._v("\n "+t._s(e.desc)+"\n ")])])])]}),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:!t.isShowAll,expression:"!isShowAll"}],staticClass:"ai-solution-collapse-btn",on:{click:t.collapseSolution}},[t._v("\n 展开全部\n "),n("span",{staticClass:"ai-solution-collapse-icon icon-down-arrow"})])],2)},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-head-more"},[n("div",{staticClass:"ai-head-more-heading"},[t._v(t._s(t.heading))]),t._v(" "),n("div",{staticClass:"ai-head-more-intro"},[t._v(t._s(t.intro))]),t._v(" "),t.isMoreShow?n("div",{staticClass:"ai-head-more-more"},[t._v("Read more >")]):t._e()])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{style:{textAlign:t.align,marginBottom:t.margin+"rem"}},[n("a",{attrs:{href:t.link}},[n("div",{staticClass:"ai-ecology-btn",style:t.styleObject},[n("div",{staticClass:"ai-ecology-btn-content"},[n("img",{staticClass:"ai-ecology-btn-icon",attrs:{src:t.imgSrc}}),t._v("\n "+t._s(t.text)+"\n ")])])])])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{staticClass:"ai-heading ai-heading-paddle"},[t._v(t._s(t.text))])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-solution"},[n("heading",{attrs:{text:"无缝对接丰富的解决方案"}}),t._v(" "),t._l(t.defaultShowSolutions,function(e){return[n("div",{staticClass:"ai-solution-wrap"},[n("div",{staticClass:"ai-solution-item"},[n("img",{attrs:{src:e.src}}),t._v(" "),n("div",{staticClass:"ai-solution-item-overlay"},[t._v("\n "+t._s(e.name)+"\n ")])])])]}),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:!t.isShowAll,expression:"!isShowAll"}],staticClass:"ai-solution-collapse-btn",on:{click:t.collapseSolution}},[t._v("\n 展开全部\n "),n("span",{staticClass:"ai-solution-collapse-icon icon-down-arrow"})])],2)},staticRenderFns:[]},t.exports.render._withStripped=!0},,function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("a",{attrs:{href:t.href}},[n("div",{staticClass:"ai-news-item"},[t.img?n("div",{staticClass:"ai-news-poster"},[n("img",{attrs:{src:t.img}})]):t._e(),t._v(" "),n("div",{staticClass:"ai-news-wrapper"},[n("div",{staticClass:"ai-news-title"},[t._v(t._s(t.title))]),t._v(" "),n("div",{staticClass:"ai-news-date"},[t._v("发布日期: "+t._s(t.time))])])])])},staticRenderFns:[]},t.exports.render._withStripped=!0},,function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-top-nav"},[n("img",{staticClass:"ai-top-nav-logo",attrs:{src:t.logoSrc}}),t._v(" "),n("span",{staticClass:"ai-top-nav-title"},[t._v(t._s(t.logoText))]),t._v(" "),n("span",{staticClass:"ai-top-nav-item"},[n("a",{attrs:{href:t.link}},[t._v(t._s(t.navItem))])])])},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e,n){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ai-app",attrs:{id:"app"}},[n("top-nav",{attrs:{logoSrc:t.navItems.logoSrc,logoText:t.navItems.logoText,navItem:t.topNavItem,link:t.topNavLink}}),t._v(" "),n("div",{staticClass:"ai-main"},[t._t("default"),t._v(" "),t.isShowFooter?n("div",{staticClass:"ai-footer"},[t._v("©2017 Baidu 使用必读")]):t._e()],2)],1)},staticRenderFns:[]},t.exports.render._withStripped=!0},function(t,e){},function(t,e,n){n(41),t.exports=n(47)}]);
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册